Remove unused overload of line_header::file_name_at
[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   /* Offset of line number information in .debug_line section.  */
1040   sect_offset sect_off {};
1041
1042   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1043   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1044
1045   unsigned int total_length {};
1046   unsigned short version {};
1047   unsigned int header_length {};
1048   unsigned char minimum_instruction_length {};
1049   unsigned char maximum_ops_per_instruction {};
1050   unsigned char default_is_stmt {};
1051   int line_base {};
1052   unsigned char line_range {};
1053   unsigned char opcode_base {};
1054
1055   /* standard_opcode_lengths[i] is the number of operands for the
1056      standard opcode whose value is i.  This means that
1057      standard_opcode_lengths[0] is unused, and the last meaningful
1058      element is standard_opcode_lengths[opcode_base - 1].  */
1059   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1060
1061   /* The include_directories table.  Note these are observing
1062      pointers.  The memory is owned by debug_line_buffer.  */
1063   std::vector<const char *> include_dirs;
1064
1065   /* The file_names table.  */
1066   std::vector<file_entry> file_names;
1067
1068   /* The start and end of the statement program following this
1069      header.  These point into dwarf2_per_objfile->line_buffer.  */
1070   const gdb_byte *statement_program_start {}, *statement_program_end {};
1071 };
1072
1073 typedef std::unique_ptr<line_header> line_header_up;
1074
1075 const char *
1076 file_entry::include_dir (const line_header *lh) const
1077 {
1078   return lh->include_dir_at (d_index);
1079 }
1080
1081 /* When we construct a partial symbol table entry we only
1082    need this much information.  */
1083 struct partial_die_info : public allocate_on_obstack
1084   {
1085     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1086
1087     /* Disable assign but still keep copy ctor, which is needed
1088        load_partial_dies.   */
1089     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1090
1091     /* Adjust the partial die before generating a symbol for it.  This
1092        function may set the is_external flag or change the DIE's
1093        name.  */
1094     void fixup (struct dwarf2_cu *cu);
1095
1096     /* Read a minimal amount of information into the minimal die
1097        structure.  */
1098     const gdb_byte *read (const struct die_reader_specs *reader,
1099                           const struct abbrev_info &abbrev,
1100                           const gdb_byte *info_ptr);
1101
1102     /* Offset of this DIE.  */
1103     const sect_offset sect_off;
1104
1105     /* DWARF-2 tag for this DIE.  */
1106     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1107
1108     /* Assorted flags describing the data found in this DIE.  */
1109     const unsigned int has_children : 1;
1110
1111     unsigned int is_external : 1;
1112     unsigned int is_declaration : 1;
1113     unsigned int has_type : 1;
1114     unsigned int has_specification : 1;
1115     unsigned int has_pc_info : 1;
1116     unsigned int may_be_inlined : 1;
1117
1118     /* This DIE has been marked DW_AT_main_subprogram.  */
1119     unsigned int main_subprogram : 1;
1120
1121     /* Flag set if the SCOPE field of this structure has been
1122        computed.  */
1123     unsigned int scope_set : 1;
1124
1125     /* Flag set if the DIE has a byte_size attribute.  */
1126     unsigned int has_byte_size : 1;
1127
1128     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1129     unsigned int has_const_value : 1;
1130
1131     /* Flag set if any of the DIE's children are template arguments.  */
1132     unsigned int has_template_arguments : 1;
1133
1134     /* Flag set if fixup has been called on this die.  */
1135     unsigned int fixup_called : 1;
1136
1137     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1138     unsigned int is_dwz : 1;
1139
1140     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1141     unsigned int spec_is_dwz : 1;
1142
1143     /* The name of this DIE.  Normally the value of DW_AT_name, but
1144        sometimes a default name for unnamed DIEs.  */
1145     const char *name = nullptr;
1146
1147     /* The linkage name, if present.  */
1148     const char *linkage_name = nullptr;
1149
1150     /* The scope to prepend to our children.  This is generally
1151        allocated on the comp_unit_obstack, so will disappear
1152        when this compilation unit leaves the cache.  */
1153     const char *scope = nullptr;
1154
1155     /* Some data associated with the partial DIE.  The tag determines
1156        which field is live.  */
1157     union
1158     {
1159       /* The location description associated with this DIE, if any.  */
1160       struct dwarf_block *locdesc;
1161       /* The offset of an import, for DW_TAG_imported_unit.  */
1162       sect_offset sect_off;
1163     } d {};
1164
1165     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1166     CORE_ADDR lowpc = 0;
1167     CORE_ADDR highpc = 0;
1168
1169     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1170        DW_AT_sibling, if any.  */
1171     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1172        could return DW_AT_sibling values to its caller load_partial_dies.  */
1173     const gdb_byte *sibling = nullptr;
1174
1175     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1176        DW_AT_specification (or DW_AT_abstract_origin or
1177        DW_AT_extension).  */
1178     sect_offset spec_offset {};
1179
1180     /* Pointers to this DIE's parent, first child, and next sibling,
1181        if any.  */
1182     struct partial_die_info *die_parent = nullptr;
1183     struct partial_die_info *die_child = nullptr;
1184     struct partial_die_info *die_sibling = nullptr;
1185
1186     friend struct partial_die_info *
1187     dwarf2_cu::find_partial_die (sect_offset sect_off);
1188
1189   private:
1190     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1191     partial_die_info (sect_offset sect_off)
1192       : partial_die_info (sect_off, DW_TAG_padding, 0)
1193     {
1194     }
1195
1196     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1197                       int has_children_)
1198       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1199     {
1200       is_external = 0;
1201       is_declaration = 0;
1202       has_type = 0;
1203       has_specification = 0;
1204       has_pc_info = 0;
1205       may_be_inlined = 0;
1206       main_subprogram = 0;
1207       scope_set = 0;
1208       has_byte_size = 0;
1209       has_const_value = 0;
1210       has_template_arguments = 0;
1211       fixup_called = 0;
1212       is_dwz = 0;
1213       spec_is_dwz = 0;
1214     }
1215   };
1216
1217 /* This data structure holds the information of an abbrev.  */
1218 struct abbrev_info
1219   {
1220     unsigned int number;        /* number identifying abbrev */
1221     enum dwarf_tag tag;         /* dwarf tag */
1222     unsigned short has_children;                /* boolean */
1223     unsigned short num_attrs;   /* number of attributes */
1224     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1225     struct abbrev_info *next;   /* next in chain */
1226   };
1227
1228 struct attr_abbrev
1229   {
1230     ENUM_BITFIELD(dwarf_attribute) name : 16;
1231     ENUM_BITFIELD(dwarf_form) form : 16;
1232
1233     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1234     LONGEST implicit_const;
1235   };
1236
1237 /* Size of abbrev_table.abbrev_hash_table.  */
1238 #define ABBREV_HASH_SIZE 121
1239
1240 /* Top level data structure to contain an abbreviation table.  */
1241
1242 struct abbrev_table
1243 {
1244   explicit abbrev_table (sect_offset off)
1245     : sect_off (off)
1246   {
1247     m_abbrevs =
1248       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1249     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1250   }
1251
1252   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1253
1254   /* Allocate space for a struct abbrev_info object in
1255      ABBREV_TABLE.  */
1256   struct abbrev_info *alloc_abbrev ();
1257
1258   /* Add an abbreviation to the table.  */
1259   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1260
1261   /* Look up an abbrev in the table.
1262      Returns NULL if the abbrev is not found.  */
1263
1264   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1265
1266
1267   /* Where the abbrev table came from.
1268      This is used as a sanity check when the table is used.  */
1269   const sect_offset sect_off;
1270
1271   /* Storage for the abbrev table.  */
1272   auto_obstack abbrev_obstack;
1273
1274 private:
1275
1276   /* Hash table of abbrevs.
1277      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1278      It could be statically allocated, but the previous code didn't so we
1279      don't either.  */
1280   struct abbrev_info **m_abbrevs;
1281 };
1282
1283 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1284
1285 /* Attributes have a name and a value.  */
1286 struct attribute
1287   {
1288     ENUM_BITFIELD(dwarf_attribute) name : 16;
1289     ENUM_BITFIELD(dwarf_form) form : 15;
1290
1291     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1292        field should be in u.str (existing only for DW_STRING) but it is kept
1293        here for better struct attribute alignment.  */
1294     unsigned int string_is_canonical : 1;
1295
1296     union
1297       {
1298         const char *str;
1299         struct dwarf_block *blk;
1300         ULONGEST unsnd;
1301         LONGEST snd;
1302         CORE_ADDR addr;
1303         ULONGEST signature;
1304       }
1305     u;
1306   };
1307
1308 /* This data structure holds a complete die structure.  */
1309 struct die_info
1310   {
1311     /* DWARF-2 tag for this DIE.  */
1312     ENUM_BITFIELD(dwarf_tag) tag : 16;
1313
1314     /* Number of attributes */
1315     unsigned char num_attrs;
1316
1317     /* True if we're presently building the full type name for the
1318        type derived from this DIE.  */
1319     unsigned char building_fullname : 1;
1320
1321     /* True if this die is in process.  PR 16581.  */
1322     unsigned char in_process : 1;
1323
1324     /* Abbrev number */
1325     unsigned int abbrev;
1326
1327     /* Offset in .debug_info or .debug_types section.  */
1328     sect_offset sect_off;
1329
1330     /* The dies in a compilation unit form an n-ary tree.  PARENT
1331        points to this die's parent; CHILD points to the first child of
1332        this node; and all the children of a given node are chained
1333        together via their SIBLING fields.  */
1334     struct die_info *child;     /* Its first child, if any.  */
1335     struct die_info *sibling;   /* Its next sibling, if any.  */
1336     struct die_info *parent;    /* Its parent, if any.  */
1337
1338     /* An array of attributes, with NUM_ATTRS elements.  There may be
1339        zero, but it's not common and zero-sized arrays are not
1340        sufficiently portable C.  */
1341     struct attribute attrs[1];
1342   };
1343
1344 /* Get at parts of an attribute structure.  */
1345
1346 #define DW_STRING(attr)    ((attr)->u.str)
1347 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1348 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1349 #define DW_BLOCK(attr)     ((attr)->u.blk)
1350 #define DW_SND(attr)       ((attr)->u.snd)
1351 #define DW_ADDR(attr)      ((attr)->u.addr)
1352 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1353
1354 /* Blocks are a bunch of untyped bytes.  */
1355 struct dwarf_block
1356   {
1357     size_t size;
1358
1359     /* Valid only if SIZE is not zero.  */
1360     const gdb_byte *data;
1361   };
1362
1363 #ifndef ATTR_ALLOC_CHUNK
1364 #define ATTR_ALLOC_CHUNK 4
1365 #endif
1366
1367 /* Allocate fields for structs, unions and enums in this size.  */
1368 #ifndef DW_FIELD_ALLOC_CHUNK
1369 #define DW_FIELD_ALLOC_CHUNK 4
1370 #endif
1371
1372 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1373    but this would require a corresponding change in unpack_field_as_long
1374    and friends.  */
1375 static int bits_per_byte = 8;
1376
1377 /* When reading a variant or variant part, we track a bit more
1378    information about the field, and store it in an object of this
1379    type.  */
1380
1381 struct variant_field
1382 {
1383   /* If we see a DW_TAG_variant, then this will be the discriminant
1384      value.  */
1385   ULONGEST discriminant_value;
1386   /* If we see a DW_TAG_variant, then this will be set if this is the
1387      default branch.  */
1388   bool default_branch;
1389   /* While reading a DW_TAG_variant_part, this will be set if this
1390      field is the discriminant.  */
1391   bool is_discriminant;
1392 };
1393
1394 struct nextfield
1395 {
1396   int accessibility = 0;
1397   int virtuality = 0;
1398   /* Extra information to describe a variant or variant part.  */
1399   struct variant_field variant {};
1400   struct field field {};
1401 };
1402
1403 struct fnfieldlist
1404 {
1405   const char *name = nullptr;
1406   std::vector<struct fn_field> fnfields;
1407 };
1408
1409 /* The routines that read and process dies for a C struct or C++ class
1410    pass lists of data member fields and lists of member function fields
1411    in an instance of a field_info structure, as defined below.  */
1412 struct field_info
1413   {
1414     /* List of data member and baseclasses fields.  */
1415     std::vector<struct nextfield> fields;
1416     std::vector<struct nextfield> baseclasses;
1417
1418     /* Number of fields (including baseclasses).  */
1419     int nfields = 0;
1420
1421     /* Set if the accesibility of one of the fields is not public.  */
1422     int non_public_fields = 0;
1423
1424     /* Member function fieldlist array, contains name of possibly overloaded
1425        member function, number of overloaded member functions and a pointer
1426        to the head of the member function field chain.  */
1427     std::vector<struct fnfieldlist> fnfieldlists;
1428
1429     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1430        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1431     std::vector<struct decl_field> typedef_field_list;
1432
1433     /* Nested types defined by this class and the number of elements in this
1434        list.  */
1435     std::vector<struct decl_field> nested_types_list;
1436   };
1437
1438 /* One item on the queue of compilation units to read in full symbols
1439    for.  */
1440 struct dwarf2_queue_item
1441 {
1442   struct dwarf2_per_cu_data *per_cu;
1443   enum language pretend_language;
1444   struct dwarf2_queue_item *next;
1445 };
1446
1447 /* The current queue.  */
1448 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1449
1450 /* Loaded secondary compilation units are kept in memory until they
1451    have not been referenced for the processing of this many
1452    compilation units.  Set this to zero to disable caching.  Cache
1453    sizes of up to at least twenty will improve startup time for
1454    typical inter-CU-reference binaries, at an obvious memory cost.  */
1455 static int dwarf_max_cache_age = 5;
1456 static void
1457 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1458                           struct cmd_list_element *c, const char *value)
1459 {
1460   fprintf_filtered (file, _("The upper bound on the age of cached "
1461                             "DWARF compilation units is %s.\n"),
1462                     value);
1463 }
1464 \f
1465 /* local function prototypes */
1466
1467 static const char *get_section_name (const struct dwarf2_section_info *);
1468
1469 static const char *get_section_file_name (const struct dwarf2_section_info *);
1470
1471 static void dwarf2_find_base_address (struct die_info *die,
1472                                       struct dwarf2_cu *cu);
1473
1474 static struct partial_symtab *create_partial_symtab
1475   (struct dwarf2_per_cu_data *per_cu, const char *name);
1476
1477 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1478                                         const gdb_byte *info_ptr,
1479                                         struct die_info *type_unit_die,
1480                                         int has_children, void *data);
1481
1482 static void dwarf2_build_psymtabs_hard
1483   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1484
1485 static void scan_partial_symbols (struct partial_die_info *,
1486                                   CORE_ADDR *, CORE_ADDR *,
1487                                   int, struct dwarf2_cu *);
1488
1489 static void add_partial_symbol (struct partial_die_info *,
1490                                 struct dwarf2_cu *);
1491
1492 static void add_partial_namespace (struct partial_die_info *pdi,
1493                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1494                                    int set_addrmap, struct dwarf2_cu *cu);
1495
1496 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1497                                 CORE_ADDR *highpc, int set_addrmap,
1498                                 struct dwarf2_cu *cu);
1499
1500 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1501                                      struct dwarf2_cu *cu);
1502
1503 static void add_partial_subprogram (struct partial_die_info *pdi,
1504                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1505                                     int need_pc, struct dwarf2_cu *cu);
1506
1507 static void dwarf2_read_symtab (struct partial_symtab *,
1508                                 struct objfile *);
1509
1510 static void psymtab_to_symtab_1 (struct partial_symtab *);
1511
1512 static abbrev_table_up abbrev_table_read_table
1513   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1514    sect_offset);
1515
1516 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1517
1518 static struct partial_die_info *load_partial_dies
1519   (const struct die_reader_specs *, const gdb_byte *, int);
1520
1521 static struct partial_die_info *find_partial_die (sect_offset, int,
1522                                                   struct dwarf2_cu *);
1523
1524 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1525                                        struct attribute *, struct attr_abbrev *,
1526                                        const gdb_byte *);
1527
1528 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1529
1530 static int read_1_signed_byte (bfd *, const gdb_byte *);
1531
1532 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1533
1534 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1535
1536 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1537
1538 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1539                                unsigned int *);
1540
1541 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1542
1543 static LONGEST read_checked_initial_length_and_offset
1544   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1545    unsigned int *, unsigned int *);
1546
1547 static LONGEST read_offset (bfd *, const gdb_byte *,
1548                             const struct comp_unit_head *,
1549                             unsigned int *);
1550
1551 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1552
1553 static sect_offset read_abbrev_offset
1554   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1555    struct dwarf2_section_info *, sect_offset);
1556
1557 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1558
1559 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1560
1561 static const char *read_indirect_string
1562   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1563    const struct comp_unit_head *, unsigned int *);
1564
1565 static const char *read_indirect_line_string
1566   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1567    const struct comp_unit_head *, unsigned int *);
1568
1569 static const char *read_indirect_string_at_offset
1570   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1571    LONGEST str_offset);
1572
1573 static const char *read_indirect_string_from_dwz
1574   (struct objfile *objfile, struct dwz_file *, LONGEST);
1575
1576 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1577
1578 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1579                                               const gdb_byte *,
1580                                               unsigned int *);
1581
1582 static const char *read_str_index (const struct die_reader_specs *reader,
1583                                    ULONGEST str_index);
1584
1585 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1586
1587 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1588                                       struct dwarf2_cu *);
1589
1590 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1591                                                 unsigned int);
1592
1593 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1594                                        struct dwarf2_cu *cu);
1595
1596 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1597                                struct dwarf2_cu *cu);
1598
1599 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1600
1601 static struct die_info *die_specification (struct die_info *die,
1602                                            struct dwarf2_cu **);
1603
1604 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1605                                                 struct dwarf2_cu *cu);
1606
1607 static void dwarf_decode_lines (struct line_header *, const char *,
1608                                 struct dwarf2_cu *, struct partial_symtab *,
1609                                 CORE_ADDR, int decode_mapping);
1610
1611 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1612                                   const char *);
1613
1614 static struct symbol *new_symbol (struct die_info *, struct type *,
1615                                   struct dwarf2_cu *, struct symbol * = NULL);
1616
1617 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1618                                 struct dwarf2_cu *);
1619
1620 static void dwarf2_const_value_attr (const struct attribute *attr,
1621                                      struct type *type,
1622                                      const char *name,
1623                                      struct obstack *obstack,
1624                                      struct dwarf2_cu *cu, LONGEST *value,
1625                                      const gdb_byte **bytes,
1626                                      struct dwarf2_locexpr_baton **baton);
1627
1628 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1629
1630 static int need_gnat_info (struct dwarf2_cu *);
1631
1632 static struct type *die_descriptive_type (struct die_info *,
1633                                           struct dwarf2_cu *);
1634
1635 static void set_descriptive_type (struct type *, struct die_info *,
1636                                   struct dwarf2_cu *);
1637
1638 static struct type *die_containing_type (struct die_info *,
1639                                          struct dwarf2_cu *);
1640
1641 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1642                                      struct dwarf2_cu *);
1643
1644 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1645
1646 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1647
1648 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1649
1650 static char *typename_concat (struct obstack *obs, const char *prefix,
1651                               const char *suffix, int physname,
1652                               struct dwarf2_cu *cu);
1653
1654 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1655
1656 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1657
1658 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1659
1660 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1661
1662 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1663
1664 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1665
1666 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1667                                struct dwarf2_cu *, struct partial_symtab *);
1668
1669 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1670    values.  Keep the items ordered with increasing constraints compliance.  */
1671 enum pc_bounds_kind
1672 {
1673   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1674   PC_BOUNDS_NOT_PRESENT,
1675
1676   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1677      were present but they do not form a valid range of PC addresses.  */
1678   PC_BOUNDS_INVALID,
1679
1680   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1681   PC_BOUNDS_RANGES,
1682
1683   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1684   PC_BOUNDS_HIGH_LOW,
1685 };
1686
1687 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1688                                                  CORE_ADDR *, CORE_ADDR *,
1689                                                  struct dwarf2_cu *,
1690                                                  struct partial_symtab *);
1691
1692 static void get_scope_pc_bounds (struct die_info *,
1693                                  CORE_ADDR *, CORE_ADDR *,
1694                                  struct dwarf2_cu *);
1695
1696 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1697                                         CORE_ADDR, struct dwarf2_cu *);
1698
1699 static void dwarf2_add_field (struct field_info *, struct die_info *,
1700                               struct dwarf2_cu *);
1701
1702 static void dwarf2_attach_fields_to_type (struct field_info *,
1703                                           struct type *, struct dwarf2_cu *);
1704
1705 static void dwarf2_add_member_fn (struct field_info *,
1706                                   struct die_info *, struct type *,
1707                                   struct dwarf2_cu *);
1708
1709 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1710                                              struct type *,
1711                                              struct dwarf2_cu *);
1712
1713 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1714
1715 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1716
1717 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1718
1719 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1720
1721 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1722
1723 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1724
1725 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1726
1727 static struct type *read_module_type (struct die_info *die,
1728                                       struct dwarf2_cu *cu);
1729
1730 static const char *namespace_name (struct die_info *die,
1731                                    int *is_anonymous, struct dwarf2_cu *);
1732
1733 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1734
1735 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1736
1737 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1738                                                        struct dwarf2_cu *);
1739
1740 static struct die_info *read_die_and_siblings_1
1741   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1742    struct die_info *);
1743
1744 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1745                                                const gdb_byte *info_ptr,
1746                                                const gdb_byte **new_info_ptr,
1747                                                struct die_info *parent);
1748
1749 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1750                                         struct die_info **, const gdb_byte *,
1751                                         int *, int);
1752
1753 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1754                                       struct die_info **, const gdb_byte *,
1755                                       int *);
1756
1757 static void process_die (struct die_info *, struct dwarf2_cu *);
1758
1759 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1760                                              struct obstack *);
1761
1762 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1763
1764 static const char *dwarf2_full_name (const char *name,
1765                                      struct die_info *die,
1766                                      struct dwarf2_cu *cu);
1767
1768 static const char *dwarf2_physname (const char *name, struct die_info *die,
1769                                     struct dwarf2_cu *cu);
1770
1771 static struct die_info *dwarf2_extension (struct die_info *die,
1772                                           struct dwarf2_cu **);
1773
1774 static const char *dwarf_tag_name (unsigned int);
1775
1776 static const char *dwarf_attr_name (unsigned int);
1777
1778 static const char *dwarf_form_name (unsigned int);
1779
1780 static const char *dwarf_bool_name (unsigned int);
1781
1782 static const char *dwarf_type_encoding_name (unsigned int);
1783
1784 static struct die_info *sibling_die (struct die_info *);
1785
1786 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1787
1788 static void dump_die_for_error (struct die_info *);
1789
1790 static void dump_die_1 (struct ui_file *, int level, int max_level,
1791                         struct die_info *);
1792
1793 /*static*/ void dump_die (struct die_info *, int max_level);
1794
1795 static void store_in_ref_table (struct die_info *,
1796                                 struct dwarf2_cu *);
1797
1798 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1799
1800 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1801
1802 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1803                                                const struct attribute *,
1804                                                struct dwarf2_cu **);
1805
1806 static struct die_info *follow_die_ref (struct die_info *,
1807                                         const struct attribute *,
1808                                         struct dwarf2_cu **);
1809
1810 static struct die_info *follow_die_sig (struct die_info *,
1811                                         const struct attribute *,
1812                                         struct dwarf2_cu **);
1813
1814 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1815                                          struct dwarf2_cu *);
1816
1817 static struct type *get_DW_AT_signature_type (struct die_info *,
1818                                               const struct attribute *,
1819                                               struct dwarf2_cu *);
1820
1821 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1822
1823 static void read_signatured_type (struct signatured_type *);
1824
1825 static int attr_to_dynamic_prop (const struct attribute *attr,
1826                                  struct die_info *die, struct dwarf2_cu *cu,
1827                                  struct dynamic_prop *prop);
1828
1829 /* memory allocation interface */
1830
1831 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1832
1833 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1834
1835 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1836
1837 static int attr_form_is_block (const struct attribute *);
1838
1839 static int attr_form_is_section_offset (const struct attribute *);
1840
1841 static int attr_form_is_constant (const struct attribute *);
1842
1843 static int attr_form_is_ref (const struct attribute *);
1844
1845 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1846                                    struct dwarf2_loclist_baton *baton,
1847                                    const struct attribute *attr);
1848
1849 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1850                                          struct symbol *sym,
1851                                          struct dwarf2_cu *cu,
1852                                          int is_block);
1853
1854 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1855                                      const gdb_byte *info_ptr,
1856                                      struct abbrev_info *abbrev);
1857
1858 static hashval_t partial_die_hash (const void *item);
1859
1860 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1861
1862 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1863   (sect_offset sect_off, unsigned int offset_in_dwz,
1864    struct dwarf2_per_objfile *dwarf2_per_objfile);
1865
1866 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1867                                    struct die_info *comp_unit_die,
1868                                    enum language pretend_language);
1869
1870 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1871
1872 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1873
1874 static struct type *set_die_type (struct die_info *, struct type *,
1875                                   struct dwarf2_cu *);
1876
1877 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1878
1879 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1880
1881 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1882                                  enum language);
1883
1884 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1885                                     enum language);
1886
1887 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1888                                     enum language);
1889
1890 static void dwarf2_add_dependence (struct dwarf2_cu *,
1891                                    struct dwarf2_per_cu_data *);
1892
1893 static void dwarf2_mark (struct dwarf2_cu *);
1894
1895 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1896
1897 static struct type *get_die_type_at_offset (sect_offset,
1898                                             struct dwarf2_per_cu_data *);
1899
1900 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1901
1902 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1903                              enum language pretend_language);
1904
1905 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1906
1907 /* Class, the destructor of which frees all allocated queue entries.  This
1908    will only have work to do if an error was thrown while processing the
1909    dwarf.  If no error was thrown then the queue entries should have all
1910    been processed, and freed, as we went along.  */
1911
1912 class dwarf2_queue_guard
1913 {
1914 public:
1915   dwarf2_queue_guard () = default;
1916
1917   /* Free any entries remaining on the queue.  There should only be
1918      entries left if we hit an error while processing the dwarf.  */
1919   ~dwarf2_queue_guard ()
1920   {
1921     struct dwarf2_queue_item *item, *last;
1922
1923     item = dwarf2_queue;
1924     while (item)
1925       {
1926         /* Anything still marked queued is likely to be in an
1927            inconsistent state, so discard it.  */
1928         if (item->per_cu->queued)
1929           {
1930             if (item->per_cu->cu != NULL)
1931               free_one_cached_comp_unit (item->per_cu);
1932             item->per_cu->queued = 0;
1933           }
1934
1935         last = item;
1936         item = item->next;
1937         xfree (last);
1938       }
1939
1940     dwarf2_queue = dwarf2_queue_tail = NULL;
1941   }
1942 };
1943
1944 /* The return type of find_file_and_directory.  Note, the enclosed
1945    string pointers are only valid while this object is valid.  */
1946
1947 struct file_and_directory
1948 {
1949   /* The filename.  This is never NULL.  */
1950   const char *name;
1951
1952   /* The compilation directory.  NULL if not known.  If we needed to
1953      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1954      points directly to the DW_AT_comp_dir string attribute owned by
1955      the obstack that owns the DIE.  */
1956   const char *comp_dir;
1957
1958   /* If we needed to build a new string for comp_dir, this is what
1959      owns the storage.  */
1960   std::string comp_dir_storage;
1961 };
1962
1963 static file_and_directory find_file_and_directory (struct die_info *die,
1964                                                    struct dwarf2_cu *cu);
1965
1966 static char *file_full_name (int file, struct line_header *lh,
1967                              const char *comp_dir);
1968
1969 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1970 enum class rcuh_kind { COMPILE, TYPE };
1971
1972 static const gdb_byte *read_and_check_comp_unit_head
1973   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1974    struct comp_unit_head *header,
1975    struct dwarf2_section_info *section,
1976    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1977    rcuh_kind section_kind);
1978
1979 static void init_cutu_and_read_dies
1980   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1981    int use_existing_cu, int keep, bool skip_partial,
1982    die_reader_func_ftype *die_reader_func, void *data);
1983
1984 static void init_cutu_and_read_dies_simple
1985   (struct dwarf2_per_cu_data *this_cu,
1986    die_reader_func_ftype *die_reader_func, void *data);
1987
1988 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1989
1990 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1991
1992 static struct dwo_unit *lookup_dwo_unit_in_dwp
1993   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1994    struct dwp_file *dwp_file, const char *comp_dir,
1995    ULONGEST signature, int is_debug_types);
1996
1997 static struct dwp_file *get_dwp_file
1998   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1999
2000 static struct dwo_unit *lookup_dwo_comp_unit
2001   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
2002
2003 static struct dwo_unit *lookup_dwo_type_unit
2004   (struct signatured_type *, const char *, const char *);
2005
2006 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
2007
2008 static void free_dwo_file (struct dwo_file *);
2009
2010 /* A unique_ptr helper to free a dwo_file.  */
2011
2012 struct dwo_file_deleter
2013 {
2014   void operator() (struct dwo_file *df) const
2015   {
2016     free_dwo_file (df);
2017   }
2018 };
2019
2020 /* A unique pointer to a dwo_file.  */
2021
2022 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
2023
2024 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2025
2026 static void check_producer (struct dwarf2_cu *cu);
2027
2028 static void free_line_header_voidp (void *arg);
2029 \f
2030 /* Various complaints about symbol reading that don't abort the process.  */
2031
2032 static void
2033 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2034 {
2035   complaint (_("statement list doesn't fit in .debug_line section"));
2036 }
2037
2038 static void
2039 dwarf2_debug_line_missing_file_complaint (void)
2040 {
2041   complaint (_(".debug_line section has line data without a file"));
2042 }
2043
2044 static void
2045 dwarf2_debug_line_missing_end_sequence_complaint (void)
2046 {
2047   complaint (_(".debug_line section has line "
2048                "program sequence without an end"));
2049 }
2050
2051 static void
2052 dwarf2_complex_location_expr_complaint (void)
2053 {
2054   complaint (_("location expression too complex"));
2055 }
2056
2057 static void
2058 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2059                                               int arg3)
2060 {
2061   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2062              arg1, arg2, arg3);
2063 }
2064
2065 static void
2066 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2067 {
2068   complaint (_("debug info runs off end of %s section"
2069                " [in module %s]"),
2070              get_section_name (section),
2071              get_section_file_name (section));
2072 }
2073
2074 static void
2075 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2076 {
2077   complaint (_("macro debug info contains a "
2078                "malformed macro definition:\n`%s'"),
2079              arg1);
2080 }
2081
2082 static void
2083 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2084 {
2085   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2086              arg1, arg2);
2087 }
2088
2089 /* Hash function for line_header_hash.  */
2090
2091 static hashval_t
2092 line_header_hash (const struct line_header *ofs)
2093 {
2094   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2095 }
2096
2097 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2098
2099 static hashval_t
2100 line_header_hash_voidp (const void *item)
2101 {
2102   const struct line_header *ofs = (const struct line_header *) item;
2103
2104   return line_header_hash (ofs);
2105 }
2106
2107 /* Equality function for line_header_hash.  */
2108
2109 static int
2110 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2111 {
2112   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2113   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2114
2115   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2116           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2117 }
2118
2119 \f
2120
2121 /* Read the given attribute value as an address, taking the attribute's
2122    form into account.  */
2123
2124 static CORE_ADDR
2125 attr_value_as_address (struct attribute *attr)
2126 {
2127   CORE_ADDR addr;
2128
2129   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_addrx
2130       && attr->form != DW_FORM_GNU_addr_index)
2131     {
2132       /* Aside from a few clearly defined exceptions, attributes that
2133          contain an address must always be in DW_FORM_addr form.
2134          Unfortunately, some compilers happen to be violating this
2135          requirement by encoding addresses using other forms, such
2136          as DW_FORM_data4 for example.  For those broken compilers,
2137          we try to do our best, without any guarantee of success,
2138          to interpret the address correctly.  It would also be nice
2139          to generate a complaint, but that would require us to maintain
2140          a list of legitimate cases where a non-address form is allowed,
2141          as well as update callers to pass in at least the CU's DWARF
2142          version.  This is more overhead than what we're willing to
2143          expand for a pretty rare case.  */
2144       addr = DW_UNSND (attr);
2145     }
2146   else
2147     addr = DW_ADDR (attr);
2148
2149   return addr;
2150 }
2151
2152 /* See declaration.  */
2153
2154 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2155                                         const dwarf2_debug_sections *names)
2156   : objfile (objfile_)
2157 {
2158   if (names == NULL)
2159     names = &dwarf2_elf_names;
2160
2161   bfd *obfd = objfile->obfd;
2162
2163   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2164     locate_sections (obfd, sec, *names);
2165 }
2166
2167 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2168
2169 dwarf2_per_objfile::~dwarf2_per_objfile ()
2170 {
2171   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2172   free_cached_comp_units ();
2173
2174   if (quick_file_names_table)
2175     htab_delete (quick_file_names_table);
2176
2177   if (line_header_hash)
2178     htab_delete (line_header_hash);
2179
2180   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2181     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2182
2183   for (signatured_type *sig_type : all_type_units)
2184     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2185
2186   VEC_free (dwarf2_section_info_def, types);
2187
2188   if (dwo_files != NULL)
2189     free_dwo_files (dwo_files, objfile);
2190
2191   /* Everything else should be on the objfile obstack.  */
2192 }
2193
2194 /* See declaration.  */
2195
2196 void
2197 dwarf2_per_objfile::free_cached_comp_units ()
2198 {
2199   dwarf2_per_cu_data *per_cu = read_in_chain;
2200   dwarf2_per_cu_data **last_chain = &read_in_chain;
2201   while (per_cu != NULL)
2202     {
2203       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2204
2205       delete per_cu->cu;
2206       *last_chain = next_cu;
2207       per_cu = next_cu;
2208     }
2209 }
2210
2211 /* A helper class that calls free_cached_comp_units on
2212    destruction.  */
2213
2214 class free_cached_comp_units
2215 {
2216 public:
2217
2218   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2219     : m_per_objfile (per_objfile)
2220   {
2221   }
2222
2223   ~free_cached_comp_units ()
2224   {
2225     m_per_objfile->free_cached_comp_units ();
2226   }
2227
2228   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2229
2230 private:
2231
2232   dwarf2_per_objfile *m_per_objfile;
2233 };
2234
2235 /* Try to locate the sections we need for DWARF 2 debugging
2236    information and return true if we have enough to do something.
2237    NAMES points to the dwarf2 section names, or is NULL if the standard
2238    ELF names are used.  */
2239
2240 int
2241 dwarf2_has_info (struct objfile *objfile,
2242                  const struct dwarf2_debug_sections *names)
2243 {
2244   if (objfile->flags & OBJF_READNEVER)
2245     return 0;
2246
2247   struct dwarf2_per_objfile *dwarf2_per_objfile
2248     = get_dwarf2_per_objfile (objfile);
2249
2250   if (dwarf2_per_objfile == NULL)
2251     {
2252       /* Initialize per-objfile state.  */
2253       dwarf2_per_objfile
2254         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2255                                                                      names);
2256       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2257     }
2258   return (!dwarf2_per_objfile->info.is_virtual
2259           && dwarf2_per_objfile->info.s.section != NULL
2260           && !dwarf2_per_objfile->abbrev.is_virtual
2261           && dwarf2_per_objfile->abbrev.s.section != NULL);
2262 }
2263
2264 /* Return the containing section of virtual section SECTION.  */
2265
2266 static struct dwarf2_section_info *
2267 get_containing_section (const struct dwarf2_section_info *section)
2268 {
2269   gdb_assert (section->is_virtual);
2270   return section->s.containing_section;
2271 }
2272
2273 /* Return the bfd owner of SECTION.  */
2274
2275 static struct bfd *
2276 get_section_bfd_owner (const struct dwarf2_section_info *section)
2277 {
2278   if (section->is_virtual)
2279     {
2280       section = get_containing_section (section);
2281       gdb_assert (!section->is_virtual);
2282     }
2283   return section->s.section->owner;
2284 }
2285
2286 /* Return the bfd section of SECTION.
2287    Returns NULL if the section is not present.  */
2288
2289 static asection *
2290 get_section_bfd_section (const struct dwarf2_section_info *section)
2291 {
2292   if (section->is_virtual)
2293     {
2294       section = get_containing_section (section);
2295       gdb_assert (!section->is_virtual);
2296     }
2297   return section->s.section;
2298 }
2299
2300 /* Return the name of SECTION.  */
2301
2302 static const char *
2303 get_section_name (const struct dwarf2_section_info *section)
2304 {
2305   asection *sectp = get_section_bfd_section (section);
2306
2307   gdb_assert (sectp != NULL);
2308   return bfd_section_name (get_section_bfd_owner (section), sectp);
2309 }
2310
2311 /* Return the name of the file SECTION is in.  */
2312
2313 static const char *
2314 get_section_file_name (const struct dwarf2_section_info *section)
2315 {
2316   bfd *abfd = get_section_bfd_owner (section);
2317
2318   return bfd_get_filename (abfd);
2319 }
2320
2321 /* Return the id of SECTION.
2322    Returns 0 if SECTION doesn't exist.  */
2323
2324 static int
2325 get_section_id (const struct dwarf2_section_info *section)
2326 {
2327   asection *sectp = get_section_bfd_section (section);
2328
2329   if (sectp == NULL)
2330     return 0;
2331   return sectp->id;
2332 }
2333
2334 /* Return the flags of SECTION.
2335    SECTION (or containing section if this is a virtual section) must exist.  */
2336
2337 static int
2338 get_section_flags (const struct dwarf2_section_info *section)
2339 {
2340   asection *sectp = get_section_bfd_section (section);
2341
2342   gdb_assert (sectp != NULL);
2343   return bfd_get_section_flags (sectp->owner, sectp);
2344 }
2345
2346 /* When loading sections, we look either for uncompressed section or for
2347    compressed section names.  */
2348
2349 static int
2350 section_is_p (const char *section_name,
2351               const struct dwarf2_section_names *names)
2352 {
2353   if (names->normal != NULL
2354       && strcmp (section_name, names->normal) == 0)
2355     return 1;
2356   if (names->compressed != NULL
2357       && strcmp (section_name, names->compressed) == 0)
2358     return 1;
2359   return 0;
2360 }
2361
2362 /* See declaration.  */
2363
2364 void
2365 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2366                                      const dwarf2_debug_sections &names)
2367 {
2368   flagword aflag = bfd_get_section_flags (abfd, sectp);
2369
2370   if ((aflag & SEC_HAS_CONTENTS) == 0)
2371     {
2372     }
2373   else if (section_is_p (sectp->name, &names.info))
2374     {
2375       this->info.s.section = sectp;
2376       this->info.size = bfd_get_section_size (sectp);
2377     }
2378   else if (section_is_p (sectp->name, &names.abbrev))
2379     {
2380       this->abbrev.s.section = sectp;
2381       this->abbrev.size = bfd_get_section_size (sectp);
2382     }
2383   else if (section_is_p (sectp->name, &names.line))
2384     {
2385       this->line.s.section = sectp;
2386       this->line.size = bfd_get_section_size (sectp);
2387     }
2388   else if (section_is_p (sectp->name, &names.loc))
2389     {
2390       this->loc.s.section = sectp;
2391       this->loc.size = bfd_get_section_size (sectp);
2392     }
2393   else if (section_is_p (sectp->name, &names.loclists))
2394     {
2395       this->loclists.s.section = sectp;
2396       this->loclists.size = bfd_get_section_size (sectp);
2397     }
2398   else if (section_is_p (sectp->name, &names.macinfo))
2399     {
2400       this->macinfo.s.section = sectp;
2401       this->macinfo.size = bfd_get_section_size (sectp);
2402     }
2403   else if (section_is_p (sectp->name, &names.macro))
2404     {
2405       this->macro.s.section = sectp;
2406       this->macro.size = bfd_get_section_size (sectp);
2407     }
2408   else if (section_is_p (sectp->name, &names.str))
2409     {
2410       this->str.s.section = sectp;
2411       this->str.size = bfd_get_section_size (sectp);
2412     }
2413   else if (section_is_p (sectp->name, &names.line_str))
2414     {
2415       this->line_str.s.section = sectp;
2416       this->line_str.size = bfd_get_section_size (sectp);
2417     }
2418   else if (section_is_p (sectp->name, &names.addr))
2419     {
2420       this->addr.s.section = sectp;
2421       this->addr.size = bfd_get_section_size (sectp);
2422     }
2423   else if (section_is_p (sectp->name, &names.frame))
2424     {
2425       this->frame.s.section = sectp;
2426       this->frame.size = bfd_get_section_size (sectp);
2427     }
2428   else if (section_is_p (sectp->name, &names.eh_frame))
2429     {
2430       this->eh_frame.s.section = sectp;
2431       this->eh_frame.size = bfd_get_section_size (sectp);
2432     }
2433   else if (section_is_p (sectp->name, &names.ranges))
2434     {
2435       this->ranges.s.section = sectp;
2436       this->ranges.size = bfd_get_section_size (sectp);
2437     }
2438   else if (section_is_p (sectp->name, &names.rnglists))
2439     {
2440       this->rnglists.s.section = sectp;
2441       this->rnglists.size = bfd_get_section_size (sectp);
2442     }
2443   else if (section_is_p (sectp->name, &names.types))
2444     {
2445       struct dwarf2_section_info type_section;
2446
2447       memset (&type_section, 0, sizeof (type_section));
2448       type_section.s.section = sectp;
2449       type_section.size = bfd_get_section_size (sectp);
2450
2451       VEC_safe_push (dwarf2_section_info_def, this->types,
2452                      &type_section);
2453     }
2454   else if (section_is_p (sectp->name, &names.gdb_index))
2455     {
2456       this->gdb_index.s.section = sectp;
2457       this->gdb_index.size = bfd_get_section_size (sectp);
2458     }
2459   else if (section_is_p (sectp->name, &names.debug_names))
2460     {
2461       this->debug_names.s.section = sectp;
2462       this->debug_names.size = bfd_get_section_size (sectp);
2463     }
2464   else if (section_is_p (sectp->name, &names.debug_aranges))
2465     {
2466       this->debug_aranges.s.section = sectp;
2467       this->debug_aranges.size = bfd_get_section_size (sectp);
2468     }
2469
2470   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2471       && bfd_section_vma (abfd, sectp) == 0)
2472     this->has_section_at_zero = true;
2473 }
2474
2475 /* A helper function that decides whether a section is empty,
2476    or not present.  */
2477
2478 static int
2479 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2480 {
2481   if (section->is_virtual)
2482     return section->size == 0;
2483   return section->s.section == NULL || section->size == 0;
2484 }
2485
2486 /* See dwarf2read.h.  */
2487
2488 void
2489 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2490 {
2491   asection *sectp;
2492   bfd *abfd;
2493   gdb_byte *buf, *retbuf;
2494
2495   if (info->readin)
2496     return;
2497   info->buffer = NULL;
2498   info->readin = 1;
2499
2500   if (dwarf2_section_empty_p (info))
2501     return;
2502
2503   sectp = get_section_bfd_section (info);
2504
2505   /* If this is a virtual section we need to read in the real one first.  */
2506   if (info->is_virtual)
2507     {
2508       struct dwarf2_section_info *containing_section =
2509         get_containing_section (info);
2510
2511       gdb_assert (sectp != NULL);
2512       if ((sectp->flags & SEC_RELOC) != 0)
2513         {
2514           error (_("Dwarf Error: DWP format V2 with relocations is not"
2515                    " supported in section %s [in module %s]"),
2516                  get_section_name (info), get_section_file_name (info));
2517         }
2518       dwarf2_read_section (objfile, containing_section);
2519       /* Other code should have already caught virtual sections that don't
2520          fit.  */
2521       gdb_assert (info->virtual_offset + info->size
2522                   <= containing_section->size);
2523       /* If the real section is empty or there was a problem reading the
2524          section we shouldn't get here.  */
2525       gdb_assert (containing_section->buffer != NULL);
2526       info->buffer = containing_section->buffer + info->virtual_offset;
2527       return;
2528     }
2529
2530   /* If the section has relocations, we must read it ourselves.
2531      Otherwise we attach it to the BFD.  */
2532   if ((sectp->flags & SEC_RELOC) == 0)
2533     {
2534       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2535       return;
2536     }
2537
2538   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2539   info->buffer = buf;
2540
2541   /* When debugging .o files, we may need to apply relocations; see
2542      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2543      We never compress sections in .o files, so we only need to
2544      try this when the section is not compressed.  */
2545   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2546   if (retbuf != NULL)
2547     {
2548       info->buffer = retbuf;
2549       return;
2550     }
2551
2552   abfd = get_section_bfd_owner (info);
2553   gdb_assert (abfd != NULL);
2554
2555   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2556       || bfd_bread (buf, info->size, abfd) != info->size)
2557     {
2558       error (_("Dwarf Error: Can't read DWARF data"
2559                " in section %s [in module %s]"),
2560              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2561     }
2562 }
2563
2564 /* A helper function that returns the size of a section in a safe way.
2565    If you are positive that the section has been read before using the
2566    size, then it is safe to refer to the dwarf2_section_info object's
2567    "size" field directly.  In other cases, you must call this
2568    function, because for compressed sections the size field is not set
2569    correctly until the section has been read.  */
2570
2571 static bfd_size_type
2572 dwarf2_section_size (struct objfile *objfile,
2573                      struct dwarf2_section_info *info)
2574 {
2575   if (!info->readin)
2576     dwarf2_read_section (objfile, info);
2577   return info->size;
2578 }
2579
2580 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2581    SECTION_NAME.  */
2582
2583 void
2584 dwarf2_get_section_info (struct objfile *objfile,
2585                          enum dwarf2_section_enum sect,
2586                          asection **sectp, const gdb_byte **bufp,
2587                          bfd_size_type *sizep)
2588 {
2589   struct dwarf2_per_objfile *data
2590     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2591                                                   dwarf2_objfile_data_key);
2592   struct dwarf2_section_info *info;
2593
2594   /* We may see an objfile without any DWARF, in which case we just
2595      return nothing.  */
2596   if (data == NULL)
2597     {
2598       *sectp = NULL;
2599       *bufp = NULL;
2600       *sizep = 0;
2601       return;
2602     }
2603   switch (sect)
2604     {
2605     case DWARF2_DEBUG_FRAME:
2606       info = &data->frame;
2607       break;
2608     case DWARF2_EH_FRAME:
2609       info = &data->eh_frame;
2610       break;
2611     default:
2612       gdb_assert_not_reached ("unexpected section");
2613     }
2614
2615   dwarf2_read_section (objfile, info);
2616
2617   *sectp = get_section_bfd_section (info);
2618   *bufp = info->buffer;
2619   *sizep = info->size;
2620 }
2621
2622 /* A helper function to find the sections for a .dwz file.  */
2623
2624 static void
2625 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2626 {
2627   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2628
2629   /* Note that we only support the standard ELF names, because .dwz
2630      is ELF-only (at the time of writing).  */
2631   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2632     {
2633       dwz_file->abbrev.s.section = sectp;
2634       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2635     }
2636   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2637     {
2638       dwz_file->info.s.section = sectp;
2639       dwz_file->info.size = bfd_get_section_size (sectp);
2640     }
2641   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2642     {
2643       dwz_file->str.s.section = sectp;
2644       dwz_file->str.size = bfd_get_section_size (sectp);
2645     }
2646   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2647     {
2648       dwz_file->line.s.section = sectp;
2649       dwz_file->line.size = bfd_get_section_size (sectp);
2650     }
2651   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2652     {
2653       dwz_file->macro.s.section = sectp;
2654       dwz_file->macro.size = bfd_get_section_size (sectp);
2655     }
2656   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2657     {
2658       dwz_file->gdb_index.s.section = sectp;
2659       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2660     }
2661   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2662     {
2663       dwz_file->debug_names.s.section = sectp;
2664       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2665     }
2666 }
2667
2668 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2669    there is no .gnu_debugaltlink section in the file.  Error if there
2670    is such a section but the file cannot be found.  */
2671
2672 static struct dwz_file *
2673 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2674 {
2675   const char *filename;
2676   bfd_size_type buildid_len_arg;
2677   size_t buildid_len;
2678   bfd_byte *buildid;
2679
2680   if (dwarf2_per_objfile->dwz_file != NULL)
2681     return dwarf2_per_objfile->dwz_file.get ();
2682
2683   bfd_set_error (bfd_error_no_error);
2684   gdb::unique_xmalloc_ptr<char> data
2685     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2686                                   &buildid_len_arg, &buildid));
2687   if (data == NULL)
2688     {
2689       if (bfd_get_error () == bfd_error_no_error)
2690         return NULL;
2691       error (_("could not read '.gnu_debugaltlink' section: %s"),
2692              bfd_errmsg (bfd_get_error ()));
2693     }
2694
2695   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2696
2697   buildid_len = (size_t) buildid_len_arg;
2698
2699   filename = data.get ();
2700
2701   std::string abs_storage;
2702   if (!IS_ABSOLUTE_PATH (filename))
2703     {
2704       gdb::unique_xmalloc_ptr<char> abs
2705         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2706
2707       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2708       filename = abs_storage.c_str ();
2709     }
2710
2711   /* First try the file name given in the section.  If that doesn't
2712      work, try to use the build-id instead.  */
2713   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2714   if (dwz_bfd != NULL)
2715     {
2716       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2717         dwz_bfd.reset (nullptr);
2718     }
2719
2720   if (dwz_bfd == NULL)
2721     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2722
2723   if (dwz_bfd == NULL)
2724     error (_("could not find '.gnu_debugaltlink' file for %s"),
2725            objfile_name (dwarf2_per_objfile->objfile));
2726
2727   std::unique_ptr<struct dwz_file> result
2728     (new struct dwz_file (std::move (dwz_bfd)));
2729
2730   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2731                          result.get ());
2732
2733   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2734                             result->dwz_bfd.get ());
2735   dwarf2_per_objfile->dwz_file = std::move (result);
2736   return dwarf2_per_objfile->dwz_file.get ();
2737 }
2738 \f
2739 /* DWARF quick_symbols_functions support.  */
2740
2741 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2742    unique line tables, so we maintain a separate table of all .debug_line
2743    derived entries to support the sharing.
2744    All the quick functions need is the list of file names.  We discard the
2745    line_header when we're done and don't need to record it here.  */
2746 struct quick_file_names
2747 {
2748   /* The data used to construct the hash key.  */
2749   struct stmt_list_hash hash;
2750
2751   /* The number of entries in file_names, real_names.  */
2752   unsigned int num_file_names;
2753
2754   /* The file names from the line table, after being run through
2755      file_full_name.  */
2756   const char **file_names;
2757
2758   /* The file names from the line table after being run through
2759      gdb_realpath.  These are computed lazily.  */
2760   const char **real_names;
2761 };
2762
2763 /* When using the index (and thus not using psymtabs), each CU has an
2764    object of this type.  This is used to hold information needed by
2765    the various "quick" methods.  */
2766 struct dwarf2_per_cu_quick_data
2767 {
2768   /* The file table.  This can be NULL if there was no file table
2769      or it's currently not read in.
2770      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2771   struct quick_file_names *file_names;
2772
2773   /* The corresponding symbol table.  This is NULL if symbols for this
2774      CU have not yet been read.  */
2775   struct compunit_symtab *compunit_symtab;
2776
2777   /* A temporary mark bit used when iterating over all CUs in
2778      expand_symtabs_matching.  */
2779   unsigned int mark : 1;
2780
2781   /* True if we've tried to read the file table and found there isn't one.
2782      There will be no point in trying to read it again next time.  */
2783   unsigned int no_file_data : 1;
2784 };
2785
2786 /* Utility hash function for a stmt_list_hash.  */
2787
2788 static hashval_t
2789 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2790 {
2791   hashval_t v = 0;
2792
2793   if (stmt_list_hash->dwo_unit != NULL)
2794     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2795   v += to_underlying (stmt_list_hash->line_sect_off);
2796   return v;
2797 }
2798
2799 /* Utility equality function for a stmt_list_hash.  */
2800
2801 static int
2802 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2803                     const struct stmt_list_hash *rhs)
2804 {
2805   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2806     return 0;
2807   if (lhs->dwo_unit != NULL
2808       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2809     return 0;
2810
2811   return lhs->line_sect_off == rhs->line_sect_off;
2812 }
2813
2814 /* Hash function for a quick_file_names.  */
2815
2816 static hashval_t
2817 hash_file_name_entry (const void *e)
2818 {
2819   const struct quick_file_names *file_data
2820     = (const struct quick_file_names *) e;
2821
2822   return hash_stmt_list_entry (&file_data->hash);
2823 }
2824
2825 /* Equality function for a quick_file_names.  */
2826
2827 static int
2828 eq_file_name_entry (const void *a, const void *b)
2829 {
2830   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2831   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2832
2833   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2834 }
2835
2836 /* Delete function for a quick_file_names.  */
2837
2838 static void
2839 delete_file_name_entry (void *e)
2840 {
2841   struct quick_file_names *file_data = (struct quick_file_names *) e;
2842   int i;
2843
2844   for (i = 0; i < file_data->num_file_names; ++i)
2845     {
2846       xfree ((void*) file_data->file_names[i]);
2847       if (file_data->real_names)
2848         xfree ((void*) file_data->real_names[i]);
2849     }
2850
2851   /* The space for the struct itself lives on objfile_obstack,
2852      so we don't free it here.  */
2853 }
2854
2855 /* Create a quick_file_names hash table.  */
2856
2857 static htab_t
2858 create_quick_file_names_table (unsigned int nr_initial_entries)
2859 {
2860   return htab_create_alloc (nr_initial_entries,
2861                             hash_file_name_entry, eq_file_name_entry,
2862                             delete_file_name_entry, xcalloc, xfree);
2863 }
2864
2865 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2866    have to be created afterwards.  You should call age_cached_comp_units after
2867    processing PER_CU->CU.  dw2_setup must have been already called.  */
2868
2869 static void
2870 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2871 {
2872   if (per_cu->is_debug_types)
2873     load_full_type_unit (per_cu);
2874   else
2875     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2876
2877   if (per_cu->cu == NULL)
2878     return;  /* Dummy CU.  */
2879
2880   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2881 }
2882
2883 /* Read in the symbols for PER_CU.  */
2884
2885 static void
2886 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2887 {
2888   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2889
2890   /* Skip type_unit_groups, reading the type units they contain
2891      is handled elsewhere.  */
2892   if (IS_TYPE_UNIT_GROUP (per_cu))
2893     return;
2894
2895   /* The destructor of dwarf2_queue_guard frees any entries left on
2896      the queue.  After this point we're guaranteed to leave this function
2897      with the dwarf queue empty.  */
2898   dwarf2_queue_guard q_guard;
2899
2900   if (dwarf2_per_objfile->using_index
2901       ? per_cu->v.quick->compunit_symtab == NULL
2902       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2903     {
2904       queue_comp_unit (per_cu, language_minimal);
2905       load_cu (per_cu, skip_partial);
2906
2907       /* If we just loaded a CU from a DWO, and we're working with an index
2908          that may badly handle TUs, load all the TUs in that DWO as well.
2909          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2910       if (!per_cu->is_debug_types
2911           && per_cu->cu != NULL
2912           && per_cu->cu->dwo_unit != NULL
2913           && dwarf2_per_objfile->index_table != NULL
2914           && dwarf2_per_objfile->index_table->version <= 7
2915           /* DWP files aren't supported yet.  */
2916           && get_dwp_file (dwarf2_per_objfile) == NULL)
2917         queue_and_load_all_dwo_tus (per_cu);
2918     }
2919
2920   process_queue (dwarf2_per_objfile);
2921
2922   /* Age the cache, releasing compilation units that have not
2923      been used recently.  */
2924   age_cached_comp_units (dwarf2_per_objfile);
2925 }
2926
2927 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2928    the objfile from which this CU came.  Returns the resulting symbol
2929    table.  */
2930
2931 static struct compunit_symtab *
2932 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2933 {
2934   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2935
2936   gdb_assert (dwarf2_per_objfile->using_index);
2937   if (!per_cu->v.quick->compunit_symtab)
2938     {
2939       free_cached_comp_units freer (dwarf2_per_objfile);
2940       scoped_restore decrementer = increment_reading_symtab ();
2941       dw2_do_instantiate_symtab (per_cu, skip_partial);
2942       process_cu_includes (dwarf2_per_objfile);
2943     }
2944
2945   return per_cu->v.quick->compunit_symtab;
2946 }
2947
2948 /* See declaration.  */
2949
2950 dwarf2_per_cu_data *
2951 dwarf2_per_objfile::get_cutu (int index)
2952 {
2953   if (index >= this->all_comp_units.size ())
2954     {
2955       index -= this->all_comp_units.size ();
2956       gdb_assert (index < this->all_type_units.size ());
2957       return &this->all_type_units[index]->per_cu;
2958     }
2959
2960   return this->all_comp_units[index];
2961 }
2962
2963 /* See declaration.  */
2964
2965 dwarf2_per_cu_data *
2966 dwarf2_per_objfile::get_cu (int index)
2967 {
2968   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2969
2970   return this->all_comp_units[index];
2971 }
2972
2973 /* See declaration.  */
2974
2975 signatured_type *
2976 dwarf2_per_objfile::get_tu (int index)
2977 {
2978   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2979
2980   return this->all_type_units[index];
2981 }
2982
2983 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2984    objfile_obstack, and constructed with the specified field
2985    values.  */
2986
2987 static dwarf2_per_cu_data *
2988 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2989                           struct dwarf2_section_info *section,
2990                           int is_dwz,
2991                           sect_offset sect_off, ULONGEST length)
2992 {
2993   struct objfile *objfile = dwarf2_per_objfile->objfile;
2994   dwarf2_per_cu_data *the_cu
2995     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2996                      struct dwarf2_per_cu_data);
2997   the_cu->sect_off = sect_off;
2998   the_cu->length = length;
2999   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
3000   the_cu->section = section;
3001   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3002                                    struct dwarf2_per_cu_quick_data);
3003   the_cu->is_dwz = is_dwz;
3004   return the_cu;
3005 }
3006
3007 /* A helper for create_cus_from_index that handles a given list of
3008    CUs.  */
3009
3010 static void
3011 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
3012                             const gdb_byte *cu_list, offset_type n_elements,
3013                             struct dwarf2_section_info *section,
3014                             int is_dwz)
3015 {
3016   for (offset_type i = 0; i < n_elements; i += 2)
3017     {
3018       gdb_static_assert (sizeof (ULONGEST) >= 8);
3019
3020       sect_offset sect_off
3021         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
3022       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
3023       cu_list += 2 * 8;
3024
3025       dwarf2_per_cu_data *per_cu
3026         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3027                                      sect_off, length);
3028       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3029     }
3030 }
3031
3032 /* Read the CU list from the mapped index, and use it to create all
3033    the CU objects for this objfile.  */
3034
3035 static void
3036 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3037                        const gdb_byte *cu_list, offset_type cu_list_elements,
3038                        const gdb_byte *dwz_list, offset_type dwz_elements)
3039 {
3040   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3041   dwarf2_per_objfile->all_comp_units.reserve
3042     ((cu_list_elements + dwz_elements) / 2);
3043
3044   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3045                               &dwarf2_per_objfile->info, 0);
3046
3047   if (dwz_elements == 0)
3048     return;
3049
3050   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3051   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3052                               &dwz->info, 1);
3053 }
3054
3055 /* Create the signatured type hash table from the index.  */
3056
3057 static void
3058 create_signatured_type_table_from_index
3059   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3060    struct dwarf2_section_info *section,
3061    const gdb_byte *bytes,
3062    offset_type elements)
3063 {
3064   struct objfile *objfile = dwarf2_per_objfile->objfile;
3065
3066   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3067   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3068
3069   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3070
3071   for (offset_type i = 0; i < elements; i += 3)
3072     {
3073       struct signatured_type *sig_type;
3074       ULONGEST signature;
3075       void **slot;
3076       cu_offset type_offset_in_tu;
3077
3078       gdb_static_assert (sizeof (ULONGEST) >= 8);
3079       sect_offset sect_off
3080         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3081       type_offset_in_tu
3082         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3083                                                 BFD_ENDIAN_LITTLE);
3084       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3085       bytes += 3 * 8;
3086
3087       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3088                                  struct signatured_type);
3089       sig_type->signature = signature;
3090       sig_type->type_offset_in_tu = type_offset_in_tu;
3091       sig_type->per_cu.is_debug_types = 1;
3092       sig_type->per_cu.section = section;
3093       sig_type->per_cu.sect_off = sect_off;
3094       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3095       sig_type->per_cu.v.quick
3096         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3097                           struct dwarf2_per_cu_quick_data);
3098
3099       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3100       *slot = sig_type;
3101
3102       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3103     }
3104
3105   dwarf2_per_objfile->signatured_types = sig_types_hash;
3106 }
3107
3108 /* Create the signatured type hash table from .debug_names.  */
3109
3110 static void
3111 create_signatured_type_table_from_debug_names
3112   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3113    const mapped_debug_names &map,
3114    struct dwarf2_section_info *section,
3115    struct dwarf2_section_info *abbrev_section)
3116 {
3117   struct objfile *objfile = dwarf2_per_objfile->objfile;
3118
3119   dwarf2_read_section (objfile, section);
3120   dwarf2_read_section (objfile, abbrev_section);
3121
3122   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3123   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3124
3125   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3126
3127   for (uint32_t i = 0; i < map.tu_count; ++i)
3128     {
3129       struct signatured_type *sig_type;
3130       void **slot;
3131
3132       sect_offset sect_off
3133         = (sect_offset) (extract_unsigned_integer
3134                          (map.tu_table_reordered + i * map.offset_size,
3135                           map.offset_size,
3136                           map.dwarf5_byte_order));
3137
3138       comp_unit_head cu_header;
3139       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3140                                      abbrev_section,
3141                                      section->buffer + to_underlying (sect_off),
3142                                      rcuh_kind::TYPE);
3143
3144       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3145                                  struct signatured_type);
3146       sig_type->signature = cu_header.signature;
3147       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3148       sig_type->per_cu.is_debug_types = 1;
3149       sig_type->per_cu.section = section;
3150       sig_type->per_cu.sect_off = sect_off;
3151       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3152       sig_type->per_cu.v.quick
3153         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3154                           struct dwarf2_per_cu_quick_data);
3155
3156       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3157       *slot = sig_type;
3158
3159       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3160     }
3161
3162   dwarf2_per_objfile->signatured_types = sig_types_hash;
3163 }
3164
3165 /* Read the address map data from the mapped index, and use it to
3166    populate the objfile's psymtabs_addrmap.  */
3167
3168 static void
3169 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3170                            struct mapped_index *index)
3171 {
3172   struct objfile *objfile = dwarf2_per_objfile->objfile;
3173   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3174   const gdb_byte *iter, *end;
3175   struct addrmap *mutable_map;
3176   CORE_ADDR baseaddr;
3177
3178   auto_obstack temp_obstack;
3179
3180   mutable_map = addrmap_create_mutable (&temp_obstack);
3181
3182   iter = index->address_table.data ();
3183   end = iter + index->address_table.size ();
3184
3185   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3186
3187   while (iter < end)
3188     {
3189       ULONGEST hi, lo, cu_index;
3190       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3191       iter += 8;
3192       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3193       iter += 8;
3194       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3195       iter += 4;
3196
3197       if (lo > hi)
3198         {
3199           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3200                      hex_string (lo), hex_string (hi));
3201           continue;
3202         }
3203
3204       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3205         {
3206           complaint (_(".gdb_index address table has invalid CU number %u"),
3207                      (unsigned) cu_index);
3208           continue;
3209         }
3210
3211       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3212       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3213       addrmap_set_empty (mutable_map, lo, hi - 1,
3214                          dwarf2_per_objfile->get_cu (cu_index));
3215     }
3216
3217   objfile->partial_symtabs->psymtabs_addrmap
3218     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3219 }
3220
3221 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3222    populate the objfile's psymtabs_addrmap.  */
3223
3224 static void
3225 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3226                              struct dwarf2_section_info *section)
3227 {
3228   struct objfile *objfile = dwarf2_per_objfile->objfile;
3229   bfd *abfd = objfile->obfd;
3230   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3231   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3232                                        SECT_OFF_TEXT (objfile));
3233
3234   auto_obstack temp_obstack;
3235   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3236
3237   std::unordered_map<sect_offset,
3238                      dwarf2_per_cu_data *,
3239                      gdb::hash_enum<sect_offset>>
3240     debug_info_offset_to_per_cu;
3241   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3242     {
3243       const auto insertpair
3244         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3245       if (!insertpair.second)
3246         {
3247           warning (_("Section .debug_aranges in %s has duplicate "
3248                      "debug_info_offset %s, ignoring .debug_aranges."),
3249                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3250           return;
3251         }
3252     }
3253
3254   dwarf2_read_section (objfile, section);
3255
3256   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3257
3258   const gdb_byte *addr = section->buffer;
3259
3260   while (addr < section->buffer + section->size)
3261     {
3262       const gdb_byte *const entry_addr = addr;
3263       unsigned int bytes_read;
3264
3265       const LONGEST entry_length = read_initial_length (abfd, addr,
3266                                                         &bytes_read);
3267       addr += bytes_read;
3268
3269       const gdb_byte *const entry_end = addr + entry_length;
3270       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3271       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3272       if (addr + entry_length > section->buffer + section->size)
3273         {
3274           warning (_("Section .debug_aranges in %s entry at offset %zu "
3275                      "length %s exceeds section length %s, "
3276                      "ignoring .debug_aranges."),
3277                    objfile_name (objfile), entry_addr - section->buffer,
3278                    plongest (bytes_read + entry_length),
3279                    pulongest (section->size));
3280           return;
3281         }
3282
3283       /* The version number.  */
3284       const uint16_t version = read_2_bytes (abfd, addr);
3285       addr += 2;
3286       if (version != 2)
3287         {
3288           warning (_("Section .debug_aranges in %s entry at offset %zu "
3289                      "has unsupported version %d, ignoring .debug_aranges."),
3290                    objfile_name (objfile), entry_addr - section->buffer,
3291                    version);
3292           return;
3293         }
3294
3295       const uint64_t debug_info_offset
3296         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3297       addr += offset_size;
3298       const auto per_cu_it
3299         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3300       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3301         {
3302           warning (_("Section .debug_aranges in %s entry at offset %zu "
3303                      "debug_info_offset %s does not exists, "
3304                      "ignoring .debug_aranges."),
3305                    objfile_name (objfile), entry_addr - section->buffer,
3306                    pulongest (debug_info_offset));
3307           return;
3308         }
3309       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3310
3311       const uint8_t address_size = *addr++;
3312       if (address_size < 1 || address_size > 8)
3313         {
3314           warning (_("Section .debug_aranges in %s entry at offset %zu "
3315                      "address_size %u is invalid, ignoring .debug_aranges."),
3316                    objfile_name (objfile), entry_addr - section->buffer,
3317                    address_size);
3318           return;
3319         }
3320
3321       const uint8_t segment_selector_size = *addr++;
3322       if (segment_selector_size != 0)
3323         {
3324           warning (_("Section .debug_aranges in %s entry at offset %zu "
3325                      "segment_selector_size %u is not supported, "
3326                      "ignoring .debug_aranges."),
3327                    objfile_name (objfile), entry_addr - section->buffer,
3328                    segment_selector_size);
3329           return;
3330         }
3331
3332       /* Must pad to an alignment boundary that is twice the address
3333          size.  It is undocumented by the DWARF standard but GCC does
3334          use it.  */
3335       for (size_t padding = ((-(addr - section->buffer))
3336                              & (2 * address_size - 1));
3337            padding > 0; padding--)
3338         if (*addr++ != 0)
3339           {
3340             warning (_("Section .debug_aranges in %s entry at offset %zu "
3341                        "padding is not zero, ignoring .debug_aranges."),
3342                      objfile_name (objfile), entry_addr - section->buffer);
3343             return;
3344           }
3345
3346       for (;;)
3347         {
3348           if (addr + 2 * address_size > entry_end)
3349             {
3350               warning (_("Section .debug_aranges in %s entry at offset %zu "
3351                          "address list is not properly terminated, "
3352                          "ignoring .debug_aranges."),
3353                        objfile_name (objfile), entry_addr - section->buffer);
3354               return;
3355             }
3356           ULONGEST start = extract_unsigned_integer (addr, address_size,
3357                                                      dwarf5_byte_order);
3358           addr += address_size;
3359           ULONGEST length = extract_unsigned_integer (addr, address_size,
3360                                                       dwarf5_byte_order);
3361           addr += address_size;
3362           if (start == 0 && length == 0)
3363             break;
3364           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3365             {
3366               /* Symbol was eliminated due to a COMDAT group.  */
3367               continue;
3368             }
3369           ULONGEST end = start + length;
3370           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3371                    - baseaddr);
3372           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3373                  - baseaddr);
3374           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3375         }
3376     }
3377
3378   objfile->partial_symtabs->psymtabs_addrmap
3379     = addrmap_create_fixed (mutable_map, objfile->partial_symtabs->obstack ());
3380 }
3381
3382 /* Find a slot in the mapped index INDEX for the object named NAME.
3383    If NAME is found, set *VEC_OUT to point to the CU vector in the
3384    constant pool and return true.  If NAME cannot be found, return
3385    false.  */
3386
3387 static bool
3388 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3389                           offset_type **vec_out)
3390 {
3391   offset_type hash;
3392   offset_type slot, step;
3393   int (*cmp) (const char *, const char *);
3394
3395   gdb::unique_xmalloc_ptr<char> without_params;
3396   if (current_language->la_language == language_cplus
3397       || current_language->la_language == language_fortran
3398       || current_language->la_language == language_d)
3399     {
3400       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3401          not contain any.  */
3402
3403       if (strchr (name, '(') != NULL)
3404         {
3405           without_params = cp_remove_params (name);
3406
3407           if (without_params != NULL)
3408             name = without_params.get ();
3409         }
3410     }
3411
3412   /* Index version 4 did not support case insensitive searches.  But the
3413      indices for case insensitive languages are built in lowercase, therefore
3414      simulate our NAME being searched is also lowercased.  */
3415   hash = mapped_index_string_hash ((index->version == 4
3416                                     && case_sensitivity == case_sensitive_off
3417                                     ? 5 : index->version),
3418                                    name);
3419
3420   slot = hash & (index->symbol_table.size () - 1);
3421   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3422   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3423
3424   for (;;)
3425     {
3426       const char *str;
3427
3428       const auto &bucket = index->symbol_table[slot];
3429       if (bucket.name == 0 && bucket.vec == 0)
3430         return false;
3431
3432       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3433       if (!cmp (name, str))
3434         {
3435           *vec_out = (offset_type *) (index->constant_pool
3436                                       + MAYBE_SWAP (bucket.vec));
3437           return true;
3438         }
3439
3440       slot = (slot + step) & (index->symbol_table.size () - 1);
3441     }
3442 }
3443
3444 /* A helper function that reads the .gdb_index from BUFFER and fills
3445    in MAP.  FILENAME is the name of the file containing the data;
3446    it is used for error reporting.  DEPRECATED_OK is true if it is
3447    ok to use deprecated sections.
3448
3449    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3450    out parameters that are filled in with information about the CU and
3451    TU lists in the section.
3452
3453    Returns true if all went well, false otherwise.  */
3454
3455 static bool
3456 read_gdb_index_from_buffer (struct objfile *objfile,
3457                             const char *filename,
3458                             bool deprecated_ok,
3459                             gdb::array_view<const gdb_byte> buffer,
3460                             struct mapped_index *map,
3461                             const gdb_byte **cu_list,
3462                             offset_type *cu_list_elements,
3463                             const gdb_byte **types_list,
3464                             offset_type *types_list_elements)
3465 {
3466   const gdb_byte *addr = &buffer[0];
3467
3468   /* Version check.  */
3469   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3470   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3471      causes the index to behave very poorly for certain requests.  Version 3
3472      contained incomplete addrmap.  So, it seems better to just ignore such
3473      indices.  */
3474   if (version < 4)
3475     {
3476       static int warning_printed = 0;
3477       if (!warning_printed)
3478         {
3479           warning (_("Skipping obsolete .gdb_index section in %s."),
3480                    filename);
3481           warning_printed = 1;
3482         }
3483       return 0;
3484     }
3485   /* Index version 4 uses a different hash function than index version
3486      5 and later.
3487
3488      Versions earlier than 6 did not emit psymbols for inlined
3489      functions.  Using these files will cause GDB not to be able to
3490      set breakpoints on inlined functions by name, so we ignore these
3491      indices unless the user has done
3492      "set use-deprecated-index-sections on".  */
3493   if (version < 6 && !deprecated_ok)
3494     {
3495       static int warning_printed = 0;
3496       if (!warning_printed)
3497         {
3498           warning (_("\
3499 Skipping deprecated .gdb_index section in %s.\n\
3500 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3501 to use the section anyway."),
3502                    filename);
3503           warning_printed = 1;
3504         }
3505       return 0;
3506     }
3507   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3508      of the TU (for symbols coming from TUs),
3509      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3510      Plus gold-generated indices can have duplicate entries for global symbols,
3511      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3512      These are just performance bugs, and we can't distinguish gdb-generated
3513      indices from gold-generated ones, so issue no warning here.  */
3514
3515   /* Indexes with higher version than the one supported by GDB may be no
3516      longer backward compatible.  */
3517   if (version > 8)
3518     return 0;
3519
3520   map->version = version;
3521
3522   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3523
3524   int i = 0;
3525   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3526   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3527                        / 8);
3528   ++i;
3529
3530   *types_list = addr + MAYBE_SWAP (metadata[i]);
3531   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3532                            - MAYBE_SWAP (metadata[i]))
3533                           / 8);
3534   ++i;
3535
3536   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3537   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3538   map->address_table
3539     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3540   ++i;
3541
3542   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3543   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3544   map->symbol_table
3545     = gdb::array_view<mapped_index::symbol_table_slot>
3546        ((mapped_index::symbol_table_slot *) symbol_table,
3547         (mapped_index::symbol_table_slot *) symbol_table_end);
3548
3549   ++i;
3550   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3551
3552   return 1;
3553 }
3554
3555 /* Callback types for dwarf2_read_gdb_index.  */
3556
3557 typedef gdb::function_view
3558     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3559     get_gdb_index_contents_ftype;
3560 typedef gdb::function_view
3561     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3562     get_gdb_index_contents_dwz_ftype;
3563
3564 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3565    elements of all the CUs and return 1.  Otherwise, return 0.  */
3566
3567 static int
3568 dwarf2_read_gdb_index
3569   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3570    get_gdb_index_contents_ftype get_gdb_index_contents,
3571    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3572 {
3573   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3574   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3575   struct dwz_file *dwz;
3576   struct objfile *objfile = dwarf2_per_objfile->objfile;
3577
3578   gdb::array_view<const gdb_byte> main_index_contents
3579     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3580
3581   if (main_index_contents.empty ())
3582     return 0;
3583
3584   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3585   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3586                                    use_deprecated_index_sections,
3587                                    main_index_contents, map.get (), &cu_list,
3588                                    &cu_list_elements, &types_list,
3589                                    &types_list_elements))
3590     return 0;
3591
3592   /* Don't use the index if it's empty.  */
3593   if (map->symbol_table.empty ())
3594     return 0;
3595
3596   /* If there is a .dwz file, read it so we can get its CU list as
3597      well.  */
3598   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3599   if (dwz != NULL)
3600     {
3601       struct mapped_index dwz_map;
3602       const gdb_byte *dwz_types_ignore;
3603       offset_type dwz_types_elements_ignore;
3604
3605       gdb::array_view<const gdb_byte> dwz_index_content
3606         = get_gdb_index_contents_dwz (objfile, dwz);
3607
3608       if (dwz_index_content.empty ())
3609         return 0;
3610
3611       if (!read_gdb_index_from_buffer (objfile,
3612                                        bfd_get_filename (dwz->dwz_bfd), 1,
3613                                        dwz_index_content, &dwz_map,
3614                                        &dwz_list, &dwz_list_elements,
3615                                        &dwz_types_ignore,
3616                                        &dwz_types_elements_ignore))
3617         {
3618           warning (_("could not read '.gdb_index' section from %s; skipping"),
3619                    bfd_get_filename (dwz->dwz_bfd));
3620           return 0;
3621         }
3622     }
3623
3624   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3625                          dwz_list, dwz_list_elements);
3626
3627   if (types_list_elements)
3628     {
3629       struct dwarf2_section_info *section;
3630
3631       /* We can only handle a single .debug_types when we have an
3632          index.  */
3633       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3634         return 0;
3635
3636       section = VEC_index (dwarf2_section_info_def,
3637                            dwarf2_per_objfile->types, 0);
3638
3639       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3640                                                types_list, types_list_elements);
3641     }
3642
3643   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3644
3645   dwarf2_per_objfile->index_table = std::move (map);
3646   dwarf2_per_objfile->using_index = 1;
3647   dwarf2_per_objfile->quick_file_names_table =
3648     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3649
3650   return 1;
3651 }
3652
3653 /* die_reader_func for dw2_get_file_names.  */
3654
3655 static void
3656 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3657                            const gdb_byte *info_ptr,
3658                            struct die_info *comp_unit_die,
3659                            int has_children,
3660                            void *data)
3661 {
3662   struct dwarf2_cu *cu = reader->cu;
3663   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3664   struct dwarf2_per_objfile *dwarf2_per_objfile
3665     = cu->per_cu->dwarf2_per_objfile;
3666   struct objfile *objfile = dwarf2_per_objfile->objfile;
3667   struct dwarf2_per_cu_data *lh_cu;
3668   struct attribute *attr;
3669   int i;
3670   void **slot;
3671   struct quick_file_names *qfn;
3672
3673   gdb_assert (! this_cu->is_debug_types);
3674
3675   /* Our callers never want to match partial units -- instead they
3676      will match the enclosing full CU.  */
3677   if (comp_unit_die->tag == DW_TAG_partial_unit)
3678     {
3679       this_cu->v.quick->no_file_data = 1;
3680       return;
3681     }
3682
3683   lh_cu = this_cu;
3684   slot = NULL;
3685
3686   line_header_up lh;
3687   sect_offset line_offset {};
3688
3689   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3690   if (attr)
3691     {
3692       struct quick_file_names find_entry;
3693
3694       line_offset = (sect_offset) DW_UNSND (attr);
3695
3696       /* We may have already read in this line header (TU line header sharing).
3697          If we have we're done.  */
3698       find_entry.hash.dwo_unit = cu->dwo_unit;
3699       find_entry.hash.line_sect_off = line_offset;
3700       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3701                              &find_entry, INSERT);
3702       if (*slot != NULL)
3703         {
3704           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3705           return;
3706         }
3707
3708       lh = dwarf_decode_line_header (line_offset, cu);
3709     }
3710   if (lh == NULL)
3711     {
3712       lh_cu->v.quick->no_file_data = 1;
3713       return;
3714     }
3715
3716   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3717   qfn->hash.dwo_unit = cu->dwo_unit;
3718   qfn->hash.line_sect_off = line_offset;
3719   gdb_assert (slot != NULL);
3720   *slot = qfn;
3721
3722   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3723
3724   qfn->num_file_names = lh->file_names.size ();
3725   qfn->file_names =
3726     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3727   for (i = 0; i < lh->file_names.size (); ++i)
3728     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3729   qfn->real_names = NULL;
3730
3731   lh_cu->v.quick->file_names = qfn;
3732 }
3733
3734 /* A helper for the "quick" functions which attempts to read the line
3735    table for THIS_CU.  */
3736
3737 static struct quick_file_names *
3738 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3739 {
3740   /* This should never be called for TUs.  */
3741   gdb_assert (! this_cu->is_debug_types);
3742   /* Nor type unit groups.  */
3743   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3744
3745   if (this_cu->v.quick->file_names != NULL)
3746     return this_cu->v.quick->file_names;
3747   /* If we know there is no line data, no point in looking again.  */
3748   if (this_cu->v.quick->no_file_data)
3749     return NULL;
3750
3751   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3752
3753   if (this_cu->v.quick->no_file_data)
3754     return NULL;
3755   return this_cu->v.quick->file_names;
3756 }
3757
3758 /* A helper for the "quick" functions which computes and caches the
3759    real path for a given file name from the line table.  */
3760
3761 static const char *
3762 dw2_get_real_path (struct objfile *objfile,
3763                    struct quick_file_names *qfn, int index)
3764 {
3765   if (qfn->real_names == NULL)
3766     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3767                                       qfn->num_file_names, const char *);
3768
3769   if (qfn->real_names[index] == NULL)
3770     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3771
3772   return qfn->real_names[index];
3773 }
3774
3775 static struct symtab *
3776 dw2_find_last_source_symtab (struct objfile *objfile)
3777 {
3778   struct dwarf2_per_objfile *dwarf2_per_objfile
3779     = get_dwarf2_per_objfile (objfile);
3780   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3781   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3782
3783   if (cust == NULL)
3784     return NULL;
3785
3786   return compunit_primary_filetab (cust);
3787 }
3788
3789 /* Traversal function for dw2_forget_cached_source_info.  */
3790
3791 static int
3792 dw2_free_cached_file_names (void **slot, void *info)
3793 {
3794   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3795
3796   if (file_data->real_names)
3797     {
3798       int i;
3799
3800       for (i = 0; i < file_data->num_file_names; ++i)
3801         {
3802           xfree ((void*) file_data->real_names[i]);
3803           file_data->real_names[i] = NULL;
3804         }
3805     }
3806
3807   return 1;
3808 }
3809
3810 static void
3811 dw2_forget_cached_source_info (struct objfile *objfile)
3812 {
3813   struct dwarf2_per_objfile *dwarf2_per_objfile
3814     = get_dwarf2_per_objfile (objfile);
3815
3816   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3817                           dw2_free_cached_file_names, NULL);
3818 }
3819
3820 /* Helper function for dw2_map_symtabs_matching_filename that expands
3821    the symtabs and calls the iterator.  */
3822
3823 static int
3824 dw2_map_expand_apply (struct objfile *objfile,
3825                       struct dwarf2_per_cu_data *per_cu,
3826                       const char *name, const char *real_path,
3827                       gdb::function_view<bool (symtab *)> callback)
3828 {
3829   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3830
3831   /* Don't visit already-expanded CUs.  */
3832   if (per_cu->v.quick->compunit_symtab)
3833     return 0;
3834
3835   /* This may expand more than one symtab, and we want to iterate over
3836      all of them.  */
3837   dw2_instantiate_symtab (per_cu, false);
3838
3839   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3840                                     last_made, callback);
3841 }
3842
3843 /* Implementation of the map_symtabs_matching_filename method.  */
3844
3845 static bool
3846 dw2_map_symtabs_matching_filename
3847   (struct objfile *objfile, const char *name, const char *real_path,
3848    gdb::function_view<bool (symtab *)> callback)
3849 {
3850   const char *name_basename = lbasename (name);
3851   struct dwarf2_per_objfile *dwarf2_per_objfile
3852     = get_dwarf2_per_objfile (objfile);
3853
3854   /* The rule is CUs specify all the files, including those used by
3855      any TU, so there's no need to scan TUs here.  */
3856
3857   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3858     {
3859       /* We only need to look at symtabs not already expanded.  */
3860       if (per_cu->v.quick->compunit_symtab)
3861         continue;
3862
3863       quick_file_names *file_data = dw2_get_file_names (per_cu);
3864       if (file_data == NULL)
3865         continue;
3866
3867       for (int j = 0; j < file_data->num_file_names; ++j)
3868         {
3869           const char *this_name = file_data->file_names[j];
3870           const char *this_real_name;
3871
3872           if (compare_filenames_for_search (this_name, name))
3873             {
3874               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3875                                         callback))
3876                 return true;
3877               continue;
3878             }
3879
3880           /* Before we invoke realpath, which can get expensive when many
3881              files are involved, do a quick comparison of the basenames.  */
3882           if (! basenames_may_differ
3883               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3884             continue;
3885
3886           this_real_name = dw2_get_real_path (objfile, file_data, j);
3887           if (compare_filenames_for_search (this_real_name, name))
3888             {
3889               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3890                                         callback))
3891                 return true;
3892               continue;
3893             }
3894
3895           if (real_path != NULL)
3896             {
3897               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3898               gdb_assert (IS_ABSOLUTE_PATH (name));
3899               if (this_real_name != NULL
3900                   && FILENAME_CMP (real_path, this_real_name) == 0)
3901                 {
3902                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3903                                             callback))
3904                     return true;
3905                   continue;
3906                 }
3907             }
3908         }
3909     }
3910
3911   return false;
3912 }
3913
3914 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3915
3916 struct dw2_symtab_iterator
3917 {
3918   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3919   struct dwarf2_per_objfile *dwarf2_per_objfile;
3920   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3921   int want_specific_block;
3922   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3923      Unused if !WANT_SPECIFIC_BLOCK.  */
3924   int block_index;
3925   /* The kind of symbol we're looking for.  */
3926   domain_enum domain;
3927   /* The list of CUs from the index entry of the symbol,
3928      or NULL if not found.  */
3929   offset_type *vec;
3930   /* The next element in VEC to look at.  */
3931   int next;
3932   /* The number of elements in VEC, or zero if there is no match.  */
3933   int length;
3934   /* Have we seen a global version of the symbol?
3935      If so we can ignore all further global instances.
3936      This is to work around gold/15646, inefficient gold-generated
3937      indices.  */
3938   int global_seen;
3939 };
3940
3941 /* Initialize the index symtab iterator ITER.
3942    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3943    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3944
3945 static void
3946 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3947                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3948                       int want_specific_block,
3949                       int block_index,
3950                       domain_enum domain,
3951                       const char *name)
3952 {
3953   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3954   iter->want_specific_block = want_specific_block;
3955   iter->block_index = block_index;
3956   iter->domain = domain;
3957   iter->next = 0;
3958   iter->global_seen = 0;
3959
3960   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3961
3962   /* index is NULL if OBJF_READNOW.  */
3963   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3964     iter->length = MAYBE_SWAP (*iter->vec);
3965   else
3966     {
3967       iter->vec = NULL;
3968       iter->length = 0;
3969     }
3970 }
3971
3972 /* Return the next matching CU or NULL if there are no more.  */
3973
3974 static struct dwarf2_per_cu_data *
3975 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3976 {
3977   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3978
3979   for ( ; iter->next < iter->length; ++iter->next)
3980     {
3981       offset_type cu_index_and_attrs =
3982         MAYBE_SWAP (iter->vec[iter->next + 1]);
3983       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3984       int want_static = iter->block_index != GLOBAL_BLOCK;
3985       /* This value is only valid for index versions >= 7.  */
3986       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3987       gdb_index_symbol_kind symbol_kind =
3988         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3989       /* Only check the symbol attributes if they're present.
3990          Indices prior to version 7 don't record them,
3991          and indices >= 7 may elide them for certain symbols
3992          (gold does this).  */
3993       int attrs_valid =
3994         (dwarf2_per_objfile->index_table->version >= 7
3995          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3996
3997       /* Don't crash on bad data.  */
3998       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3999                        + dwarf2_per_objfile->all_type_units.size ()))
4000         {
4001           complaint (_(".gdb_index entry has bad CU index"
4002                        " [in module %s]"),
4003                      objfile_name (dwarf2_per_objfile->objfile));
4004           continue;
4005         }
4006
4007       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
4008
4009       /* Skip if already read in.  */
4010       if (per_cu->v.quick->compunit_symtab)
4011         continue;
4012
4013       /* Check static vs global.  */
4014       if (attrs_valid)
4015         {
4016           if (iter->want_specific_block
4017               && want_static != is_static)
4018             continue;
4019           /* Work around gold/15646.  */
4020           if (!is_static && iter->global_seen)
4021             continue;
4022           if (!is_static)
4023             iter->global_seen = 1;
4024         }
4025
4026       /* Only check the symbol's kind if it has one.  */
4027       if (attrs_valid)
4028         {
4029           switch (iter->domain)
4030             {
4031             case VAR_DOMAIN:
4032               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4033                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4034                   /* Some types are also in VAR_DOMAIN.  */
4035                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4036                 continue;
4037               break;
4038             case STRUCT_DOMAIN:
4039               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4040                 continue;
4041               break;
4042             case LABEL_DOMAIN:
4043               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4044                 continue;
4045               break;
4046             default:
4047               break;
4048             }
4049         }
4050
4051       ++iter->next;
4052       return per_cu;
4053     }
4054
4055   return NULL;
4056 }
4057
4058 static struct compunit_symtab *
4059 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4060                    const char *name, domain_enum domain)
4061 {
4062   struct compunit_symtab *stab_best = NULL;
4063   struct dwarf2_per_objfile *dwarf2_per_objfile
4064     = get_dwarf2_per_objfile (objfile);
4065
4066   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4067
4068   struct dw2_symtab_iterator iter;
4069   struct dwarf2_per_cu_data *per_cu;
4070
4071   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4072
4073   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4074     {
4075       struct symbol *sym, *with_opaque = NULL;
4076       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4077       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4078       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4079
4080       sym = block_find_symbol (block, name, domain,
4081                                block_find_non_opaque_type_preferred,
4082                                &with_opaque);
4083
4084       /* Some caution must be observed with overloaded functions
4085          and methods, since the index will not contain any overload
4086          information (but NAME might contain it).  */
4087
4088       if (sym != NULL
4089           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4090         return stab;
4091       if (with_opaque != NULL
4092           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4093         stab_best = stab;
4094
4095       /* Keep looking through other CUs.  */
4096     }
4097
4098   return stab_best;
4099 }
4100
4101 static void
4102 dw2_print_stats (struct objfile *objfile)
4103 {
4104   struct dwarf2_per_objfile *dwarf2_per_objfile
4105     = get_dwarf2_per_objfile (objfile);
4106   int total = (dwarf2_per_objfile->all_comp_units.size ()
4107                + dwarf2_per_objfile->all_type_units.size ());
4108   int count = 0;
4109
4110   for (int i = 0; i < total; ++i)
4111     {
4112       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4113
4114       if (!per_cu->v.quick->compunit_symtab)
4115         ++count;
4116     }
4117   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4118   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4119 }
4120
4121 /* This dumps minimal information about the index.
4122    It is called via "mt print objfiles".
4123    One use is to verify .gdb_index has been loaded by the
4124    gdb.dwarf2/gdb-index.exp testcase.  */
4125
4126 static void
4127 dw2_dump (struct objfile *objfile)
4128 {
4129   struct dwarf2_per_objfile *dwarf2_per_objfile
4130     = get_dwarf2_per_objfile (objfile);
4131
4132   gdb_assert (dwarf2_per_objfile->using_index);
4133   printf_filtered (".gdb_index:");
4134   if (dwarf2_per_objfile->index_table != NULL)
4135     {
4136       printf_filtered (" version %d\n",
4137                        dwarf2_per_objfile->index_table->version);
4138     }
4139   else
4140     printf_filtered (" faked for \"readnow\"\n");
4141   printf_filtered ("\n");
4142 }
4143
4144 static void
4145 dw2_expand_symtabs_for_function (struct objfile *objfile,
4146                                  const char *func_name)
4147 {
4148   struct dwarf2_per_objfile *dwarf2_per_objfile
4149     = get_dwarf2_per_objfile (objfile);
4150
4151   struct dw2_symtab_iterator iter;
4152   struct dwarf2_per_cu_data *per_cu;
4153
4154   /* Note: It doesn't matter what we pass for block_index here.  */
4155   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4156                         func_name);
4157
4158   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4159     dw2_instantiate_symtab (per_cu, false);
4160
4161 }
4162
4163 static void
4164 dw2_expand_all_symtabs (struct objfile *objfile)
4165 {
4166   struct dwarf2_per_objfile *dwarf2_per_objfile
4167     = get_dwarf2_per_objfile (objfile);
4168   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4169                      + dwarf2_per_objfile->all_type_units.size ());
4170
4171   for (int i = 0; i < total_units; ++i)
4172     {
4173       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4174
4175       /* We don't want to directly expand a partial CU, because if we
4176          read it with the wrong language, then assertion failures can
4177          be triggered later on.  See PR symtab/23010.  So, tell
4178          dw2_instantiate_symtab to skip partial CUs -- any important
4179          partial CU will be read via DW_TAG_imported_unit anyway.  */
4180       dw2_instantiate_symtab (per_cu, true);
4181     }
4182 }
4183
4184 static void
4185 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4186                                   const char *fullname)
4187 {
4188   struct dwarf2_per_objfile *dwarf2_per_objfile
4189     = get_dwarf2_per_objfile (objfile);
4190
4191   /* We don't need to consider type units here.
4192      This is only called for examining code, e.g. expand_line_sal.
4193      There can be an order of magnitude (or more) more type units
4194      than comp units, and we avoid them if we can.  */
4195
4196   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4197     {
4198       /* We only need to look at symtabs not already expanded.  */
4199       if (per_cu->v.quick->compunit_symtab)
4200         continue;
4201
4202       quick_file_names *file_data = dw2_get_file_names (per_cu);
4203       if (file_data == NULL)
4204         continue;
4205
4206       for (int j = 0; j < file_data->num_file_names; ++j)
4207         {
4208           const char *this_fullname = file_data->file_names[j];
4209
4210           if (filename_cmp (this_fullname, fullname) == 0)
4211             {
4212               dw2_instantiate_symtab (per_cu, false);
4213               break;
4214             }
4215         }
4216     }
4217 }
4218
4219 static void
4220 dw2_map_matching_symbols (struct objfile *objfile,
4221                           const char * name, domain_enum domain,
4222                           int global,
4223                           int (*callback) (const struct block *,
4224                                            struct symbol *, void *),
4225                           void *data, symbol_name_match_type match,
4226                           symbol_compare_ftype *ordered_compare)
4227 {
4228   /* Currently unimplemented; used for Ada.  The function can be called if the
4229      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4230      does not look for non-Ada symbols this function should just return.  */
4231 }
4232
4233 /* Symbol name matcher for .gdb_index names.
4234
4235    Symbol names in .gdb_index have a few particularities:
4236
4237    - There's no indication of which is the language of each symbol.
4238
4239      Since each language has its own symbol name matching algorithm,
4240      and we don't know which language is the right one, we must match
4241      each symbol against all languages.  This would be a potential
4242      performance problem if it were not mitigated by the
4243      mapped_index::name_components lookup table, which significantly
4244      reduces the number of times we need to call into this matcher,
4245      making it a non-issue.
4246
4247    - Symbol names in the index have no overload (parameter)
4248      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4249      appear as "foo" in the index, for example.
4250
4251      This means that the lookup names passed to the symbol name
4252      matcher functions must have no parameter information either
4253      because (e.g.) symbol search name "foo" does not match
4254      lookup-name "foo(int)" [while swapping search name for lookup
4255      name would match].
4256 */
4257 class gdb_index_symbol_name_matcher
4258 {
4259 public:
4260   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4261   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4262
4263   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4264      Returns true if any matcher matches.  */
4265   bool matches (const char *symbol_name);
4266
4267 private:
4268   /* A reference to the lookup name we're matching against.  */
4269   const lookup_name_info &m_lookup_name;
4270
4271   /* A vector holding all the different symbol name matchers, for all
4272      languages.  */
4273   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4274 };
4275
4276 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4277   (const lookup_name_info &lookup_name)
4278     : m_lookup_name (lookup_name)
4279 {
4280   /* Prepare the vector of comparison functions upfront, to avoid
4281      doing the same work for each symbol.  Care is taken to avoid
4282      matching with the same matcher more than once if/when multiple
4283      languages use the same matcher function.  */
4284   auto &matchers = m_symbol_name_matcher_funcs;
4285   matchers.reserve (nr_languages);
4286
4287   matchers.push_back (default_symbol_name_matcher);
4288
4289   for (int i = 0; i < nr_languages; i++)
4290     {
4291       const language_defn *lang = language_def ((enum language) i);
4292       symbol_name_matcher_ftype *name_matcher
4293         = get_symbol_name_matcher (lang, m_lookup_name);
4294
4295       /* Don't insert the same comparison routine more than once.
4296          Note that we do this linear walk instead of a seemingly
4297          cheaper sorted insert, or use a std::set or something like
4298          that, because relative order of function addresses is not
4299          stable.  This is not a problem in practice because the number
4300          of supported languages is low, and the cost here is tiny
4301          compared to the number of searches we'll do afterwards using
4302          this object.  */
4303       if (name_matcher != default_symbol_name_matcher
4304           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4305               == matchers.end ()))
4306         matchers.push_back (name_matcher);
4307     }
4308 }
4309
4310 bool
4311 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4312 {
4313   for (auto matches_name : m_symbol_name_matcher_funcs)
4314     if (matches_name (symbol_name, m_lookup_name, NULL))
4315       return true;
4316
4317   return false;
4318 }
4319
4320 /* Starting from a search name, return the string that finds the upper
4321    bound of all strings that start with SEARCH_NAME in a sorted name
4322    list.  Returns the empty string to indicate that the upper bound is
4323    the end of the list.  */
4324
4325 static std::string
4326 make_sort_after_prefix_name (const char *search_name)
4327 {
4328   /* When looking to complete "func", we find the upper bound of all
4329      symbols that start with "func" by looking for where we'd insert
4330      the closest string that would follow "func" in lexicographical
4331      order.  Usually, that's "func"-with-last-character-incremented,
4332      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4333      will be UTF-8 multi-byte sequences, but we can't be certain.
4334      Especially mind the 0xff character, which is a valid character in
4335      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4336      rule out compilers allowing it in identifiers.  Note that
4337      conveniently, strcmp/strcasecmp are specified to compare
4338      characters interpreted as unsigned char.  So what we do is treat
4339      the whole string as a base 256 number composed of a sequence of
4340      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4341      to 0, and carries 1 to the following more-significant position.
4342      If the very first character in SEARCH_NAME ends up incremented
4343      and carries/overflows, then the upper bound is the end of the
4344      list.  The string after the empty string is also the empty
4345      string.
4346
4347      Some examples of this operation:
4348
4349        SEARCH_NAME  => "+1" RESULT
4350
4351        "abc"              => "abd"
4352        "ab\xff"           => "ac"
4353        "\xff" "a" "\xff"  => "\xff" "b"
4354        "\xff"             => ""
4355        "\xff\xff"         => ""
4356        ""                 => ""
4357
4358      Then, with these symbols for example:
4359
4360       func
4361       func1
4362       fund
4363
4364      completing "func" looks for symbols between "func" and
4365      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4366      which finds "func" and "func1", but not "fund".
4367
4368      And with:
4369
4370       funcÿ     (Latin1 'ÿ' [0xff])
4371       funcÿ1
4372       fund
4373
4374      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4375      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4376
4377      And with:
4378
4379       ÿÿ        (Latin1 'ÿ' [0xff])
4380       ÿÿ1
4381
4382      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4383      the end of the list.
4384   */
4385   std::string after = search_name;
4386   while (!after.empty () && (unsigned char) after.back () == 0xff)
4387     after.pop_back ();
4388   if (!after.empty ())
4389     after.back () = (unsigned char) after.back () + 1;
4390   return after;
4391 }
4392
4393 /* See declaration.  */
4394
4395 std::pair<std::vector<name_component>::const_iterator,
4396           std::vector<name_component>::const_iterator>
4397 mapped_index_base::find_name_components_bounds
4398   (const lookup_name_info &lookup_name_without_params) const
4399 {
4400   auto *name_cmp
4401     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4402
4403   const char *cplus
4404     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4405
4406   /* Comparison function object for lower_bound that matches against a
4407      given symbol name.  */
4408   auto lookup_compare_lower = [&] (const name_component &elem,
4409                                    const char *name)
4410     {
4411       const char *elem_qualified = this->symbol_name_at (elem.idx);
4412       const char *elem_name = elem_qualified + elem.name_offset;
4413       return name_cmp (elem_name, name) < 0;
4414     };
4415
4416   /* Comparison function object for upper_bound that matches against a
4417      given symbol name.  */
4418   auto lookup_compare_upper = [&] (const char *name,
4419                                    const name_component &elem)
4420     {
4421       const char *elem_qualified = this->symbol_name_at (elem.idx);
4422       const char *elem_name = elem_qualified + elem.name_offset;
4423       return name_cmp (name, elem_name) < 0;
4424     };
4425
4426   auto begin = this->name_components.begin ();
4427   auto end = this->name_components.end ();
4428
4429   /* Find the lower bound.  */
4430   auto lower = [&] ()
4431     {
4432       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4433         return begin;
4434       else
4435         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4436     } ();
4437
4438   /* Find the upper bound.  */
4439   auto upper = [&] ()
4440     {
4441       if (lookup_name_without_params.completion_mode ())
4442         {
4443           /* In completion mode, we want UPPER to point past all
4444              symbols names that have the same prefix.  I.e., with
4445              these symbols, and completing "func":
4446
4447               function        << lower bound
4448               function1
4449               other_function  << upper bound
4450
4451              We find the upper bound by looking for the insertion
4452              point of "func"-with-last-character-incremented,
4453              i.e. "fund".  */
4454           std::string after = make_sort_after_prefix_name (cplus);
4455           if (after.empty ())
4456             return end;
4457           return std::lower_bound (lower, end, after.c_str (),
4458                                    lookup_compare_lower);
4459         }
4460       else
4461         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4462     } ();
4463
4464   return {lower, upper};
4465 }
4466
4467 /* See declaration.  */
4468
4469 void
4470 mapped_index_base::build_name_components ()
4471 {
4472   if (!this->name_components.empty ())
4473     return;
4474
4475   this->name_components_casing = case_sensitivity;
4476   auto *name_cmp
4477     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4478
4479   /* The code below only knows how to break apart components of C++
4480      symbol names (and other languages that use '::' as
4481      namespace/module separator).  If we add support for wild matching
4482      to some language that uses some other operator (E.g., Ada, Go and
4483      D use '.'), then we'll need to try splitting the symbol name
4484      according to that language too.  Note that Ada does support wild
4485      matching, but doesn't currently support .gdb_index.  */
4486   auto count = this->symbol_name_count ();
4487   for (offset_type idx = 0; idx < count; idx++)
4488     {
4489       if (this->symbol_name_slot_invalid (idx))
4490         continue;
4491
4492       const char *name = this->symbol_name_at (idx);
4493
4494       /* Add each name component to the name component table.  */
4495       unsigned int previous_len = 0;
4496       for (unsigned int current_len = cp_find_first_component (name);
4497            name[current_len] != '\0';
4498            current_len += cp_find_first_component (name + current_len))
4499         {
4500           gdb_assert (name[current_len] == ':');
4501           this->name_components.push_back ({previous_len, idx});
4502           /* Skip the '::'.  */
4503           current_len += 2;
4504           previous_len = current_len;
4505         }
4506       this->name_components.push_back ({previous_len, idx});
4507     }
4508
4509   /* Sort name_components elements by name.  */
4510   auto name_comp_compare = [&] (const name_component &left,
4511                                 const name_component &right)
4512     {
4513       const char *left_qualified = this->symbol_name_at (left.idx);
4514       const char *right_qualified = this->symbol_name_at (right.idx);
4515
4516       const char *left_name = left_qualified + left.name_offset;
4517       const char *right_name = right_qualified + right.name_offset;
4518
4519       return name_cmp (left_name, right_name) < 0;
4520     };
4521
4522   std::sort (this->name_components.begin (),
4523              this->name_components.end (),
4524              name_comp_compare);
4525 }
4526
4527 /* Helper for dw2_expand_symtabs_matching that works with a
4528    mapped_index_base instead of the containing objfile.  This is split
4529    to a separate function in order to be able to unit test the
4530    name_components matching using a mock mapped_index_base.  For each
4531    symbol name that matches, calls MATCH_CALLBACK, passing it the
4532    symbol's index in the mapped_index_base symbol table.  */
4533
4534 static void
4535 dw2_expand_symtabs_matching_symbol
4536   (mapped_index_base &index,
4537    const lookup_name_info &lookup_name_in,
4538    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4539    enum search_domain kind,
4540    gdb::function_view<void (offset_type)> match_callback)
4541 {
4542   lookup_name_info lookup_name_without_params
4543     = lookup_name_in.make_ignore_params ();
4544   gdb_index_symbol_name_matcher lookup_name_matcher
4545     (lookup_name_without_params);
4546
4547   /* Build the symbol name component sorted vector, if we haven't
4548      yet.  */
4549   index.build_name_components ();
4550
4551   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4552
4553   /* Now for each symbol name in range, check to see if we have a name
4554      match, and if so, call the MATCH_CALLBACK callback.  */
4555
4556   /* The same symbol may appear more than once in the range though.
4557      E.g., if we're looking for symbols that complete "w", and we have
4558      a symbol named "w1::w2", we'll find the two name components for
4559      that same symbol in the range.  To be sure we only call the
4560      callback once per symbol, we first collect the symbol name
4561      indexes that matched in a temporary vector and ignore
4562      duplicates.  */
4563   std::vector<offset_type> matches;
4564   matches.reserve (std::distance (bounds.first, bounds.second));
4565
4566   for (; bounds.first != bounds.second; ++bounds.first)
4567     {
4568       const char *qualified = index.symbol_name_at (bounds.first->idx);
4569
4570       if (!lookup_name_matcher.matches (qualified)
4571           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4572         continue;
4573
4574       matches.push_back (bounds.first->idx);
4575     }
4576
4577   std::sort (matches.begin (), matches.end ());
4578
4579   /* Finally call the callback, once per match.  */
4580   ULONGEST prev = -1;
4581   for (offset_type idx : matches)
4582     {
4583       if (prev != idx)
4584         {
4585           match_callback (idx);
4586           prev = idx;
4587         }
4588     }
4589
4590   /* Above we use a type wider than idx's for 'prev', since 0 and
4591      (offset_type)-1 are both possible values.  */
4592   static_assert (sizeof (prev) > sizeof (offset_type), "");
4593 }
4594
4595 #if GDB_SELF_TEST
4596
4597 namespace selftests { namespace dw2_expand_symtabs_matching {
4598
4599 /* A mock .gdb_index/.debug_names-like name index table, enough to
4600    exercise dw2_expand_symtabs_matching_symbol, which works with the
4601    mapped_index_base interface.  Builds an index from the symbol list
4602    passed as parameter to the constructor.  */
4603 class mock_mapped_index : public mapped_index_base
4604 {
4605 public:
4606   mock_mapped_index (gdb::array_view<const char *> symbols)
4607     : m_symbol_table (symbols)
4608   {}
4609
4610   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4611
4612   /* Return the number of names in the symbol table.  */
4613   size_t symbol_name_count () const override
4614   {
4615     return m_symbol_table.size ();
4616   }
4617
4618   /* Get the name of the symbol at IDX in the symbol table.  */
4619   const char *symbol_name_at (offset_type idx) const override
4620   {
4621     return m_symbol_table[idx];
4622   }
4623
4624 private:
4625   gdb::array_view<const char *> m_symbol_table;
4626 };
4627
4628 /* Convenience function that converts a NULL pointer to a "<null>"
4629    string, to pass to print routines.  */
4630
4631 static const char *
4632 string_or_null (const char *str)
4633 {
4634   return str != NULL ? str : "<null>";
4635 }
4636
4637 /* Check if a lookup_name_info built from
4638    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4639    index.  EXPECTED_LIST is the list of expected matches, in expected
4640    matching order.  If no match expected, then an empty list is
4641    specified.  Returns true on success.  On failure prints a warning
4642    indicating the file:line that failed, and returns false.  */
4643
4644 static bool
4645 check_match (const char *file, int line,
4646              mock_mapped_index &mock_index,
4647              const char *name, symbol_name_match_type match_type,
4648              bool completion_mode,
4649              std::initializer_list<const char *> expected_list)
4650 {
4651   lookup_name_info lookup_name (name, match_type, completion_mode);
4652
4653   bool matched = true;
4654
4655   auto mismatch = [&] (const char *expected_str,
4656                        const char *got)
4657   {
4658     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4659                "expected=\"%s\", got=\"%s\"\n"),
4660              file, line,
4661              (match_type == symbol_name_match_type::FULL
4662               ? "FULL" : "WILD"),
4663              name, string_or_null (expected_str), string_or_null (got));
4664     matched = false;
4665   };
4666
4667   auto expected_it = expected_list.begin ();
4668   auto expected_end = expected_list.end ();
4669
4670   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4671                                       NULL, ALL_DOMAIN,
4672                                       [&] (offset_type idx)
4673   {
4674     const char *matched_name = mock_index.symbol_name_at (idx);
4675     const char *expected_str
4676       = expected_it == expected_end ? NULL : *expected_it++;
4677
4678     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4679       mismatch (expected_str, matched_name);
4680   });
4681
4682   const char *expected_str
4683   = expected_it == expected_end ? NULL : *expected_it++;
4684   if (expected_str != NULL)
4685     mismatch (expected_str, NULL);
4686
4687   return matched;
4688 }
4689
4690 /* The symbols added to the mock mapped_index for testing (in
4691    canonical form).  */
4692 static const char *test_symbols[] = {
4693   "function",
4694   "std::bar",
4695   "std::zfunction",
4696   "std::zfunction2",
4697   "w1::w2",
4698   "ns::foo<char*>",
4699   "ns::foo<int>",
4700   "ns::foo<long>",
4701   "ns2::tmpl<int>::foo2",
4702   "(anonymous namespace)::A::B::C",
4703
4704   /* These are used to check that the increment-last-char in the
4705      matching algorithm for completion doesn't match "t1_fund" when
4706      completing "t1_func".  */
4707   "t1_func",
4708   "t1_func1",
4709   "t1_fund",
4710   "t1_fund1",
4711
4712   /* A UTF-8 name with multi-byte sequences to make sure that
4713      cp-name-parser understands this as a single identifier ("função"
4714      is "function" in PT).  */
4715   u8"u8função",
4716
4717   /* \377 (0xff) is Latin1 'ÿ'.  */
4718   "yfunc\377",
4719
4720   /* \377 (0xff) is Latin1 'ÿ'.  */
4721   "\377",
4722   "\377\377123",
4723
4724   /* A name with all sorts of complications.  Starts with "z" to make
4725      it easier for the completion tests below.  */
4726 #define Z_SYM_NAME \
4727   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4728     "::tuple<(anonymous namespace)::ui*, " \
4729     "std::default_delete<(anonymous namespace)::ui>, void>"
4730
4731   Z_SYM_NAME
4732 };
4733
4734 /* Returns true if the mapped_index_base::find_name_component_bounds
4735    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4736    in completion mode.  */
4737
4738 static bool
4739 check_find_bounds_finds (mapped_index_base &index,
4740                          const char *search_name,
4741                          gdb::array_view<const char *> expected_syms)
4742 {
4743   lookup_name_info lookup_name (search_name,
4744                                 symbol_name_match_type::FULL, true);
4745
4746   auto bounds = index.find_name_components_bounds (lookup_name);
4747
4748   size_t distance = std::distance (bounds.first, bounds.second);
4749   if (distance != expected_syms.size ())
4750     return false;
4751
4752   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4753     {
4754       auto nc_elem = bounds.first + exp_elem;
4755       const char *qualified = index.symbol_name_at (nc_elem->idx);
4756       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4757         return false;
4758     }
4759
4760   return true;
4761 }
4762
4763 /* Test the lower-level mapped_index::find_name_component_bounds
4764    method.  */
4765
4766 static void
4767 test_mapped_index_find_name_component_bounds ()
4768 {
4769   mock_mapped_index mock_index (test_symbols);
4770
4771   mock_index.build_name_components ();
4772
4773   /* Test the lower-level mapped_index::find_name_component_bounds
4774      method in completion mode.  */
4775   {
4776     static const char *expected_syms[] = {
4777       "t1_func",
4778       "t1_func1",
4779     };
4780
4781     SELF_CHECK (check_find_bounds_finds (mock_index,
4782                                          "t1_func", expected_syms));
4783   }
4784
4785   /* Check that the increment-last-char in the name matching algorithm
4786      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4787   {
4788     static const char *expected_syms1[] = {
4789       "\377",
4790       "\377\377123",
4791     };
4792     SELF_CHECK (check_find_bounds_finds (mock_index,
4793                                          "\377", expected_syms1));
4794
4795     static const char *expected_syms2[] = {
4796       "\377\377123",
4797     };
4798     SELF_CHECK (check_find_bounds_finds (mock_index,
4799                                          "\377\377", expected_syms2));
4800   }
4801 }
4802
4803 /* Test dw2_expand_symtabs_matching_symbol.  */
4804
4805 static void
4806 test_dw2_expand_symtabs_matching_symbol ()
4807 {
4808   mock_mapped_index mock_index (test_symbols);
4809
4810   /* We let all tests run until the end even if some fails, for debug
4811      convenience.  */
4812   bool any_mismatch = false;
4813
4814   /* Create the expected symbols list (an initializer_list).  Needed
4815      because lists have commas, and we need to pass them to CHECK,
4816      which is a macro.  */
4817 #define EXPECT(...) { __VA_ARGS__ }
4818
4819   /* Wrapper for check_match that passes down the current
4820      __FILE__/__LINE__.  */
4821 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4822   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4823                                 mock_index,                             \
4824                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4825                                 EXPECTED_LIST)
4826
4827   /* Identity checks.  */
4828   for (const char *sym : test_symbols)
4829     {
4830       /* Should be able to match all existing symbols.  */
4831       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4832                    EXPECT (sym));
4833
4834       /* Should be able to match all existing symbols with
4835          parameters.  */
4836       std::string with_params = std::string (sym) + "(int)";
4837       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4838                    EXPECT (sym));
4839
4840       /* Should be able to match all existing symbols with
4841          parameters and qualifiers.  */
4842       with_params = std::string (sym) + " ( int ) const";
4843       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4844                    EXPECT (sym));
4845
4846       /* This should really find sym, but cp-name-parser.y doesn't
4847          know about lvalue/rvalue qualifiers yet.  */
4848       with_params = std::string (sym) + " ( int ) &&";
4849       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4850                    {});
4851     }
4852
4853   /* Check that the name matching algorithm for completion doesn't get
4854      confused with Latin1 'ÿ' / 0xff.  */
4855   {
4856     static const char str[] = "\377";
4857     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4858                  EXPECT ("\377", "\377\377123"));
4859   }
4860
4861   /* Check that the increment-last-char in the matching algorithm for
4862      completion doesn't match "t1_fund" when completing "t1_func".  */
4863   {
4864     static const char str[] = "t1_func";
4865     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4866                  EXPECT ("t1_func", "t1_func1"));
4867   }
4868
4869   /* Check that completion mode works at each prefix of the expected
4870      symbol name.  */
4871   {
4872     static const char str[] = "function(int)";
4873     size_t len = strlen (str);
4874     std::string lookup;
4875
4876     for (size_t i = 1; i < len; i++)
4877       {
4878         lookup.assign (str, i);
4879         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4880                      EXPECT ("function"));
4881       }
4882   }
4883
4884   /* While "w" is a prefix of both components, the match function
4885      should still only be called once.  */
4886   {
4887     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4888                  EXPECT ("w1::w2"));
4889     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4890                  EXPECT ("w1::w2"));
4891   }
4892
4893   /* Same, with a "complicated" symbol.  */
4894   {
4895     static const char str[] = Z_SYM_NAME;
4896     size_t len = strlen (str);
4897     std::string lookup;
4898
4899     for (size_t i = 1; i < len; i++)
4900       {
4901         lookup.assign (str, i);
4902         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4903                      EXPECT (Z_SYM_NAME));
4904       }
4905   }
4906
4907   /* In FULL mode, an incomplete symbol doesn't match.  */
4908   {
4909     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4910                  {});
4911   }
4912
4913   /* A complete symbol with parameters matches any overload, since the
4914      index has no overload info.  */
4915   {
4916     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4917                  EXPECT ("std::zfunction", "std::zfunction2"));
4918     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4919                  EXPECT ("std::zfunction", "std::zfunction2"));
4920     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4921                  EXPECT ("std::zfunction", "std::zfunction2"));
4922   }
4923
4924   /* Check that whitespace is ignored appropriately.  A symbol with a
4925      template argument list. */
4926   {
4927     static const char expected[] = "ns::foo<int>";
4928     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4929                  EXPECT (expected));
4930     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4931                  EXPECT (expected));
4932   }
4933
4934   /* Check that whitespace is ignored appropriately.  A symbol with a
4935      template argument list that includes a pointer.  */
4936   {
4937     static const char expected[] = "ns::foo<char*>";
4938     /* Try both completion and non-completion modes.  */
4939     static const bool completion_mode[2] = {false, true};
4940     for (size_t i = 0; i < 2; i++)
4941       {
4942         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4943                      completion_mode[i], EXPECT (expected));
4944         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4945                      completion_mode[i], EXPECT (expected));
4946
4947         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4948                      completion_mode[i], EXPECT (expected));
4949         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4950                      completion_mode[i], EXPECT (expected));
4951       }
4952   }
4953
4954   {
4955     /* Check method qualifiers are ignored.  */
4956     static const char expected[] = "ns::foo<char*>";
4957     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4958                  symbol_name_match_type::FULL, true, EXPECT (expected));
4959     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4960                  symbol_name_match_type::FULL, true, EXPECT (expected));
4961     CHECK_MATCH ("foo < char * >  ( int ) const",
4962                  symbol_name_match_type::WILD, true, EXPECT (expected));
4963     CHECK_MATCH ("foo < char * >  ( int ) &&",
4964                  symbol_name_match_type::WILD, true, EXPECT (expected));
4965   }
4966
4967   /* Test lookup names that don't match anything.  */
4968   {
4969     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4970                  {});
4971
4972     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4973                  {});
4974   }
4975
4976   /* Some wild matching tests, exercising "(anonymous namespace)",
4977      which should not be confused with a parameter list.  */
4978   {
4979     static const char *syms[] = {
4980       "A::B::C",
4981       "B::C",
4982       "C",
4983       "A :: B :: C ( int )",
4984       "B :: C ( int )",
4985       "C ( int )",
4986     };
4987
4988     for (const char *s : syms)
4989       {
4990         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4991                      EXPECT ("(anonymous namespace)::A::B::C"));
4992       }
4993   }
4994
4995   {
4996     static const char expected[] = "ns2::tmpl<int>::foo2";
4997     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4998                  EXPECT (expected));
4999     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
5000                  EXPECT (expected));
5001   }
5002
5003   SELF_CHECK (!any_mismatch);
5004
5005 #undef EXPECT
5006 #undef CHECK_MATCH
5007 }
5008
5009 static void
5010 run_test ()
5011 {
5012   test_mapped_index_find_name_component_bounds ();
5013   test_dw2_expand_symtabs_matching_symbol ();
5014 }
5015
5016 }} // namespace selftests::dw2_expand_symtabs_matching
5017
5018 #endif /* GDB_SELF_TEST */
5019
5020 /* If FILE_MATCHER is NULL or if PER_CU has
5021    dwarf2_per_cu_quick_data::MARK set (see
5022    dw_expand_symtabs_matching_file_matcher), expand the CU and call
5023    EXPANSION_NOTIFY on it.  */
5024
5025 static void
5026 dw2_expand_symtabs_matching_one
5027   (struct dwarf2_per_cu_data *per_cu,
5028    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5029    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5030 {
5031   if (file_matcher == NULL || per_cu->v.quick->mark)
5032     {
5033       bool symtab_was_null
5034         = (per_cu->v.quick->compunit_symtab == NULL);
5035
5036       dw2_instantiate_symtab (per_cu, false);
5037
5038       if (expansion_notify != NULL
5039           && symtab_was_null
5040           && per_cu->v.quick->compunit_symtab != NULL)
5041         expansion_notify (per_cu->v.quick->compunit_symtab);
5042     }
5043 }
5044
5045 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5046    matched, to expand corresponding CUs that were marked.  IDX is the
5047    index of the symbol name that matched.  */
5048
5049 static void
5050 dw2_expand_marked_cus
5051   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5052    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5053    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5054    search_domain kind)
5055 {
5056   offset_type *vec, vec_len, vec_idx;
5057   bool global_seen = false;
5058   mapped_index &index = *dwarf2_per_objfile->index_table;
5059
5060   vec = (offset_type *) (index.constant_pool
5061                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5062   vec_len = MAYBE_SWAP (vec[0]);
5063   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5064     {
5065       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5066       /* This value is only valid for index versions >= 7.  */
5067       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5068       gdb_index_symbol_kind symbol_kind =
5069         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5070       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5071       /* Only check the symbol attributes if they're present.
5072          Indices prior to version 7 don't record them,
5073          and indices >= 7 may elide them for certain symbols
5074          (gold does this).  */
5075       int attrs_valid =
5076         (index.version >= 7
5077          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5078
5079       /* Work around gold/15646.  */
5080       if (attrs_valid)
5081         {
5082           if (!is_static && global_seen)
5083             continue;
5084           if (!is_static)
5085             global_seen = true;
5086         }
5087
5088       /* Only check the symbol's kind if it has one.  */
5089       if (attrs_valid)
5090         {
5091           switch (kind)
5092             {
5093             case VARIABLES_DOMAIN:
5094               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5095                 continue;
5096               break;
5097             case FUNCTIONS_DOMAIN:
5098               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5099                 continue;
5100               break;
5101             case TYPES_DOMAIN:
5102               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5103                 continue;
5104               break;
5105             default:
5106               break;
5107             }
5108         }
5109
5110       /* Don't crash on bad data.  */
5111       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5112                        + dwarf2_per_objfile->all_type_units.size ()))
5113         {
5114           complaint (_(".gdb_index entry has bad CU index"
5115                        " [in module %s]"),
5116                        objfile_name (dwarf2_per_objfile->objfile));
5117           continue;
5118         }
5119
5120       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5121       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5122                                        expansion_notify);
5123     }
5124 }
5125
5126 /* If FILE_MATCHER is non-NULL, set all the
5127    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5128    that match FILE_MATCHER.  */
5129
5130 static void
5131 dw_expand_symtabs_matching_file_matcher
5132   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5133    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5134 {
5135   if (file_matcher == NULL)
5136     return;
5137
5138   objfile *const objfile = dwarf2_per_objfile->objfile;
5139
5140   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5141                                             htab_eq_pointer,
5142                                             NULL, xcalloc, xfree));
5143   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5144                                                 htab_eq_pointer,
5145                                                 NULL, xcalloc, xfree));
5146
5147   /* The rule is CUs specify all the files, including those used by
5148      any TU, so there's no need to scan TUs here.  */
5149
5150   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5151     {
5152       QUIT;
5153
5154       per_cu->v.quick->mark = 0;
5155
5156       /* We only need to look at symtabs not already expanded.  */
5157       if (per_cu->v.quick->compunit_symtab)
5158         continue;
5159
5160       quick_file_names *file_data = dw2_get_file_names (per_cu);
5161       if (file_data == NULL)
5162         continue;
5163
5164       if (htab_find (visited_not_found.get (), file_data) != NULL)
5165         continue;
5166       else if (htab_find (visited_found.get (), file_data) != NULL)
5167         {
5168           per_cu->v.quick->mark = 1;
5169           continue;
5170         }
5171
5172       for (int j = 0; j < file_data->num_file_names; ++j)
5173         {
5174           const char *this_real_name;
5175
5176           if (file_matcher (file_data->file_names[j], false))
5177             {
5178               per_cu->v.quick->mark = 1;
5179               break;
5180             }
5181
5182           /* Before we invoke realpath, which can get expensive when many
5183              files are involved, do a quick comparison of the basenames.  */
5184           if (!basenames_may_differ
5185               && !file_matcher (lbasename (file_data->file_names[j]),
5186                                 true))
5187             continue;
5188
5189           this_real_name = dw2_get_real_path (objfile, file_data, j);
5190           if (file_matcher (this_real_name, false))
5191             {
5192               per_cu->v.quick->mark = 1;
5193               break;
5194             }
5195         }
5196
5197       void **slot = htab_find_slot (per_cu->v.quick->mark
5198                                     ? visited_found.get ()
5199                                     : visited_not_found.get (),
5200                                     file_data, INSERT);
5201       *slot = file_data;
5202     }
5203 }
5204
5205 static void
5206 dw2_expand_symtabs_matching
5207   (struct objfile *objfile,
5208    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5209    const lookup_name_info &lookup_name,
5210    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5211    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5212    enum search_domain kind)
5213 {
5214   struct dwarf2_per_objfile *dwarf2_per_objfile
5215     = get_dwarf2_per_objfile (objfile);
5216
5217   /* index_table is NULL if OBJF_READNOW.  */
5218   if (!dwarf2_per_objfile->index_table)
5219     return;
5220
5221   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5222
5223   mapped_index &index = *dwarf2_per_objfile->index_table;
5224
5225   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5226                                       symbol_matcher,
5227                                       kind, [&] (offset_type idx)
5228     {
5229       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5230                              expansion_notify, kind);
5231     });
5232 }
5233
5234 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5235    symtab.  */
5236
5237 static struct compunit_symtab *
5238 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5239                                           CORE_ADDR pc)
5240 {
5241   int i;
5242
5243   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5244       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5245     return cust;
5246
5247   if (cust->includes == NULL)
5248     return NULL;
5249
5250   for (i = 0; cust->includes[i]; ++i)
5251     {
5252       struct compunit_symtab *s = cust->includes[i];
5253
5254       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5255       if (s != NULL)
5256         return s;
5257     }
5258
5259   return NULL;
5260 }
5261
5262 static struct compunit_symtab *
5263 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5264                                   struct bound_minimal_symbol msymbol,
5265                                   CORE_ADDR pc,
5266                                   struct obj_section *section,
5267                                   int warn_if_readin)
5268 {
5269   struct dwarf2_per_cu_data *data;
5270   struct compunit_symtab *result;
5271
5272   if (!objfile->partial_symtabs->psymtabs_addrmap)
5273     return NULL;
5274
5275   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5276                                  SECT_OFF_TEXT (objfile));
5277   data = (struct dwarf2_per_cu_data *) addrmap_find
5278     (objfile->partial_symtabs->psymtabs_addrmap, pc - baseaddr);
5279   if (!data)
5280     return NULL;
5281
5282   if (warn_if_readin && data->v.quick->compunit_symtab)
5283     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5284              paddress (get_objfile_arch (objfile), pc));
5285
5286   result
5287     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5288                                                                         false),
5289                                                 pc);
5290   gdb_assert (result != NULL);
5291   return result;
5292 }
5293
5294 static void
5295 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5296                           void *data, int need_fullname)
5297 {
5298   struct dwarf2_per_objfile *dwarf2_per_objfile
5299     = get_dwarf2_per_objfile (objfile);
5300
5301   if (!dwarf2_per_objfile->filenames_cache)
5302     {
5303       dwarf2_per_objfile->filenames_cache.emplace ();
5304
5305       htab_up visited (htab_create_alloc (10,
5306                                           htab_hash_pointer, htab_eq_pointer,
5307                                           NULL, xcalloc, xfree));
5308
5309       /* The rule is CUs specify all the files, including those used
5310          by any TU, so there's no need to scan TUs here.  We can
5311          ignore file names coming from already-expanded CUs.  */
5312
5313       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5314         {
5315           if (per_cu->v.quick->compunit_symtab)
5316             {
5317               void **slot = htab_find_slot (visited.get (),
5318                                             per_cu->v.quick->file_names,
5319                                             INSERT);
5320
5321               *slot = per_cu->v.quick->file_names;
5322             }
5323         }
5324
5325       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5326         {
5327           /* We only need to look at symtabs not already expanded.  */
5328           if (per_cu->v.quick->compunit_symtab)
5329             continue;
5330
5331           quick_file_names *file_data = dw2_get_file_names (per_cu);
5332           if (file_data == NULL)
5333             continue;
5334
5335           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5336           if (*slot)
5337             {
5338               /* Already visited.  */
5339               continue;
5340             }
5341           *slot = file_data;
5342
5343           for (int j = 0; j < file_data->num_file_names; ++j)
5344             {
5345               const char *filename = file_data->file_names[j];
5346               dwarf2_per_objfile->filenames_cache->seen (filename);
5347             }
5348         }
5349     }
5350
5351   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5352     {
5353       gdb::unique_xmalloc_ptr<char> this_real_name;
5354
5355       if (need_fullname)
5356         this_real_name = gdb_realpath (filename);
5357       (*fun) (filename, this_real_name.get (), data);
5358     });
5359 }
5360
5361 static int
5362 dw2_has_symbols (struct objfile *objfile)
5363 {
5364   return 1;
5365 }
5366
5367 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5368 {
5369   dw2_has_symbols,
5370   dw2_find_last_source_symtab,
5371   dw2_forget_cached_source_info,
5372   dw2_map_symtabs_matching_filename,
5373   dw2_lookup_symbol,
5374   dw2_print_stats,
5375   dw2_dump,
5376   dw2_expand_symtabs_for_function,
5377   dw2_expand_all_symtabs,
5378   dw2_expand_symtabs_with_fullname,
5379   dw2_map_matching_symbols,
5380   dw2_expand_symtabs_matching,
5381   dw2_find_pc_sect_compunit_symtab,
5382   NULL,
5383   dw2_map_symbol_filenames
5384 };
5385
5386 /* DWARF-5 debug_names reader.  */
5387
5388 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5389 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5390
5391 /* A helper function that reads the .debug_names section in SECTION
5392    and fills in MAP.  FILENAME is the name of the file containing the
5393    section; it is used for error reporting.
5394
5395    Returns true if all went well, false otherwise.  */
5396
5397 static bool
5398 read_debug_names_from_section (struct objfile *objfile,
5399                                const char *filename,
5400                                struct dwarf2_section_info *section,
5401                                mapped_debug_names &map)
5402 {
5403   if (dwarf2_section_empty_p (section))
5404     return false;
5405
5406   /* Older elfutils strip versions could keep the section in the main
5407      executable while splitting it for the separate debug info file.  */
5408   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5409     return false;
5410
5411   dwarf2_read_section (objfile, section);
5412
5413   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5414
5415   const gdb_byte *addr = section->buffer;
5416
5417   bfd *const abfd = get_section_bfd_owner (section);
5418
5419   unsigned int bytes_read;
5420   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5421   addr += bytes_read;
5422
5423   map.dwarf5_is_dwarf64 = bytes_read != 4;
5424   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5425   if (bytes_read + length != section->size)
5426     {
5427       /* There may be multiple per-CU indices.  */
5428       warning (_("Section .debug_names in %s length %s does not match "
5429                  "section length %s, ignoring .debug_names."),
5430                filename, plongest (bytes_read + length),
5431                pulongest (section->size));
5432       return false;
5433     }
5434
5435   /* The version number.  */
5436   uint16_t version = read_2_bytes (abfd, addr);
5437   addr += 2;
5438   if (version != 5)
5439     {
5440       warning (_("Section .debug_names in %s has unsupported version %d, "
5441                  "ignoring .debug_names."),
5442                filename, version);
5443       return false;
5444     }
5445
5446   /* Padding.  */
5447   uint16_t padding = read_2_bytes (abfd, addr);
5448   addr += 2;
5449   if (padding != 0)
5450     {
5451       warning (_("Section .debug_names in %s has unsupported padding %d, "
5452                  "ignoring .debug_names."),
5453                filename, padding);
5454       return false;
5455     }
5456
5457   /* comp_unit_count - The number of CUs in the CU list.  */
5458   map.cu_count = read_4_bytes (abfd, addr);
5459   addr += 4;
5460
5461   /* local_type_unit_count - The number of TUs in the local TU
5462      list.  */
5463   map.tu_count = read_4_bytes (abfd, addr);
5464   addr += 4;
5465
5466   /* foreign_type_unit_count - The number of TUs in the foreign TU
5467      list.  */
5468   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5469   addr += 4;
5470   if (foreign_tu_count != 0)
5471     {
5472       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5473                  "ignoring .debug_names."),
5474                filename, static_cast<unsigned long> (foreign_tu_count));
5475       return false;
5476     }
5477
5478   /* bucket_count - The number of hash buckets in the hash lookup
5479      table.  */
5480   map.bucket_count = read_4_bytes (abfd, addr);
5481   addr += 4;
5482
5483   /* name_count - The number of unique names in the index.  */
5484   map.name_count = read_4_bytes (abfd, addr);
5485   addr += 4;
5486
5487   /* abbrev_table_size - The size in bytes of the abbreviations
5488      table.  */
5489   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5490   addr += 4;
5491
5492   /* augmentation_string_size - The size in bytes of the augmentation
5493      string.  This value is rounded up to a multiple of 4.  */
5494   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5495   addr += 4;
5496   map.augmentation_is_gdb = ((augmentation_string_size
5497                               == sizeof (dwarf5_augmentation))
5498                              && memcmp (addr, dwarf5_augmentation,
5499                                         sizeof (dwarf5_augmentation)) == 0);
5500   augmentation_string_size += (-augmentation_string_size) & 3;
5501   addr += augmentation_string_size;
5502
5503   /* List of CUs */
5504   map.cu_table_reordered = addr;
5505   addr += map.cu_count * map.offset_size;
5506
5507   /* List of Local TUs */
5508   map.tu_table_reordered = addr;
5509   addr += map.tu_count * map.offset_size;
5510
5511   /* Hash Lookup Table */
5512   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5513   addr += map.bucket_count * 4;
5514   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5515   addr += map.name_count * 4;
5516
5517   /* Name Table */
5518   map.name_table_string_offs_reordered = addr;
5519   addr += map.name_count * map.offset_size;
5520   map.name_table_entry_offs_reordered = addr;
5521   addr += map.name_count * map.offset_size;
5522
5523   const gdb_byte *abbrev_table_start = addr;
5524   for (;;)
5525     {
5526       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5527       addr += bytes_read;
5528       if (index_num == 0)
5529         break;
5530
5531       const auto insertpair
5532         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5533       if (!insertpair.second)
5534         {
5535           warning (_("Section .debug_names in %s has duplicate index %s, "
5536                      "ignoring .debug_names."),
5537                    filename, pulongest (index_num));
5538           return false;
5539         }
5540       mapped_debug_names::index_val &indexval = insertpair.first->second;
5541       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5542       addr += bytes_read;
5543
5544       for (;;)
5545         {
5546           mapped_debug_names::index_val::attr attr;
5547           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5548           addr += bytes_read;
5549           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5550           addr += bytes_read;
5551           if (attr.form == DW_FORM_implicit_const)
5552             {
5553               attr.implicit_const = read_signed_leb128 (abfd, addr,
5554                                                         &bytes_read);
5555               addr += bytes_read;
5556             }
5557           if (attr.dw_idx == 0 && attr.form == 0)
5558             break;
5559           indexval.attr_vec.push_back (std::move (attr));
5560         }
5561     }
5562   if (addr != abbrev_table_start + abbrev_table_size)
5563     {
5564       warning (_("Section .debug_names in %s has abbreviation_table "
5565                  "of size %zu vs. written as %u, ignoring .debug_names."),
5566                filename, addr - abbrev_table_start, abbrev_table_size);
5567       return false;
5568     }
5569   map.entry_pool = addr;
5570
5571   return true;
5572 }
5573
5574 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5575    list.  */
5576
5577 static void
5578 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5579                                   const mapped_debug_names &map,
5580                                   dwarf2_section_info &section,
5581                                   bool is_dwz)
5582 {
5583   sect_offset sect_off_prev;
5584   for (uint32_t i = 0; i <= map.cu_count; ++i)
5585     {
5586       sect_offset sect_off_next;
5587       if (i < map.cu_count)
5588         {
5589           sect_off_next
5590             = (sect_offset) (extract_unsigned_integer
5591                              (map.cu_table_reordered + i * map.offset_size,
5592                               map.offset_size,
5593                               map.dwarf5_byte_order));
5594         }
5595       else
5596         sect_off_next = (sect_offset) section.size;
5597       if (i >= 1)
5598         {
5599           const ULONGEST length = sect_off_next - sect_off_prev;
5600           dwarf2_per_cu_data *per_cu
5601             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5602                                          sect_off_prev, length);
5603           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5604         }
5605       sect_off_prev = sect_off_next;
5606     }
5607 }
5608
5609 /* Read the CU list from the mapped index, and use it to create all
5610    the CU objects for this dwarf2_per_objfile.  */
5611
5612 static void
5613 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5614                              const mapped_debug_names &map,
5615                              const mapped_debug_names &dwz_map)
5616 {
5617   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5618   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5619
5620   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5621                                     dwarf2_per_objfile->info,
5622                                     false /* is_dwz */);
5623
5624   if (dwz_map.cu_count == 0)
5625     return;
5626
5627   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5628   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5629                                     true /* is_dwz */);
5630 }
5631
5632 /* Read .debug_names.  If everything went ok, initialize the "quick"
5633    elements of all the CUs and return true.  Otherwise, return false.  */
5634
5635 static bool
5636 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5637 {
5638   std::unique_ptr<mapped_debug_names> map
5639     (new mapped_debug_names (dwarf2_per_objfile));
5640   mapped_debug_names dwz_map (dwarf2_per_objfile);
5641   struct objfile *objfile = dwarf2_per_objfile->objfile;
5642
5643   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5644                                       &dwarf2_per_objfile->debug_names,
5645                                       *map))
5646     return false;
5647
5648   /* Don't use the index if it's empty.  */
5649   if (map->name_count == 0)
5650     return false;
5651
5652   /* If there is a .dwz file, read it so we can get its CU list as
5653      well.  */
5654   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5655   if (dwz != NULL)
5656     {
5657       if (!read_debug_names_from_section (objfile,
5658                                           bfd_get_filename (dwz->dwz_bfd),
5659                                           &dwz->debug_names, dwz_map))
5660         {
5661           warning (_("could not read '.debug_names' section from %s; skipping"),
5662                    bfd_get_filename (dwz->dwz_bfd));
5663           return false;
5664         }
5665     }
5666
5667   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5668
5669   if (map->tu_count != 0)
5670     {
5671       /* We can only handle a single .debug_types when we have an
5672          index.  */
5673       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5674         return false;
5675
5676       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5677                                                 dwarf2_per_objfile->types, 0);
5678
5679       create_signatured_type_table_from_debug_names
5680         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5681     }
5682
5683   create_addrmap_from_aranges (dwarf2_per_objfile,
5684                                &dwarf2_per_objfile->debug_aranges);
5685
5686   dwarf2_per_objfile->debug_names_table = std::move (map);
5687   dwarf2_per_objfile->using_index = 1;
5688   dwarf2_per_objfile->quick_file_names_table =
5689     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5690
5691   return true;
5692 }
5693
5694 /* Type used to manage iterating over all CUs looking for a symbol for
5695    .debug_names.  */
5696
5697 class dw2_debug_names_iterator
5698 {
5699 public:
5700   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5701      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5702   dw2_debug_names_iterator (const mapped_debug_names &map,
5703                             bool want_specific_block,
5704                             block_enum block_index, domain_enum domain,
5705                             const char *name)
5706     : m_map (map), m_want_specific_block (want_specific_block),
5707       m_block_index (block_index), m_domain (domain),
5708       m_addr (find_vec_in_debug_names (map, name))
5709   {}
5710
5711   dw2_debug_names_iterator (const mapped_debug_names &map,
5712                             search_domain search, uint32_t namei)
5713     : m_map (map),
5714       m_search (search),
5715       m_addr (find_vec_in_debug_names (map, namei))
5716   {}
5717
5718   /* Return the next matching CU or NULL if there are no more.  */
5719   dwarf2_per_cu_data *next ();
5720
5721 private:
5722   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5723                                                   const char *name);
5724   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5725                                                   uint32_t namei);
5726
5727   /* The internalized form of .debug_names.  */
5728   const mapped_debug_names &m_map;
5729
5730   /* If true, only look for symbols that match BLOCK_INDEX.  */
5731   const bool m_want_specific_block = false;
5732
5733   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5734      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5735      value.  */
5736   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5737
5738   /* The kind of symbol we're looking for.  */
5739   const domain_enum m_domain = UNDEF_DOMAIN;
5740   const search_domain m_search = ALL_DOMAIN;
5741
5742   /* The list of CUs from the index entry of the symbol, or NULL if
5743      not found.  */
5744   const gdb_byte *m_addr;
5745 };
5746
5747 const char *
5748 mapped_debug_names::namei_to_name (uint32_t namei) const
5749 {
5750   const ULONGEST namei_string_offs
5751     = extract_unsigned_integer ((name_table_string_offs_reordered
5752                                  + namei * offset_size),
5753                                 offset_size,
5754                                 dwarf5_byte_order);
5755   return read_indirect_string_at_offset
5756     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5757 }
5758
5759 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5760    found, return pointer to its pool data.  If NAME cannot be found,
5761    return NULL.  */
5762
5763 const gdb_byte *
5764 dw2_debug_names_iterator::find_vec_in_debug_names
5765   (const mapped_debug_names &map, const char *name)
5766 {
5767   int (*cmp) (const char *, const char *);
5768
5769   if (current_language->la_language == language_cplus
5770       || current_language->la_language == language_fortran
5771       || current_language->la_language == language_d)
5772     {
5773       /* NAME is already canonical.  Drop any qualifiers as
5774          .debug_names does not contain any.  */
5775
5776       if (strchr (name, '(') != NULL)
5777         {
5778           gdb::unique_xmalloc_ptr<char> without_params
5779             = cp_remove_params (name);
5780
5781           if (without_params != NULL)
5782             {
5783               name = without_params.get();
5784             }
5785         }
5786     }
5787
5788   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5789
5790   const uint32_t full_hash = dwarf5_djb_hash (name);
5791   uint32_t namei
5792     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5793                                 (map.bucket_table_reordered
5794                                  + (full_hash % map.bucket_count)), 4,
5795                                 map.dwarf5_byte_order);
5796   if (namei == 0)
5797     return NULL;
5798   --namei;
5799   if (namei >= map.name_count)
5800     {
5801       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5802                    "[in module %s]"),
5803                  namei, map.name_count,
5804                  objfile_name (map.dwarf2_per_objfile->objfile));
5805       return NULL;
5806     }
5807
5808   for (;;)
5809     {
5810       const uint32_t namei_full_hash
5811         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5812                                     (map.hash_table_reordered + namei), 4,
5813                                     map.dwarf5_byte_order);
5814       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5815         return NULL;
5816
5817       if (full_hash == namei_full_hash)
5818         {
5819           const char *const namei_string = map.namei_to_name (namei);
5820
5821 #if 0 /* An expensive sanity check.  */
5822           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5823             {
5824               complaint (_("Wrong .debug_names hash for string at index %u "
5825                            "[in module %s]"),
5826                          namei, objfile_name (dwarf2_per_objfile->objfile));
5827               return NULL;
5828             }
5829 #endif
5830
5831           if (cmp (namei_string, name) == 0)
5832             {
5833               const ULONGEST namei_entry_offs
5834                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5835                                              + namei * map.offset_size),
5836                                             map.offset_size, map.dwarf5_byte_order);
5837               return map.entry_pool + namei_entry_offs;
5838             }
5839         }
5840
5841       ++namei;
5842       if (namei >= map.name_count)
5843         return NULL;
5844     }
5845 }
5846
5847 const gdb_byte *
5848 dw2_debug_names_iterator::find_vec_in_debug_names
5849   (const mapped_debug_names &map, uint32_t namei)
5850 {
5851   if (namei >= map.name_count)
5852     {
5853       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5854                    "[in module %s]"),
5855                  namei, map.name_count,
5856                  objfile_name (map.dwarf2_per_objfile->objfile));
5857       return NULL;
5858     }
5859
5860   const ULONGEST namei_entry_offs
5861     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5862                                  + namei * map.offset_size),
5863                                 map.offset_size, map.dwarf5_byte_order);
5864   return map.entry_pool + namei_entry_offs;
5865 }
5866
5867 /* See dw2_debug_names_iterator.  */
5868
5869 dwarf2_per_cu_data *
5870 dw2_debug_names_iterator::next ()
5871 {
5872   if (m_addr == NULL)
5873     return NULL;
5874
5875   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5876   struct objfile *objfile = dwarf2_per_objfile->objfile;
5877   bfd *const abfd = objfile->obfd;
5878
5879  again:
5880
5881   unsigned int bytes_read;
5882   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5883   m_addr += bytes_read;
5884   if (abbrev == 0)
5885     return NULL;
5886
5887   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5888   if (indexval_it == m_map.abbrev_map.cend ())
5889     {
5890       complaint (_("Wrong .debug_names undefined abbrev code %s "
5891                    "[in module %s]"),
5892                  pulongest (abbrev), objfile_name (objfile));
5893       return NULL;
5894     }
5895   const mapped_debug_names::index_val &indexval = indexval_it->second;
5896   bool have_is_static = false;
5897   bool is_static;
5898   dwarf2_per_cu_data *per_cu = NULL;
5899   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5900     {
5901       ULONGEST ull;
5902       switch (attr.form)
5903         {
5904         case DW_FORM_implicit_const:
5905           ull = attr.implicit_const;
5906           break;
5907         case DW_FORM_flag_present:
5908           ull = 1;
5909           break;
5910         case DW_FORM_udata:
5911           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5912           m_addr += bytes_read;
5913           break;
5914         default:
5915           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5916                      dwarf_form_name (attr.form),
5917                      objfile_name (objfile));
5918           return NULL;
5919         }
5920       switch (attr.dw_idx)
5921         {
5922         case DW_IDX_compile_unit:
5923           /* Don't crash on bad data.  */
5924           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5925             {
5926               complaint (_(".debug_names entry has bad CU index %s"
5927                            " [in module %s]"),
5928                          pulongest (ull),
5929                          objfile_name (dwarf2_per_objfile->objfile));
5930               continue;
5931             }
5932           per_cu = dwarf2_per_objfile->get_cutu (ull);
5933           break;
5934         case DW_IDX_type_unit:
5935           /* Don't crash on bad data.  */
5936           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5937             {
5938               complaint (_(".debug_names entry has bad TU index %s"
5939                            " [in module %s]"),
5940                          pulongest (ull),
5941                          objfile_name (dwarf2_per_objfile->objfile));
5942               continue;
5943             }
5944           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5945           break;
5946         case DW_IDX_GNU_internal:
5947           if (!m_map.augmentation_is_gdb)
5948             break;
5949           have_is_static = true;
5950           is_static = true;
5951           break;
5952         case DW_IDX_GNU_external:
5953           if (!m_map.augmentation_is_gdb)
5954             break;
5955           have_is_static = true;
5956           is_static = false;
5957           break;
5958         }
5959     }
5960
5961   /* Skip if already read in.  */
5962   if (per_cu->v.quick->compunit_symtab)
5963     goto again;
5964
5965   /* Check static vs global.  */
5966   if (have_is_static)
5967     {
5968       const bool want_static = m_block_index != GLOBAL_BLOCK;
5969       if (m_want_specific_block && want_static != is_static)
5970         goto again;
5971     }
5972
5973   /* Match dw2_symtab_iter_next, symbol_kind
5974      and debug_names::psymbol_tag.  */
5975   switch (m_domain)
5976     {
5977     case VAR_DOMAIN:
5978       switch (indexval.dwarf_tag)
5979         {
5980         case DW_TAG_variable:
5981         case DW_TAG_subprogram:
5982         /* Some types are also in VAR_DOMAIN.  */
5983         case DW_TAG_typedef:
5984         case DW_TAG_structure_type:
5985           break;
5986         default:
5987           goto again;
5988         }
5989       break;
5990     case STRUCT_DOMAIN:
5991       switch (indexval.dwarf_tag)
5992         {
5993         case DW_TAG_typedef:
5994         case DW_TAG_structure_type:
5995           break;
5996         default:
5997           goto again;
5998         }
5999       break;
6000     case LABEL_DOMAIN:
6001       switch (indexval.dwarf_tag)
6002         {
6003         case 0:
6004         case DW_TAG_variable:
6005           break;
6006         default:
6007           goto again;
6008         }
6009       break;
6010     default:
6011       break;
6012     }
6013
6014   /* Match dw2_expand_symtabs_matching, symbol_kind and
6015      debug_names::psymbol_tag.  */
6016   switch (m_search)
6017     {
6018     case VARIABLES_DOMAIN:
6019       switch (indexval.dwarf_tag)
6020         {
6021         case DW_TAG_variable:
6022           break;
6023         default:
6024           goto again;
6025         }
6026       break;
6027     case FUNCTIONS_DOMAIN:
6028       switch (indexval.dwarf_tag)
6029         {
6030         case DW_TAG_subprogram:
6031           break;
6032         default:
6033           goto again;
6034         }
6035       break;
6036     case TYPES_DOMAIN:
6037       switch (indexval.dwarf_tag)
6038         {
6039         case DW_TAG_typedef:
6040         case DW_TAG_structure_type:
6041           break;
6042         default:
6043           goto again;
6044         }
6045       break;
6046     default:
6047       break;
6048     }
6049
6050   return per_cu;
6051 }
6052
6053 static struct compunit_symtab *
6054 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6055                                const char *name, domain_enum domain)
6056 {
6057   const block_enum block_index = static_cast<block_enum> (block_index_int);
6058   struct dwarf2_per_objfile *dwarf2_per_objfile
6059     = get_dwarf2_per_objfile (objfile);
6060
6061   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6062   if (!mapp)
6063     {
6064       /* index is NULL if OBJF_READNOW.  */
6065       return NULL;
6066     }
6067   const auto &map = *mapp;
6068
6069   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6070                                  block_index, domain, name);
6071
6072   struct compunit_symtab *stab_best = NULL;
6073   struct dwarf2_per_cu_data *per_cu;
6074   while ((per_cu = iter.next ()) != NULL)
6075     {
6076       struct symbol *sym, *with_opaque = NULL;
6077       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6078       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6079       const struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6080
6081       sym = block_find_symbol (block, name, domain,
6082                                block_find_non_opaque_type_preferred,
6083                                &with_opaque);
6084
6085       /* Some caution must be observed with overloaded functions and
6086          methods, since the index will not contain any overload
6087          information (but NAME might contain it).  */
6088
6089       if (sym != NULL
6090           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6091         return stab;
6092       if (with_opaque != NULL
6093           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6094         stab_best = stab;
6095
6096       /* Keep looking through other CUs.  */
6097     }
6098
6099   return stab_best;
6100 }
6101
6102 /* This dumps minimal information about .debug_names.  It is called
6103    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6104    uses this to verify that .debug_names has been loaded.  */
6105
6106 static void
6107 dw2_debug_names_dump (struct objfile *objfile)
6108 {
6109   struct dwarf2_per_objfile *dwarf2_per_objfile
6110     = get_dwarf2_per_objfile (objfile);
6111
6112   gdb_assert (dwarf2_per_objfile->using_index);
6113   printf_filtered (".debug_names:");
6114   if (dwarf2_per_objfile->debug_names_table)
6115     printf_filtered (" exists\n");
6116   else
6117     printf_filtered (" faked for \"readnow\"\n");
6118   printf_filtered ("\n");
6119 }
6120
6121 static void
6122 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6123                                              const char *func_name)
6124 {
6125   struct dwarf2_per_objfile *dwarf2_per_objfile
6126     = get_dwarf2_per_objfile (objfile);
6127
6128   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6129   if (dwarf2_per_objfile->debug_names_table)
6130     {
6131       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6132
6133       /* Note: It doesn't matter what we pass for block_index here.  */
6134       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6135                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6136
6137       struct dwarf2_per_cu_data *per_cu;
6138       while ((per_cu = iter.next ()) != NULL)
6139         dw2_instantiate_symtab (per_cu, false);
6140     }
6141 }
6142
6143 static void
6144 dw2_debug_names_expand_symtabs_matching
6145   (struct objfile *objfile,
6146    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6147    const lookup_name_info &lookup_name,
6148    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6149    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6150    enum search_domain kind)
6151 {
6152   struct dwarf2_per_objfile *dwarf2_per_objfile
6153     = get_dwarf2_per_objfile (objfile);
6154
6155   /* debug_names_table is NULL if OBJF_READNOW.  */
6156   if (!dwarf2_per_objfile->debug_names_table)
6157     return;
6158
6159   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6160
6161   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6162
6163   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6164                                       symbol_matcher,
6165                                       kind, [&] (offset_type namei)
6166     {
6167       /* The name was matched, now expand corresponding CUs that were
6168          marked.  */
6169       dw2_debug_names_iterator iter (map, kind, namei);
6170
6171       struct dwarf2_per_cu_data *per_cu;
6172       while ((per_cu = iter.next ()) != NULL)
6173         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6174                                          expansion_notify);
6175     });
6176 }
6177
6178 const struct quick_symbol_functions dwarf2_debug_names_functions =
6179 {
6180   dw2_has_symbols,
6181   dw2_find_last_source_symtab,
6182   dw2_forget_cached_source_info,
6183   dw2_map_symtabs_matching_filename,
6184   dw2_debug_names_lookup_symbol,
6185   dw2_print_stats,
6186   dw2_debug_names_dump,
6187   dw2_debug_names_expand_symtabs_for_function,
6188   dw2_expand_all_symtabs,
6189   dw2_expand_symtabs_with_fullname,
6190   dw2_map_matching_symbols,
6191   dw2_debug_names_expand_symtabs_matching,
6192   dw2_find_pc_sect_compunit_symtab,
6193   NULL,
6194   dw2_map_symbol_filenames
6195 };
6196
6197 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6198    to either a dwarf2_per_objfile or dwz_file object.  */
6199
6200 template <typename T>
6201 static gdb::array_view<const gdb_byte>
6202 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6203 {
6204   dwarf2_section_info *section = &section_owner->gdb_index;
6205
6206   if (dwarf2_section_empty_p (section))
6207     return {};
6208
6209   /* Older elfutils strip versions could keep the section in the main
6210      executable while splitting it for the separate debug info file.  */
6211   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6212     return {};
6213
6214   dwarf2_read_section (obj, section);
6215
6216   /* dwarf2_section_info::size is a bfd_size_type, while
6217      gdb::array_view works with size_t.  On 32-bit hosts, with
6218      --enable-64-bit-bfd, bfd_size_type is a 64-bit type, while size_t
6219      is 32-bit.  So we need an explicit narrowing conversion here.
6220      This is fine, because it's impossible to allocate or mmap an
6221      array/buffer larger than what size_t can represent.  */
6222   return gdb::make_array_view (section->buffer, section->size);
6223 }
6224
6225 /* Lookup the index cache for the contents of the index associated to
6226    DWARF2_OBJ.  */
6227
6228 static gdb::array_view<const gdb_byte>
6229 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6230 {
6231   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6232   if (build_id == nullptr)
6233     return {};
6234
6235   return global_index_cache.lookup_gdb_index (build_id,
6236                                               &dwarf2_obj->index_cache_res);
6237 }
6238
6239 /* Same as the above, but for DWZ.  */
6240
6241 static gdb::array_view<const gdb_byte>
6242 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6243 {
6244   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6245   if (build_id == nullptr)
6246     return {};
6247
6248   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6249 }
6250
6251 /* See symfile.h.  */
6252
6253 bool
6254 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6255 {
6256   struct dwarf2_per_objfile *dwarf2_per_objfile
6257     = get_dwarf2_per_objfile (objfile);
6258
6259   /* If we're about to read full symbols, don't bother with the
6260      indices.  In this case we also don't care if some other debug
6261      format is making psymtabs, because they are all about to be
6262      expanded anyway.  */
6263   if ((objfile->flags & OBJF_READNOW))
6264     {
6265       dwarf2_per_objfile->using_index = 1;
6266       create_all_comp_units (dwarf2_per_objfile);
6267       create_all_type_units (dwarf2_per_objfile);
6268       dwarf2_per_objfile->quick_file_names_table
6269         = create_quick_file_names_table
6270             (dwarf2_per_objfile->all_comp_units.size ());
6271
6272       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6273                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6274         {
6275           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6276
6277           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6278                                             struct dwarf2_per_cu_quick_data);
6279         }
6280
6281       /* Return 1 so that gdb sees the "quick" functions.  However,
6282          these functions will be no-ops because we will have expanded
6283          all symtabs.  */
6284       *index_kind = dw_index_kind::GDB_INDEX;
6285       return true;
6286     }
6287
6288   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6289     {
6290       *index_kind = dw_index_kind::DEBUG_NAMES;
6291       return true;
6292     }
6293
6294   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6295                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6296                              get_gdb_index_contents_from_section<dwz_file>))
6297     {
6298       *index_kind = dw_index_kind::GDB_INDEX;
6299       return true;
6300     }
6301
6302   /* ... otherwise, try to find the index in the index cache.  */
6303   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6304                              get_gdb_index_contents_from_cache,
6305                              get_gdb_index_contents_from_cache_dwz))
6306     {
6307       global_index_cache.hit ();
6308       *index_kind = dw_index_kind::GDB_INDEX;
6309       return true;
6310     }
6311
6312   global_index_cache.miss ();
6313   return false;
6314 }
6315
6316 \f
6317
6318 /* Build a partial symbol table.  */
6319
6320 void
6321 dwarf2_build_psymtabs (struct objfile *objfile)
6322 {
6323   struct dwarf2_per_objfile *dwarf2_per_objfile
6324     = get_dwarf2_per_objfile (objfile);
6325
6326   init_psymbol_list (objfile, 1024);
6327
6328   try
6329     {
6330       /* This isn't really ideal: all the data we allocate on the
6331          objfile's obstack is still uselessly kept around.  However,
6332          freeing it seems unsafe.  */
6333       psymtab_discarder psymtabs (objfile);
6334       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6335       psymtabs.keep ();
6336
6337       /* (maybe) store an index in the cache.  */
6338       global_index_cache.store (dwarf2_per_objfile);
6339     }
6340   catch (const gdb_exception_error &except)
6341     {
6342       exception_print (gdb_stderr, except);
6343     }
6344 }
6345
6346 /* Return the total length of the CU described by HEADER.  */
6347
6348 static unsigned int
6349 get_cu_length (const struct comp_unit_head *header)
6350 {
6351   return header->initial_length_size + header->length;
6352 }
6353
6354 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6355
6356 static inline bool
6357 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6358 {
6359   sect_offset bottom = cu_header->sect_off;
6360   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6361
6362   return sect_off >= bottom && sect_off < top;
6363 }
6364
6365 /* Find the base address of the compilation unit for range lists and
6366    location lists.  It will normally be specified by DW_AT_low_pc.
6367    In DWARF-3 draft 4, the base address could be overridden by
6368    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6369    compilation units with discontinuous ranges.  */
6370
6371 static void
6372 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6373 {
6374   struct attribute *attr;
6375
6376   cu->base_known = 0;
6377   cu->base_address = 0;
6378
6379   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6380   if (attr)
6381     {
6382       cu->base_address = attr_value_as_address (attr);
6383       cu->base_known = 1;
6384     }
6385   else
6386     {
6387       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6388       if (attr)
6389         {
6390           cu->base_address = attr_value_as_address (attr);
6391           cu->base_known = 1;
6392         }
6393     }
6394 }
6395
6396 /* Read in the comp unit header information from the debug_info at info_ptr.
6397    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6398    NOTE: This leaves members offset, first_die_offset to be filled in
6399    by the caller.  */
6400
6401 static const gdb_byte *
6402 read_comp_unit_head (struct comp_unit_head *cu_header,
6403                      const gdb_byte *info_ptr,
6404                      struct dwarf2_section_info *section,
6405                      rcuh_kind section_kind)
6406 {
6407   int signed_addr;
6408   unsigned int bytes_read;
6409   const char *filename = get_section_file_name (section);
6410   bfd *abfd = get_section_bfd_owner (section);
6411
6412   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6413   cu_header->initial_length_size = bytes_read;
6414   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6415   info_ptr += bytes_read;
6416   cu_header->version = read_2_bytes (abfd, info_ptr);
6417   if (cu_header->version < 2 || cu_header->version > 5)
6418     error (_("Dwarf Error: wrong version in compilation unit header "
6419            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6420            cu_header->version, filename);
6421   info_ptr += 2;
6422   if (cu_header->version < 5)
6423     switch (section_kind)
6424       {
6425       case rcuh_kind::COMPILE:
6426         cu_header->unit_type = DW_UT_compile;
6427         break;
6428       case rcuh_kind::TYPE:
6429         cu_header->unit_type = DW_UT_type;
6430         break;
6431       default:
6432         internal_error (__FILE__, __LINE__,
6433                         _("read_comp_unit_head: invalid section_kind"));
6434       }
6435   else
6436     {
6437       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6438                                                  (read_1_byte (abfd, info_ptr));
6439       info_ptr += 1;
6440       switch (cu_header->unit_type)
6441         {
6442         case DW_UT_compile:
6443           if (section_kind != rcuh_kind::COMPILE)
6444             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6445                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6446                    filename);
6447           break;
6448         case DW_UT_type:
6449           section_kind = rcuh_kind::TYPE;
6450           break;
6451         default:
6452           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6453                  "(is %d, should be %d or %d) [in module %s]"),
6454                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6455         }
6456
6457       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6458       info_ptr += 1;
6459     }
6460   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6461                                                           cu_header,
6462                                                           &bytes_read);
6463   info_ptr += bytes_read;
6464   if (cu_header->version < 5)
6465     {
6466       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6467       info_ptr += 1;
6468     }
6469   signed_addr = bfd_get_sign_extend_vma (abfd);
6470   if (signed_addr < 0)
6471     internal_error (__FILE__, __LINE__,
6472                     _("read_comp_unit_head: dwarf from non elf file"));
6473   cu_header->signed_addr_p = signed_addr;
6474
6475   if (section_kind == rcuh_kind::TYPE)
6476     {
6477       LONGEST type_offset;
6478
6479       cu_header->signature = read_8_bytes (abfd, info_ptr);
6480       info_ptr += 8;
6481
6482       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6483       info_ptr += bytes_read;
6484       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6485       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6486         error (_("Dwarf Error: Too big type_offset in compilation unit "
6487                "header (is %s) [in module %s]"), plongest (type_offset),
6488                filename);
6489     }
6490
6491   return info_ptr;
6492 }
6493
6494 /* Helper function that returns the proper abbrev section for
6495    THIS_CU.  */
6496
6497 static struct dwarf2_section_info *
6498 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6499 {
6500   struct dwarf2_section_info *abbrev;
6501   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6502
6503   if (this_cu->is_dwz)
6504     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6505   else
6506     abbrev = &dwarf2_per_objfile->abbrev;
6507
6508   return abbrev;
6509 }
6510
6511 /* Subroutine of read_and_check_comp_unit_head and
6512    read_and_check_type_unit_head to simplify them.
6513    Perform various error checking on the header.  */
6514
6515 static void
6516 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6517                             struct comp_unit_head *header,
6518                             struct dwarf2_section_info *section,
6519                             struct dwarf2_section_info *abbrev_section)
6520 {
6521   const char *filename = get_section_file_name (section);
6522
6523   if (to_underlying (header->abbrev_sect_off)
6524       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6525     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6526            "(offset %s + 6) [in module %s]"),
6527            sect_offset_str (header->abbrev_sect_off),
6528            sect_offset_str (header->sect_off),
6529            filename);
6530
6531   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6532      avoid potential 32-bit overflow.  */
6533   if (((ULONGEST) header->sect_off + get_cu_length (header))
6534       > section->size)
6535     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6536            "(offset %s + 0) [in module %s]"),
6537            header->length, sect_offset_str (header->sect_off),
6538            filename);
6539 }
6540
6541 /* Read in a CU/TU header and perform some basic error checking.
6542    The contents of the header are stored in HEADER.
6543    The result is a pointer to the start of the first DIE.  */
6544
6545 static const gdb_byte *
6546 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6547                                struct comp_unit_head *header,
6548                                struct dwarf2_section_info *section,
6549                                struct dwarf2_section_info *abbrev_section,
6550                                const gdb_byte *info_ptr,
6551                                rcuh_kind section_kind)
6552 {
6553   const gdb_byte *beg_of_comp_unit = info_ptr;
6554
6555   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6556
6557   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6558
6559   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6560
6561   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6562                               abbrev_section);
6563
6564   return info_ptr;
6565 }
6566
6567 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6568
6569 static sect_offset
6570 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6571                     struct dwarf2_section_info *section,
6572                     sect_offset sect_off)
6573 {
6574   bfd *abfd = get_section_bfd_owner (section);
6575   const gdb_byte *info_ptr;
6576   unsigned int initial_length_size, offset_size;
6577   uint16_t version;
6578
6579   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6580   info_ptr = section->buffer + to_underlying (sect_off);
6581   read_initial_length (abfd, info_ptr, &initial_length_size);
6582   offset_size = initial_length_size == 4 ? 4 : 8;
6583   info_ptr += initial_length_size;
6584
6585   version = read_2_bytes (abfd, info_ptr);
6586   info_ptr += 2;
6587   if (version >= 5)
6588     {
6589       /* Skip unit type and address size.  */
6590       info_ptr += 2;
6591     }
6592
6593   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6594 }
6595
6596 /* Allocate a new partial symtab for file named NAME and mark this new
6597    partial symtab as being an include of PST.  */
6598
6599 static void
6600 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6601                                struct objfile *objfile)
6602 {
6603   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6604
6605   if (!IS_ABSOLUTE_PATH (subpst->filename))
6606     {
6607       /* It shares objfile->objfile_obstack.  */
6608       subpst->dirname = pst->dirname;
6609     }
6610
6611   subpst->dependencies = objfile->partial_symtabs->allocate_dependencies (1);
6612   subpst->dependencies[0] = pst;
6613   subpst->number_of_dependencies = 1;
6614
6615   subpst->read_symtab = pst->read_symtab;
6616
6617   /* No private part is necessary for include psymtabs.  This property
6618      can be used to differentiate between such include psymtabs and
6619      the regular ones.  */
6620   subpst->read_symtab_private = NULL;
6621 }
6622
6623 /* Read the Line Number Program data and extract the list of files
6624    included by the source file represented by PST.  Build an include
6625    partial symtab for each of these included files.  */
6626
6627 static void
6628 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6629                                struct die_info *die,
6630                                struct partial_symtab *pst)
6631 {
6632   line_header_up lh;
6633   struct attribute *attr;
6634
6635   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6636   if (attr)
6637     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6638   if (lh == NULL)
6639     return;  /* No linetable, so no includes.  */
6640
6641   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6642      that we pass in the raw text_low here; that is ok because we're
6643      only decoding the line table to make include partial symtabs, and
6644      so the addresses aren't really used.  */
6645   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6646                       pst->raw_text_low (), 1);
6647 }
6648
6649 static hashval_t
6650 hash_signatured_type (const void *item)
6651 {
6652   const struct signatured_type *sig_type
6653     = (const struct signatured_type *) item;
6654
6655   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6656   return sig_type->signature;
6657 }
6658
6659 static int
6660 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6661 {
6662   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6663   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6664
6665   return lhs->signature == rhs->signature;
6666 }
6667
6668 /* Allocate a hash table for signatured types.  */
6669
6670 static htab_t
6671 allocate_signatured_type_table (struct objfile *objfile)
6672 {
6673   return htab_create_alloc_ex (41,
6674                                hash_signatured_type,
6675                                eq_signatured_type,
6676                                NULL,
6677                                &objfile->objfile_obstack,
6678                                hashtab_obstack_allocate,
6679                                dummy_obstack_deallocate);
6680 }
6681
6682 /* A helper function to add a signatured type CU to a table.  */
6683
6684 static int
6685 add_signatured_type_cu_to_table (void **slot, void *datum)
6686 {
6687   struct signatured_type *sigt = (struct signatured_type *) *slot;
6688   std::vector<signatured_type *> *all_type_units
6689     = (std::vector<signatured_type *> *) datum;
6690
6691   all_type_units->push_back (sigt);
6692
6693   return 1;
6694 }
6695
6696 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6697    and fill them into TYPES_HTAB.  It will process only type units,
6698    therefore DW_UT_type.  */
6699
6700 static void
6701 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6702                               struct dwo_file *dwo_file,
6703                               dwarf2_section_info *section, htab_t &types_htab,
6704                               rcuh_kind section_kind)
6705 {
6706   struct objfile *objfile = dwarf2_per_objfile->objfile;
6707   struct dwarf2_section_info *abbrev_section;
6708   bfd *abfd;
6709   const gdb_byte *info_ptr, *end_ptr;
6710
6711   abbrev_section = (dwo_file != NULL
6712                     ? &dwo_file->sections.abbrev
6713                     : &dwarf2_per_objfile->abbrev);
6714
6715   if (dwarf_read_debug)
6716     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6717                         get_section_name (section),
6718                         get_section_file_name (abbrev_section));
6719
6720   dwarf2_read_section (objfile, section);
6721   info_ptr = section->buffer;
6722
6723   if (info_ptr == NULL)
6724     return;
6725
6726   /* We can't set abfd until now because the section may be empty or
6727      not present, in which case the bfd is unknown.  */
6728   abfd = get_section_bfd_owner (section);
6729
6730   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6731      because we don't need to read any dies: the signature is in the
6732      header.  */
6733
6734   end_ptr = info_ptr + section->size;
6735   while (info_ptr < end_ptr)
6736     {
6737       struct signatured_type *sig_type;
6738       struct dwo_unit *dwo_tu;
6739       void **slot;
6740       const gdb_byte *ptr = info_ptr;
6741       struct comp_unit_head header;
6742       unsigned int length;
6743
6744       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6745
6746       /* Initialize it due to a false compiler warning.  */
6747       header.signature = -1;
6748       header.type_cu_offset_in_tu = (cu_offset) -1;
6749
6750       /* We need to read the type's signature in order to build the hash
6751          table, but we don't need anything else just yet.  */
6752
6753       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6754                                            abbrev_section, ptr, section_kind);
6755
6756       length = get_cu_length (&header);
6757
6758       /* Skip dummy type units.  */
6759       if (ptr >= info_ptr + length
6760           || peek_abbrev_code (abfd, ptr) == 0
6761           || header.unit_type != DW_UT_type)
6762         {
6763           info_ptr += length;
6764           continue;
6765         }
6766
6767       if (types_htab == NULL)
6768         {
6769           if (dwo_file)
6770             types_htab = allocate_dwo_unit_table (objfile);
6771           else
6772             types_htab = allocate_signatured_type_table (objfile);
6773         }
6774
6775       if (dwo_file)
6776         {
6777           sig_type = NULL;
6778           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6779                                    struct dwo_unit);
6780           dwo_tu->dwo_file = dwo_file;
6781           dwo_tu->signature = header.signature;
6782           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6783           dwo_tu->section = section;
6784           dwo_tu->sect_off = sect_off;
6785           dwo_tu->length = length;
6786         }
6787       else
6788         {
6789           /* N.B.: type_offset is not usable if this type uses a DWO file.
6790              The real type_offset is in the DWO file.  */
6791           dwo_tu = NULL;
6792           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6793                                      struct signatured_type);
6794           sig_type->signature = header.signature;
6795           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6796           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6797           sig_type->per_cu.is_debug_types = 1;
6798           sig_type->per_cu.section = section;
6799           sig_type->per_cu.sect_off = sect_off;
6800           sig_type->per_cu.length = length;
6801         }
6802
6803       slot = htab_find_slot (types_htab,
6804                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6805                              INSERT);
6806       gdb_assert (slot != NULL);
6807       if (*slot != NULL)
6808         {
6809           sect_offset dup_sect_off;
6810
6811           if (dwo_file)
6812             {
6813               const struct dwo_unit *dup_tu
6814                 = (const struct dwo_unit *) *slot;
6815
6816               dup_sect_off = dup_tu->sect_off;
6817             }
6818           else
6819             {
6820               const struct signatured_type *dup_tu
6821                 = (const struct signatured_type *) *slot;
6822
6823               dup_sect_off = dup_tu->per_cu.sect_off;
6824             }
6825
6826           complaint (_("debug type entry at offset %s is duplicate to"
6827                        " the entry at offset %s, signature %s"),
6828                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6829                      hex_string (header.signature));
6830         }
6831       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6832
6833       if (dwarf_read_debug > 1)
6834         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6835                             sect_offset_str (sect_off),
6836                             hex_string (header.signature));
6837
6838       info_ptr += length;
6839     }
6840 }
6841
6842 /* Create the hash table of all entries in the .debug_types
6843    (or .debug_types.dwo) section(s).
6844    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6845    otherwise it is NULL.
6846
6847    The result is a pointer to the hash table or NULL if there are no types.
6848
6849    Note: This function processes DWO files only, not DWP files.  */
6850
6851 static void
6852 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6853                                struct dwo_file *dwo_file,
6854                                VEC (dwarf2_section_info_def) *types,
6855                                htab_t &types_htab)
6856 {
6857   int ix;
6858   struct dwarf2_section_info *section;
6859
6860   if (VEC_empty (dwarf2_section_info_def, types))
6861     return;
6862
6863   for (ix = 0;
6864        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6865        ++ix)
6866     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6867                                   types_htab, rcuh_kind::TYPE);
6868 }
6869
6870 /* Create the hash table of all entries in the .debug_types section,
6871    and initialize all_type_units.
6872    The result is zero if there is an error (e.g. missing .debug_types section),
6873    otherwise non-zero.  */
6874
6875 static int
6876 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6877 {
6878   htab_t types_htab = NULL;
6879
6880   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6881                                 &dwarf2_per_objfile->info, types_htab,
6882                                 rcuh_kind::COMPILE);
6883   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6884                                  dwarf2_per_objfile->types, types_htab);
6885   if (types_htab == NULL)
6886     {
6887       dwarf2_per_objfile->signatured_types = NULL;
6888       return 0;
6889     }
6890
6891   dwarf2_per_objfile->signatured_types = types_htab;
6892
6893   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6894   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6895
6896   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6897                           &dwarf2_per_objfile->all_type_units);
6898
6899   return 1;
6900 }
6901
6902 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6903    If SLOT is non-NULL, it is the entry to use in the hash table.
6904    Otherwise we find one.  */
6905
6906 static struct signatured_type *
6907 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6908                void **slot)
6909 {
6910   struct objfile *objfile = dwarf2_per_objfile->objfile;
6911
6912   if (dwarf2_per_objfile->all_type_units.size ()
6913       == dwarf2_per_objfile->all_type_units.capacity ())
6914     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6915
6916   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6917                                               struct signatured_type);
6918
6919   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6920   sig_type->signature = sig;
6921   sig_type->per_cu.is_debug_types = 1;
6922   if (dwarf2_per_objfile->using_index)
6923     {
6924       sig_type->per_cu.v.quick =
6925         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6926                         struct dwarf2_per_cu_quick_data);
6927     }
6928
6929   if (slot == NULL)
6930     {
6931       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6932                              sig_type, INSERT);
6933     }
6934   gdb_assert (*slot == NULL);
6935   *slot = sig_type;
6936   /* The rest of sig_type must be filled in by the caller.  */
6937   return sig_type;
6938 }
6939
6940 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6941    Fill in SIG_ENTRY with DWO_ENTRY.  */
6942
6943 static void
6944 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6945                                   struct signatured_type *sig_entry,
6946                                   struct dwo_unit *dwo_entry)
6947 {
6948   /* Make sure we're not clobbering something we don't expect to.  */
6949   gdb_assert (! sig_entry->per_cu.queued);
6950   gdb_assert (sig_entry->per_cu.cu == NULL);
6951   if (dwarf2_per_objfile->using_index)
6952     {
6953       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6954       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6955     }
6956   else
6957       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6958   gdb_assert (sig_entry->signature == dwo_entry->signature);
6959   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6960   gdb_assert (sig_entry->type_unit_group == NULL);
6961   gdb_assert (sig_entry->dwo_unit == NULL);
6962
6963   sig_entry->per_cu.section = dwo_entry->section;
6964   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6965   sig_entry->per_cu.length = dwo_entry->length;
6966   sig_entry->per_cu.reading_dwo_directly = 1;
6967   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6968   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6969   sig_entry->dwo_unit = dwo_entry;
6970 }
6971
6972 /* Subroutine of lookup_signatured_type.
6973    If we haven't read the TU yet, create the signatured_type data structure
6974    for a TU to be read in directly from a DWO file, bypassing the stub.
6975    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6976    using .gdb_index, then when reading a CU we want to stay in the DWO file
6977    containing that CU.  Otherwise we could end up reading several other DWO
6978    files (due to comdat folding) to process the transitive closure of all the
6979    mentioned TUs, and that can be slow.  The current DWO file will have every
6980    type signature that it needs.
6981    We only do this for .gdb_index because in the psymtab case we already have
6982    to read all the DWOs to build the type unit groups.  */
6983
6984 static struct signatured_type *
6985 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6986 {
6987   struct dwarf2_per_objfile *dwarf2_per_objfile
6988     = cu->per_cu->dwarf2_per_objfile;
6989   struct objfile *objfile = dwarf2_per_objfile->objfile;
6990   struct dwo_file *dwo_file;
6991   struct dwo_unit find_dwo_entry, *dwo_entry;
6992   struct signatured_type find_sig_entry, *sig_entry;
6993   void **slot;
6994
6995   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6996
6997   /* If TU skeletons have been removed then we may not have read in any
6998      TUs yet.  */
6999   if (dwarf2_per_objfile->signatured_types == NULL)
7000     {
7001       dwarf2_per_objfile->signatured_types
7002         = allocate_signatured_type_table (objfile);
7003     }
7004
7005   /* We only ever need to read in one copy of a signatured type.
7006      Use the global signatured_types array to do our own comdat-folding
7007      of types.  If this is the first time we're reading this TU, and
7008      the TU has an entry in .gdb_index, replace the recorded data from
7009      .gdb_index with this TU.  */
7010
7011   find_sig_entry.signature = sig;
7012   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7013                          &find_sig_entry, INSERT);
7014   sig_entry = (struct signatured_type *) *slot;
7015
7016   /* We can get here with the TU already read, *or* in the process of being
7017      read.  Don't reassign the global entry to point to this DWO if that's
7018      the case.  Also note that if the TU is already being read, it may not
7019      have come from a DWO, the program may be a mix of Fission-compiled
7020      code and non-Fission-compiled code.  */
7021
7022   /* Have we already tried to read this TU?
7023      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7024      needn't exist in the global table yet).  */
7025   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7026     return sig_entry;
7027
7028   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7029      dwo_unit of the TU itself.  */
7030   dwo_file = cu->dwo_unit->dwo_file;
7031
7032   /* Ok, this is the first time we're reading this TU.  */
7033   if (dwo_file->tus == NULL)
7034     return NULL;
7035   find_dwo_entry.signature = sig;
7036   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7037   if (dwo_entry == NULL)
7038     return NULL;
7039
7040   /* If the global table doesn't have an entry for this TU, add one.  */
7041   if (sig_entry == NULL)
7042     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7043
7044   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7045   sig_entry->per_cu.tu_read = 1;
7046   return sig_entry;
7047 }
7048
7049 /* Subroutine of lookup_signatured_type.
7050    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7051    then try the DWP file.  If the TU stub (skeleton) has been removed then
7052    it won't be in .gdb_index.  */
7053
7054 static struct signatured_type *
7055 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7056 {
7057   struct dwarf2_per_objfile *dwarf2_per_objfile
7058     = cu->per_cu->dwarf2_per_objfile;
7059   struct objfile *objfile = dwarf2_per_objfile->objfile;
7060   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7061   struct dwo_unit *dwo_entry;
7062   struct signatured_type find_sig_entry, *sig_entry;
7063   void **slot;
7064
7065   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7066   gdb_assert (dwp_file != NULL);
7067
7068   /* If TU skeletons have been removed then we may not have read in any
7069      TUs yet.  */
7070   if (dwarf2_per_objfile->signatured_types == NULL)
7071     {
7072       dwarf2_per_objfile->signatured_types
7073         = allocate_signatured_type_table (objfile);
7074     }
7075
7076   find_sig_entry.signature = sig;
7077   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7078                          &find_sig_entry, INSERT);
7079   sig_entry = (struct signatured_type *) *slot;
7080
7081   /* Have we already tried to read this TU?
7082      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7083      needn't exist in the global table yet).  */
7084   if (sig_entry != NULL)
7085     return sig_entry;
7086
7087   if (dwp_file->tus == NULL)
7088     return NULL;
7089   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7090                                       sig, 1 /* is_debug_types */);
7091   if (dwo_entry == NULL)
7092     return NULL;
7093
7094   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7095   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7096
7097   return sig_entry;
7098 }
7099
7100 /* Lookup a signature based type for DW_FORM_ref_sig8.
7101    Returns NULL if signature SIG is not present in the table.
7102    It is up to the caller to complain about this.  */
7103
7104 static struct signatured_type *
7105 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7106 {
7107   struct dwarf2_per_objfile *dwarf2_per_objfile
7108     = cu->per_cu->dwarf2_per_objfile;
7109
7110   if (cu->dwo_unit
7111       && dwarf2_per_objfile->using_index)
7112     {
7113       /* We're in a DWO/DWP file, and we're using .gdb_index.
7114          These cases require special processing.  */
7115       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7116         return lookup_dwo_signatured_type (cu, sig);
7117       else
7118         return lookup_dwp_signatured_type (cu, sig);
7119     }
7120   else
7121     {
7122       struct signatured_type find_entry, *entry;
7123
7124       if (dwarf2_per_objfile->signatured_types == NULL)
7125         return NULL;
7126       find_entry.signature = sig;
7127       entry = ((struct signatured_type *)
7128                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7129       return entry;
7130     }
7131 }
7132 \f
7133 /* Low level DIE reading support.  */
7134
7135 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7136
7137 static void
7138 init_cu_die_reader (struct die_reader_specs *reader,
7139                     struct dwarf2_cu *cu,
7140                     struct dwarf2_section_info *section,
7141                     struct dwo_file *dwo_file,
7142                     struct abbrev_table *abbrev_table)
7143 {
7144   gdb_assert (section->readin && section->buffer != NULL);
7145   reader->abfd = get_section_bfd_owner (section);
7146   reader->cu = cu;
7147   reader->dwo_file = dwo_file;
7148   reader->die_section = section;
7149   reader->buffer = section->buffer;
7150   reader->buffer_end = section->buffer + section->size;
7151   reader->comp_dir = NULL;
7152   reader->abbrev_table = abbrev_table;
7153 }
7154
7155 /* Subroutine of init_cutu_and_read_dies to simplify it.
7156    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7157    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7158    already.
7159
7160    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7161    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7162    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7163    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7164    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7165    STUB_COMP_DIR may be non-NULL.
7166    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7167    are filled in with the info of the DIE from the DWO file.
7168    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7169    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7170    kept around for at least as long as *RESULT_READER.
7171
7172    The result is non-zero if a valid (non-dummy) DIE was found.  */
7173
7174 static int
7175 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7176                         struct dwo_unit *dwo_unit,
7177                         struct die_info *stub_comp_unit_die,
7178                         const char *stub_comp_dir,
7179                         struct die_reader_specs *result_reader,
7180                         const gdb_byte **result_info_ptr,
7181                         struct die_info **result_comp_unit_die,
7182                         int *result_has_children,
7183                         abbrev_table_up *result_dwo_abbrev_table)
7184 {
7185   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7186   struct objfile *objfile = dwarf2_per_objfile->objfile;
7187   struct dwarf2_cu *cu = this_cu->cu;
7188   bfd *abfd;
7189   const gdb_byte *begin_info_ptr, *info_ptr;
7190   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7191   int i,num_extra_attrs;
7192   struct dwarf2_section_info *dwo_abbrev_section;
7193   struct attribute *attr;
7194   struct die_info *comp_unit_die;
7195
7196   /* At most one of these may be provided.  */
7197   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7198
7199   /* These attributes aren't processed until later:
7200      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7201      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7202      referenced later.  However, these attributes are found in the stub
7203      which we won't have later.  In order to not impose this complication
7204      on the rest of the code, we read them here and copy them to the
7205      DWO CU/TU die.  */
7206
7207   stmt_list = NULL;
7208   low_pc = NULL;
7209   high_pc = NULL;
7210   ranges = NULL;
7211   comp_dir = NULL;
7212
7213   if (stub_comp_unit_die != NULL)
7214     {
7215       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7216          DWO file.  */
7217       if (! this_cu->is_debug_types)
7218         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7219       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7220       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7221       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7222       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7223
7224       /* There should be a DW_AT_addr_base attribute here (if needed).
7225          We need the value before we can process DW_FORM_GNU_addr_index
7226          or DW_FORM_addrx.  */
7227       cu->addr_base = 0;
7228       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7229       if (attr)
7230         cu->addr_base = DW_UNSND (attr);
7231
7232       /* There should be a DW_AT_ranges_base attribute here (if needed).
7233          We need the value before we can process DW_AT_ranges.  */
7234       cu->ranges_base = 0;
7235       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7236       if (attr)
7237         cu->ranges_base = DW_UNSND (attr);
7238     }
7239   else if (stub_comp_dir != NULL)
7240     {
7241       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7242       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7243       comp_dir->name = DW_AT_comp_dir;
7244       comp_dir->form = DW_FORM_string;
7245       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7246       DW_STRING (comp_dir) = stub_comp_dir;
7247     }
7248
7249   /* Set up for reading the DWO CU/TU.  */
7250   cu->dwo_unit = dwo_unit;
7251   dwarf2_section_info *section = dwo_unit->section;
7252   dwarf2_read_section (objfile, section);
7253   abfd = get_section_bfd_owner (section);
7254   begin_info_ptr = info_ptr = (section->buffer
7255                                + to_underlying (dwo_unit->sect_off));
7256   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7257
7258   if (this_cu->is_debug_types)
7259     {
7260       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7261
7262       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7263                                                 &cu->header, section,
7264                                                 dwo_abbrev_section,
7265                                                 info_ptr, rcuh_kind::TYPE);
7266       /* This is not an assert because it can be caused by bad debug info.  */
7267       if (sig_type->signature != cu->header.signature)
7268         {
7269           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7270                    " TU at offset %s [in module %s]"),
7271                  hex_string (sig_type->signature),
7272                  hex_string (cu->header.signature),
7273                  sect_offset_str (dwo_unit->sect_off),
7274                  bfd_get_filename (abfd));
7275         }
7276       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7277       /* For DWOs coming from DWP files, we don't know the CU length
7278          nor the type's offset in the TU until now.  */
7279       dwo_unit->length = get_cu_length (&cu->header);
7280       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7281
7282       /* Establish the type offset that can be used to lookup the type.
7283          For DWO files, we don't know it until now.  */
7284       sig_type->type_offset_in_section
7285         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7286     }
7287   else
7288     {
7289       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7290                                                 &cu->header, section,
7291                                                 dwo_abbrev_section,
7292                                                 info_ptr, rcuh_kind::COMPILE);
7293       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7294       /* For DWOs coming from DWP files, we don't know the CU length
7295          until now.  */
7296       dwo_unit->length = get_cu_length (&cu->header);
7297     }
7298
7299   *result_dwo_abbrev_table
7300     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7301                                cu->header.abbrev_sect_off);
7302   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7303                       result_dwo_abbrev_table->get ());
7304
7305   /* Read in the die, but leave space to copy over the attributes
7306      from the stub.  This has the benefit of simplifying the rest of
7307      the code - all the work to maintain the illusion of a single
7308      DW_TAG_{compile,type}_unit DIE is done here.  */
7309   num_extra_attrs = ((stmt_list != NULL)
7310                      + (low_pc != NULL)
7311                      + (high_pc != NULL)
7312                      + (ranges != NULL)
7313                      + (comp_dir != NULL));
7314   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7315                               result_has_children, num_extra_attrs);
7316
7317   /* Copy over the attributes from the stub to the DIE we just read in.  */
7318   comp_unit_die = *result_comp_unit_die;
7319   i = comp_unit_die->num_attrs;
7320   if (stmt_list != NULL)
7321     comp_unit_die->attrs[i++] = *stmt_list;
7322   if (low_pc != NULL)
7323     comp_unit_die->attrs[i++] = *low_pc;
7324   if (high_pc != NULL)
7325     comp_unit_die->attrs[i++] = *high_pc;
7326   if (ranges != NULL)
7327     comp_unit_die->attrs[i++] = *ranges;
7328   if (comp_dir != NULL)
7329     comp_unit_die->attrs[i++] = *comp_dir;
7330   comp_unit_die->num_attrs += num_extra_attrs;
7331
7332   if (dwarf_die_debug)
7333     {
7334       fprintf_unfiltered (gdb_stdlog,
7335                           "Read die from %s@0x%x of %s:\n",
7336                           get_section_name (section),
7337                           (unsigned) (begin_info_ptr - section->buffer),
7338                           bfd_get_filename (abfd));
7339       dump_die (comp_unit_die, dwarf_die_debug);
7340     }
7341
7342   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7343      TUs by skipping the stub and going directly to the entry in the DWO file.
7344      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7345      to get it via circuitous means.  Blech.  */
7346   if (comp_dir != NULL)
7347     result_reader->comp_dir = DW_STRING (comp_dir);
7348
7349   /* Skip dummy compilation units.  */
7350   if (info_ptr >= begin_info_ptr + dwo_unit->length
7351       || peek_abbrev_code (abfd, info_ptr) == 0)
7352     return 0;
7353
7354   *result_info_ptr = info_ptr;
7355   return 1;
7356 }
7357
7358 /* Subroutine of init_cutu_and_read_dies to simplify it.
7359    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7360    Returns NULL if the specified DWO unit cannot be found.  */
7361
7362 static struct dwo_unit *
7363 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7364                  struct die_info *comp_unit_die)
7365 {
7366   struct dwarf2_cu *cu = this_cu->cu;
7367   ULONGEST signature;
7368   struct dwo_unit *dwo_unit;
7369   const char *comp_dir, *dwo_name;
7370
7371   gdb_assert (cu != NULL);
7372
7373   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7374   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7375   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7376
7377   if (this_cu->is_debug_types)
7378     {
7379       struct signatured_type *sig_type;
7380
7381       /* Since this_cu is the first member of struct signatured_type,
7382          we can go from a pointer to one to a pointer to the other.  */
7383       sig_type = (struct signatured_type *) this_cu;
7384       signature = sig_type->signature;
7385       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7386     }
7387   else
7388     {
7389       struct attribute *attr;
7390
7391       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7392       if (! attr)
7393         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7394                  " [in module %s]"),
7395                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7396       signature = DW_UNSND (attr);
7397       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7398                                        signature);
7399     }
7400
7401   return dwo_unit;
7402 }
7403
7404 /* Subroutine of init_cutu_and_read_dies to simplify it.
7405    See it for a description of the parameters.
7406    Read a TU directly from a DWO file, bypassing the stub.  */
7407
7408 static void
7409 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7410                            int use_existing_cu, int keep,
7411                            die_reader_func_ftype *die_reader_func,
7412                            void *data)
7413 {
7414   std::unique_ptr<dwarf2_cu> new_cu;
7415   struct signatured_type *sig_type;
7416   struct die_reader_specs reader;
7417   const gdb_byte *info_ptr;
7418   struct die_info *comp_unit_die;
7419   int has_children;
7420   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7421
7422   /* Verify we can do the following downcast, and that we have the
7423      data we need.  */
7424   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7425   sig_type = (struct signatured_type *) this_cu;
7426   gdb_assert (sig_type->dwo_unit != NULL);
7427
7428   if (use_existing_cu && this_cu->cu != NULL)
7429     {
7430       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7431       /* There's no need to do the rereading_dwo_cu handling that
7432          init_cutu_and_read_dies does since we don't read the stub.  */
7433     }
7434   else
7435     {
7436       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7437       gdb_assert (this_cu->cu == NULL);
7438       new_cu.reset (new dwarf2_cu (this_cu));
7439     }
7440
7441   /* A future optimization, if needed, would be to use an existing
7442      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7443      could share abbrev tables.  */
7444
7445   /* The abbreviation table used by READER, this must live at least as long as
7446      READER.  */
7447   abbrev_table_up dwo_abbrev_table;
7448
7449   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7450                               NULL /* stub_comp_unit_die */,
7451                               sig_type->dwo_unit->dwo_file->comp_dir,
7452                               &reader, &info_ptr,
7453                               &comp_unit_die, &has_children,
7454                               &dwo_abbrev_table) == 0)
7455     {
7456       /* Dummy die.  */
7457       return;
7458     }
7459
7460   /* All the "real" work is done here.  */
7461   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7462
7463   /* This duplicates the code in init_cutu_and_read_dies,
7464      but the alternative is making the latter more complex.
7465      This function is only for the special case of using DWO files directly:
7466      no point in overly complicating the general case just to handle this.  */
7467   if (new_cu != NULL && keep)
7468     {
7469       /* Link this CU into read_in_chain.  */
7470       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7471       dwarf2_per_objfile->read_in_chain = this_cu;
7472       /* The chain owns it now.  */
7473       new_cu.release ();
7474     }
7475 }
7476
7477 /* Initialize a CU (or TU) and read its DIEs.
7478    If the CU defers to a DWO file, read the DWO file as well.
7479
7480    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7481    Otherwise the table specified in the comp unit header is read in and used.
7482    This is an optimization for when we already have the abbrev table.
7483
7484    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7485    Otherwise, a new CU is allocated with xmalloc.
7486
7487    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7488    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7489
7490    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7491    linker) then DIE_READER_FUNC will not get called.  */
7492
7493 static void
7494 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7495                          struct abbrev_table *abbrev_table,
7496                          int use_existing_cu, int keep,
7497                          bool skip_partial,
7498                          die_reader_func_ftype *die_reader_func,
7499                          void *data)
7500 {
7501   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7502   struct objfile *objfile = dwarf2_per_objfile->objfile;
7503   struct dwarf2_section_info *section = this_cu->section;
7504   bfd *abfd = get_section_bfd_owner (section);
7505   struct dwarf2_cu *cu;
7506   const gdb_byte *begin_info_ptr, *info_ptr;
7507   struct die_reader_specs reader;
7508   struct die_info *comp_unit_die;
7509   int has_children;
7510   struct attribute *attr;
7511   struct signatured_type *sig_type = NULL;
7512   struct dwarf2_section_info *abbrev_section;
7513   /* Non-zero if CU currently points to a DWO file and we need to
7514      reread it.  When this happens we need to reread the skeleton die
7515      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7516   int rereading_dwo_cu = 0;
7517
7518   if (dwarf_die_debug)
7519     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7520                         this_cu->is_debug_types ? "type" : "comp",
7521                         sect_offset_str (this_cu->sect_off));
7522
7523   if (use_existing_cu)
7524     gdb_assert (keep);
7525
7526   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7527      file (instead of going through the stub), short-circuit all of this.  */
7528   if (this_cu->reading_dwo_directly)
7529     {
7530       /* Narrow down the scope of possibilities to have to understand.  */
7531       gdb_assert (this_cu->is_debug_types);
7532       gdb_assert (abbrev_table == NULL);
7533       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7534                                  die_reader_func, data);
7535       return;
7536     }
7537
7538   /* This is cheap if the section is already read in.  */
7539   dwarf2_read_section (objfile, section);
7540
7541   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7542
7543   abbrev_section = get_abbrev_section_for_cu (this_cu);
7544
7545   std::unique_ptr<dwarf2_cu> new_cu;
7546   if (use_existing_cu && this_cu->cu != NULL)
7547     {
7548       cu = this_cu->cu;
7549       /* If this CU is from a DWO file we need to start over, we need to
7550          refetch the attributes from the skeleton CU.
7551          This could be optimized by retrieving those attributes from when we
7552          were here the first time: the previous comp_unit_die was stored in
7553          comp_unit_obstack.  But there's no data yet that we need this
7554          optimization.  */
7555       if (cu->dwo_unit != NULL)
7556         rereading_dwo_cu = 1;
7557     }
7558   else
7559     {
7560       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7561       gdb_assert (this_cu->cu == NULL);
7562       new_cu.reset (new dwarf2_cu (this_cu));
7563       cu = new_cu.get ();
7564     }
7565
7566   /* Get the header.  */
7567   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7568     {
7569       /* We already have the header, there's no need to read it in again.  */
7570       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7571     }
7572   else
7573     {
7574       if (this_cu->is_debug_types)
7575         {
7576           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7577                                                     &cu->header, section,
7578                                                     abbrev_section, info_ptr,
7579                                                     rcuh_kind::TYPE);
7580
7581           /* Since per_cu is the first member of struct signatured_type,
7582              we can go from a pointer to one to a pointer to the other.  */
7583           sig_type = (struct signatured_type *) this_cu;
7584           gdb_assert (sig_type->signature == cu->header.signature);
7585           gdb_assert (sig_type->type_offset_in_tu
7586                       == cu->header.type_cu_offset_in_tu);
7587           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7588
7589           /* LENGTH has not been set yet for type units if we're
7590              using .gdb_index.  */
7591           this_cu->length = get_cu_length (&cu->header);
7592
7593           /* Establish the type offset that can be used to lookup the type.  */
7594           sig_type->type_offset_in_section =
7595             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7596
7597           this_cu->dwarf_version = cu->header.version;
7598         }
7599       else
7600         {
7601           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7602                                                     &cu->header, section,
7603                                                     abbrev_section,
7604                                                     info_ptr,
7605                                                     rcuh_kind::COMPILE);
7606
7607           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7608           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7609           this_cu->dwarf_version = cu->header.version;
7610         }
7611     }
7612
7613   /* Skip dummy compilation units.  */
7614   if (info_ptr >= begin_info_ptr + this_cu->length
7615       || peek_abbrev_code (abfd, info_ptr) == 0)
7616     return;
7617
7618   /* If we don't have them yet, read the abbrevs for this compilation unit.
7619      And if we need to read them now, make sure they're freed when we're
7620      done (own the table through ABBREV_TABLE_HOLDER).  */
7621   abbrev_table_up abbrev_table_holder;
7622   if (abbrev_table != NULL)
7623     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7624   else
7625     {
7626       abbrev_table_holder
7627         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7628                                    cu->header.abbrev_sect_off);
7629       abbrev_table = abbrev_table_holder.get ();
7630     }
7631
7632   /* Read the top level CU/TU die.  */
7633   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7634   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7635
7636   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7637     return;
7638
7639   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7640      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7641      table from the DWO file and pass the ownership over to us.  It will be
7642      referenced from READER, so we must make sure to free it after we're done
7643      with READER.
7644
7645      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7646      DWO CU, that this test will fail (the attribute will not be present).  */
7647   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7648   abbrev_table_up dwo_abbrev_table;
7649   if (attr)
7650     {
7651       struct dwo_unit *dwo_unit;
7652       struct die_info *dwo_comp_unit_die;
7653
7654       if (has_children)
7655         {
7656           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7657                        " has children (offset %s) [in module %s]"),
7658                      sect_offset_str (this_cu->sect_off),
7659                      bfd_get_filename (abfd));
7660         }
7661       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7662       if (dwo_unit != NULL)
7663         {
7664           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7665                                       comp_unit_die, NULL,
7666                                       &reader, &info_ptr,
7667                                       &dwo_comp_unit_die, &has_children,
7668                                       &dwo_abbrev_table) == 0)
7669             {
7670               /* Dummy die.  */
7671               return;
7672             }
7673           comp_unit_die = dwo_comp_unit_die;
7674         }
7675       else
7676         {
7677           /* Yikes, we couldn't find the rest of the DIE, we only have
7678              the stub.  A complaint has already been logged.  There's
7679              not much more we can do except pass on the stub DIE to
7680              die_reader_func.  We don't want to throw an error on bad
7681              debug info.  */
7682         }
7683     }
7684
7685   /* All of the above is setup for this call.  Yikes.  */
7686   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7687
7688   /* Done, clean up.  */
7689   if (new_cu != NULL && keep)
7690     {
7691       /* Link this CU into read_in_chain.  */
7692       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7693       dwarf2_per_objfile->read_in_chain = this_cu;
7694       /* The chain owns it now.  */
7695       new_cu.release ();
7696     }
7697 }
7698
7699 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7700    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7701    to have already done the lookup to find the DWO file).
7702
7703    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7704    THIS_CU->is_debug_types, but nothing else.
7705
7706    We fill in THIS_CU->length.
7707
7708    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7709    linker) then DIE_READER_FUNC will not get called.
7710
7711    THIS_CU->cu is always freed when done.
7712    This is done in order to not leave THIS_CU->cu in a state where we have
7713    to care whether it refers to the "main" CU or the DWO CU.  */
7714
7715 static void
7716 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7717                                    struct dwo_file *dwo_file,
7718                                    die_reader_func_ftype *die_reader_func,
7719                                    void *data)
7720 {
7721   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7722   struct objfile *objfile = dwarf2_per_objfile->objfile;
7723   struct dwarf2_section_info *section = this_cu->section;
7724   bfd *abfd = get_section_bfd_owner (section);
7725   struct dwarf2_section_info *abbrev_section;
7726   const gdb_byte *begin_info_ptr, *info_ptr;
7727   struct die_reader_specs reader;
7728   struct die_info *comp_unit_die;
7729   int has_children;
7730
7731   if (dwarf_die_debug)
7732     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7733                         this_cu->is_debug_types ? "type" : "comp",
7734                         sect_offset_str (this_cu->sect_off));
7735
7736   gdb_assert (this_cu->cu == NULL);
7737
7738   abbrev_section = (dwo_file != NULL
7739                     ? &dwo_file->sections.abbrev
7740                     : get_abbrev_section_for_cu (this_cu));
7741
7742   /* This is cheap if the section is already read in.  */
7743   dwarf2_read_section (objfile, section);
7744
7745   struct dwarf2_cu cu (this_cu);
7746
7747   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7748   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7749                                             &cu.header, section,
7750                                             abbrev_section, info_ptr,
7751                                             (this_cu->is_debug_types
7752                                              ? rcuh_kind::TYPE
7753                                              : rcuh_kind::COMPILE));
7754
7755   this_cu->length = get_cu_length (&cu.header);
7756
7757   /* Skip dummy compilation units.  */
7758   if (info_ptr >= begin_info_ptr + this_cu->length
7759       || peek_abbrev_code (abfd, info_ptr) == 0)
7760     return;
7761
7762   abbrev_table_up abbrev_table
7763     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7764                                cu.header.abbrev_sect_off);
7765
7766   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7767   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7768
7769   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7770 }
7771
7772 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7773    does not lookup the specified DWO file.
7774    This cannot be used to read DWO files.
7775
7776    THIS_CU->cu is always freed when done.
7777    This is done in order to not leave THIS_CU->cu in a state where we have
7778    to care whether it refers to the "main" CU or the DWO CU.
7779    We can revisit this if the data shows there's a performance issue.  */
7780
7781 static void
7782 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7783                                 die_reader_func_ftype *die_reader_func,
7784                                 void *data)
7785 {
7786   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7787 }
7788 \f
7789 /* Type Unit Groups.
7790
7791    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7792    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7793    so that all types coming from the same compilation (.o file) are grouped
7794    together.  A future step could be to put the types in the same symtab as
7795    the CU the types ultimately came from.  */
7796
7797 static hashval_t
7798 hash_type_unit_group (const void *item)
7799 {
7800   const struct type_unit_group *tu_group
7801     = (const struct type_unit_group *) item;
7802
7803   return hash_stmt_list_entry (&tu_group->hash);
7804 }
7805
7806 static int
7807 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7808 {
7809   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7810   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7811
7812   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7813 }
7814
7815 /* Allocate a hash table for type unit groups.  */
7816
7817 static htab_t
7818 allocate_type_unit_groups_table (struct objfile *objfile)
7819 {
7820   return htab_create_alloc_ex (3,
7821                                hash_type_unit_group,
7822                                eq_type_unit_group,
7823                                NULL,
7824                                &objfile->objfile_obstack,
7825                                hashtab_obstack_allocate,
7826                                dummy_obstack_deallocate);
7827 }
7828
7829 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7830    partial symtabs.  We combine several TUs per psymtab to not let the size
7831    of any one psymtab grow too big.  */
7832 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7833 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7834
7835 /* Helper routine for get_type_unit_group.
7836    Create the type_unit_group object used to hold one or more TUs.  */
7837
7838 static struct type_unit_group *
7839 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7840 {
7841   struct dwarf2_per_objfile *dwarf2_per_objfile
7842     = cu->per_cu->dwarf2_per_objfile;
7843   struct objfile *objfile = dwarf2_per_objfile->objfile;
7844   struct dwarf2_per_cu_data *per_cu;
7845   struct type_unit_group *tu_group;
7846
7847   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7848                              struct type_unit_group);
7849   per_cu = &tu_group->per_cu;
7850   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7851
7852   if (dwarf2_per_objfile->using_index)
7853     {
7854       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7855                                         struct dwarf2_per_cu_quick_data);
7856     }
7857   else
7858     {
7859       unsigned int line_offset = to_underlying (line_offset_struct);
7860       struct partial_symtab *pst;
7861       std::string name;
7862
7863       /* Give the symtab a useful name for debug purposes.  */
7864       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7865         name = string_printf ("<type_units_%d>",
7866                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7867       else
7868         name = string_printf ("<type_units_at_0x%x>", line_offset);
7869
7870       pst = create_partial_symtab (per_cu, name.c_str ());
7871       pst->anonymous = 1;
7872     }
7873
7874   tu_group->hash.dwo_unit = cu->dwo_unit;
7875   tu_group->hash.line_sect_off = line_offset_struct;
7876
7877   return tu_group;
7878 }
7879
7880 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7881    STMT_LIST is a DW_AT_stmt_list attribute.  */
7882
7883 static struct type_unit_group *
7884 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7885 {
7886   struct dwarf2_per_objfile *dwarf2_per_objfile
7887     = cu->per_cu->dwarf2_per_objfile;
7888   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7889   struct type_unit_group *tu_group;
7890   void **slot;
7891   unsigned int line_offset;
7892   struct type_unit_group type_unit_group_for_lookup;
7893
7894   if (dwarf2_per_objfile->type_unit_groups == NULL)
7895     {
7896       dwarf2_per_objfile->type_unit_groups =
7897         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7898     }
7899
7900   /* Do we need to create a new group, or can we use an existing one?  */
7901
7902   if (stmt_list)
7903     {
7904       line_offset = DW_UNSND (stmt_list);
7905       ++tu_stats->nr_symtab_sharers;
7906     }
7907   else
7908     {
7909       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7910          We can do various things here like create one group per TU or
7911          spread them over multiple groups to split up the expansion work.
7912          To avoid worst case scenarios (too many groups or too large groups)
7913          we, umm, group them in bunches.  */
7914       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7915                      | (tu_stats->nr_stmt_less_type_units
7916                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7917       ++tu_stats->nr_stmt_less_type_units;
7918     }
7919
7920   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7921   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7922   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7923                          &type_unit_group_for_lookup, INSERT);
7924   if (*slot != NULL)
7925     {
7926       tu_group = (struct type_unit_group *) *slot;
7927       gdb_assert (tu_group != NULL);
7928     }
7929   else
7930     {
7931       sect_offset line_offset_struct = (sect_offset) line_offset;
7932       tu_group = create_type_unit_group (cu, line_offset_struct);
7933       *slot = tu_group;
7934       ++tu_stats->nr_symtabs;
7935     }
7936
7937   return tu_group;
7938 }
7939 \f
7940 /* Partial symbol tables.  */
7941
7942 /* Create a psymtab named NAME and assign it to PER_CU.
7943
7944    The caller must fill in the following details:
7945    dirname, textlow, texthigh.  */
7946
7947 static struct partial_symtab *
7948 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7949 {
7950   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7951   struct partial_symtab *pst;
7952
7953   pst = start_psymtab_common (objfile, name, 0);
7954
7955   pst->psymtabs_addrmap_supported = 1;
7956
7957   /* This is the glue that links PST into GDB's symbol API.  */
7958   pst->read_symtab_private = per_cu;
7959   pst->read_symtab = dwarf2_read_symtab;
7960   per_cu->v.psymtab = pst;
7961
7962   return pst;
7963 }
7964
7965 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7966    type.  */
7967
7968 struct process_psymtab_comp_unit_data
7969 {
7970   /* True if we are reading a DW_TAG_partial_unit.  */
7971
7972   int want_partial_unit;
7973
7974   /* The "pretend" language that is used if the CU doesn't declare a
7975      language.  */
7976
7977   enum language pretend_language;
7978 };
7979
7980 /* die_reader_func for process_psymtab_comp_unit.  */
7981
7982 static void
7983 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7984                                   const gdb_byte *info_ptr,
7985                                   struct die_info *comp_unit_die,
7986                                   int has_children,
7987                                   void *data)
7988 {
7989   struct dwarf2_cu *cu = reader->cu;
7990   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7991   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7992   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7993   CORE_ADDR baseaddr;
7994   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7995   struct partial_symtab *pst;
7996   enum pc_bounds_kind cu_bounds_kind;
7997   const char *filename;
7998   struct process_psymtab_comp_unit_data *info
7999     = (struct process_psymtab_comp_unit_data *) data;
8000
8001   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
8002     return;
8003
8004   gdb_assert (! per_cu->is_debug_types);
8005
8006   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
8007
8008   /* Allocate a new partial symbol table structure.  */
8009   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
8010   if (filename == NULL)
8011     filename = "";
8012
8013   pst = create_partial_symtab (per_cu, filename);
8014
8015   /* This must be done before calling dwarf2_build_include_psymtabs.  */
8016   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
8017
8018   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8019
8020   dwarf2_find_base_address (comp_unit_die, cu);
8021
8022   /* Possibly set the default values of LOWPC and HIGHPC from
8023      `DW_AT_ranges'.  */
8024   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8025                                          &best_highpc, cu, pst);
8026   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8027     {
8028       CORE_ADDR low
8029         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8030            - baseaddr);
8031       CORE_ADDR high
8032         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8033            - baseaddr - 1);
8034       /* Store the contiguous range if it is not empty; it can be
8035          empty for CUs with no code.  */
8036       addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
8037                          low, high, pst);
8038     }
8039
8040   /* Check if comp unit has_children.
8041      If so, read the rest of the partial symbols from this comp unit.
8042      If not, there's no more debug_info for this comp unit.  */
8043   if (has_children)
8044     {
8045       struct partial_die_info *first_die;
8046       CORE_ADDR lowpc, highpc;
8047
8048       lowpc = ((CORE_ADDR) -1);
8049       highpc = ((CORE_ADDR) 0);
8050
8051       first_die = load_partial_dies (reader, info_ptr, 1);
8052
8053       scan_partial_symbols (first_die, &lowpc, &highpc,
8054                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8055
8056       /* If we didn't find a lowpc, set it to highpc to avoid
8057          complaints from `maint check'.  */
8058       if (lowpc == ((CORE_ADDR) -1))
8059         lowpc = highpc;
8060
8061       /* If the compilation unit didn't have an explicit address range,
8062          then use the information extracted from its child dies.  */
8063       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8064         {
8065           best_lowpc = lowpc;
8066           best_highpc = highpc;
8067         }
8068     }
8069   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8070                                                  best_lowpc + baseaddr)
8071                      - baseaddr);
8072   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8073                                                   best_highpc + baseaddr)
8074                       - baseaddr);
8075
8076   end_psymtab_common (objfile, pst);
8077
8078   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8079     {
8080       int i;
8081       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8082       struct dwarf2_per_cu_data *iter;
8083
8084       /* Fill in 'dependencies' here; we fill in 'users' in a
8085          post-pass.  */
8086       pst->number_of_dependencies = len;
8087       pst->dependencies
8088         = objfile->partial_symtabs->allocate_dependencies (len);
8089       for (i = 0;
8090            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8091                         i, iter);
8092            ++i)
8093         pst->dependencies[i] = iter->v.psymtab;
8094
8095       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8096     }
8097
8098   /* Get the list of files included in the current compilation unit,
8099      and build a psymtab for each of them.  */
8100   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8101
8102   if (dwarf_read_debug)
8103     fprintf_unfiltered (gdb_stdlog,
8104                         "Psymtab for %s unit @%s: %s - %s"
8105                         ", %d global, %d static syms\n",
8106                         per_cu->is_debug_types ? "type" : "comp",
8107                         sect_offset_str (per_cu->sect_off),
8108                         paddress (gdbarch, pst->text_low (objfile)),
8109                         paddress (gdbarch, pst->text_high (objfile)),
8110                         pst->n_global_syms, pst->n_static_syms);
8111 }
8112
8113 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8114    Process compilation unit THIS_CU for a psymtab.  */
8115
8116 static void
8117 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8118                            int want_partial_unit,
8119                            enum language pretend_language)
8120 {
8121   /* If this compilation unit was already read in, free the
8122      cached copy in order to read it in again.  This is
8123      necessary because we skipped some symbols when we first
8124      read in the compilation unit (see load_partial_dies).
8125      This problem could be avoided, but the benefit is unclear.  */
8126   if (this_cu->cu != NULL)
8127     free_one_cached_comp_unit (this_cu);
8128
8129   if (this_cu->is_debug_types)
8130     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8131                              build_type_psymtabs_reader, NULL);
8132   else
8133     {
8134       process_psymtab_comp_unit_data info;
8135       info.want_partial_unit = want_partial_unit;
8136       info.pretend_language = pretend_language;
8137       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8138                                process_psymtab_comp_unit_reader, &info);
8139     }
8140
8141   /* Age out any secondary CUs.  */
8142   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8143 }
8144
8145 /* Reader function for build_type_psymtabs.  */
8146
8147 static void
8148 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8149                             const gdb_byte *info_ptr,
8150                             struct die_info *type_unit_die,
8151                             int has_children,
8152                             void *data)
8153 {
8154   struct dwarf2_per_objfile *dwarf2_per_objfile
8155     = reader->cu->per_cu->dwarf2_per_objfile;
8156   struct objfile *objfile = dwarf2_per_objfile->objfile;
8157   struct dwarf2_cu *cu = reader->cu;
8158   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8159   struct signatured_type *sig_type;
8160   struct type_unit_group *tu_group;
8161   struct attribute *attr;
8162   struct partial_die_info *first_die;
8163   CORE_ADDR lowpc, highpc;
8164   struct partial_symtab *pst;
8165
8166   gdb_assert (data == NULL);
8167   gdb_assert (per_cu->is_debug_types);
8168   sig_type = (struct signatured_type *) per_cu;
8169
8170   if (! has_children)
8171     return;
8172
8173   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8174   tu_group = get_type_unit_group (cu, attr);
8175
8176   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8177
8178   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8179   pst = create_partial_symtab (per_cu, "");
8180   pst->anonymous = 1;
8181
8182   first_die = load_partial_dies (reader, info_ptr, 1);
8183
8184   lowpc = (CORE_ADDR) -1;
8185   highpc = (CORE_ADDR) 0;
8186   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8187
8188   end_psymtab_common (objfile, pst);
8189 }
8190
8191 /* Struct used to sort TUs by their abbreviation table offset.  */
8192
8193 struct tu_abbrev_offset
8194 {
8195   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8196   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8197   {}
8198
8199   signatured_type *sig_type;
8200   sect_offset abbrev_offset;
8201 };
8202
8203 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8204
8205 static bool
8206 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8207                           const struct tu_abbrev_offset &b)
8208 {
8209   return a.abbrev_offset < b.abbrev_offset;
8210 }
8211
8212 /* Efficiently read all the type units.
8213    This does the bulk of the work for build_type_psymtabs.
8214
8215    The efficiency is because we sort TUs by the abbrev table they use and
8216    only read each abbrev table once.  In one program there are 200K TUs
8217    sharing 8K abbrev tables.
8218
8219    The main purpose of this function is to support building the
8220    dwarf2_per_objfile->type_unit_groups table.
8221    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8222    can collapse the search space by grouping them by stmt_list.
8223    The savings can be significant, in the same program from above the 200K TUs
8224    share 8K stmt_list tables.
8225
8226    FUNC is expected to call get_type_unit_group, which will create the
8227    struct type_unit_group if necessary and add it to
8228    dwarf2_per_objfile->type_unit_groups.  */
8229
8230 static void
8231 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8232 {
8233   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8234   abbrev_table_up abbrev_table;
8235   sect_offset abbrev_offset;
8236
8237   /* It's up to the caller to not call us multiple times.  */
8238   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8239
8240   if (dwarf2_per_objfile->all_type_units.empty ())
8241     return;
8242
8243   /* TUs typically share abbrev tables, and there can be way more TUs than
8244      abbrev tables.  Sort by abbrev table to reduce the number of times we
8245      read each abbrev table in.
8246      Alternatives are to punt or to maintain a cache of abbrev tables.
8247      This is simpler and efficient enough for now.
8248
8249      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8250      symtab to use).  Typically TUs with the same abbrev offset have the same
8251      stmt_list value too so in practice this should work well.
8252
8253      The basic algorithm here is:
8254
8255       sort TUs by abbrev table
8256       for each TU with same abbrev table:
8257         read abbrev table if first user
8258         read TU top level DIE
8259           [IWBN if DWO skeletons had DW_AT_stmt_list]
8260         call FUNC  */
8261
8262   if (dwarf_read_debug)
8263     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8264
8265   /* Sort in a separate table to maintain the order of all_type_units
8266      for .gdb_index: TU indices directly index all_type_units.  */
8267   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8268   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8269
8270   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8271     sorted_by_abbrev.emplace_back
8272       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8273                                      sig_type->per_cu.section,
8274                                      sig_type->per_cu.sect_off));
8275
8276   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8277              sort_tu_by_abbrev_offset);
8278
8279   abbrev_offset = (sect_offset) ~(unsigned) 0;
8280
8281   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8282     {
8283       /* Switch to the next abbrev table if necessary.  */
8284       if (abbrev_table == NULL
8285           || tu.abbrev_offset != abbrev_offset)
8286         {
8287           abbrev_offset = tu.abbrev_offset;
8288           abbrev_table =
8289             abbrev_table_read_table (dwarf2_per_objfile,
8290                                      &dwarf2_per_objfile->abbrev,
8291                                      abbrev_offset);
8292           ++tu_stats->nr_uniq_abbrev_tables;
8293         }
8294
8295       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8296                                0, 0, false, build_type_psymtabs_reader, NULL);
8297     }
8298 }
8299
8300 /* Print collected type unit statistics.  */
8301
8302 static void
8303 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8304 {
8305   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8306
8307   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8308   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8309                       dwarf2_per_objfile->all_type_units.size ());
8310   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8311                       tu_stats->nr_uniq_abbrev_tables);
8312   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8313                       tu_stats->nr_symtabs);
8314   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8315                       tu_stats->nr_symtab_sharers);
8316   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8317                       tu_stats->nr_stmt_less_type_units);
8318   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8319                       tu_stats->nr_all_type_units_reallocs);
8320 }
8321
8322 /* Traversal function for build_type_psymtabs.  */
8323
8324 static int
8325 build_type_psymtab_dependencies (void **slot, void *info)
8326 {
8327   struct dwarf2_per_objfile *dwarf2_per_objfile
8328     = (struct dwarf2_per_objfile *) info;
8329   struct objfile *objfile = dwarf2_per_objfile->objfile;
8330   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8331   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8332   struct partial_symtab *pst = per_cu->v.psymtab;
8333   int len = VEC_length (sig_type_ptr, tu_group->tus);
8334   struct signatured_type *iter;
8335   int i;
8336
8337   gdb_assert (len > 0);
8338   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8339
8340   pst->number_of_dependencies = len;
8341   pst->dependencies = objfile->partial_symtabs->allocate_dependencies (len);
8342   for (i = 0;
8343        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8344        ++i)
8345     {
8346       gdb_assert (iter->per_cu.is_debug_types);
8347       pst->dependencies[i] = iter->per_cu.v.psymtab;
8348       iter->type_unit_group = tu_group;
8349     }
8350
8351   VEC_free (sig_type_ptr, tu_group->tus);
8352
8353   return 1;
8354 }
8355
8356 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8357    Build partial symbol tables for the .debug_types comp-units.  */
8358
8359 static void
8360 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8361 {
8362   if (! create_all_type_units (dwarf2_per_objfile))
8363     return;
8364
8365   build_type_psymtabs_1 (dwarf2_per_objfile);
8366 }
8367
8368 /* Traversal function for process_skeletonless_type_unit.
8369    Read a TU in a DWO file and build partial symbols for it.  */
8370
8371 static int
8372 process_skeletonless_type_unit (void **slot, void *info)
8373 {
8374   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8375   struct dwarf2_per_objfile *dwarf2_per_objfile
8376     = (struct dwarf2_per_objfile *) info;
8377   struct signatured_type find_entry, *entry;
8378
8379   /* If this TU doesn't exist in the global table, add it and read it in.  */
8380
8381   if (dwarf2_per_objfile->signatured_types == NULL)
8382     {
8383       dwarf2_per_objfile->signatured_types
8384         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8385     }
8386
8387   find_entry.signature = dwo_unit->signature;
8388   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8389                          INSERT);
8390   /* If we've already seen this type there's nothing to do.  What's happening
8391      is we're doing our own version of comdat-folding here.  */
8392   if (*slot != NULL)
8393     return 1;
8394
8395   /* This does the job that create_all_type_units would have done for
8396      this TU.  */
8397   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8398   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8399   *slot = entry;
8400
8401   /* This does the job that build_type_psymtabs_1 would have done.  */
8402   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8403                            build_type_psymtabs_reader, NULL);
8404
8405   return 1;
8406 }
8407
8408 /* Traversal function for process_skeletonless_type_units.  */
8409
8410 static int
8411 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8412 {
8413   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8414
8415   if (dwo_file->tus != NULL)
8416     {
8417       htab_traverse_noresize (dwo_file->tus,
8418                               process_skeletonless_type_unit, info);
8419     }
8420
8421   return 1;
8422 }
8423
8424 /* Scan all TUs of DWO files, verifying we've processed them.
8425    This is needed in case a TU was emitted without its skeleton.
8426    Note: This can't be done until we know what all the DWO files are.  */
8427
8428 static void
8429 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8430 {
8431   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8432   if (get_dwp_file (dwarf2_per_objfile) == NULL
8433       && dwarf2_per_objfile->dwo_files != NULL)
8434     {
8435       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8436                               process_dwo_file_for_skeletonless_type_units,
8437                               dwarf2_per_objfile);
8438     }
8439 }
8440
8441 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8442
8443 static void
8444 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8445 {
8446   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8447     {
8448       struct partial_symtab *pst = per_cu->v.psymtab;
8449
8450       if (pst == NULL)
8451         continue;
8452
8453       for (int j = 0; j < pst->number_of_dependencies; ++j)
8454         {
8455           /* Set the 'user' field only if it is not already set.  */
8456           if (pst->dependencies[j]->user == NULL)
8457             pst->dependencies[j]->user = pst;
8458         }
8459     }
8460 }
8461
8462 /* Build the partial symbol table by doing a quick pass through the
8463    .debug_info and .debug_abbrev sections.  */
8464
8465 static void
8466 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8467 {
8468   struct objfile *objfile = dwarf2_per_objfile->objfile;
8469
8470   if (dwarf_read_debug)
8471     {
8472       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8473                           objfile_name (objfile));
8474     }
8475
8476   dwarf2_per_objfile->reading_partial_symbols = 1;
8477
8478   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8479
8480   /* Any cached compilation units will be linked by the per-objfile
8481      read_in_chain.  Make sure to free them when we're done.  */
8482   free_cached_comp_units freer (dwarf2_per_objfile);
8483
8484   build_type_psymtabs (dwarf2_per_objfile);
8485
8486   create_all_comp_units (dwarf2_per_objfile);
8487
8488   /* Create a temporary address map on a temporary obstack.  We later
8489      copy this to the final obstack.  */
8490   auto_obstack temp_obstack;
8491
8492   scoped_restore save_psymtabs_addrmap
8493     = make_scoped_restore (&objfile->partial_symtabs->psymtabs_addrmap,
8494                            addrmap_create_mutable (&temp_obstack));
8495
8496   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8497     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8498
8499   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8500   process_skeletonless_type_units (dwarf2_per_objfile);
8501
8502   /* Now that all TUs have been processed we can fill in the dependencies.  */
8503   if (dwarf2_per_objfile->type_unit_groups != NULL)
8504     {
8505       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8506                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8507     }
8508
8509   if (dwarf_read_debug)
8510     print_tu_stats (dwarf2_per_objfile);
8511
8512   set_partial_user (dwarf2_per_objfile);
8513
8514   objfile->partial_symtabs->psymtabs_addrmap
8515     = addrmap_create_fixed (objfile->partial_symtabs->psymtabs_addrmap,
8516                             objfile->partial_symtabs->obstack ());
8517   /* At this point we want to keep the address map.  */
8518   save_psymtabs_addrmap.release ();
8519
8520   if (dwarf_read_debug)
8521     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8522                         objfile_name (objfile));
8523 }
8524
8525 /* die_reader_func for load_partial_comp_unit.  */
8526
8527 static void
8528 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8529                                const gdb_byte *info_ptr,
8530                                struct die_info *comp_unit_die,
8531                                int has_children,
8532                                void *data)
8533 {
8534   struct dwarf2_cu *cu = reader->cu;
8535
8536   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8537
8538   /* Check if comp unit has_children.
8539      If so, read the rest of the partial symbols from this comp unit.
8540      If not, there's no more debug_info for this comp unit.  */
8541   if (has_children)
8542     load_partial_dies (reader, info_ptr, 0);
8543 }
8544
8545 /* Load the partial DIEs for a secondary CU into memory.
8546    This is also used when rereading a primary CU with load_all_dies.  */
8547
8548 static void
8549 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8550 {
8551   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8552                            load_partial_comp_unit_reader, NULL);
8553 }
8554
8555 static void
8556 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8557                               struct dwarf2_section_info *section,
8558                               struct dwarf2_section_info *abbrev_section,
8559                               unsigned int is_dwz)
8560 {
8561   const gdb_byte *info_ptr;
8562   struct objfile *objfile = dwarf2_per_objfile->objfile;
8563
8564   if (dwarf_read_debug)
8565     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8566                         get_section_name (section),
8567                         get_section_file_name (section));
8568
8569   dwarf2_read_section (objfile, section);
8570
8571   info_ptr = section->buffer;
8572
8573   while (info_ptr < section->buffer + section->size)
8574     {
8575       struct dwarf2_per_cu_data *this_cu;
8576
8577       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8578
8579       comp_unit_head cu_header;
8580       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8581                                      abbrev_section, info_ptr,
8582                                      rcuh_kind::COMPILE);
8583
8584       /* Save the compilation unit for later lookup.  */
8585       if (cu_header.unit_type != DW_UT_type)
8586         {
8587           this_cu = XOBNEW (&objfile->objfile_obstack,
8588                             struct dwarf2_per_cu_data);
8589           memset (this_cu, 0, sizeof (*this_cu));
8590         }
8591       else
8592         {
8593           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8594                                   struct signatured_type);
8595           memset (sig_type, 0, sizeof (*sig_type));
8596           sig_type->signature = cu_header.signature;
8597           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8598           this_cu = &sig_type->per_cu;
8599         }
8600       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8601       this_cu->sect_off = sect_off;
8602       this_cu->length = cu_header.length + cu_header.initial_length_size;
8603       this_cu->is_dwz = is_dwz;
8604       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8605       this_cu->section = section;
8606
8607       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8608
8609       info_ptr = info_ptr + this_cu->length;
8610     }
8611 }
8612
8613 /* Create a list of all compilation units in OBJFILE.
8614    This is only done for -readnow and building partial symtabs.  */
8615
8616 static void
8617 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8618 {
8619   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8620   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8621                                 &dwarf2_per_objfile->abbrev, 0);
8622
8623   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8624   if (dwz != NULL)
8625     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8626                                   1);
8627 }
8628
8629 /* Process all loaded DIEs for compilation unit CU, starting at
8630    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8631    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8632    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8633    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8634
8635 static void
8636 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8637                       CORE_ADDR *highpc, int set_addrmap,
8638                       struct dwarf2_cu *cu)
8639 {
8640   struct partial_die_info *pdi;
8641
8642   /* Now, march along the PDI's, descending into ones which have
8643      interesting children but skipping the children of the other ones,
8644      until we reach the end of the compilation unit.  */
8645
8646   pdi = first_die;
8647
8648   while (pdi != NULL)
8649     {
8650       pdi->fixup (cu);
8651
8652       /* Anonymous namespaces or modules have no name but have interesting
8653          children, so we need to look at them.  Ditto for anonymous
8654          enums.  */
8655
8656       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8657           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8658           || pdi->tag == DW_TAG_imported_unit
8659           || pdi->tag == DW_TAG_inlined_subroutine)
8660         {
8661           switch (pdi->tag)
8662             {
8663             case DW_TAG_subprogram:
8664             case DW_TAG_inlined_subroutine:
8665               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8666               break;
8667             case DW_TAG_constant:
8668             case DW_TAG_variable:
8669             case DW_TAG_typedef:
8670             case DW_TAG_union_type:
8671               if (!pdi->is_declaration)
8672                 {
8673                   add_partial_symbol (pdi, cu);
8674                 }
8675               break;
8676             case DW_TAG_class_type:
8677             case DW_TAG_interface_type:
8678             case DW_TAG_structure_type:
8679               if (!pdi->is_declaration)
8680                 {
8681                   add_partial_symbol (pdi, cu);
8682                 }
8683               if ((cu->language == language_rust
8684                    || cu->language == language_cplus) && pdi->has_children)
8685                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8686                                       set_addrmap, cu);
8687               break;
8688             case DW_TAG_enumeration_type:
8689               if (!pdi->is_declaration)
8690                 add_partial_enumeration (pdi, cu);
8691               break;
8692             case DW_TAG_base_type:
8693             case DW_TAG_subrange_type:
8694               /* File scope base type definitions are added to the partial
8695                  symbol table.  */
8696               add_partial_symbol (pdi, cu);
8697               break;
8698             case DW_TAG_namespace:
8699               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8700               break;
8701             case DW_TAG_module:
8702               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8703               break;
8704             case DW_TAG_imported_unit:
8705               {
8706                 struct dwarf2_per_cu_data *per_cu;
8707
8708                 /* For now we don't handle imported units in type units.  */
8709                 if (cu->per_cu->is_debug_types)
8710                   {
8711                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8712                              " supported in type units [in module %s]"),
8713                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8714                   }
8715
8716                 per_cu = dwarf2_find_containing_comp_unit
8717                            (pdi->d.sect_off, pdi->is_dwz,
8718                             cu->per_cu->dwarf2_per_objfile);
8719
8720                 /* Go read the partial unit, if needed.  */
8721                 if (per_cu->v.psymtab == NULL)
8722                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8723
8724                 VEC_safe_push (dwarf2_per_cu_ptr,
8725                                cu->per_cu->imported_symtabs, per_cu);
8726               }
8727               break;
8728             case DW_TAG_imported_declaration:
8729               add_partial_symbol (pdi, cu);
8730               break;
8731             default:
8732               break;
8733             }
8734         }
8735
8736       /* If the die has a sibling, skip to the sibling.  */
8737
8738       pdi = pdi->die_sibling;
8739     }
8740 }
8741
8742 /* Functions used to compute the fully scoped name of a partial DIE.
8743
8744    Normally, this is simple.  For C++, the parent DIE's fully scoped
8745    name is concatenated with "::" and the partial DIE's name.
8746    Enumerators are an exception; they use the scope of their parent
8747    enumeration type, i.e. the name of the enumeration type is not
8748    prepended to the enumerator.
8749
8750    There are two complexities.  One is DW_AT_specification; in this
8751    case "parent" means the parent of the target of the specification,
8752    instead of the direct parent of the DIE.  The other is compilers
8753    which do not emit DW_TAG_namespace; in this case we try to guess
8754    the fully qualified name of structure types from their members'
8755    linkage names.  This must be done using the DIE's children rather
8756    than the children of any DW_AT_specification target.  We only need
8757    to do this for structures at the top level, i.e. if the target of
8758    any DW_AT_specification (if any; otherwise the DIE itself) does not
8759    have a parent.  */
8760
8761 /* Compute the scope prefix associated with PDI's parent, in
8762    compilation unit CU.  The result will be allocated on CU's
8763    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8764    field.  NULL is returned if no prefix is necessary.  */
8765 static const char *
8766 partial_die_parent_scope (struct partial_die_info *pdi,
8767                           struct dwarf2_cu *cu)
8768 {
8769   const char *grandparent_scope;
8770   struct partial_die_info *parent, *real_pdi;
8771
8772   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8773      then this means the parent of the specification DIE.  */
8774
8775   real_pdi = pdi;
8776   while (real_pdi->has_specification)
8777     real_pdi = find_partial_die (real_pdi->spec_offset,
8778                                  real_pdi->spec_is_dwz, cu);
8779
8780   parent = real_pdi->die_parent;
8781   if (parent == NULL)
8782     return NULL;
8783
8784   if (parent->scope_set)
8785     return parent->scope;
8786
8787   parent->fixup (cu);
8788
8789   grandparent_scope = partial_die_parent_scope (parent, cu);
8790
8791   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8792      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8793      Work around this problem here.  */
8794   if (cu->language == language_cplus
8795       && parent->tag == DW_TAG_namespace
8796       && strcmp (parent->name, "::") == 0
8797       && grandparent_scope == NULL)
8798     {
8799       parent->scope = NULL;
8800       parent->scope_set = 1;
8801       return NULL;
8802     }
8803
8804   if (pdi->tag == DW_TAG_enumerator)
8805     /* Enumerators should not get the name of the enumeration as a prefix.  */
8806     parent->scope = grandparent_scope;
8807   else if (parent->tag == DW_TAG_namespace
8808       || parent->tag == DW_TAG_module
8809       || parent->tag == DW_TAG_structure_type
8810       || parent->tag == DW_TAG_class_type
8811       || parent->tag == DW_TAG_interface_type
8812       || parent->tag == DW_TAG_union_type
8813       || parent->tag == DW_TAG_enumeration_type)
8814     {
8815       if (grandparent_scope == NULL)
8816         parent->scope = parent->name;
8817       else
8818         parent->scope = typename_concat (&cu->comp_unit_obstack,
8819                                          grandparent_scope,
8820                                          parent->name, 0, cu);
8821     }
8822   else
8823     {
8824       /* FIXME drow/2004-04-01: What should we be doing with
8825          function-local names?  For partial symbols, we should probably be
8826          ignoring them.  */
8827       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8828                  parent->tag, sect_offset_str (pdi->sect_off));
8829       parent->scope = grandparent_scope;
8830     }
8831
8832   parent->scope_set = 1;
8833   return parent->scope;
8834 }
8835
8836 /* Return the fully scoped name associated with PDI, from compilation unit
8837    CU.  The result will be allocated with malloc.  */
8838
8839 static char *
8840 partial_die_full_name (struct partial_die_info *pdi,
8841                        struct dwarf2_cu *cu)
8842 {
8843   const char *parent_scope;
8844
8845   /* If this is a template instantiation, we can not work out the
8846      template arguments from partial DIEs.  So, unfortunately, we have
8847      to go through the full DIEs.  At least any work we do building
8848      types here will be reused if full symbols are loaded later.  */
8849   if (pdi->has_template_arguments)
8850     {
8851       pdi->fixup (cu);
8852
8853       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8854         {
8855           struct die_info *die;
8856           struct attribute attr;
8857           struct dwarf2_cu *ref_cu = cu;
8858
8859           /* DW_FORM_ref_addr is using section offset.  */
8860           attr.name = (enum dwarf_attribute) 0;
8861           attr.form = DW_FORM_ref_addr;
8862           attr.u.unsnd = to_underlying (pdi->sect_off);
8863           die = follow_die_ref (NULL, &attr, &ref_cu);
8864
8865           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8866         }
8867     }
8868
8869   parent_scope = partial_die_parent_scope (pdi, cu);
8870   if (parent_scope == NULL)
8871     return NULL;
8872   else
8873     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8874 }
8875
8876 static void
8877 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8878 {
8879   struct dwarf2_per_objfile *dwarf2_per_objfile
8880     = cu->per_cu->dwarf2_per_objfile;
8881   struct objfile *objfile = dwarf2_per_objfile->objfile;
8882   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8883   CORE_ADDR addr = 0;
8884   const char *actual_name = NULL;
8885   CORE_ADDR baseaddr;
8886   char *built_actual_name;
8887
8888   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8889
8890   built_actual_name = partial_die_full_name (pdi, cu);
8891   if (built_actual_name != NULL)
8892     actual_name = built_actual_name;
8893
8894   if (actual_name == NULL)
8895     actual_name = pdi->name;
8896
8897   switch (pdi->tag)
8898     {
8899     case DW_TAG_inlined_subroutine:
8900     case DW_TAG_subprogram:
8901       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8902               - baseaddr);
8903       if (pdi->is_external || cu->language == language_ada)
8904         {
8905           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8906              of the global scope.  But in Ada, we want to be able to access
8907              nested procedures globally.  So all Ada subprograms are stored
8908              in the global scope.  */
8909           add_psymbol_to_list (actual_name, strlen (actual_name),
8910                                built_actual_name != NULL,
8911                                VAR_DOMAIN, LOC_BLOCK,
8912                                SECT_OFF_TEXT (objfile),
8913                                psymbol_placement::GLOBAL,
8914                                addr,
8915                                cu->language, objfile);
8916         }
8917       else
8918         {
8919           add_psymbol_to_list (actual_name, strlen (actual_name),
8920                                built_actual_name != NULL,
8921                                VAR_DOMAIN, LOC_BLOCK,
8922                                SECT_OFF_TEXT (objfile),
8923                                psymbol_placement::STATIC,
8924                                addr, cu->language, objfile);
8925         }
8926
8927       if (pdi->main_subprogram && actual_name != NULL)
8928         set_objfile_main_name (objfile, actual_name, cu->language);
8929       break;
8930     case DW_TAG_constant:
8931       add_psymbol_to_list (actual_name, strlen (actual_name),
8932                            built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8933                            -1, (pdi->is_external
8934                                 ? psymbol_placement::GLOBAL
8935                                 : psymbol_placement::STATIC),
8936                            0, cu->language, objfile);
8937       break;
8938     case DW_TAG_variable:
8939       if (pdi->d.locdesc)
8940         addr = decode_locdesc (pdi->d.locdesc, cu);
8941
8942       if (pdi->d.locdesc
8943           && addr == 0
8944           && !dwarf2_per_objfile->has_section_at_zero)
8945         {
8946           /* A global or static variable may also have been stripped
8947              out by the linker if unused, in which case its address
8948              will be nullified; do not add such variables into partial
8949              symbol table then.  */
8950         }
8951       else if (pdi->is_external)
8952         {
8953           /* Global Variable.
8954              Don't enter into the minimal symbol tables as there is
8955              a minimal symbol table entry from the ELF symbols already.
8956              Enter into partial symbol table if it has a location
8957              descriptor or a type.
8958              If the location descriptor is missing, new_symbol will create
8959              a LOC_UNRESOLVED symbol, the address of the variable will then
8960              be determined from the minimal symbol table whenever the variable
8961              is referenced.
8962              The address for the partial symbol table entry is not
8963              used by GDB, but it comes in handy for debugging partial symbol
8964              table building.  */
8965
8966           if (pdi->d.locdesc || pdi->has_type)
8967             add_psymbol_to_list (actual_name, strlen (actual_name),
8968                                  built_actual_name != NULL,
8969                                  VAR_DOMAIN, LOC_STATIC,
8970                                  SECT_OFF_TEXT (objfile),
8971                                  psymbol_placement::GLOBAL,
8972                                  addr, cu->language, objfile);
8973         }
8974       else
8975         {
8976           int has_loc = pdi->d.locdesc != NULL;
8977
8978           /* Static Variable.  Skip symbols whose value we cannot know (those
8979              without location descriptors or constant values).  */
8980           if (!has_loc && !pdi->has_const_value)
8981             {
8982               xfree (built_actual_name);
8983               return;
8984             }
8985
8986           add_psymbol_to_list (actual_name, strlen (actual_name),
8987                                built_actual_name != NULL,
8988                                VAR_DOMAIN, LOC_STATIC,
8989                                SECT_OFF_TEXT (objfile),
8990                                psymbol_placement::STATIC,
8991                                has_loc ? addr : 0,
8992                                cu->language, objfile);
8993         }
8994       break;
8995     case DW_TAG_typedef:
8996     case DW_TAG_base_type:
8997     case DW_TAG_subrange_type:
8998       add_psymbol_to_list (actual_name, strlen (actual_name),
8999                            built_actual_name != NULL,
9000                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9001                            psymbol_placement::STATIC,
9002                            0, cu->language, objfile);
9003       break;
9004     case DW_TAG_imported_declaration:
9005     case DW_TAG_namespace:
9006       add_psymbol_to_list (actual_name, strlen (actual_name),
9007                            built_actual_name != NULL,
9008                            VAR_DOMAIN, LOC_TYPEDEF, -1,
9009                            psymbol_placement::GLOBAL,
9010                            0, cu->language, objfile);
9011       break;
9012     case DW_TAG_module:
9013       add_psymbol_to_list (actual_name, strlen (actual_name),
9014                            built_actual_name != NULL,
9015                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9016                            psymbol_placement::GLOBAL,
9017                            0, cu->language, objfile);
9018       break;
9019     case DW_TAG_class_type:
9020     case DW_TAG_interface_type:
9021     case DW_TAG_structure_type:
9022     case DW_TAG_union_type:
9023     case DW_TAG_enumeration_type:
9024       /* Skip external references.  The DWARF standard says in the section
9025          about "Structure, Union, and Class Type Entries": "An incomplete
9026          structure, union or class type is represented by a structure,
9027          union or class entry that does not have a byte size attribute
9028          and that has a DW_AT_declaration attribute."  */
9029       if (!pdi->has_byte_size && pdi->is_declaration)
9030         {
9031           xfree (built_actual_name);
9032           return;
9033         }
9034
9035       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9036          static vs. global.  */
9037       add_psymbol_to_list (actual_name, strlen (actual_name),
9038                            built_actual_name != NULL,
9039                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9040                            cu->language == language_cplus
9041                            ? psymbol_placement::GLOBAL
9042                            : psymbol_placement::STATIC,
9043                            0, cu->language, objfile);
9044
9045       break;
9046     case DW_TAG_enumerator:
9047       add_psymbol_to_list (actual_name, strlen (actual_name),
9048                            built_actual_name != NULL,
9049                            VAR_DOMAIN, LOC_CONST, -1,
9050                            cu->language == language_cplus
9051                            ? psymbol_placement::GLOBAL
9052                            : psymbol_placement::STATIC,
9053                            0, cu->language, objfile);
9054       break;
9055     default:
9056       break;
9057     }
9058
9059   xfree (built_actual_name);
9060 }
9061
9062 /* Read a partial die corresponding to a namespace; also, add a symbol
9063    corresponding to that namespace to the symbol table.  NAMESPACE is
9064    the name of the enclosing namespace.  */
9065
9066 static void
9067 add_partial_namespace (struct partial_die_info *pdi,
9068                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9069                        int set_addrmap, struct dwarf2_cu *cu)
9070 {
9071   /* Add a symbol for the namespace.  */
9072
9073   add_partial_symbol (pdi, cu);
9074
9075   /* Now scan partial symbols in that namespace.  */
9076
9077   if (pdi->has_children)
9078     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9079 }
9080
9081 /* Read a partial die corresponding to a Fortran module.  */
9082
9083 static void
9084 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9085                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9086 {
9087   /* Add a symbol for the namespace.  */
9088
9089   add_partial_symbol (pdi, cu);
9090
9091   /* Now scan partial symbols in that module.  */
9092
9093   if (pdi->has_children)
9094     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9095 }
9096
9097 /* Read a partial die corresponding to a subprogram or an inlined
9098    subprogram and create a partial symbol for that subprogram.
9099    When the CU language allows it, this routine also defines a partial
9100    symbol for each nested subprogram that this subprogram contains.
9101    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9102    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9103
9104    PDI may also be a lexical block, in which case we simply search
9105    recursively for subprograms defined inside that lexical block.
9106    Again, this is only performed when the CU language allows this
9107    type of definitions.  */
9108
9109 static void
9110 add_partial_subprogram (struct partial_die_info *pdi,
9111                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9112                         int set_addrmap, struct dwarf2_cu *cu)
9113 {
9114   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9115     {
9116       if (pdi->has_pc_info)
9117         {
9118           if (pdi->lowpc < *lowpc)
9119             *lowpc = pdi->lowpc;
9120           if (pdi->highpc > *highpc)
9121             *highpc = pdi->highpc;
9122           if (set_addrmap)
9123             {
9124               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9125               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9126               CORE_ADDR baseaddr;
9127               CORE_ADDR this_highpc;
9128               CORE_ADDR this_lowpc;
9129
9130               baseaddr = ANOFFSET (objfile->section_offsets,
9131                                    SECT_OFF_TEXT (objfile));
9132               this_lowpc
9133                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9134                                                pdi->lowpc + baseaddr)
9135                    - baseaddr);
9136               this_highpc
9137                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9138                                                pdi->highpc + baseaddr)
9139                    - baseaddr);
9140               addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
9141                                  this_lowpc, this_highpc - 1,
9142                                  cu->per_cu->v.psymtab);
9143             }
9144         }
9145
9146       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9147         {
9148           if (!pdi->is_declaration)
9149             /* Ignore subprogram DIEs that do not have a name, they are
9150                illegal.  Do not emit a complaint at this point, we will
9151                do so when we convert this psymtab into a symtab.  */
9152             if (pdi->name)
9153               add_partial_symbol (pdi, cu);
9154         }
9155     }
9156
9157   if (! pdi->has_children)
9158     return;
9159
9160   if (cu->language == language_ada)
9161     {
9162       pdi = pdi->die_child;
9163       while (pdi != NULL)
9164         {
9165           pdi->fixup (cu);
9166           if (pdi->tag == DW_TAG_subprogram
9167               || pdi->tag == DW_TAG_inlined_subroutine
9168               || pdi->tag == DW_TAG_lexical_block)
9169             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9170           pdi = pdi->die_sibling;
9171         }
9172     }
9173 }
9174
9175 /* Read a partial die corresponding to an enumeration type.  */
9176
9177 static void
9178 add_partial_enumeration (struct partial_die_info *enum_pdi,
9179                          struct dwarf2_cu *cu)
9180 {
9181   struct partial_die_info *pdi;
9182
9183   if (enum_pdi->name != NULL)
9184     add_partial_symbol (enum_pdi, cu);
9185
9186   pdi = enum_pdi->die_child;
9187   while (pdi)
9188     {
9189       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9190         complaint (_("malformed enumerator DIE ignored"));
9191       else
9192         add_partial_symbol (pdi, cu);
9193       pdi = pdi->die_sibling;
9194     }
9195 }
9196
9197 /* Return the initial uleb128 in the die at INFO_PTR.  */
9198
9199 static unsigned int
9200 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9201 {
9202   unsigned int bytes_read;
9203
9204   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9205 }
9206
9207 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9208    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9209
9210    Return the corresponding abbrev, or NULL if the number is zero (indicating
9211    an empty DIE).  In either case *BYTES_READ will be set to the length of
9212    the initial number.  */
9213
9214 static struct abbrev_info *
9215 peek_die_abbrev (const die_reader_specs &reader,
9216                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9217 {
9218   dwarf2_cu *cu = reader.cu;
9219   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9220   unsigned int abbrev_number
9221     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9222
9223   if (abbrev_number == 0)
9224     return NULL;
9225
9226   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9227   if (!abbrev)
9228     {
9229       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9230                " at offset %s [in module %s]"),
9231              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9232              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9233     }
9234
9235   return abbrev;
9236 }
9237
9238 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9239    Returns a pointer to the end of a series of DIEs, terminated by an empty
9240    DIE.  Any children of the skipped DIEs will also be skipped.  */
9241
9242 static const gdb_byte *
9243 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9244 {
9245   while (1)
9246     {
9247       unsigned int bytes_read;
9248       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9249
9250       if (abbrev == NULL)
9251         return info_ptr + bytes_read;
9252       else
9253         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9254     }
9255 }
9256
9257 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9258    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9259    abbrev corresponding to that skipped uleb128 should be passed in
9260    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9261    children.  */
9262
9263 static const gdb_byte *
9264 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9265               struct abbrev_info *abbrev)
9266 {
9267   unsigned int bytes_read;
9268   struct attribute attr;
9269   bfd *abfd = reader->abfd;
9270   struct dwarf2_cu *cu = reader->cu;
9271   const gdb_byte *buffer = reader->buffer;
9272   const gdb_byte *buffer_end = reader->buffer_end;
9273   unsigned int form, i;
9274
9275   for (i = 0; i < abbrev->num_attrs; i++)
9276     {
9277       /* The only abbrev we care about is DW_AT_sibling.  */
9278       if (abbrev->attrs[i].name == DW_AT_sibling)
9279         {
9280           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9281           if (attr.form == DW_FORM_ref_addr)
9282             complaint (_("ignoring absolute DW_AT_sibling"));
9283           else
9284             {
9285               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9286               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9287
9288               if (sibling_ptr < info_ptr)
9289                 complaint (_("DW_AT_sibling points backwards"));
9290               else if (sibling_ptr > reader->buffer_end)
9291                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9292               else
9293                 return sibling_ptr;
9294             }
9295         }
9296
9297       /* If it isn't DW_AT_sibling, skip this attribute.  */
9298       form = abbrev->attrs[i].form;
9299     skip_attribute:
9300       switch (form)
9301         {
9302         case DW_FORM_ref_addr:
9303           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9304              and later it is offset sized.  */
9305           if (cu->header.version == 2)
9306             info_ptr += cu->header.addr_size;
9307           else
9308             info_ptr += cu->header.offset_size;
9309           break;
9310         case DW_FORM_GNU_ref_alt:
9311           info_ptr += cu->header.offset_size;
9312           break;
9313         case DW_FORM_addr:
9314           info_ptr += cu->header.addr_size;
9315           break;
9316         case DW_FORM_data1:
9317         case DW_FORM_ref1:
9318         case DW_FORM_flag:
9319           info_ptr += 1;
9320           break;
9321         case DW_FORM_flag_present:
9322         case DW_FORM_implicit_const:
9323           break;
9324         case DW_FORM_data2:
9325         case DW_FORM_ref2:
9326           info_ptr += 2;
9327           break;
9328         case DW_FORM_data4:
9329         case DW_FORM_ref4:
9330           info_ptr += 4;
9331           break;
9332         case DW_FORM_data8:
9333         case DW_FORM_ref8:
9334         case DW_FORM_ref_sig8:
9335           info_ptr += 8;
9336           break;
9337         case DW_FORM_data16:
9338           info_ptr += 16;
9339           break;
9340         case DW_FORM_string:
9341           read_direct_string (abfd, info_ptr, &bytes_read);
9342           info_ptr += bytes_read;
9343           break;
9344         case DW_FORM_sec_offset:
9345         case DW_FORM_strp:
9346         case DW_FORM_GNU_strp_alt:
9347           info_ptr += cu->header.offset_size;
9348           break;
9349         case DW_FORM_exprloc:
9350         case DW_FORM_block:
9351           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9352           info_ptr += bytes_read;
9353           break;
9354         case DW_FORM_block1:
9355           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9356           break;
9357         case DW_FORM_block2:
9358           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9359           break;
9360         case DW_FORM_block4:
9361           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9362           break;
9363         case DW_FORM_addrx:
9364         case DW_FORM_sdata:
9365         case DW_FORM_udata:
9366         case DW_FORM_ref_udata:
9367         case DW_FORM_GNU_addr_index:
9368         case DW_FORM_GNU_str_index:
9369           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9370           break;
9371         case DW_FORM_indirect:
9372           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9373           info_ptr += bytes_read;
9374           /* We need to continue parsing from here, so just go back to
9375              the top.  */
9376           goto skip_attribute;
9377
9378         default:
9379           error (_("Dwarf Error: Cannot handle %s "
9380                    "in DWARF reader [in module %s]"),
9381                  dwarf_form_name (form),
9382                  bfd_get_filename (abfd));
9383         }
9384     }
9385
9386   if (abbrev->has_children)
9387     return skip_children (reader, info_ptr);
9388   else
9389     return info_ptr;
9390 }
9391
9392 /* Locate ORIG_PDI's sibling.
9393    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9394
9395 static const gdb_byte *
9396 locate_pdi_sibling (const struct die_reader_specs *reader,
9397                     struct partial_die_info *orig_pdi,
9398                     const gdb_byte *info_ptr)
9399 {
9400   /* Do we know the sibling already?  */
9401
9402   if (orig_pdi->sibling)
9403     return orig_pdi->sibling;
9404
9405   /* Are there any children to deal with?  */
9406
9407   if (!orig_pdi->has_children)
9408     return info_ptr;
9409
9410   /* Skip the children the long way.  */
9411
9412   return skip_children (reader, info_ptr);
9413 }
9414
9415 /* Expand this partial symbol table into a full symbol table.  SELF is
9416    not NULL.  */
9417
9418 static void
9419 dwarf2_read_symtab (struct partial_symtab *self,
9420                     struct objfile *objfile)
9421 {
9422   struct dwarf2_per_objfile *dwarf2_per_objfile
9423     = get_dwarf2_per_objfile (objfile);
9424
9425   if (self->readin)
9426     {
9427       warning (_("bug: psymtab for %s is already read in."),
9428                self->filename);
9429     }
9430   else
9431     {
9432       if (info_verbose)
9433         {
9434           printf_filtered (_("Reading in symbols for %s..."),
9435                            self->filename);
9436           gdb_flush (gdb_stdout);
9437         }
9438
9439       /* If this psymtab is constructed from a debug-only objfile, the
9440          has_section_at_zero flag will not necessarily be correct.  We
9441          can get the correct value for this flag by looking at the data
9442          associated with the (presumably stripped) associated objfile.  */
9443       if (objfile->separate_debug_objfile_backlink)
9444         {
9445           struct dwarf2_per_objfile *dpo_backlink
9446             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9447
9448           dwarf2_per_objfile->has_section_at_zero
9449             = dpo_backlink->has_section_at_zero;
9450         }
9451
9452       dwarf2_per_objfile->reading_partial_symbols = 0;
9453
9454       psymtab_to_symtab_1 (self);
9455
9456       /* Finish up the debug error message.  */
9457       if (info_verbose)
9458         printf_filtered (_("done.\n"));
9459     }
9460
9461   process_cu_includes (dwarf2_per_objfile);
9462 }
9463 \f
9464 /* Reading in full CUs.  */
9465
9466 /* Add PER_CU to the queue.  */
9467
9468 static void
9469 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9470                  enum language pretend_language)
9471 {
9472   struct dwarf2_queue_item *item;
9473
9474   per_cu->queued = 1;
9475   item = XNEW (struct dwarf2_queue_item);
9476   item->per_cu = per_cu;
9477   item->pretend_language = pretend_language;
9478   item->next = NULL;
9479
9480   if (dwarf2_queue == NULL)
9481     dwarf2_queue = item;
9482   else
9483     dwarf2_queue_tail->next = item;
9484
9485   dwarf2_queue_tail = item;
9486 }
9487
9488 /* If PER_CU is not yet queued, add it to the queue.
9489    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9490    dependency.
9491    The result is non-zero if PER_CU was queued, otherwise the result is zero
9492    meaning either PER_CU is already queued or it is already loaded.
9493
9494    N.B. There is an invariant here that if a CU is queued then it is loaded.
9495    The caller is required to load PER_CU if we return non-zero.  */
9496
9497 static int
9498 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9499                        struct dwarf2_per_cu_data *per_cu,
9500                        enum language pretend_language)
9501 {
9502   /* We may arrive here during partial symbol reading, if we need full
9503      DIEs to process an unusual case (e.g. template arguments).  Do
9504      not queue PER_CU, just tell our caller to load its DIEs.  */
9505   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9506     {
9507       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9508         return 1;
9509       return 0;
9510     }
9511
9512   /* Mark the dependence relation so that we don't flush PER_CU
9513      too early.  */
9514   if (dependent_cu != NULL)
9515     dwarf2_add_dependence (dependent_cu, per_cu);
9516
9517   /* If it's already on the queue, we have nothing to do.  */
9518   if (per_cu->queued)
9519     return 0;
9520
9521   /* If the compilation unit is already loaded, just mark it as
9522      used.  */
9523   if (per_cu->cu != NULL)
9524     {
9525       per_cu->cu->last_used = 0;
9526       return 0;
9527     }
9528
9529   /* Add it to the queue.  */
9530   queue_comp_unit (per_cu, pretend_language);
9531
9532   return 1;
9533 }
9534
9535 /* Process the queue.  */
9536
9537 static void
9538 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9539 {
9540   struct dwarf2_queue_item *item, *next_item;
9541
9542   if (dwarf_read_debug)
9543     {
9544       fprintf_unfiltered (gdb_stdlog,
9545                           "Expanding one or more symtabs of objfile %s ...\n",
9546                           objfile_name (dwarf2_per_objfile->objfile));
9547     }
9548
9549   /* The queue starts out with one item, but following a DIE reference
9550      may load a new CU, adding it to the end of the queue.  */
9551   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9552     {
9553       if ((dwarf2_per_objfile->using_index
9554            ? !item->per_cu->v.quick->compunit_symtab
9555            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9556           /* Skip dummy CUs.  */
9557           && item->per_cu->cu != NULL)
9558         {
9559           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9560           unsigned int debug_print_threshold;
9561           char buf[100];
9562
9563           if (per_cu->is_debug_types)
9564             {
9565               struct signatured_type *sig_type =
9566                 (struct signatured_type *) per_cu;
9567
9568               sprintf (buf, "TU %s at offset %s",
9569                        hex_string (sig_type->signature),
9570                        sect_offset_str (per_cu->sect_off));
9571               /* There can be 100s of TUs.
9572                  Only print them in verbose mode.  */
9573               debug_print_threshold = 2;
9574             }
9575           else
9576             {
9577               sprintf (buf, "CU at offset %s",
9578                        sect_offset_str (per_cu->sect_off));
9579               debug_print_threshold = 1;
9580             }
9581
9582           if (dwarf_read_debug >= debug_print_threshold)
9583             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9584
9585           if (per_cu->is_debug_types)
9586             process_full_type_unit (per_cu, item->pretend_language);
9587           else
9588             process_full_comp_unit (per_cu, item->pretend_language);
9589
9590           if (dwarf_read_debug >= debug_print_threshold)
9591             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9592         }
9593
9594       item->per_cu->queued = 0;
9595       next_item = item->next;
9596       xfree (item);
9597     }
9598
9599   dwarf2_queue_tail = NULL;
9600
9601   if (dwarf_read_debug)
9602     {
9603       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9604                           objfile_name (dwarf2_per_objfile->objfile));
9605     }
9606 }
9607
9608 /* Read in full symbols for PST, and anything it depends on.  */
9609
9610 static void
9611 psymtab_to_symtab_1 (struct partial_symtab *pst)
9612 {
9613   struct dwarf2_per_cu_data *per_cu;
9614   int i;
9615
9616   if (pst->readin)
9617     return;
9618
9619   for (i = 0; i < pst->number_of_dependencies; i++)
9620     if (!pst->dependencies[i]->readin
9621         && pst->dependencies[i]->user == NULL)
9622       {
9623         /* Inform about additional files that need to be read in.  */
9624         if (info_verbose)
9625           {
9626             /* FIXME: i18n: Need to make this a single string.  */
9627             fputs_filtered (" ", gdb_stdout);
9628             wrap_here ("");
9629             fputs_filtered ("and ", gdb_stdout);
9630             wrap_here ("");
9631             printf_filtered ("%s...", pst->dependencies[i]->filename);
9632             wrap_here ("");     /* Flush output.  */
9633             gdb_flush (gdb_stdout);
9634           }
9635         psymtab_to_symtab_1 (pst->dependencies[i]);
9636       }
9637
9638   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9639
9640   if (per_cu == NULL)
9641     {
9642       /* It's an include file, no symbols to read for it.
9643          Everything is in the parent symtab.  */
9644       pst->readin = 1;
9645       return;
9646     }
9647
9648   dw2_do_instantiate_symtab (per_cu, false);
9649 }
9650
9651 /* Trivial hash function for die_info: the hash value of a DIE
9652    is its offset in .debug_info for this objfile.  */
9653
9654 static hashval_t
9655 die_hash (const void *item)
9656 {
9657   const struct die_info *die = (const struct die_info *) item;
9658
9659   return to_underlying (die->sect_off);
9660 }
9661
9662 /* Trivial comparison function for die_info structures: two DIEs
9663    are equal if they have the same offset.  */
9664
9665 static int
9666 die_eq (const void *item_lhs, const void *item_rhs)
9667 {
9668   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9669   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9670
9671   return die_lhs->sect_off == die_rhs->sect_off;
9672 }
9673
9674 /* die_reader_func for load_full_comp_unit.
9675    This is identical to read_signatured_type_reader,
9676    but is kept separate for now.  */
9677
9678 static void
9679 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9680                             const gdb_byte *info_ptr,
9681                             struct die_info *comp_unit_die,
9682                             int has_children,
9683                             void *data)
9684 {
9685   struct dwarf2_cu *cu = reader->cu;
9686   enum language *language_ptr = (enum language *) data;
9687
9688   gdb_assert (cu->die_hash == NULL);
9689   cu->die_hash =
9690     htab_create_alloc_ex (cu->header.length / 12,
9691                           die_hash,
9692                           die_eq,
9693                           NULL,
9694                           &cu->comp_unit_obstack,
9695                           hashtab_obstack_allocate,
9696                           dummy_obstack_deallocate);
9697
9698   if (has_children)
9699     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9700                                                   &info_ptr, comp_unit_die);
9701   cu->dies = comp_unit_die;
9702   /* comp_unit_die is not stored in die_hash, no need.  */
9703
9704   /* We try not to read any attributes in this function, because not
9705      all CUs needed for references have been loaded yet, and symbol
9706      table processing isn't initialized.  But we have to set the CU language,
9707      or we won't be able to build types correctly.
9708      Similarly, if we do not read the producer, we can not apply
9709      producer-specific interpretation.  */
9710   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9711 }
9712
9713 /* Load the DIEs associated with PER_CU into memory.  */
9714
9715 static void
9716 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9717                      bool skip_partial,
9718                      enum language pretend_language)
9719 {
9720   gdb_assert (! this_cu->is_debug_types);
9721
9722   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9723                            load_full_comp_unit_reader, &pretend_language);
9724 }
9725
9726 /* Add a DIE to the delayed physname list.  */
9727
9728 static void
9729 add_to_method_list (struct type *type, int fnfield_index, int index,
9730                     const char *name, struct die_info *die,
9731                     struct dwarf2_cu *cu)
9732 {
9733   struct delayed_method_info mi;
9734   mi.type = type;
9735   mi.fnfield_index = fnfield_index;
9736   mi.index = index;
9737   mi.name = name;
9738   mi.die = die;
9739   cu->method_list.push_back (mi);
9740 }
9741
9742 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9743    "const" / "volatile".  If so, decrements LEN by the length of the
9744    modifier and return true.  Otherwise return false.  */
9745
9746 template<size_t N>
9747 static bool
9748 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9749 {
9750   size_t mod_len = sizeof (mod) - 1;
9751   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9752     {
9753       len -= mod_len;
9754       return true;
9755     }
9756   return false;
9757 }
9758
9759 /* Compute the physnames of any methods on the CU's method list.
9760
9761    The computation of method physnames is delayed in order to avoid the
9762    (bad) condition that one of the method's formal parameters is of an as yet
9763    incomplete type.  */
9764
9765 static void
9766 compute_delayed_physnames (struct dwarf2_cu *cu)
9767 {
9768   /* Only C++ delays computing physnames.  */
9769   if (cu->method_list.empty ())
9770     return;
9771   gdb_assert (cu->language == language_cplus);
9772
9773   for (const delayed_method_info &mi : cu->method_list)
9774     {
9775       const char *physname;
9776       struct fn_fieldlist *fn_flp
9777         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9778       physname = dwarf2_physname (mi.name, mi.die, cu);
9779       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9780         = physname ? physname : "";
9781
9782       /* Since there's no tag to indicate whether a method is a
9783          const/volatile overload, extract that information out of the
9784          demangled name.  */
9785       if (physname != NULL)
9786         {
9787           size_t len = strlen (physname);
9788
9789           while (1)
9790             {
9791               if (physname[len] == ')') /* shortcut */
9792                 break;
9793               else if (check_modifier (physname, len, " const"))
9794                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9795               else if (check_modifier (physname, len, " volatile"))
9796                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9797               else
9798                 break;
9799             }
9800         }
9801     }
9802
9803   /* The list is no longer needed.  */
9804   cu->method_list.clear ();
9805 }
9806
9807 /* Go objects should be embedded in a DW_TAG_module DIE,
9808    and it's not clear if/how imported objects will appear.
9809    To keep Go support simple until that's worked out,
9810    go back through what we've read and create something usable.
9811    We could do this while processing each DIE, and feels kinda cleaner,
9812    but that way is more invasive.
9813    This is to, for example, allow the user to type "p var" or "b main"
9814    without having to specify the package name, and allow lookups
9815    of module.object to work in contexts that use the expression
9816    parser.  */
9817
9818 static void
9819 fixup_go_packaging (struct dwarf2_cu *cu)
9820 {
9821   char *package_name = NULL;
9822   struct pending *list;
9823   int i;
9824
9825   for (list = *cu->get_builder ()->get_global_symbols ();
9826        list != NULL;
9827        list = list->next)
9828     {
9829       for (i = 0; i < list->nsyms; ++i)
9830         {
9831           struct symbol *sym = list->symbol[i];
9832
9833           if (SYMBOL_LANGUAGE (sym) == language_go
9834               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9835             {
9836               char *this_package_name = go_symbol_package_name (sym);
9837
9838               if (this_package_name == NULL)
9839                 continue;
9840               if (package_name == NULL)
9841                 package_name = this_package_name;
9842               else
9843                 {
9844                   struct objfile *objfile
9845                     = cu->per_cu->dwarf2_per_objfile->objfile;
9846                   if (strcmp (package_name, this_package_name) != 0)
9847                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9848                                (symbol_symtab (sym) != NULL
9849                                 ? symtab_to_filename_for_display
9850                                     (symbol_symtab (sym))
9851                                 : objfile_name (objfile)),
9852                                this_package_name, package_name);
9853                   xfree (this_package_name);
9854                 }
9855             }
9856         }
9857     }
9858
9859   if (package_name != NULL)
9860     {
9861       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9862       const char *saved_package_name
9863         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9864                                         package_name,
9865                                         strlen (package_name));
9866       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9867                                      saved_package_name);
9868       struct symbol *sym;
9869
9870       sym = allocate_symbol (objfile);
9871       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9872       SYMBOL_SET_NAMES (sym, saved_package_name,
9873                         strlen (saved_package_name), 0, objfile);
9874       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9875          e.g., "main" finds the "main" module and not C's main().  */
9876       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9877       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9878       SYMBOL_TYPE (sym) = type;
9879
9880       add_symbol_to_list (sym, cu->get_builder ()->get_global_symbols ());
9881
9882       xfree (package_name);
9883     }
9884 }
9885
9886 /* Allocate a fully-qualified name consisting of the two parts on the
9887    obstack.  */
9888
9889 static const char *
9890 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9891 {
9892   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9893 }
9894
9895 /* A helper that allocates a struct discriminant_info to attach to a
9896    union type.  */
9897
9898 static struct discriminant_info *
9899 alloc_discriminant_info (struct type *type, int discriminant_index,
9900                          int default_index)
9901 {
9902   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9903   gdb_assert (discriminant_index == -1
9904               || (discriminant_index >= 0
9905                   && discriminant_index < TYPE_NFIELDS (type)));
9906   gdb_assert (default_index == -1
9907               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9908
9909   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9910
9911   struct discriminant_info *disc
9912     = ((struct discriminant_info *)
9913        TYPE_ZALLOC (type,
9914                     offsetof (struct discriminant_info, discriminants)
9915                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9916   disc->default_index = default_index;
9917   disc->discriminant_index = discriminant_index;
9918
9919   struct dynamic_prop prop;
9920   prop.kind = PROP_UNDEFINED;
9921   prop.data.baton = disc;
9922
9923   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9924
9925   return disc;
9926 }
9927
9928 /* Some versions of rustc emitted enums in an unusual way.
9929
9930    Ordinary enums were emitted as unions.  The first element of each
9931    structure in the union was named "RUST$ENUM$DISR".  This element
9932    held the discriminant.
9933
9934    These versions of Rust also implemented the "non-zero"
9935    optimization.  When the enum had two values, and one is empty and
9936    the other holds a pointer that cannot be zero, the pointer is used
9937    as the discriminant, with a zero value meaning the empty variant.
9938    Here, the union's first member is of the form
9939    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9940    where the fieldnos are the indices of the fields that should be
9941    traversed in order to find the field (which may be several fields deep)
9942    and the variantname is the name of the variant of the case when the
9943    field is zero.
9944
9945    This function recognizes whether TYPE is of one of these forms,
9946    and, if so, smashes it to be a variant type.  */
9947
9948 static void
9949 quirk_rust_enum (struct type *type, struct objfile *objfile)
9950 {
9951   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9952
9953   /* We don't need to deal with empty enums.  */
9954   if (TYPE_NFIELDS (type) == 0)
9955     return;
9956
9957 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9958   if (TYPE_NFIELDS (type) == 1
9959       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9960     {
9961       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9962
9963       /* Decode the field name to find the offset of the
9964          discriminant.  */
9965       ULONGEST bit_offset = 0;
9966       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9967       while (name[0] >= '0' && name[0] <= '9')
9968         {
9969           char *tail;
9970           unsigned long index = strtoul (name, &tail, 10);
9971           name = tail;
9972           if (*name != '$'
9973               || index >= TYPE_NFIELDS (field_type)
9974               || (TYPE_FIELD_LOC_KIND (field_type, index)
9975                   != FIELD_LOC_KIND_BITPOS))
9976             {
9977               complaint (_("Could not parse Rust enum encoding string \"%s\""
9978                            "[in module %s]"),
9979                          TYPE_FIELD_NAME (type, 0),
9980                          objfile_name (objfile));
9981               return;
9982             }
9983           ++name;
9984
9985           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9986           field_type = TYPE_FIELD_TYPE (field_type, index);
9987         }
9988
9989       /* Make a union to hold the variants.  */
9990       struct type *union_type = alloc_type (objfile);
9991       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9992       TYPE_NFIELDS (union_type) = 3;
9993       TYPE_FIELDS (union_type)
9994         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9995       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9996       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9997
9998       /* Put the discriminant must at index 0.  */
9999       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10000       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10001       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10002       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10003
10004       /* The order of fields doesn't really matter, so put the real
10005          field at index 1 and the data-less field at index 2.  */
10006       struct discriminant_info *disc
10007         = alloc_discriminant_info (union_type, 0, 1);
10008       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10009       TYPE_FIELD_NAME (union_type, 1)
10010         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10011       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10012         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10013                               TYPE_FIELD_NAME (union_type, 1));
10014
10015       const char *dataless_name
10016         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10017                               name);
10018       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10019                                               dataless_name);
10020       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10021       /* NAME points into the original discriminant name, which
10022          already has the correct lifetime.  */
10023       TYPE_FIELD_NAME (union_type, 2) = name;
10024       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10025       disc->discriminants[2] = 0;
10026
10027       /* Smash this type to be a structure type.  We have to do this
10028          because the type has already been recorded.  */
10029       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10030       TYPE_NFIELDS (type) = 1;
10031       TYPE_FIELDS (type)
10032         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10033
10034       /* Install the variant part.  */
10035       TYPE_FIELD_TYPE (type, 0) = union_type;
10036       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10037       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10038     }
10039   else if (TYPE_NFIELDS (type) == 1)
10040     {
10041       /* We assume that a union with a single field is a univariant
10042          enum.  */
10043       /* Smash this type to be a structure type.  We have to do this
10044          because the type has already been recorded.  */
10045       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10046
10047       /* Make a union to hold the variants.  */
10048       struct type *union_type = alloc_type (objfile);
10049       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10050       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10051       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10052       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10053       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10054
10055       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10056       const char *variant_name
10057         = rust_last_path_segment (TYPE_NAME (field_type));
10058       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10059       TYPE_NAME (field_type)
10060         = rust_fully_qualify (&objfile->objfile_obstack,
10061                               TYPE_NAME (type), variant_name);
10062
10063       /* Install the union in the outer struct type.  */
10064       TYPE_NFIELDS (type) = 1;
10065       TYPE_FIELDS (type)
10066         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10067       TYPE_FIELD_TYPE (type, 0) = union_type;
10068       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10069       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10070
10071       alloc_discriminant_info (union_type, -1, 0);
10072     }
10073   else
10074     {
10075       struct type *disr_type = nullptr;
10076       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10077         {
10078           disr_type = TYPE_FIELD_TYPE (type, i);
10079
10080           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10081             {
10082               /* All fields of a true enum will be structs.  */
10083               return;
10084             }
10085           else if (TYPE_NFIELDS (disr_type) == 0)
10086             {
10087               /* Could be data-less variant, so keep going.  */
10088               disr_type = nullptr;
10089             }
10090           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10091                            "RUST$ENUM$DISR") != 0)
10092             {
10093               /* Not a Rust enum.  */
10094               return;
10095             }
10096           else
10097             {
10098               /* Found one.  */
10099               break;
10100             }
10101         }
10102
10103       /* If we got here without a discriminant, then it's probably
10104          just a union.  */
10105       if (disr_type == nullptr)
10106         return;
10107
10108       /* Smash this type to be a structure type.  We have to do this
10109          because the type has already been recorded.  */
10110       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10111
10112       /* Make a union to hold the variants.  */
10113       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10114       struct type *union_type = alloc_type (objfile);
10115       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10116       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10117       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10118       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10119       TYPE_FIELDS (union_type)
10120         = (struct field *) TYPE_ZALLOC (union_type,
10121                                         (TYPE_NFIELDS (union_type)
10122                                          * sizeof (struct field)));
10123
10124       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10125               TYPE_NFIELDS (type) * sizeof (struct field));
10126
10127       /* Install the discriminant at index 0 in the union.  */
10128       TYPE_FIELD (union_type, 0) = *disr_field;
10129       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10130       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10131
10132       /* Install the union in the outer struct type.  */
10133       TYPE_FIELD_TYPE (type, 0) = union_type;
10134       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10135       TYPE_NFIELDS (type) = 1;
10136
10137       /* Set the size and offset of the union type.  */
10138       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10139
10140       /* We need a way to find the correct discriminant given a
10141          variant name.  For convenience we build a map here.  */
10142       struct type *enum_type = FIELD_TYPE (*disr_field);
10143       std::unordered_map<std::string, ULONGEST> discriminant_map;
10144       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10145         {
10146           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10147             {
10148               const char *name
10149                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10150               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10151             }
10152         }
10153
10154       int n_fields = TYPE_NFIELDS (union_type);
10155       struct discriminant_info *disc
10156         = alloc_discriminant_info (union_type, 0, -1);
10157       /* Skip the discriminant here.  */
10158       for (int i = 1; i < n_fields; ++i)
10159         {
10160           /* Find the final word in the name of this variant's type.
10161              That name can be used to look up the correct
10162              discriminant.  */
10163           const char *variant_name
10164             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10165                                                                   i)));
10166
10167           auto iter = discriminant_map.find (variant_name);
10168           if (iter != discriminant_map.end ())
10169             disc->discriminants[i] = iter->second;
10170
10171           /* Remove the discriminant field, if it exists.  */
10172           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10173           if (TYPE_NFIELDS (sub_type) > 0)
10174             {
10175               --TYPE_NFIELDS (sub_type);
10176               ++TYPE_FIELDS (sub_type);
10177             }
10178           TYPE_FIELD_NAME (union_type, i) = variant_name;
10179           TYPE_NAME (sub_type)
10180             = rust_fully_qualify (&objfile->objfile_obstack,
10181                                   TYPE_NAME (type), variant_name);
10182         }
10183     }
10184 }
10185
10186 /* Rewrite some Rust unions to be structures with variants parts.  */
10187
10188 static void
10189 rust_union_quirks (struct dwarf2_cu *cu)
10190 {
10191   gdb_assert (cu->language == language_rust);
10192   for (type *type_ : cu->rust_unions)
10193     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10194   /* We don't need this any more.  */
10195   cu->rust_unions.clear ();
10196 }
10197
10198 /* Return the symtab for PER_CU.  This works properly regardless of
10199    whether we're using the index or psymtabs.  */
10200
10201 static struct compunit_symtab *
10202 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10203 {
10204   return (per_cu->dwarf2_per_objfile->using_index
10205           ? per_cu->v.quick->compunit_symtab
10206           : per_cu->v.psymtab->compunit_symtab);
10207 }
10208
10209 /* A helper function for computing the list of all symbol tables
10210    included by PER_CU.  */
10211
10212 static void
10213 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
10214                                 htab_t all_children, htab_t all_type_symtabs,
10215                                 struct dwarf2_per_cu_data *per_cu,
10216                                 struct compunit_symtab *immediate_parent)
10217 {
10218   void **slot;
10219   int ix;
10220   struct compunit_symtab *cust;
10221   struct dwarf2_per_cu_data *iter;
10222
10223   slot = htab_find_slot (all_children, per_cu, INSERT);
10224   if (*slot != NULL)
10225     {
10226       /* This inclusion and its children have been processed.  */
10227       return;
10228     }
10229
10230   *slot = per_cu;
10231   /* Only add a CU if it has a symbol table.  */
10232   cust = get_compunit_symtab (per_cu);
10233   if (cust != NULL)
10234     {
10235       /* If this is a type unit only add its symbol table if we haven't
10236          seen it yet (type unit per_cu's can share symtabs).  */
10237       if (per_cu->is_debug_types)
10238         {
10239           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10240           if (*slot == NULL)
10241             {
10242               *slot = cust;
10243               result->push_back (cust);
10244               if (cust->user == NULL)
10245                 cust->user = immediate_parent;
10246             }
10247         }
10248       else
10249         {
10250           result->push_back (cust);
10251           if (cust->user == NULL)
10252             cust->user = immediate_parent;
10253         }
10254     }
10255
10256   for (ix = 0;
10257        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10258        ++ix)
10259     {
10260       recursively_compute_inclusions (result, all_children,
10261                                       all_type_symtabs, iter, cust);
10262     }
10263 }
10264
10265 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10266    PER_CU.  */
10267
10268 static void
10269 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10270 {
10271   gdb_assert (! per_cu->is_debug_types);
10272
10273   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10274     {
10275       int ix, len;
10276       struct dwarf2_per_cu_data *per_cu_iter;
10277       std::vector<compunit_symtab *> result_symtabs;
10278       htab_t all_children, all_type_symtabs;
10279       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10280
10281       /* If we don't have a symtab, we can just skip this case.  */
10282       if (cust == NULL)
10283         return;
10284
10285       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10286                                         NULL, xcalloc, xfree);
10287       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10288                                             NULL, xcalloc, xfree);
10289
10290       for (ix = 0;
10291            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10292                         ix, per_cu_iter);
10293            ++ix)
10294         {
10295           recursively_compute_inclusions (&result_symtabs, all_children,
10296                                           all_type_symtabs, per_cu_iter,
10297                                           cust);
10298         }
10299
10300       /* Now we have a transitive closure of all the included symtabs.  */
10301       len = result_symtabs.size ();
10302       cust->includes
10303         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10304                      struct compunit_symtab *, len + 1);
10305       memcpy (cust->includes, result_symtabs.data (),
10306               len * sizeof (compunit_symtab *));
10307       cust->includes[len] = NULL;
10308
10309       htab_delete (all_children);
10310       htab_delete (all_type_symtabs);
10311     }
10312 }
10313
10314 /* Compute the 'includes' field for the symtabs of all the CUs we just
10315    read.  */
10316
10317 static void
10318 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10319 {
10320   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10321     {
10322       if (! iter->is_debug_types)
10323         compute_compunit_symtab_includes (iter);
10324     }
10325
10326   dwarf2_per_objfile->just_read_cus.clear ();
10327 }
10328
10329 /* Generate full symbol information for PER_CU, whose DIEs have
10330    already been loaded into memory.  */
10331
10332 static void
10333 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10334                         enum language pretend_language)
10335 {
10336   struct dwarf2_cu *cu = per_cu->cu;
10337   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10338   struct objfile *objfile = dwarf2_per_objfile->objfile;
10339   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10340   CORE_ADDR lowpc, highpc;
10341   struct compunit_symtab *cust;
10342   CORE_ADDR baseaddr;
10343   struct block *static_block;
10344   CORE_ADDR addr;
10345
10346   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10347
10348   /* Clear the list here in case something was left over.  */
10349   cu->method_list.clear ();
10350
10351   cu->language = pretend_language;
10352   cu->language_defn = language_def (cu->language);
10353
10354   /* Do line number decoding in read_file_scope () */
10355   process_die (cu->dies, cu);
10356
10357   /* For now fudge the Go package.  */
10358   if (cu->language == language_go)
10359     fixup_go_packaging (cu);
10360
10361   /* Now that we have processed all the DIEs in the CU, all the types 
10362      should be complete, and it should now be safe to compute all of the
10363      physnames.  */
10364   compute_delayed_physnames (cu);
10365
10366   if (cu->language == language_rust)
10367     rust_union_quirks (cu);
10368
10369   /* Some compilers don't define a DW_AT_high_pc attribute for the
10370      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10371      it, by scanning the DIE's below the compilation unit.  */
10372   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10373
10374   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10375   static_block = cu->get_builder ()->end_symtab_get_static_block (addr, 0, 1);
10376
10377   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10378      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10379      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10380      addrmap to help ensure it has an accurate map of pc values belonging to
10381      this comp unit.  */
10382   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10383
10384   cust = cu->get_builder ()->end_symtab_from_static_block (static_block,
10385                                                     SECT_OFF_TEXT (objfile),
10386                                                     0);
10387
10388   if (cust != NULL)
10389     {
10390       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10391
10392       /* Set symtab language to language from DW_AT_language.  If the
10393          compilation is from a C file generated by language preprocessors, do
10394          not set the language if it was already deduced by start_subfile.  */
10395       if (!(cu->language == language_c
10396             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10397         COMPUNIT_FILETABS (cust)->language = cu->language;
10398
10399       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10400          produce DW_AT_location with location lists but it can be possibly
10401          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10402          there were bugs in prologue debug info, fixed later in GCC-4.5
10403          by "unwind info for epilogues" patch (which is not directly related).
10404
10405          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10406          needed, it would be wrong due to missing DW_AT_producer there.
10407
10408          Still one can confuse GDB by using non-standard GCC compilation
10409          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10410          */ 
10411       if (cu->has_loclist && gcc_4_minor >= 5)
10412         cust->locations_valid = 1;
10413
10414       if (gcc_4_minor >= 5)
10415         cust->epilogue_unwind_valid = 1;
10416
10417       cust->call_site_htab = cu->call_site_htab;
10418     }
10419
10420   if (dwarf2_per_objfile->using_index)
10421     per_cu->v.quick->compunit_symtab = cust;
10422   else
10423     {
10424       struct partial_symtab *pst = per_cu->v.psymtab;
10425       pst->compunit_symtab = cust;
10426       pst->readin = 1;
10427     }
10428
10429   /* Push it for inclusion processing later.  */
10430   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10431
10432   /* Not needed any more.  */
10433   cu->reset_builder ();
10434 }
10435
10436 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10437    already been loaded into memory.  */
10438
10439 static void
10440 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10441                         enum language pretend_language)
10442 {
10443   struct dwarf2_cu *cu = per_cu->cu;
10444   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10445   struct objfile *objfile = dwarf2_per_objfile->objfile;
10446   struct compunit_symtab *cust;
10447   struct signatured_type *sig_type;
10448
10449   gdb_assert (per_cu->is_debug_types);
10450   sig_type = (struct signatured_type *) per_cu;
10451
10452   /* Clear the list here in case something was left over.  */
10453   cu->method_list.clear ();
10454
10455   cu->language = pretend_language;
10456   cu->language_defn = language_def (cu->language);
10457
10458   /* The symbol tables are set up in read_type_unit_scope.  */
10459   process_die (cu->dies, cu);
10460
10461   /* For now fudge the Go package.  */
10462   if (cu->language == language_go)
10463     fixup_go_packaging (cu);
10464
10465   /* Now that we have processed all the DIEs in the CU, all the types 
10466      should be complete, and it should now be safe to compute all of the
10467      physnames.  */
10468   compute_delayed_physnames (cu);
10469
10470   if (cu->language == language_rust)
10471     rust_union_quirks (cu);
10472
10473   /* TUs share symbol tables.
10474      If this is the first TU to use this symtab, complete the construction
10475      of it with end_expandable_symtab.  Otherwise, complete the addition of
10476      this TU's symbols to the existing symtab.  */
10477   if (sig_type->type_unit_group->compunit_symtab == NULL)
10478     {
10479       buildsym_compunit *builder = cu->get_builder ();
10480       cust = builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10481       sig_type->type_unit_group->compunit_symtab = cust;
10482
10483       if (cust != NULL)
10484         {
10485           /* Set symtab language to language from DW_AT_language.  If the
10486              compilation is from a C file generated by language preprocessors,
10487              do not set the language if it was already deduced by
10488              start_subfile.  */
10489           if (!(cu->language == language_c
10490                 && COMPUNIT_FILETABS (cust)->language != language_c))
10491             COMPUNIT_FILETABS (cust)->language = cu->language;
10492         }
10493     }
10494   else
10495     {
10496       cu->get_builder ()->augment_type_symtab ();
10497       cust = sig_type->type_unit_group->compunit_symtab;
10498     }
10499
10500   if (dwarf2_per_objfile->using_index)
10501     per_cu->v.quick->compunit_symtab = cust;
10502   else
10503     {
10504       struct partial_symtab *pst = per_cu->v.psymtab;
10505       pst->compunit_symtab = cust;
10506       pst->readin = 1;
10507     }
10508
10509   /* Not needed any more.  */
10510   cu->reset_builder ();
10511 }
10512
10513 /* Process an imported unit DIE.  */
10514
10515 static void
10516 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10517 {
10518   struct attribute *attr;
10519
10520   /* For now we don't handle imported units in type units.  */
10521   if (cu->per_cu->is_debug_types)
10522     {
10523       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10524                " supported in type units [in module %s]"),
10525              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10526     }
10527
10528   attr = dwarf2_attr (die, DW_AT_import, cu);
10529   if (attr != NULL)
10530     {
10531       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10532       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10533       dwarf2_per_cu_data *per_cu
10534         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10535                                             cu->per_cu->dwarf2_per_objfile);
10536
10537       /* If necessary, add it to the queue and load its DIEs.  */
10538       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10539         load_full_comp_unit (per_cu, false, cu->language);
10540
10541       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10542                      per_cu);
10543     }
10544 }
10545
10546 /* RAII object that represents a process_die scope: i.e.,
10547    starts/finishes processing a DIE.  */
10548 class process_die_scope
10549 {
10550 public:
10551   process_die_scope (die_info *die, dwarf2_cu *cu)
10552     : m_die (die), m_cu (cu)
10553   {
10554     /* We should only be processing DIEs not already in process.  */
10555     gdb_assert (!m_die->in_process);
10556     m_die->in_process = true;
10557   }
10558
10559   ~process_die_scope ()
10560   {
10561     m_die->in_process = false;
10562
10563     /* If we're done processing the DIE for the CU that owns the line
10564        header, we don't need the line header anymore.  */
10565     if (m_cu->line_header_die_owner == m_die)
10566       {
10567         delete m_cu->line_header;
10568         m_cu->line_header = NULL;
10569         m_cu->line_header_die_owner = NULL;
10570       }
10571   }
10572
10573 private:
10574   die_info *m_die;
10575   dwarf2_cu *m_cu;
10576 };
10577
10578 /* Process a die and its children.  */
10579
10580 static void
10581 process_die (struct die_info *die, struct dwarf2_cu *cu)
10582 {
10583   process_die_scope scope (die, cu);
10584
10585   switch (die->tag)
10586     {
10587     case DW_TAG_padding:
10588       break;
10589     case DW_TAG_compile_unit:
10590     case DW_TAG_partial_unit:
10591       read_file_scope (die, cu);
10592       break;
10593     case DW_TAG_type_unit:
10594       read_type_unit_scope (die, cu);
10595       break;
10596     case DW_TAG_subprogram:
10597     case DW_TAG_inlined_subroutine:
10598       read_func_scope (die, cu);
10599       break;
10600     case DW_TAG_lexical_block:
10601     case DW_TAG_try_block:
10602     case DW_TAG_catch_block:
10603       read_lexical_block_scope (die, cu);
10604       break;
10605     case DW_TAG_call_site:
10606     case DW_TAG_GNU_call_site:
10607       read_call_site_scope (die, cu);
10608       break;
10609     case DW_TAG_class_type:
10610     case DW_TAG_interface_type:
10611     case DW_TAG_structure_type:
10612     case DW_TAG_union_type:
10613       process_structure_scope (die, cu);
10614       break;
10615     case DW_TAG_enumeration_type:
10616       process_enumeration_scope (die, cu);
10617       break;
10618
10619     /* These dies have a type, but processing them does not create
10620        a symbol or recurse to process the children.  Therefore we can
10621        read them on-demand through read_type_die.  */
10622     case DW_TAG_subroutine_type:
10623     case DW_TAG_set_type:
10624     case DW_TAG_array_type:
10625     case DW_TAG_pointer_type:
10626     case DW_TAG_ptr_to_member_type:
10627     case DW_TAG_reference_type:
10628     case DW_TAG_rvalue_reference_type:
10629     case DW_TAG_string_type:
10630       break;
10631
10632     case DW_TAG_base_type:
10633     case DW_TAG_subrange_type:
10634     case DW_TAG_typedef:
10635       /* Add a typedef symbol for the type definition, if it has a
10636          DW_AT_name.  */
10637       new_symbol (die, read_type_die (die, cu), cu);
10638       break;
10639     case DW_TAG_common_block:
10640       read_common_block (die, cu);
10641       break;
10642     case DW_TAG_common_inclusion:
10643       break;
10644     case DW_TAG_namespace:
10645       cu->processing_has_namespace_info = true;
10646       read_namespace (die, cu);
10647       break;
10648     case DW_TAG_module:
10649       cu->processing_has_namespace_info = true;
10650       read_module (die, cu);
10651       break;
10652     case DW_TAG_imported_declaration:
10653       cu->processing_has_namespace_info = true;
10654       if (read_namespace_alias (die, cu))
10655         break;
10656       /* The declaration is not a global namespace alias.  */
10657       /* Fall through.  */
10658     case DW_TAG_imported_module:
10659       cu->processing_has_namespace_info = true;
10660       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10661                                  || cu->language != language_fortran))
10662         complaint (_("Tag '%s' has unexpected children"),
10663                    dwarf_tag_name (die->tag));
10664       read_import_statement (die, cu);
10665       break;
10666
10667     case DW_TAG_imported_unit:
10668       process_imported_unit_die (die, cu);
10669       break;
10670
10671     case DW_TAG_variable:
10672       read_variable (die, cu);
10673       break;
10674
10675     default:
10676       new_symbol (die, NULL, cu);
10677       break;
10678     }
10679 }
10680 \f
10681 /* DWARF name computation.  */
10682
10683 /* A helper function for dwarf2_compute_name which determines whether DIE
10684    needs to have the name of the scope prepended to the name listed in the
10685    die.  */
10686
10687 static int
10688 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10689 {
10690   struct attribute *attr;
10691
10692   switch (die->tag)
10693     {
10694     case DW_TAG_namespace:
10695     case DW_TAG_typedef:
10696     case DW_TAG_class_type:
10697     case DW_TAG_interface_type:
10698     case DW_TAG_structure_type:
10699     case DW_TAG_union_type:
10700     case DW_TAG_enumeration_type:
10701     case DW_TAG_enumerator:
10702     case DW_TAG_subprogram:
10703     case DW_TAG_inlined_subroutine:
10704     case DW_TAG_member:
10705     case DW_TAG_imported_declaration:
10706       return 1;
10707
10708     case DW_TAG_variable:
10709     case DW_TAG_constant:
10710       /* We only need to prefix "globally" visible variables.  These include
10711          any variable marked with DW_AT_external or any variable that
10712          lives in a namespace.  [Variables in anonymous namespaces
10713          require prefixing, but they are not DW_AT_external.]  */
10714
10715       if (dwarf2_attr (die, DW_AT_specification, cu))
10716         {
10717           struct dwarf2_cu *spec_cu = cu;
10718
10719           return die_needs_namespace (die_specification (die, &spec_cu),
10720                                       spec_cu);
10721         }
10722
10723       attr = dwarf2_attr (die, DW_AT_external, cu);
10724       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10725           && die->parent->tag != DW_TAG_module)
10726         return 0;
10727       /* A variable in a lexical block of some kind does not need a
10728          namespace, even though in C++ such variables may be external
10729          and have a mangled name.  */
10730       if (die->parent->tag ==  DW_TAG_lexical_block
10731           || die->parent->tag ==  DW_TAG_try_block
10732           || die->parent->tag ==  DW_TAG_catch_block
10733           || die->parent->tag == DW_TAG_subprogram)
10734         return 0;
10735       return 1;
10736
10737     default:
10738       return 0;
10739     }
10740 }
10741
10742 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10743    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10744    defined for the given DIE.  */
10745
10746 static struct attribute *
10747 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10748 {
10749   struct attribute *attr;
10750
10751   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10752   if (attr == NULL)
10753     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10754
10755   return attr;
10756 }
10757
10758 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10759    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10760    defined for the given DIE.  */
10761
10762 static const char *
10763 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10764 {
10765   const char *linkage_name;
10766
10767   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10768   if (linkage_name == NULL)
10769     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10770
10771   return linkage_name;
10772 }
10773
10774 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10775    compute the physname for the object, which include a method's:
10776    - formal parameters (C++),
10777    - receiver type (Go),
10778
10779    The term "physname" is a bit confusing.
10780    For C++, for example, it is the demangled name.
10781    For Go, for example, it's the mangled name.
10782
10783    For Ada, return the DIE's linkage name rather than the fully qualified
10784    name.  PHYSNAME is ignored..
10785
10786    The result is allocated on the objfile_obstack and canonicalized.  */
10787
10788 static const char *
10789 dwarf2_compute_name (const char *name,
10790                      struct die_info *die, struct dwarf2_cu *cu,
10791                      int physname)
10792 {
10793   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10794
10795   if (name == NULL)
10796     name = dwarf2_name (die, cu);
10797
10798   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10799      but otherwise compute it by typename_concat inside GDB.
10800      FIXME: Actually this is not really true, or at least not always true.
10801      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10802      Fortran names because there is no mangling standard.  So new_symbol
10803      will set the demangled name to the result of dwarf2_full_name, and it is
10804      the demangled name that GDB uses if it exists.  */
10805   if (cu->language == language_ada
10806       || (cu->language == language_fortran && physname))
10807     {
10808       /* For Ada unit, we prefer the linkage name over the name, as
10809          the former contains the exported name, which the user expects
10810          to be able to reference.  Ideally, we want the user to be able
10811          to reference this entity using either natural or linkage name,
10812          but we haven't started looking at this enhancement yet.  */
10813       const char *linkage_name = dw2_linkage_name (die, cu);
10814
10815       if (linkage_name != NULL)
10816         return linkage_name;
10817     }
10818
10819   /* These are the only languages we know how to qualify names in.  */
10820   if (name != NULL
10821       && (cu->language == language_cplus
10822           || cu->language == language_fortran || cu->language == language_d
10823           || cu->language == language_rust))
10824     {
10825       if (die_needs_namespace (die, cu))
10826         {
10827           const char *prefix;
10828           const char *canonical_name = NULL;
10829
10830           string_file buf;
10831
10832           prefix = determine_prefix (die, cu);
10833           if (*prefix != '\0')
10834             {
10835               char *prefixed_name = typename_concat (NULL, prefix, name,
10836                                                      physname, cu);
10837
10838               buf.puts (prefixed_name);
10839               xfree (prefixed_name);
10840             }
10841           else
10842             buf.puts (name);
10843
10844           /* Template parameters may be specified in the DIE's DW_AT_name, or
10845              as children with DW_TAG_template_type_param or
10846              DW_TAG_value_type_param.  If the latter, add them to the name
10847              here.  If the name already has template parameters, then
10848              skip this step; some versions of GCC emit both, and
10849              it is more efficient to use the pre-computed name.
10850
10851              Something to keep in mind about this process: it is very
10852              unlikely, or in some cases downright impossible, to produce
10853              something that will match the mangled name of a function.
10854              If the definition of the function has the same debug info,
10855              we should be able to match up with it anyway.  But fallbacks
10856              using the minimal symbol, for instance to find a method
10857              implemented in a stripped copy of libstdc++, will not work.
10858              If we do not have debug info for the definition, we will have to
10859              match them up some other way.
10860
10861              When we do name matching there is a related problem with function
10862              templates; two instantiated function templates are allowed to
10863              differ only by their return types, which we do not add here.  */
10864
10865           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10866             {
10867               struct attribute *attr;
10868               struct die_info *child;
10869               int first = 1;
10870
10871               die->building_fullname = 1;
10872
10873               for (child = die->child; child != NULL; child = child->sibling)
10874                 {
10875                   struct type *type;
10876                   LONGEST value;
10877                   const gdb_byte *bytes;
10878                   struct dwarf2_locexpr_baton *baton;
10879                   struct value *v;
10880
10881                   if (child->tag != DW_TAG_template_type_param
10882                       && child->tag != DW_TAG_template_value_param)
10883                     continue;
10884
10885                   if (first)
10886                     {
10887                       buf.puts ("<");
10888                       first = 0;
10889                     }
10890                   else
10891                     buf.puts (", ");
10892
10893                   attr = dwarf2_attr (child, DW_AT_type, cu);
10894                   if (attr == NULL)
10895                     {
10896                       complaint (_("template parameter missing DW_AT_type"));
10897                       buf.puts ("UNKNOWN_TYPE");
10898                       continue;
10899                     }
10900                   type = die_type (child, cu);
10901
10902                   if (child->tag == DW_TAG_template_type_param)
10903                     {
10904                       c_print_type (type, "", &buf, -1, 0, cu->language,
10905                                     &type_print_raw_options);
10906                       continue;
10907                     }
10908
10909                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10910                   if (attr == NULL)
10911                     {
10912                       complaint (_("template parameter missing "
10913                                    "DW_AT_const_value"));
10914                       buf.puts ("UNKNOWN_VALUE");
10915                       continue;
10916                     }
10917
10918                   dwarf2_const_value_attr (attr, type, name,
10919                                            &cu->comp_unit_obstack, cu,
10920                                            &value, &bytes, &baton);
10921
10922                   if (TYPE_NOSIGN (type))
10923                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10924                        changed, this can use value_print instead.  */
10925                     c_printchar (value, type, &buf);
10926                   else
10927                     {
10928                       struct value_print_options opts;
10929
10930                       if (baton != NULL)
10931                         v = dwarf2_evaluate_loc_desc (type, NULL,
10932                                                       baton->data,
10933                                                       baton->size,
10934                                                       baton->per_cu);
10935                       else if (bytes != NULL)
10936                         {
10937                           v = allocate_value (type);
10938                           memcpy (value_contents_writeable (v), bytes,
10939                                   TYPE_LENGTH (type));
10940                         }
10941                       else
10942                         v = value_from_longest (type, value);
10943
10944                       /* Specify decimal so that we do not depend on
10945                          the radix.  */
10946                       get_formatted_print_options (&opts, 'd');
10947                       opts.raw = 1;
10948                       value_print (v, &buf, &opts);
10949                       release_value (v);
10950                     }
10951                 }
10952
10953               die->building_fullname = 0;
10954
10955               if (!first)
10956                 {
10957                   /* Close the argument list, with a space if necessary
10958                      (nested templates).  */
10959                   if (!buf.empty () && buf.string ().back () == '>')
10960                     buf.puts (" >");
10961                   else
10962                     buf.puts (">");
10963                 }
10964             }
10965
10966           /* For C++ methods, append formal parameter type
10967              information, if PHYSNAME.  */
10968
10969           if (physname && die->tag == DW_TAG_subprogram
10970               && cu->language == language_cplus)
10971             {
10972               struct type *type = read_type_die (die, cu);
10973
10974               c_type_print_args (type, &buf, 1, cu->language,
10975                                  &type_print_raw_options);
10976
10977               if (cu->language == language_cplus)
10978                 {
10979                   /* Assume that an artificial first parameter is
10980                      "this", but do not crash if it is not.  RealView
10981                      marks unnamed (and thus unused) parameters as
10982                      artificial; there is no way to differentiate
10983                      the two cases.  */
10984                   if (TYPE_NFIELDS (type) > 0
10985                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10986                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10987                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10988                                                                         0))))
10989                     buf.puts (" const");
10990                 }
10991             }
10992
10993           const std::string &intermediate_name = buf.string ();
10994
10995           if (cu->language == language_cplus)
10996             canonical_name
10997               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
10998                                           &objfile->per_bfd->storage_obstack);
10999
11000           /* If we only computed INTERMEDIATE_NAME, or if
11001              INTERMEDIATE_NAME is already canonical, then we need to
11002              copy it to the appropriate obstack.  */
11003           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11004             name = ((const char *)
11005                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11006                                    intermediate_name.c_str (),
11007                                    intermediate_name.length ()));
11008           else
11009             name = canonical_name;
11010         }
11011     }
11012
11013   return name;
11014 }
11015
11016 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11017    If scope qualifiers are appropriate they will be added.  The result
11018    will be allocated on the storage_obstack, or NULL if the DIE does
11019    not have a name.  NAME may either be from a previous call to
11020    dwarf2_name or NULL.
11021
11022    The output string will be canonicalized (if C++).  */
11023
11024 static const char *
11025 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11026 {
11027   return dwarf2_compute_name (name, die, cu, 0);
11028 }
11029
11030 /* Construct a physname for the given DIE in CU.  NAME may either be
11031    from a previous call to dwarf2_name or NULL.  The result will be
11032    allocated on the objfile_objstack or NULL if the DIE does not have a
11033    name.
11034
11035    The output string will be canonicalized (if C++).  */
11036
11037 static const char *
11038 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11039 {
11040   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11041   const char *retval, *mangled = NULL, *canon = NULL;
11042   int need_copy = 1;
11043
11044   /* In this case dwarf2_compute_name is just a shortcut not building anything
11045      on its own.  */
11046   if (!die_needs_namespace (die, cu))
11047     return dwarf2_compute_name (name, die, cu, 1);
11048
11049   mangled = dw2_linkage_name (die, cu);
11050
11051   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11052      See https://github.com/rust-lang/rust/issues/32925.  */
11053   if (cu->language == language_rust && mangled != NULL
11054       && strchr (mangled, '{') != NULL)
11055     mangled = NULL;
11056
11057   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11058      has computed.  */
11059   gdb::unique_xmalloc_ptr<char> demangled;
11060   if (mangled != NULL)
11061     {
11062
11063       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11064         {
11065           /* Do nothing (do not demangle the symbol name).  */
11066         }
11067       else if (cu->language == language_go)
11068         {
11069           /* This is a lie, but we already lie to the caller new_symbol.
11070              new_symbol assumes we return the mangled name.
11071              This just undoes that lie until things are cleaned up.  */
11072         }
11073       else
11074         {
11075           /* Use DMGL_RET_DROP for C++ template functions to suppress
11076              their return type.  It is easier for GDB users to search
11077              for such functions as `name(params)' than `long name(params)'.
11078              In such case the minimal symbol names do not match the full
11079              symbol names but for template functions there is never a need
11080              to look up their definition from their declaration so
11081              the only disadvantage remains the minimal symbol variant
11082              `long name(params)' does not have the proper inferior type.  */
11083           demangled.reset (gdb_demangle (mangled,
11084                                          (DMGL_PARAMS | DMGL_ANSI
11085                                           | DMGL_RET_DROP)));
11086         }
11087       if (demangled)
11088         canon = demangled.get ();
11089       else
11090         {
11091           canon = mangled;
11092           need_copy = 0;
11093         }
11094     }
11095
11096   if (canon == NULL || check_physname)
11097     {
11098       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11099
11100       if (canon != NULL && strcmp (physname, canon) != 0)
11101         {
11102           /* It may not mean a bug in GDB.  The compiler could also
11103              compute DW_AT_linkage_name incorrectly.  But in such case
11104              GDB would need to be bug-to-bug compatible.  */
11105
11106           complaint (_("Computed physname <%s> does not match demangled <%s> "
11107                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11108                      physname, canon, mangled, sect_offset_str (die->sect_off),
11109                      objfile_name (objfile));
11110
11111           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11112              is available here - over computed PHYSNAME.  It is safer
11113              against both buggy GDB and buggy compilers.  */
11114
11115           retval = canon;
11116         }
11117       else
11118         {
11119           retval = physname;
11120           need_copy = 0;
11121         }
11122     }
11123   else
11124     retval = canon;
11125
11126   if (need_copy)
11127     retval = ((const char *)
11128               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11129                              retval, strlen (retval)));
11130
11131   return retval;
11132 }
11133
11134 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11135    a new symbol for it.
11136
11137    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11138
11139 static int
11140 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11141 {
11142   struct attribute *attr;
11143
11144   /* If the die does not have a name, this is not a namespace
11145      alias.  */
11146   attr = dwarf2_attr (die, DW_AT_name, cu);
11147   if (attr != NULL)
11148     {
11149       int num;
11150       struct die_info *d = die;
11151       struct dwarf2_cu *imported_cu = cu;
11152
11153       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11154          keep inspecting DIEs until we hit the underlying import.  */
11155 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11156       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11157         {
11158           attr = dwarf2_attr (d, DW_AT_import, cu);
11159           if (attr == NULL)
11160             break;
11161
11162           d = follow_die_ref (d, attr, &imported_cu);
11163           if (d->tag != DW_TAG_imported_declaration)
11164             break;
11165         }
11166
11167       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11168         {
11169           complaint (_("DIE at %s has too many recursively imported "
11170                        "declarations"), sect_offset_str (d->sect_off));
11171           return 0;
11172         }
11173
11174       if (attr != NULL)
11175         {
11176           struct type *type;
11177           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11178
11179           type = get_die_type_at_offset (sect_off, cu->per_cu);
11180           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11181             {
11182               /* This declaration is a global namespace alias.  Add
11183                  a symbol for it whose type is the aliased namespace.  */
11184               new_symbol (die, type, cu);
11185               return 1;
11186             }
11187         }
11188     }
11189
11190   return 0;
11191 }
11192
11193 /* Return the using directives repository (global or local?) to use in the
11194    current context for CU.
11195
11196    For Ada, imported declarations can materialize renamings, which *may* be
11197    global.  However it is impossible (for now?) in DWARF to distinguish
11198    "external" imported declarations and "static" ones.  As all imported
11199    declarations seem to be static in all other languages, make them all CU-wide
11200    global only in Ada.  */
11201
11202 static struct using_direct **
11203 using_directives (struct dwarf2_cu *cu)
11204 {
11205   if (cu->language == language_ada
11206       && cu->get_builder ()->outermost_context_p ())
11207     return cu->get_builder ()->get_global_using_directives ();
11208   else
11209     return cu->get_builder ()->get_local_using_directives ();
11210 }
11211
11212 /* Read the import statement specified by the given die and record it.  */
11213
11214 static void
11215 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11216 {
11217   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11218   struct attribute *import_attr;
11219   struct die_info *imported_die, *child_die;
11220   struct dwarf2_cu *imported_cu;
11221   const char *imported_name;
11222   const char *imported_name_prefix;
11223   const char *canonical_name;
11224   const char *import_alias;
11225   const char *imported_declaration = NULL;
11226   const char *import_prefix;
11227   std::vector<const char *> excludes;
11228
11229   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11230   if (import_attr == NULL)
11231     {
11232       complaint (_("Tag '%s' has no DW_AT_import"),
11233                  dwarf_tag_name (die->tag));
11234       return;
11235     }
11236
11237   imported_cu = cu;
11238   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11239   imported_name = dwarf2_name (imported_die, imported_cu);
11240   if (imported_name == NULL)
11241     {
11242       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11243
11244         The import in the following code:
11245         namespace A
11246           {
11247             typedef int B;
11248           }
11249
11250         int main ()
11251           {
11252             using A::B;
11253             B b;
11254             return b;
11255           }
11256
11257         ...
11258          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11259             <52>   DW_AT_decl_file   : 1
11260             <53>   DW_AT_decl_line   : 6
11261             <54>   DW_AT_import      : <0x75>
11262          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11263             <59>   DW_AT_name        : B
11264             <5b>   DW_AT_decl_file   : 1
11265             <5c>   DW_AT_decl_line   : 2
11266             <5d>   DW_AT_type        : <0x6e>
11267         ...
11268          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11269             <76>   DW_AT_byte_size   : 4
11270             <77>   DW_AT_encoding    : 5        (signed)
11271
11272         imports the wrong die ( 0x75 instead of 0x58 ).
11273         This case will be ignored until the gcc bug is fixed.  */
11274       return;
11275     }
11276
11277   /* Figure out the local name after import.  */
11278   import_alias = dwarf2_name (die, cu);
11279
11280   /* Figure out where the statement is being imported to.  */
11281   import_prefix = determine_prefix (die, cu);
11282
11283   /* Figure out what the scope of the imported die is and prepend it
11284      to the name of the imported die.  */
11285   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11286
11287   if (imported_die->tag != DW_TAG_namespace
11288       && imported_die->tag != DW_TAG_module)
11289     {
11290       imported_declaration = imported_name;
11291       canonical_name = imported_name_prefix;
11292     }
11293   else if (strlen (imported_name_prefix) > 0)
11294     canonical_name = obconcat (&objfile->objfile_obstack,
11295                                imported_name_prefix,
11296                                (cu->language == language_d ? "." : "::"),
11297                                imported_name, (char *) NULL);
11298   else
11299     canonical_name = imported_name;
11300
11301   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11302     for (child_die = die->child; child_die && child_die->tag;
11303          child_die = sibling_die (child_die))
11304       {
11305         /* DWARF-4: A Fortran use statement with a “rename list” may be
11306            represented by an imported module entry with an import attribute
11307            referring to the module and owned entries corresponding to those
11308            entities that are renamed as part of being imported.  */
11309
11310         if (child_die->tag != DW_TAG_imported_declaration)
11311           {
11312             complaint (_("child DW_TAG_imported_declaration expected "
11313                          "- DIE at %s [in module %s]"),
11314                        sect_offset_str (child_die->sect_off),
11315                        objfile_name (objfile));
11316             continue;
11317           }
11318
11319         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11320         if (import_attr == NULL)
11321           {
11322             complaint (_("Tag '%s' has no DW_AT_import"),
11323                        dwarf_tag_name (child_die->tag));
11324             continue;
11325           }
11326
11327         imported_cu = cu;
11328         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11329                                               &imported_cu);
11330         imported_name = dwarf2_name (imported_die, imported_cu);
11331         if (imported_name == NULL)
11332           {
11333             complaint (_("child DW_TAG_imported_declaration has unknown "
11334                          "imported name - DIE at %s [in module %s]"),
11335                        sect_offset_str (child_die->sect_off),
11336                        objfile_name (objfile));
11337             continue;
11338           }
11339
11340         excludes.push_back (imported_name);
11341
11342         process_die (child_die, cu);
11343       }
11344
11345   add_using_directive (using_directives (cu),
11346                        import_prefix,
11347                        canonical_name,
11348                        import_alias,
11349                        imported_declaration,
11350                        excludes,
11351                        0,
11352                        &objfile->objfile_obstack);
11353 }
11354
11355 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11356    types, but gives them a size of zero.  Starting with version 14,
11357    ICC is compatible with GCC.  */
11358
11359 static bool
11360 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11361 {
11362   if (!cu->checked_producer)
11363     check_producer (cu);
11364
11365   return cu->producer_is_icc_lt_14;
11366 }
11367
11368 /* ICC generates a DW_AT_type for C void functions.  This was observed on
11369    ICC 14.0.5.212, and appears to be against the DWARF spec (V5 3.3.2)
11370    which says that void functions should not have a DW_AT_type.  */
11371
11372 static bool
11373 producer_is_icc (struct dwarf2_cu *cu)
11374 {
11375   if (!cu->checked_producer)
11376     check_producer (cu);
11377
11378   return cu->producer_is_icc;
11379 }
11380
11381 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11382    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11383    this, it was first present in GCC release 4.3.0.  */
11384
11385 static bool
11386 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11387 {
11388   if (!cu->checked_producer)
11389     check_producer (cu);
11390
11391   return cu->producer_is_gcc_lt_4_3;
11392 }
11393
11394 static file_and_directory
11395 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11396 {
11397   file_and_directory res;
11398
11399   /* Find the filename.  Do not use dwarf2_name here, since the filename
11400      is not a source language identifier.  */
11401   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11402   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11403
11404   if (res.comp_dir == NULL
11405       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11406       && IS_ABSOLUTE_PATH (res.name))
11407     {
11408       res.comp_dir_storage = ldirname (res.name);
11409       if (!res.comp_dir_storage.empty ())
11410         res.comp_dir = res.comp_dir_storage.c_str ();
11411     }
11412   if (res.comp_dir != NULL)
11413     {
11414       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11415          directory, get rid of it.  */
11416       const char *cp = strchr (res.comp_dir, ':');
11417
11418       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11419         res.comp_dir = cp + 1;
11420     }
11421
11422   if (res.name == NULL)
11423     res.name = "<unknown>";
11424
11425   return res;
11426 }
11427
11428 /* Handle DW_AT_stmt_list for a compilation unit.
11429    DIE is the DW_TAG_compile_unit die for CU.
11430    COMP_DIR is the compilation directory.  LOWPC is passed to
11431    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11432
11433 static void
11434 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11435                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11436 {
11437   struct dwarf2_per_objfile *dwarf2_per_objfile
11438     = cu->per_cu->dwarf2_per_objfile;
11439   struct objfile *objfile = dwarf2_per_objfile->objfile;
11440   struct attribute *attr;
11441   struct line_header line_header_local;
11442   hashval_t line_header_local_hash;
11443   void **slot;
11444   int decode_mapping;
11445
11446   gdb_assert (! cu->per_cu->is_debug_types);
11447
11448   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11449   if (attr == NULL)
11450     return;
11451
11452   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11453
11454   /* The line header hash table is only created if needed (it exists to
11455      prevent redundant reading of the line table for partial_units).
11456      If we're given a partial_unit, we'll need it.  If we're given a
11457      compile_unit, then use the line header hash table if it's already
11458      created, but don't create one just yet.  */
11459
11460   if (dwarf2_per_objfile->line_header_hash == NULL
11461       && die->tag == DW_TAG_partial_unit)
11462     {
11463       dwarf2_per_objfile->line_header_hash
11464         = htab_create_alloc_ex (127, line_header_hash_voidp,
11465                                 line_header_eq_voidp,
11466                                 free_line_header_voidp,
11467                                 &objfile->objfile_obstack,
11468                                 hashtab_obstack_allocate,
11469                                 dummy_obstack_deallocate);
11470     }
11471
11472   line_header_local.sect_off = line_offset;
11473   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11474   line_header_local_hash = line_header_hash (&line_header_local);
11475   if (dwarf2_per_objfile->line_header_hash != NULL)
11476     {
11477       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11478                                        &line_header_local,
11479                                        line_header_local_hash, NO_INSERT);
11480
11481       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11482          is not present in *SLOT (since if there is something in *SLOT then
11483          it will be for a partial_unit).  */
11484       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11485         {
11486           gdb_assert (*slot != NULL);
11487           cu->line_header = (struct line_header *) *slot;
11488           return;
11489         }
11490     }
11491
11492   /* dwarf_decode_line_header does not yet provide sufficient information.
11493      We always have to call also dwarf_decode_lines for it.  */
11494   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11495   if (lh == NULL)
11496     return;
11497
11498   cu->line_header = lh.release ();
11499   cu->line_header_die_owner = die;
11500
11501   if (dwarf2_per_objfile->line_header_hash == NULL)
11502     slot = NULL;
11503   else
11504     {
11505       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11506                                        &line_header_local,
11507                                        line_header_local_hash, INSERT);
11508       gdb_assert (slot != NULL);
11509     }
11510   if (slot != NULL && *slot == NULL)
11511     {
11512       /* This newly decoded line number information unit will be owned
11513          by line_header_hash hash table.  */
11514       *slot = cu->line_header;
11515       cu->line_header_die_owner = NULL;
11516     }
11517   else
11518     {
11519       /* We cannot free any current entry in (*slot) as that struct line_header
11520          may be already used by multiple CUs.  Create only temporary decoded
11521          line_header for this CU - it may happen at most once for each line
11522          number information unit.  And if we're not using line_header_hash
11523          then this is what we want as well.  */
11524       gdb_assert (die->tag != DW_TAG_partial_unit);
11525     }
11526   decode_mapping = (die->tag != DW_TAG_partial_unit);
11527   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11528                       decode_mapping);
11529
11530 }
11531
11532 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11533
11534 static void
11535 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11536 {
11537   struct dwarf2_per_objfile *dwarf2_per_objfile
11538     = cu->per_cu->dwarf2_per_objfile;
11539   struct objfile *objfile = dwarf2_per_objfile->objfile;
11540   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11541   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11542   CORE_ADDR highpc = ((CORE_ADDR) 0);
11543   struct attribute *attr;
11544   struct die_info *child_die;
11545   CORE_ADDR baseaddr;
11546
11547   prepare_one_comp_unit (cu, die, cu->language);
11548   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11549
11550   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11551
11552   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11553      from finish_block.  */
11554   if (lowpc == ((CORE_ADDR) -1))
11555     lowpc = highpc;
11556   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11557
11558   file_and_directory fnd = find_file_and_directory (die, cu);
11559
11560   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11561      standardised yet.  As a workaround for the language detection we fall
11562      back to the DW_AT_producer string.  */
11563   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11564     cu->language = language_opencl;
11565
11566   /* Similar hack for Go.  */
11567   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11568     set_cu_language (DW_LANG_Go, cu);
11569
11570   cu->start_symtab (fnd.name, fnd.comp_dir, lowpc);
11571
11572   /* Decode line number information if present.  We do this before
11573      processing child DIEs, so that the line header table is available
11574      for DW_AT_decl_file.  */
11575   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11576
11577   /* Process all dies in compilation unit.  */
11578   if (die->child != NULL)
11579     {
11580       child_die = die->child;
11581       while (child_die && child_die->tag)
11582         {
11583           process_die (child_die, cu);
11584           child_die = sibling_die (child_die);
11585         }
11586     }
11587
11588   /* Decode macro information, if present.  Dwarf 2 macro information
11589      refers to information in the line number info statement program
11590      header, so we can only read it if we've read the header
11591      successfully.  */
11592   attr = dwarf2_attr (die, DW_AT_macros, cu);
11593   if (attr == NULL)
11594     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11595   if (attr && cu->line_header)
11596     {
11597       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11598         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11599
11600       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11601     }
11602   else
11603     {
11604       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11605       if (attr && cu->line_header)
11606         {
11607           unsigned int macro_offset = DW_UNSND (attr);
11608
11609           dwarf_decode_macros (cu, macro_offset, 0);
11610         }
11611     }
11612 }
11613
11614 void
11615 dwarf2_cu::setup_type_unit_groups (struct die_info *die)
11616 {
11617   struct type_unit_group *tu_group;
11618   int first_time;
11619   struct attribute *attr;
11620   unsigned int i;
11621   struct signatured_type *sig_type;
11622
11623   gdb_assert (per_cu->is_debug_types);
11624   sig_type = (struct signatured_type *) per_cu;
11625
11626   attr = dwarf2_attr (die, DW_AT_stmt_list, this);
11627
11628   /* If we're using .gdb_index (includes -readnow) then
11629      per_cu->type_unit_group may not have been set up yet.  */
11630   if (sig_type->type_unit_group == NULL)
11631     sig_type->type_unit_group = get_type_unit_group (this, attr);
11632   tu_group = sig_type->type_unit_group;
11633
11634   /* If we've already processed this stmt_list there's no real need to
11635      do it again, we could fake it and just recreate the part we need
11636      (file name,index -> symtab mapping).  If data shows this optimization
11637      is useful we can do it then.  */
11638   first_time = tu_group->compunit_symtab == NULL;
11639
11640   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11641      debug info.  */
11642   line_header_up lh;
11643   if (attr != NULL)
11644     {
11645       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11646       lh = dwarf_decode_line_header (line_offset, this);
11647     }
11648   if (lh == NULL)
11649     {
11650       if (first_time)
11651         start_symtab ("", NULL, 0);
11652       else
11653         {
11654           gdb_assert (tu_group->symtabs == NULL);
11655           gdb_assert (m_builder == nullptr);
11656           struct compunit_symtab *cust = tu_group->compunit_symtab;
11657           m_builder.reset (new struct buildsym_compunit
11658                            (COMPUNIT_OBJFILE (cust), "",
11659                             COMPUNIT_DIRNAME (cust),
11660                             compunit_language (cust),
11661                             0, cust));
11662         }
11663       return;
11664     }
11665
11666   line_header = lh.release ();
11667   line_header_die_owner = die;
11668
11669   if (first_time)
11670     {
11671       struct compunit_symtab *cust = start_symtab ("", NULL, 0);
11672
11673       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11674          still initializing it, and our caller (a few levels up)
11675          process_full_type_unit still needs to know if this is the first
11676          time.  */
11677
11678       tu_group->num_symtabs = line_header->file_names.size ();
11679       tu_group->symtabs = XNEWVEC (struct symtab *,
11680                                    line_header->file_names.size ());
11681
11682       for (i = 0; i < line_header->file_names.size (); ++i)
11683         {
11684           file_entry &fe = line_header->file_names[i];
11685
11686           dwarf2_start_subfile (this, fe.name,
11687                                 fe.include_dir (line_header));
11688           buildsym_compunit *b = get_builder ();
11689           if (b->get_current_subfile ()->symtab == NULL)
11690             {
11691               /* NOTE: start_subfile will recognize when it's been
11692                  passed a file it has already seen.  So we can't
11693                  assume there's a simple mapping from
11694                  cu->line_header->file_names to subfiles, plus
11695                  cu->line_header->file_names may contain dups.  */
11696               b->get_current_subfile ()->symtab
11697                 = allocate_symtab (cust, b->get_current_subfile ()->name);
11698             }
11699
11700           fe.symtab = b->get_current_subfile ()->symtab;
11701           tu_group->symtabs[i] = fe.symtab;
11702         }
11703     }
11704   else
11705     {
11706       gdb_assert (m_builder == nullptr);
11707       struct compunit_symtab *cust = tu_group->compunit_symtab;
11708       m_builder.reset (new struct buildsym_compunit
11709                        (COMPUNIT_OBJFILE (cust), "",
11710                         COMPUNIT_DIRNAME (cust),
11711                         compunit_language (cust),
11712                         0, cust));
11713
11714       for (i = 0; i < line_header->file_names.size (); ++i)
11715         {
11716           file_entry &fe = line_header->file_names[i];
11717
11718           fe.symtab = tu_group->symtabs[i];
11719         }
11720     }
11721
11722   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11723      so they don't have a "real" (so to speak) symtab anyway.
11724      There is later code that will assign the main symtab to all symbols
11725      that don't have one.  We need to handle the case of a symbol with a
11726      missing symtab (DW_AT_decl_file) anyway.  */
11727 }
11728
11729 /* Process DW_TAG_type_unit.
11730    For TUs we want to skip the first top level sibling if it's not the
11731    actual type being defined by this TU.  In this case the first top
11732    level sibling is there to provide context only.  */
11733
11734 static void
11735 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11736 {
11737   struct die_info *child_die;
11738
11739   prepare_one_comp_unit (cu, die, language_minimal);
11740
11741   /* Initialize (or reinitialize) the machinery for building symtabs.
11742      We do this before processing child DIEs, so that the line header table
11743      is available for DW_AT_decl_file.  */
11744   cu->setup_type_unit_groups (die);
11745
11746   if (die->child != NULL)
11747     {
11748       child_die = die->child;
11749       while (child_die && child_die->tag)
11750         {
11751           process_die (child_die, cu);
11752           child_die = sibling_die (child_die);
11753         }
11754     }
11755 }
11756 \f
11757 /* DWO/DWP files.
11758
11759    http://gcc.gnu.org/wiki/DebugFission
11760    http://gcc.gnu.org/wiki/DebugFissionDWP
11761
11762    To simplify handling of both DWO files ("object" files with the DWARF info)
11763    and DWP files (a file with the DWOs packaged up into one file), we treat
11764    DWP files as having a collection of virtual DWO files.  */
11765
11766 static hashval_t
11767 hash_dwo_file (const void *item)
11768 {
11769   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11770   hashval_t hash;
11771
11772   hash = htab_hash_string (dwo_file->dwo_name);
11773   if (dwo_file->comp_dir != NULL)
11774     hash += htab_hash_string (dwo_file->comp_dir);
11775   return hash;
11776 }
11777
11778 static int
11779 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11780 {
11781   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11782   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11783
11784   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11785     return 0;
11786   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11787     return lhs->comp_dir == rhs->comp_dir;
11788   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11789 }
11790
11791 /* Allocate a hash table for DWO files.  */
11792
11793 static htab_t
11794 allocate_dwo_file_hash_table (struct objfile *objfile)
11795 {
11796   return htab_create_alloc_ex (41,
11797                                hash_dwo_file,
11798                                eq_dwo_file,
11799                                NULL,
11800                                &objfile->objfile_obstack,
11801                                hashtab_obstack_allocate,
11802                                dummy_obstack_deallocate);
11803 }
11804
11805 /* Lookup DWO file DWO_NAME.  */
11806
11807 static void **
11808 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11809                       const char *dwo_name,
11810                       const char *comp_dir)
11811 {
11812   struct dwo_file find_entry;
11813   void **slot;
11814
11815   if (dwarf2_per_objfile->dwo_files == NULL)
11816     dwarf2_per_objfile->dwo_files
11817       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11818
11819   memset (&find_entry, 0, sizeof (find_entry));
11820   find_entry.dwo_name = dwo_name;
11821   find_entry.comp_dir = comp_dir;
11822   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11823
11824   return slot;
11825 }
11826
11827 static hashval_t
11828 hash_dwo_unit (const void *item)
11829 {
11830   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11831
11832   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11833   return dwo_unit->signature;
11834 }
11835
11836 static int
11837 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11838 {
11839   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11840   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11841
11842   /* The signature is assumed to be unique within the DWO file.
11843      So while object file CU dwo_id's always have the value zero,
11844      that's OK, assuming each object file DWO file has only one CU,
11845      and that's the rule for now.  */
11846   return lhs->signature == rhs->signature;
11847 }
11848
11849 /* Allocate a hash table for DWO CUs,TUs.
11850    There is one of these tables for each of CUs,TUs for each DWO file.  */
11851
11852 static htab_t
11853 allocate_dwo_unit_table (struct objfile *objfile)
11854 {
11855   /* Start out with a pretty small number.
11856      Generally DWO files contain only one CU and maybe some TUs.  */
11857   return htab_create_alloc_ex (3,
11858                                hash_dwo_unit,
11859                                eq_dwo_unit,
11860                                NULL,
11861                                &objfile->objfile_obstack,
11862                                hashtab_obstack_allocate,
11863                                dummy_obstack_deallocate);
11864 }
11865
11866 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11867
11868 struct create_dwo_cu_data
11869 {
11870   struct dwo_file *dwo_file;
11871   struct dwo_unit dwo_unit;
11872 };
11873
11874 /* die_reader_func for create_dwo_cu.  */
11875
11876 static void
11877 create_dwo_cu_reader (const struct die_reader_specs *reader,
11878                       const gdb_byte *info_ptr,
11879                       struct die_info *comp_unit_die,
11880                       int has_children,
11881                       void *datap)
11882 {
11883   struct dwarf2_cu *cu = reader->cu;
11884   sect_offset sect_off = cu->per_cu->sect_off;
11885   struct dwarf2_section_info *section = cu->per_cu->section;
11886   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11887   struct dwo_file *dwo_file = data->dwo_file;
11888   struct dwo_unit *dwo_unit = &data->dwo_unit;
11889   struct attribute *attr;
11890
11891   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11892   if (attr == NULL)
11893     {
11894       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11895                    " its dwo_id [in module %s]"),
11896                  sect_offset_str (sect_off), dwo_file->dwo_name);
11897       return;
11898     }
11899
11900   dwo_unit->dwo_file = dwo_file;
11901   dwo_unit->signature = DW_UNSND (attr);
11902   dwo_unit->section = section;
11903   dwo_unit->sect_off = sect_off;
11904   dwo_unit->length = cu->per_cu->length;
11905
11906   if (dwarf_read_debug)
11907     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11908                         sect_offset_str (sect_off),
11909                         hex_string (dwo_unit->signature));
11910 }
11911
11912 /* Create the dwo_units for the CUs in a DWO_FILE.
11913    Note: This function processes DWO files only, not DWP files.  */
11914
11915 static void
11916 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11917                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11918                        htab_t &cus_htab)
11919 {
11920   struct objfile *objfile = dwarf2_per_objfile->objfile;
11921   const gdb_byte *info_ptr, *end_ptr;
11922
11923   dwarf2_read_section (objfile, &section);
11924   info_ptr = section.buffer;
11925
11926   if (info_ptr == NULL)
11927     return;
11928
11929   if (dwarf_read_debug)
11930     {
11931       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11932                           get_section_name (&section),
11933                           get_section_file_name (&section));
11934     }
11935
11936   end_ptr = info_ptr + section.size;
11937   while (info_ptr < end_ptr)
11938     {
11939       struct dwarf2_per_cu_data per_cu;
11940       struct create_dwo_cu_data create_dwo_cu_data;
11941       struct dwo_unit *dwo_unit;
11942       void **slot;
11943       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11944
11945       memset (&create_dwo_cu_data.dwo_unit, 0,
11946               sizeof (create_dwo_cu_data.dwo_unit));
11947       memset (&per_cu, 0, sizeof (per_cu));
11948       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11949       per_cu.is_debug_types = 0;
11950       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11951       per_cu.section = &section;
11952       create_dwo_cu_data.dwo_file = &dwo_file;
11953
11954       init_cutu_and_read_dies_no_follow (
11955           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11956       info_ptr += per_cu.length;
11957
11958       // If the unit could not be parsed, skip it.
11959       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11960         continue;
11961
11962       if (cus_htab == NULL)
11963         cus_htab = allocate_dwo_unit_table (objfile);
11964
11965       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11966       *dwo_unit = create_dwo_cu_data.dwo_unit;
11967       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11968       gdb_assert (slot != NULL);
11969       if (*slot != NULL)
11970         {
11971           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11972           sect_offset dup_sect_off = dup_cu->sect_off;
11973
11974           complaint (_("debug cu entry at offset %s is duplicate to"
11975                        " the entry at offset %s, signature %s"),
11976                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11977                      hex_string (dwo_unit->signature));
11978         }
11979       *slot = (void *)dwo_unit;
11980     }
11981 }
11982
11983 /* DWP file .debug_{cu,tu}_index section format:
11984    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11985
11986    DWP Version 1:
11987
11988    Both index sections have the same format, and serve to map a 64-bit
11989    signature to a set of section numbers.  Each section begins with a header,
11990    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11991    indexes, and a pool of 32-bit section numbers.  The index sections will be
11992    aligned at 8-byte boundaries in the file.
11993
11994    The index section header consists of:
11995
11996     V, 32 bit version number
11997     -, 32 bits unused
11998     N, 32 bit number of compilation units or type units in the index
11999     M, 32 bit number of slots in the hash table
12000
12001    Numbers are recorded using the byte order of the application binary.
12002
12003    The hash table begins at offset 16 in the section, and consists of an array
12004    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12005    order of the application binary).  Unused slots in the hash table are 0.
12006    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12007
12008    The parallel table begins immediately after the hash table
12009    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12010    array of 32-bit indexes (using the byte order of the application binary),
12011    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12012    table contains a 32-bit index into the pool of section numbers.  For unused
12013    hash table slots, the corresponding entry in the parallel table will be 0.
12014
12015    The pool of section numbers begins immediately following the hash table
12016    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12017    section numbers consists of an array of 32-bit words (using the byte order
12018    of the application binary).  Each item in the array is indexed starting
12019    from 0.  The hash table entry provides the index of the first section
12020    number in the set.  Additional section numbers in the set follow, and the
12021    set is terminated by a 0 entry (section number 0 is not used in ELF).
12022
12023    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12024    section must be the first entry in the set, and the .debug_abbrev.dwo must
12025    be the second entry. Other members of the set may follow in any order.
12026
12027    ---
12028
12029    DWP Version 2:
12030
12031    DWP Version 2 combines all the .debug_info, etc. sections into one,
12032    and the entries in the index tables are now offsets into these sections.
12033    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12034    section.
12035
12036    Index Section Contents:
12037     Header
12038     Hash Table of Signatures   dwp_hash_table.hash_table
12039     Parallel Table of Indices  dwp_hash_table.unit_table
12040     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12041     Table of Section Sizes     dwp_hash_table.v2.sizes
12042
12043    The index section header consists of:
12044
12045     V, 32 bit version number
12046     L, 32 bit number of columns in the table of section offsets
12047     N, 32 bit number of compilation units or type units in the index
12048     M, 32 bit number of slots in the hash table
12049
12050    Numbers are recorded using the byte order of the application binary.
12051
12052    The hash table has the same format as version 1.
12053    The parallel table of indices has the same format as version 1,
12054    except that the entries are origin-1 indices into the table of sections
12055    offsets and the table of section sizes.
12056
12057    The table of offsets begins immediately following the parallel table
12058    (at offset 16 + 12 * M from the beginning of the section).  The table is
12059    a two-dimensional array of 32-bit words (using the byte order of the
12060    application binary), with L columns and N+1 rows, in row-major order.
12061    Each row in the array is indexed starting from 0.  The first row provides
12062    a key to the remaining rows: each column in this row provides an identifier
12063    for a debug section, and the offsets in the same column of subsequent rows
12064    refer to that section.  The section identifiers are:
12065
12066     DW_SECT_INFO         1  .debug_info.dwo
12067     DW_SECT_TYPES        2  .debug_types.dwo
12068     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12069     DW_SECT_LINE         4  .debug_line.dwo
12070     DW_SECT_LOC          5  .debug_loc.dwo
12071     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12072     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12073     DW_SECT_MACRO        8  .debug_macro.dwo
12074
12075    The offsets provided by the CU and TU index sections are the base offsets
12076    for the contributions made by each CU or TU to the corresponding section
12077    in the package file.  Each CU and TU header contains an abbrev_offset
12078    field, used to find the abbreviations table for that CU or TU within the
12079    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12080    be interpreted as relative to the base offset given in the index section.
12081    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12082    should be interpreted as relative to the base offset for .debug_line.dwo,
12083    and offsets into other debug sections obtained from DWARF attributes should
12084    also be interpreted as relative to the corresponding base offset.
12085
12086    The table of sizes begins immediately following the table of offsets.
12087    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12088    with L columns and N rows, in row-major order.  Each row in the array is
12089    indexed starting from 1 (row 0 is shared by the two tables).
12090
12091    ---
12092
12093    Hash table lookup is handled the same in version 1 and 2:
12094
12095    We assume that N and M will not exceed 2^32 - 1.
12096    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12097
12098    Given a 64-bit compilation unit signature or a type signature S, an entry
12099    in the hash table is located as follows:
12100
12101    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12102       the low-order k bits all set to 1.
12103
12104    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12105
12106    3) If the hash table entry at index H matches the signature, use that
12107       entry.  If the hash table entry at index H is unused (all zeroes),
12108       terminate the search: the signature is not present in the table.
12109
12110    4) Let H = (H + H') modulo M. Repeat at Step 3.
12111
12112    Because M > N and H' and M are relatively prime, the search is guaranteed
12113    to stop at an unused slot or find the match.  */
12114
12115 /* Create a hash table to map DWO IDs to their CU/TU entry in
12116    .debug_{info,types}.dwo in DWP_FILE.
12117    Returns NULL if there isn't one.
12118    Note: This function processes DWP files only, not DWO files.  */
12119
12120 static struct dwp_hash_table *
12121 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12122                        struct dwp_file *dwp_file, int is_debug_types)
12123 {
12124   struct objfile *objfile = dwarf2_per_objfile->objfile;
12125   bfd *dbfd = dwp_file->dbfd.get ();
12126   const gdb_byte *index_ptr, *index_end;
12127   struct dwarf2_section_info *index;
12128   uint32_t version, nr_columns, nr_units, nr_slots;
12129   struct dwp_hash_table *htab;
12130
12131   if (is_debug_types)
12132     index = &dwp_file->sections.tu_index;
12133   else
12134     index = &dwp_file->sections.cu_index;
12135
12136   if (dwarf2_section_empty_p (index))
12137     return NULL;
12138   dwarf2_read_section (objfile, index);
12139
12140   index_ptr = index->buffer;
12141   index_end = index_ptr + index->size;
12142
12143   version = read_4_bytes (dbfd, index_ptr);
12144   index_ptr += 4;
12145   if (version == 2)
12146     nr_columns = read_4_bytes (dbfd, index_ptr);
12147   else
12148     nr_columns = 0;
12149   index_ptr += 4;
12150   nr_units = read_4_bytes (dbfd, index_ptr);
12151   index_ptr += 4;
12152   nr_slots = read_4_bytes (dbfd, index_ptr);
12153   index_ptr += 4;
12154
12155   if (version != 1 && version != 2)
12156     {
12157       error (_("Dwarf Error: unsupported DWP file version (%s)"
12158                " [in module %s]"),
12159              pulongest (version), dwp_file->name);
12160     }
12161   if (nr_slots != (nr_slots & -nr_slots))
12162     {
12163       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12164                " is not power of 2 [in module %s]"),
12165              pulongest (nr_slots), dwp_file->name);
12166     }
12167
12168   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12169   htab->version = version;
12170   htab->nr_columns = nr_columns;
12171   htab->nr_units = nr_units;
12172   htab->nr_slots = nr_slots;
12173   htab->hash_table = index_ptr;
12174   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12175
12176   /* Exit early if the table is empty.  */
12177   if (nr_slots == 0 || nr_units == 0
12178       || (version == 2 && nr_columns == 0))
12179     {
12180       /* All must be zero.  */
12181       if (nr_slots != 0 || nr_units != 0
12182           || (version == 2 && nr_columns != 0))
12183         {
12184           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12185                        " all zero [in modules %s]"),
12186                      dwp_file->name);
12187         }
12188       return htab;
12189     }
12190
12191   if (version == 1)
12192     {
12193       htab->section_pool.v1.indices =
12194         htab->unit_table + sizeof (uint32_t) * nr_slots;
12195       /* It's harder to decide whether the section is too small in v1.
12196          V1 is deprecated anyway so we punt.  */
12197     }
12198   else
12199     {
12200       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12201       int *ids = htab->section_pool.v2.section_ids;
12202       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12203       /* Reverse map for error checking.  */
12204       int ids_seen[DW_SECT_MAX + 1];
12205       int i;
12206
12207       if (nr_columns < 2)
12208         {
12209           error (_("Dwarf Error: bad DWP hash table, too few columns"
12210                    " in section table [in module %s]"),
12211                  dwp_file->name);
12212         }
12213       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12214         {
12215           error (_("Dwarf Error: bad DWP hash table, too many columns"
12216                    " in section table [in module %s]"),
12217                  dwp_file->name);
12218         }
12219       memset (ids, 255, sizeof_ids);
12220       memset (ids_seen, 255, sizeof (ids_seen));
12221       for (i = 0; i < nr_columns; ++i)
12222         {
12223           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12224
12225           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12226             {
12227               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12228                        " in section table [in module %s]"),
12229                      id, dwp_file->name);
12230             }
12231           if (ids_seen[id] != -1)
12232             {
12233               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12234                        " id %d in section table [in module %s]"),
12235                      id, dwp_file->name);
12236             }
12237           ids_seen[id] = i;
12238           ids[i] = id;
12239         }
12240       /* Must have exactly one info or types section.  */
12241       if (((ids_seen[DW_SECT_INFO] != -1)
12242            + (ids_seen[DW_SECT_TYPES] != -1))
12243           != 1)
12244         {
12245           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12246                    " DWO info/types section [in module %s]"),
12247                  dwp_file->name);
12248         }
12249       /* Must have an abbrev section.  */
12250       if (ids_seen[DW_SECT_ABBREV] == -1)
12251         {
12252           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12253                    " section [in module %s]"),
12254                  dwp_file->name);
12255         }
12256       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12257       htab->section_pool.v2.sizes =
12258         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12259                                          * nr_units * nr_columns);
12260       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12261                                           * nr_units * nr_columns))
12262           > index_end)
12263         {
12264           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12265                    " [in module %s]"),
12266                  dwp_file->name);
12267         }
12268     }
12269
12270   return htab;
12271 }
12272
12273 /* Update SECTIONS with the data from SECTP.
12274
12275    This function is like the other "locate" section routines that are
12276    passed to bfd_map_over_sections, but in this context the sections to
12277    read comes from the DWP V1 hash table, not the full ELF section table.
12278
12279    The result is non-zero for success, or zero if an error was found.  */
12280
12281 static int
12282 locate_v1_virtual_dwo_sections (asection *sectp,
12283                                 struct virtual_v1_dwo_sections *sections)
12284 {
12285   const struct dwop_section_names *names = &dwop_section_names;
12286
12287   if (section_is_p (sectp->name, &names->abbrev_dwo))
12288     {
12289       /* There can be only one.  */
12290       if (sections->abbrev.s.section != NULL)
12291         return 0;
12292       sections->abbrev.s.section = sectp;
12293       sections->abbrev.size = bfd_get_section_size (sectp);
12294     }
12295   else if (section_is_p (sectp->name, &names->info_dwo)
12296            || section_is_p (sectp->name, &names->types_dwo))
12297     {
12298       /* There can be only one.  */
12299       if (sections->info_or_types.s.section != NULL)
12300         return 0;
12301       sections->info_or_types.s.section = sectp;
12302       sections->info_or_types.size = bfd_get_section_size (sectp);
12303     }
12304   else if (section_is_p (sectp->name, &names->line_dwo))
12305     {
12306       /* There can be only one.  */
12307       if (sections->line.s.section != NULL)
12308         return 0;
12309       sections->line.s.section = sectp;
12310       sections->line.size = bfd_get_section_size (sectp);
12311     }
12312   else if (section_is_p (sectp->name, &names->loc_dwo))
12313     {
12314       /* There can be only one.  */
12315       if (sections->loc.s.section != NULL)
12316         return 0;
12317       sections->loc.s.section = sectp;
12318       sections->loc.size = bfd_get_section_size (sectp);
12319     }
12320   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12321     {
12322       /* There can be only one.  */
12323       if (sections->macinfo.s.section != NULL)
12324         return 0;
12325       sections->macinfo.s.section = sectp;
12326       sections->macinfo.size = bfd_get_section_size (sectp);
12327     }
12328   else if (section_is_p (sectp->name, &names->macro_dwo))
12329     {
12330       /* There can be only one.  */
12331       if (sections->macro.s.section != NULL)
12332         return 0;
12333       sections->macro.s.section = sectp;
12334       sections->macro.size = bfd_get_section_size (sectp);
12335     }
12336   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12337     {
12338       /* There can be only one.  */
12339       if (sections->str_offsets.s.section != NULL)
12340         return 0;
12341       sections->str_offsets.s.section = sectp;
12342       sections->str_offsets.size = bfd_get_section_size (sectp);
12343     }
12344   else
12345     {
12346       /* No other kind of section is valid.  */
12347       return 0;
12348     }
12349
12350   return 1;
12351 }
12352
12353 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12354    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12355    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12356    This is for DWP version 1 files.  */
12357
12358 static struct dwo_unit *
12359 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12360                            struct dwp_file *dwp_file,
12361                            uint32_t unit_index,
12362                            const char *comp_dir,
12363                            ULONGEST signature, int is_debug_types)
12364 {
12365   struct objfile *objfile = dwarf2_per_objfile->objfile;
12366   const struct dwp_hash_table *dwp_htab =
12367     is_debug_types ? dwp_file->tus : dwp_file->cus;
12368   bfd *dbfd = dwp_file->dbfd.get ();
12369   const char *kind = is_debug_types ? "TU" : "CU";
12370   struct dwo_file *dwo_file;
12371   struct dwo_unit *dwo_unit;
12372   struct virtual_v1_dwo_sections sections;
12373   void **dwo_file_slot;
12374   int i;
12375
12376   gdb_assert (dwp_file->version == 1);
12377
12378   if (dwarf_read_debug)
12379     {
12380       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12381                           kind,
12382                           pulongest (unit_index), hex_string (signature),
12383                           dwp_file->name);
12384     }
12385
12386   /* Fetch the sections of this DWO unit.
12387      Put a limit on the number of sections we look for so that bad data
12388      doesn't cause us to loop forever.  */
12389
12390 #define MAX_NR_V1_DWO_SECTIONS \
12391   (1 /* .debug_info or .debug_types */ \
12392    + 1 /* .debug_abbrev */ \
12393    + 1 /* .debug_line */ \
12394    + 1 /* .debug_loc */ \
12395    + 1 /* .debug_str_offsets */ \
12396    + 1 /* .debug_macro or .debug_macinfo */ \
12397    + 1 /* trailing zero */)
12398
12399   memset (&sections, 0, sizeof (sections));
12400
12401   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12402     {
12403       asection *sectp;
12404       uint32_t section_nr =
12405         read_4_bytes (dbfd,
12406                       dwp_htab->section_pool.v1.indices
12407                       + (unit_index + i) * sizeof (uint32_t));
12408
12409       if (section_nr == 0)
12410         break;
12411       if (section_nr >= dwp_file->num_sections)
12412         {
12413           error (_("Dwarf Error: bad DWP hash table, section number too large"
12414                    " [in module %s]"),
12415                  dwp_file->name);
12416         }
12417
12418       sectp = dwp_file->elf_sections[section_nr];
12419       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12420         {
12421           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12422                    " [in module %s]"),
12423                  dwp_file->name);
12424         }
12425     }
12426
12427   if (i < 2
12428       || dwarf2_section_empty_p (&sections.info_or_types)
12429       || dwarf2_section_empty_p (&sections.abbrev))
12430     {
12431       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12432                " [in module %s]"),
12433              dwp_file->name);
12434     }
12435   if (i == MAX_NR_V1_DWO_SECTIONS)
12436     {
12437       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12438                " [in module %s]"),
12439              dwp_file->name);
12440     }
12441
12442   /* It's easier for the rest of the code if we fake a struct dwo_file and
12443      have dwo_unit "live" in that.  At least for now.
12444
12445      The DWP file can be made up of a random collection of CUs and TUs.
12446      However, for each CU + set of TUs that came from the same original DWO
12447      file, we can combine them back into a virtual DWO file to save space
12448      (fewer struct dwo_file objects to allocate).  Remember that for really
12449      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12450
12451   std::string virtual_dwo_name =
12452     string_printf ("virtual-dwo/%d-%d-%d-%d",
12453                    get_section_id (&sections.abbrev),
12454                    get_section_id (&sections.line),
12455                    get_section_id (&sections.loc),
12456                    get_section_id (&sections.str_offsets));
12457   /* Can we use an existing virtual DWO file?  */
12458   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12459                                         virtual_dwo_name.c_str (),
12460                                         comp_dir);
12461   /* Create one if necessary.  */
12462   if (*dwo_file_slot == NULL)
12463     {
12464       if (dwarf_read_debug)
12465         {
12466           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12467                               virtual_dwo_name.c_str ());
12468         }
12469       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12470       dwo_file->dwo_name
12471         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12472                                         virtual_dwo_name.c_str (),
12473                                         virtual_dwo_name.size ());
12474       dwo_file->comp_dir = comp_dir;
12475       dwo_file->sections.abbrev = sections.abbrev;
12476       dwo_file->sections.line = sections.line;
12477       dwo_file->sections.loc = sections.loc;
12478       dwo_file->sections.macinfo = sections.macinfo;
12479       dwo_file->sections.macro = sections.macro;
12480       dwo_file->sections.str_offsets = sections.str_offsets;
12481       /* The "str" section is global to the entire DWP file.  */
12482       dwo_file->sections.str = dwp_file->sections.str;
12483       /* The info or types section is assigned below to dwo_unit,
12484          there's no need to record it in dwo_file.
12485          Also, we can't simply record type sections in dwo_file because
12486          we record a pointer into the vector in dwo_unit.  As we collect more
12487          types we'll grow the vector and eventually have to reallocate space
12488          for it, invalidating all copies of pointers into the previous
12489          contents.  */
12490       *dwo_file_slot = dwo_file;
12491     }
12492   else
12493     {
12494       if (dwarf_read_debug)
12495         {
12496           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12497                               virtual_dwo_name.c_str ());
12498         }
12499       dwo_file = (struct dwo_file *) *dwo_file_slot;
12500     }
12501
12502   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12503   dwo_unit->dwo_file = dwo_file;
12504   dwo_unit->signature = signature;
12505   dwo_unit->section =
12506     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12507   *dwo_unit->section = sections.info_or_types;
12508   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12509
12510   return dwo_unit;
12511 }
12512
12513 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12514    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12515    piece within that section used by a TU/CU, return a virtual section
12516    of just that piece.  */
12517
12518 static struct dwarf2_section_info
12519 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12520                        struct dwarf2_section_info *section,
12521                        bfd_size_type offset, bfd_size_type size)
12522 {
12523   struct dwarf2_section_info result;
12524   asection *sectp;
12525
12526   gdb_assert (section != NULL);
12527   gdb_assert (!section->is_virtual);
12528
12529   memset (&result, 0, sizeof (result));
12530   result.s.containing_section = section;
12531   result.is_virtual = 1;
12532
12533   if (size == 0)
12534     return result;
12535
12536   sectp = get_section_bfd_section (section);
12537
12538   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12539      bounds of the real section.  This is a pretty-rare event, so just
12540      flag an error (easier) instead of a warning and trying to cope.  */
12541   if (sectp == NULL
12542       || offset + size > bfd_get_section_size (sectp))
12543     {
12544       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12545                " in section %s [in module %s]"),
12546              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12547              objfile_name (dwarf2_per_objfile->objfile));
12548     }
12549
12550   result.virtual_offset = offset;
12551   result.size = size;
12552   return result;
12553 }
12554
12555 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12556    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12557    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12558    This is for DWP version 2 files.  */
12559
12560 static struct dwo_unit *
12561 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12562                            struct dwp_file *dwp_file,
12563                            uint32_t unit_index,
12564                            const char *comp_dir,
12565                            ULONGEST signature, int is_debug_types)
12566 {
12567   struct objfile *objfile = dwarf2_per_objfile->objfile;
12568   const struct dwp_hash_table *dwp_htab =
12569     is_debug_types ? dwp_file->tus : dwp_file->cus;
12570   bfd *dbfd = dwp_file->dbfd.get ();
12571   const char *kind = is_debug_types ? "TU" : "CU";
12572   struct dwo_file *dwo_file;
12573   struct dwo_unit *dwo_unit;
12574   struct virtual_v2_dwo_sections sections;
12575   void **dwo_file_slot;
12576   int i;
12577
12578   gdb_assert (dwp_file->version == 2);
12579
12580   if (dwarf_read_debug)
12581     {
12582       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12583                           kind,
12584                           pulongest (unit_index), hex_string (signature),
12585                           dwp_file->name);
12586     }
12587
12588   /* Fetch the section offsets of this DWO unit.  */
12589
12590   memset (&sections, 0, sizeof (sections));
12591
12592   for (i = 0; i < dwp_htab->nr_columns; ++i)
12593     {
12594       uint32_t offset = read_4_bytes (dbfd,
12595                                       dwp_htab->section_pool.v2.offsets
12596                                       + (((unit_index - 1) * dwp_htab->nr_columns
12597                                           + i)
12598                                          * sizeof (uint32_t)));
12599       uint32_t size = read_4_bytes (dbfd,
12600                                     dwp_htab->section_pool.v2.sizes
12601                                     + (((unit_index - 1) * dwp_htab->nr_columns
12602                                         + i)
12603                                        * sizeof (uint32_t)));
12604
12605       switch (dwp_htab->section_pool.v2.section_ids[i])
12606         {
12607         case DW_SECT_INFO:
12608         case DW_SECT_TYPES:
12609           sections.info_or_types_offset = offset;
12610           sections.info_or_types_size = size;
12611           break;
12612         case DW_SECT_ABBREV:
12613           sections.abbrev_offset = offset;
12614           sections.abbrev_size = size;
12615           break;
12616         case DW_SECT_LINE:
12617           sections.line_offset = offset;
12618           sections.line_size = size;
12619           break;
12620         case DW_SECT_LOC:
12621           sections.loc_offset = offset;
12622           sections.loc_size = size;
12623           break;
12624         case DW_SECT_STR_OFFSETS:
12625           sections.str_offsets_offset = offset;
12626           sections.str_offsets_size = size;
12627           break;
12628         case DW_SECT_MACINFO:
12629           sections.macinfo_offset = offset;
12630           sections.macinfo_size = size;
12631           break;
12632         case DW_SECT_MACRO:
12633           sections.macro_offset = offset;
12634           sections.macro_size = size;
12635           break;
12636         }
12637     }
12638
12639   /* It's easier for the rest of the code if we fake a struct dwo_file and
12640      have dwo_unit "live" in that.  At least for now.
12641
12642      The DWP file can be made up of a random collection of CUs and TUs.
12643      However, for each CU + set of TUs that came from the same original DWO
12644      file, we can combine them back into a virtual DWO file to save space
12645      (fewer struct dwo_file objects to allocate).  Remember that for really
12646      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12647
12648   std::string virtual_dwo_name =
12649     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12650                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12651                    (long) (sections.line_size ? sections.line_offset : 0),
12652                    (long) (sections.loc_size ? sections.loc_offset : 0),
12653                    (long) (sections.str_offsets_size
12654                            ? sections.str_offsets_offset : 0));
12655   /* Can we use an existing virtual DWO file?  */
12656   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12657                                         virtual_dwo_name.c_str (),
12658                                         comp_dir);
12659   /* Create one if necessary.  */
12660   if (*dwo_file_slot == NULL)
12661     {
12662       if (dwarf_read_debug)
12663         {
12664           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12665                               virtual_dwo_name.c_str ());
12666         }
12667       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12668       dwo_file->dwo_name
12669         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12670                                         virtual_dwo_name.c_str (),
12671                                         virtual_dwo_name.size ());
12672       dwo_file->comp_dir = comp_dir;
12673       dwo_file->sections.abbrev =
12674         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12675                                sections.abbrev_offset, sections.abbrev_size);
12676       dwo_file->sections.line =
12677         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12678                                sections.line_offset, sections.line_size);
12679       dwo_file->sections.loc =
12680         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12681                                sections.loc_offset, sections.loc_size);
12682       dwo_file->sections.macinfo =
12683         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12684                                sections.macinfo_offset, sections.macinfo_size);
12685       dwo_file->sections.macro =
12686         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12687                                sections.macro_offset, sections.macro_size);
12688       dwo_file->sections.str_offsets =
12689         create_dwp_v2_section (dwarf2_per_objfile,
12690                                &dwp_file->sections.str_offsets,
12691                                sections.str_offsets_offset,
12692                                sections.str_offsets_size);
12693       /* The "str" section is global to the entire DWP file.  */
12694       dwo_file->sections.str = dwp_file->sections.str;
12695       /* The info or types section is assigned below to dwo_unit,
12696          there's no need to record it in dwo_file.
12697          Also, we can't simply record type sections in dwo_file because
12698          we record a pointer into the vector in dwo_unit.  As we collect more
12699          types we'll grow the vector and eventually have to reallocate space
12700          for it, invalidating all copies of pointers into the previous
12701          contents.  */
12702       *dwo_file_slot = dwo_file;
12703     }
12704   else
12705     {
12706       if (dwarf_read_debug)
12707         {
12708           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12709                               virtual_dwo_name.c_str ());
12710         }
12711       dwo_file = (struct dwo_file *) *dwo_file_slot;
12712     }
12713
12714   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12715   dwo_unit->dwo_file = dwo_file;
12716   dwo_unit->signature = signature;
12717   dwo_unit->section =
12718     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12719   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12720                                               is_debug_types
12721                                               ? &dwp_file->sections.types
12722                                               : &dwp_file->sections.info,
12723                                               sections.info_or_types_offset,
12724                                               sections.info_or_types_size);
12725   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12726
12727   return dwo_unit;
12728 }
12729
12730 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12731    Returns NULL if the signature isn't found.  */
12732
12733 static struct dwo_unit *
12734 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12735                         struct dwp_file *dwp_file, const char *comp_dir,
12736                         ULONGEST signature, int is_debug_types)
12737 {
12738   const struct dwp_hash_table *dwp_htab =
12739     is_debug_types ? dwp_file->tus : dwp_file->cus;
12740   bfd *dbfd = dwp_file->dbfd.get ();
12741   uint32_t mask = dwp_htab->nr_slots - 1;
12742   uint32_t hash = signature & mask;
12743   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12744   unsigned int i;
12745   void **slot;
12746   struct dwo_unit find_dwo_cu;
12747
12748   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12749   find_dwo_cu.signature = signature;
12750   slot = htab_find_slot (is_debug_types
12751                          ? dwp_file->loaded_tus
12752                          : dwp_file->loaded_cus,
12753                          &find_dwo_cu, INSERT);
12754
12755   if (*slot != NULL)
12756     return (struct dwo_unit *) *slot;
12757
12758   /* Use a for loop so that we don't loop forever on bad debug info.  */
12759   for (i = 0; i < dwp_htab->nr_slots; ++i)
12760     {
12761       ULONGEST signature_in_table;
12762
12763       signature_in_table =
12764         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12765       if (signature_in_table == signature)
12766         {
12767           uint32_t unit_index =
12768             read_4_bytes (dbfd,
12769                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12770
12771           if (dwp_file->version == 1)
12772             {
12773               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12774                                                  dwp_file, unit_index,
12775                                                  comp_dir, signature,
12776                                                  is_debug_types);
12777             }
12778           else
12779             {
12780               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12781                                                  dwp_file, unit_index,
12782                                                  comp_dir, signature,
12783                                                  is_debug_types);
12784             }
12785           return (struct dwo_unit *) *slot;
12786         }
12787       if (signature_in_table == 0)
12788         return NULL;
12789       hash = (hash + hash2) & mask;
12790     }
12791
12792   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12793            " [in module %s]"),
12794          dwp_file->name);
12795 }
12796
12797 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12798    Open the file specified by FILE_NAME and hand it off to BFD for
12799    preliminary analysis.  Return a newly initialized bfd *, which
12800    includes a canonicalized copy of FILE_NAME.
12801    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12802    SEARCH_CWD is true if the current directory is to be searched.
12803    It will be searched before debug-file-directory.
12804    If successful, the file is added to the bfd include table of the
12805    objfile's bfd (see gdb_bfd_record_inclusion).
12806    If unable to find/open the file, return NULL.
12807    NOTE: This function is derived from symfile_bfd_open.  */
12808
12809 static gdb_bfd_ref_ptr
12810 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12811                     const char *file_name, int is_dwp, int search_cwd)
12812 {
12813   int desc;
12814   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12815      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12816      to debug_file_directory.  */
12817   const char *search_path;
12818   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12819
12820   gdb::unique_xmalloc_ptr<char> search_path_holder;
12821   if (search_cwd)
12822     {
12823       if (*debug_file_directory != '\0')
12824         {
12825           search_path_holder.reset (concat (".", dirname_separator_string,
12826                                             debug_file_directory,
12827                                             (char *) NULL));
12828           search_path = search_path_holder.get ();
12829         }
12830       else
12831         search_path = ".";
12832     }
12833   else
12834     search_path = debug_file_directory;
12835
12836   openp_flags flags = OPF_RETURN_REALPATH;
12837   if (is_dwp)
12838     flags |= OPF_SEARCH_IN_PATH;
12839
12840   gdb::unique_xmalloc_ptr<char> absolute_name;
12841   desc = openp (search_path, flags, file_name,
12842                 O_RDONLY | O_BINARY, &absolute_name);
12843   if (desc < 0)
12844     return NULL;
12845
12846   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12847                                          gnutarget, desc));
12848   if (sym_bfd == NULL)
12849     return NULL;
12850   bfd_set_cacheable (sym_bfd.get (), 1);
12851
12852   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12853     return NULL;
12854
12855   /* Success.  Record the bfd as having been included by the objfile's bfd.
12856      This is important because things like demangled_names_hash lives in the
12857      objfile's per_bfd space and may have references to things like symbol
12858      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12859   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12860
12861   return sym_bfd;
12862 }
12863
12864 /* Try to open DWO file FILE_NAME.
12865    COMP_DIR is the DW_AT_comp_dir attribute.
12866    The result is the bfd handle of the file.
12867    If there is a problem finding or opening the file, return NULL.
12868    Upon success, the canonicalized path of the file is stored in the bfd,
12869    same as symfile_bfd_open.  */
12870
12871 static gdb_bfd_ref_ptr
12872 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12873                const char *file_name, const char *comp_dir)
12874 {
12875   if (IS_ABSOLUTE_PATH (file_name))
12876     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12877                                0 /*is_dwp*/, 0 /*search_cwd*/);
12878
12879   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12880
12881   if (comp_dir != NULL)
12882     {
12883       char *path_to_try = concat (comp_dir, SLASH_STRING,
12884                                   file_name, (char *) NULL);
12885
12886       /* NOTE: If comp_dir is a relative path, this will also try the
12887          search path, which seems useful.  */
12888       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12889                                                 path_to_try,
12890                                                 0 /*is_dwp*/,
12891                                                 1 /*search_cwd*/));
12892       xfree (path_to_try);
12893       if (abfd != NULL)
12894         return abfd;
12895     }
12896
12897   /* That didn't work, try debug-file-directory, which, despite its name,
12898      is a list of paths.  */
12899
12900   if (*debug_file_directory == '\0')
12901     return NULL;
12902
12903   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12904                              0 /*is_dwp*/, 1 /*search_cwd*/);
12905 }
12906
12907 /* This function is mapped across the sections and remembers the offset and
12908    size of each of the DWO debugging sections we are interested in.  */
12909
12910 static void
12911 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12912 {
12913   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12914   const struct dwop_section_names *names = &dwop_section_names;
12915
12916   if (section_is_p (sectp->name, &names->abbrev_dwo))
12917     {
12918       dwo_sections->abbrev.s.section = sectp;
12919       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12920     }
12921   else if (section_is_p (sectp->name, &names->info_dwo))
12922     {
12923       dwo_sections->info.s.section = sectp;
12924       dwo_sections->info.size = bfd_get_section_size (sectp);
12925     }
12926   else if (section_is_p (sectp->name, &names->line_dwo))
12927     {
12928       dwo_sections->line.s.section = sectp;
12929       dwo_sections->line.size = bfd_get_section_size (sectp);
12930     }
12931   else if (section_is_p (sectp->name, &names->loc_dwo))
12932     {
12933       dwo_sections->loc.s.section = sectp;
12934       dwo_sections->loc.size = bfd_get_section_size (sectp);
12935     }
12936   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12937     {
12938       dwo_sections->macinfo.s.section = sectp;
12939       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12940     }
12941   else if (section_is_p (sectp->name, &names->macro_dwo))
12942     {
12943       dwo_sections->macro.s.section = sectp;
12944       dwo_sections->macro.size = bfd_get_section_size (sectp);
12945     }
12946   else if (section_is_p (sectp->name, &names->str_dwo))
12947     {
12948       dwo_sections->str.s.section = sectp;
12949       dwo_sections->str.size = bfd_get_section_size (sectp);
12950     }
12951   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12952     {
12953       dwo_sections->str_offsets.s.section = sectp;
12954       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12955     }
12956   else if (section_is_p (sectp->name, &names->types_dwo))
12957     {
12958       struct dwarf2_section_info type_section;
12959
12960       memset (&type_section, 0, sizeof (type_section));
12961       type_section.s.section = sectp;
12962       type_section.size = bfd_get_section_size (sectp);
12963       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12964                      &type_section);
12965     }
12966 }
12967
12968 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12969    by PER_CU.  This is for the non-DWP case.
12970    The result is NULL if DWO_NAME can't be found.  */
12971
12972 static struct dwo_file *
12973 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12974                         const char *dwo_name, const char *comp_dir)
12975 {
12976   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12977   struct objfile *objfile = dwarf2_per_objfile->objfile;
12978
12979   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12980   if (dbfd == NULL)
12981     {
12982       if (dwarf_read_debug)
12983         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12984       return NULL;
12985     }
12986
12987   /* We use a unique pointer here, despite the obstack allocation,
12988      because a dwo_file needs some cleanup if it is abandoned.  */
12989   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12990                                         struct dwo_file));
12991   dwo_file->dwo_name = dwo_name;
12992   dwo_file->comp_dir = comp_dir;
12993   dwo_file->dbfd = dbfd.release ();
12994
12995   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12996                          &dwo_file->sections);
12997
12998   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12999                          dwo_file->cus);
13000
13001   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
13002                                  dwo_file->sections.types, dwo_file->tus);
13003
13004   if (dwarf_read_debug)
13005     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13006
13007   return dwo_file.release ();
13008 }
13009
13010 /* This function is mapped across the sections and remembers the offset and
13011    size of each of the DWP debugging sections common to version 1 and 2 that
13012    we are interested in.  */
13013
13014 static void
13015 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13016                                    void *dwp_file_ptr)
13017 {
13018   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13019   const struct dwop_section_names *names = &dwop_section_names;
13020   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13021
13022   /* Record the ELF section number for later lookup: this is what the
13023      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13024   gdb_assert (elf_section_nr < dwp_file->num_sections);
13025   dwp_file->elf_sections[elf_section_nr] = sectp;
13026
13027   /* Look for specific sections that we need.  */
13028   if (section_is_p (sectp->name, &names->str_dwo))
13029     {
13030       dwp_file->sections.str.s.section = sectp;
13031       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13032     }
13033   else if (section_is_p (sectp->name, &names->cu_index))
13034     {
13035       dwp_file->sections.cu_index.s.section = sectp;
13036       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13037     }
13038   else if (section_is_p (sectp->name, &names->tu_index))
13039     {
13040       dwp_file->sections.tu_index.s.section = sectp;
13041       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13042     }
13043 }
13044
13045 /* This function is mapped across the sections and remembers the offset and
13046    size of each of the DWP version 2 debugging sections that we are interested
13047    in.  This is split into a separate function because we don't know if we
13048    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13049
13050 static void
13051 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13052 {
13053   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13054   const struct dwop_section_names *names = &dwop_section_names;
13055   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13056
13057   /* Record the ELF section number for later lookup: this is what the
13058      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13059   gdb_assert (elf_section_nr < dwp_file->num_sections);
13060   dwp_file->elf_sections[elf_section_nr] = sectp;
13061
13062   /* Look for specific sections that we need.  */
13063   if (section_is_p (sectp->name, &names->abbrev_dwo))
13064     {
13065       dwp_file->sections.abbrev.s.section = sectp;
13066       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13067     }
13068   else if (section_is_p (sectp->name, &names->info_dwo))
13069     {
13070       dwp_file->sections.info.s.section = sectp;
13071       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13072     }
13073   else if (section_is_p (sectp->name, &names->line_dwo))
13074     {
13075       dwp_file->sections.line.s.section = sectp;
13076       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13077     }
13078   else if (section_is_p (sectp->name, &names->loc_dwo))
13079     {
13080       dwp_file->sections.loc.s.section = sectp;
13081       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13082     }
13083   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13084     {
13085       dwp_file->sections.macinfo.s.section = sectp;
13086       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13087     }
13088   else if (section_is_p (sectp->name, &names->macro_dwo))
13089     {
13090       dwp_file->sections.macro.s.section = sectp;
13091       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13092     }
13093   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13094     {
13095       dwp_file->sections.str_offsets.s.section = sectp;
13096       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13097     }
13098   else if (section_is_p (sectp->name, &names->types_dwo))
13099     {
13100       dwp_file->sections.types.s.section = sectp;
13101       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13102     }
13103 }
13104
13105 /* Hash function for dwp_file loaded CUs/TUs.  */
13106
13107 static hashval_t
13108 hash_dwp_loaded_cutus (const void *item)
13109 {
13110   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13111
13112   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13113   return dwo_unit->signature;
13114 }
13115
13116 /* Equality function for dwp_file loaded CUs/TUs.  */
13117
13118 static int
13119 eq_dwp_loaded_cutus (const void *a, const void *b)
13120 {
13121   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13122   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13123
13124   return dua->signature == dub->signature;
13125 }
13126
13127 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13128
13129 static htab_t
13130 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13131 {
13132   return htab_create_alloc_ex (3,
13133                                hash_dwp_loaded_cutus,
13134                                eq_dwp_loaded_cutus,
13135                                NULL,
13136                                &objfile->objfile_obstack,
13137                                hashtab_obstack_allocate,
13138                                dummy_obstack_deallocate);
13139 }
13140
13141 /* Try to open DWP file FILE_NAME.
13142    The result is the bfd handle of the file.
13143    If there is a problem finding or opening the file, return NULL.
13144    Upon success, the canonicalized path of the file is stored in the bfd,
13145    same as symfile_bfd_open.  */
13146
13147 static gdb_bfd_ref_ptr
13148 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13149                const char *file_name)
13150 {
13151   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13152                                             1 /*is_dwp*/,
13153                                             1 /*search_cwd*/));
13154   if (abfd != NULL)
13155     return abfd;
13156
13157   /* Work around upstream bug 15652.
13158      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13159      [Whether that's a "bug" is debatable, but it is getting in our way.]
13160      We have no real idea where the dwp file is, because gdb's realpath-ing
13161      of the executable's path may have discarded the needed info.
13162      [IWBN if the dwp file name was recorded in the executable, akin to
13163      .gnu_debuglink, but that doesn't exist yet.]
13164      Strip the directory from FILE_NAME and search again.  */
13165   if (*debug_file_directory != '\0')
13166     {
13167       /* Don't implicitly search the current directory here.
13168          If the user wants to search "." to handle this case,
13169          it must be added to debug-file-directory.  */
13170       return try_open_dwop_file (dwarf2_per_objfile,
13171                                  lbasename (file_name), 1 /*is_dwp*/,
13172                                  0 /*search_cwd*/);
13173     }
13174
13175   return NULL;
13176 }
13177
13178 /* Initialize the use of the DWP file for the current objfile.
13179    By convention the name of the DWP file is ${objfile}.dwp.
13180    The result is NULL if it can't be found.  */
13181
13182 static std::unique_ptr<struct dwp_file>
13183 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13184 {
13185   struct objfile *objfile = dwarf2_per_objfile->objfile;
13186
13187   /* Try to find first .dwp for the binary file before any symbolic links
13188      resolving.  */
13189
13190   /* If the objfile is a debug file, find the name of the real binary
13191      file and get the name of dwp file from there.  */
13192   std::string dwp_name;
13193   if (objfile->separate_debug_objfile_backlink != NULL)
13194     {
13195       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13196       const char *backlink_basename = lbasename (backlink->original_name);
13197
13198       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13199     }
13200   else
13201     dwp_name = objfile->original_name;
13202
13203   dwp_name += ".dwp";
13204
13205   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13206   if (dbfd == NULL
13207       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13208     {
13209       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13210       dwp_name = objfile_name (objfile);
13211       dwp_name += ".dwp";
13212       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13213     }
13214
13215   if (dbfd == NULL)
13216     {
13217       if (dwarf_read_debug)
13218         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13219       return std::unique_ptr<dwp_file> ();
13220     }
13221
13222   const char *name = bfd_get_filename (dbfd.get ());
13223   std::unique_ptr<struct dwp_file> dwp_file
13224     (new struct dwp_file (name, std::move (dbfd)));
13225
13226   dwp_file->num_sections = elf_numsections (dwp_file->dbfd);
13227   dwp_file->elf_sections =
13228     OBSTACK_CALLOC (&objfile->objfile_obstack,
13229                     dwp_file->num_sections, asection *);
13230
13231   bfd_map_over_sections (dwp_file->dbfd.get (),
13232                          dwarf2_locate_common_dwp_sections,
13233                          dwp_file.get ());
13234
13235   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13236                                          0);
13237
13238   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13239                                          1);
13240
13241   /* The DWP file version is stored in the hash table.  Oh well.  */
13242   if (dwp_file->cus && dwp_file->tus
13243       && dwp_file->cus->version != dwp_file->tus->version)
13244     {
13245       /* Technically speaking, we should try to limp along, but this is
13246          pretty bizarre.  We use pulongest here because that's the established
13247          portability solution (e.g, we cannot use %u for uint32_t).  */
13248       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13249                " TU version %s [in DWP file %s]"),
13250              pulongest (dwp_file->cus->version),
13251              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13252     }
13253
13254   if (dwp_file->cus)
13255     dwp_file->version = dwp_file->cus->version;
13256   else if (dwp_file->tus)
13257     dwp_file->version = dwp_file->tus->version;
13258   else
13259     dwp_file->version = 2;
13260
13261   if (dwp_file->version == 2)
13262     bfd_map_over_sections (dwp_file->dbfd.get (),
13263                            dwarf2_locate_v2_dwp_sections,
13264                            dwp_file.get ());
13265
13266   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13267   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13268
13269   if (dwarf_read_debug)
13270     {
13271       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13272       fprintf_unfiltered (gdb_stdlog,
13273                           "    %s CUs, %s TUs\n",
13274                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13275                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13276     }
13277
13278   return dwp_file;
13279 }
13280
13281 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13282
13283 static struct dwp_file *
13284 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13285 {
13286   if (! dwarf2_per_objfile->dwp_checked)
13287     {
13288       dwarf2_per_objfile->dwp_file
13289         = open_and_init_dwp_file (dwarf2_per_objfile);
13290       dwarf2_per_objfile->dwp_checked = 1;
13291     }
13292   return dwarf2_per_objfile->dwp_file.get ();
13293 }
13294
13295 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13296    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13297    or in the DWP file for the objfile, referenced by THIS_UNIT.
13298    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13299    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13300
13301    This is called, for example, when wanting to read a variable with a
13302    complex location.  Therefore we don't want to do file i/o for every call.
13303    Therefore we don't want to look for a DWO file on every call.
13304    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13305    then we check if we've already seen DWO_NAME, and only THEN do we check
13306    for a DWO file.
13307
13308    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13309    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13310
13311 static struct dwo_unit *
13312 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13313                  const char *dwo_name, const char *comp_dir,
13314                  ULONGEST signature, int is_debug_types)
13315 {
13316   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13317   struct objfile *objfile = dwarf2_per_objfile->objfile;
13318   const char *kind = is_debug_types ? "TU" : "CU";
13319   void **dwo_file_slot;
13320   struct dwo_file *dwo_file;
13321   struct dwp_file *dwp_file;
13322
13323   /* First see if there's a DWP file.
13324      If we have a DWP file but didn't find the DWO inside it, don't
13325      look for the original DWO file.  It makes gdb behave differently
13326      depending on whether one is debugging in the build tree.  */
13327
13328   dwp_file = get_dwp_file (dwarf2_per_objfile);
13329   if (dwp_file != NULL)
13330     {
13331       const struct dwp_hash_table *dwp_htab =
13332         is_debug_types ? dwp_file->tus : dwp_file->cus;
13333
13334       if (dwp_htab != NULL)
13335         {
13336           struct dwo_unit *dwo_cutu =
13337             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13338                                     signature, is_debug_types);
13339
13340           if (dwo_cutu != NULL)
13341             {
13342               if (dwarf_read_debug)
13343                 {
13344                   fprintf_unfiltered (gdb_stdlog,
13345                                       "Virtual DWO %s %s found: @%s\n",
13346                                       kind, hex_string (signature),
13347                                       host_address_to_string (dwo_cutu));
13348                 }
13349               return dwo_cutu;
13350             }
13351         }
13352     }
13353   else
13354     {
13355       /* No DWP file, look for the DWO file.  */
13356
13357       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13358                                             dwo_name, comp_dir);
13359       if (*dwo_file_slot == NULL)
13360         {
13361           /* Read in the file and build a table of the CUs/TUs it contains.  */
13362           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13363         }
13364       /* NOTE: This will be NULL if unable to open the file.  */
13365       dwo_file = (struct dwo_file *) *dwo_file_slot;
13366
13367       if (dwo_file != NULL)
13368         {
13369           struct dwo_unit *dwo_cutu = NULL;
13370
13371           if (is_debug_types && dwo_file->tus)
13372             {
13373               struct dwo_unit find_dwo_cutu;
13374
13375               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13376               find_dwo_cutu.signature = signature;
13377               dwo_cutu
13378                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13379             }
13380           else if (!is_debug_types && dwo_file->cus)
13381             {
13382               struct dwo_unit find_dwo_cutu;
13383
13384               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13385               find_dwo_cutu.signature = signature;
13386               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13387                                                        &find_dwo_cutu);
13388             }
13389
13390           if (dwo_cutu != NULL)
13391             {
13392               if (dwarf_read_debug)
13393                 {
13394                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13395                                       kind, dwo_name, hex_string (signature),
13396                                       host_address_to_string (dwo_cutu));
13397                 }
13398               return dwo_cutu;
13399             }
13400         }
13401     }
13402
13403   /* We didn't find it.  This could mean a dwo_id mismatch, or
13404      someone deleted the DWO/DWP file, or the search path isn't set up
13405      correctly to find the file.  */
13406
13407   if (dwarf_read_debug)
13408     {
13409       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13410                           kind, dwo_name, hex_string (signature));
13411     }
13412
13413   /* This is a warning and not a complaint because it can be caused by
13414      pilot error (e.g., user accidentally deleting the DWO).  */
13415   {
13416     /* Print the name of the DWP file if we looked there, helps the user
13417        better diagnose the problem.  */
13418     std::string dwp_text;
13419
13420     if (dwp_file != NULL)
13421       dwp_text = string_printf (" [in DWP file %s]",
13422                                 lbasename (dwp_file->name));
13423
13424     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13425                " [in module %s]"),
13426              kind, dwo_name, hex_string (signature),
13427              dwp_text.c_str (),
13428              this_unit->is_debug_types ? "TU" : "CU",
13429              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13430   }
13431   return NULL;
13432 }
13433
13434 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13435    See lookup_dwo_cutu_unit for details.  */
13436
13437 static struct dwo_unit *
13438 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13439                       const char *dwo_name, const char *comp_dir,
13440                       ULONGEST signature)
13441 {
13442   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13443 }
13444
13445 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13446    See lookup_dwo_cutu_unit for details.  */
13447
13448 static struct dwo_unit *
13449 lookup_dwo_type_unit (struct signatured_type *this_tu,
13450                       const char *dwo_name, const char *comp_dir)
13451 {
13452   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13453 }
13454
13455 /* Traversal function for queue_and_load_all_dwo_tus.  */
13456
13457 static int
13458 queue_and_load_dwo_tu (void **slot, void *info)
13459 {
13460   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13461   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13462   ULONGEST signature = dwo_unit->signature;
13463   struct signatured_type *sig_type =
13464     lookup_dwo_signatured_type (per_cu->cu, signature);
13465
13466   if (sig_type != NULL)
13467     {
13468       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13469
13470       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13471          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13472          while processing PER_CU.  */
13473       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13474         load_full_type_unit (sig_cu);
13475       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13476     }
13477
13478   return 1;
13479 }
13480
13481 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13482    The DWO may have the only definition of the type, though it may not be
13483    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13484    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13485
13486 static void
13487 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13488 {
13489   struct dwo_unit *dwo_unit;
13490   struct dwo_file *dwo_file;
13491
13492   gdb_assert (!per_cu->is_debug_types);
13493   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13494   gdb_assert (per_cu->cu != NULL);
13495
13496   dwo_unit = per_cu->cu->dwo_unit;
13497   gdb_assert (dwo_unit != NULL);
13498
13499   dwo_file = dwo_unit->dwo_file;
13500   if (dwo_file->tus != NULL)
13501     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13502 }
13503
13504 /* Free all resources associated with DWO_FILE.
13505    Close the DWO file and munmap the sections.  */
13506
13507 static void
13508 free_dwo_file (struct dwo_file *dwo_file)
13509 {
13510   /* Note: dbfd is NULL for virtual DWO files.  */
13511   gdb_bfd_unref (dwo_file->dbfd);
13512
13513   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13514 }
13515
13516 /* Traversal function for free_dwo_files.  */
13517
13518 static int
13519 free_dwo_file_from_slot (void **slot, void *info)
13520 {
13521   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13522
13523   free_dwo_file (dwo_file);
13524
13525   return 1;
13526 }
13527
13528 /* Free all resources associated with DWO_FILES.  */
13529
13530 static void
13531 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13532 {
13533   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13534 }
13535 \f
13536 /* Read in various DIEs.  */
13537
13538 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13539    Inherit only the children of the DW_AT_abstract_origin DIE not being
13540    already referenced by DW_AT_abstract_origin from the children of the
13541    current DIE.  */
13542
13543 static void
13544 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13545 {
13546   struct die_info *child_die;
13547   sect_offset *offsetp;
13548   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13549   struct die_info *origin_die;
13550   /* Iterator of the ORIGIN_DIE children.  */
13551   struct die_info *origin_child_die;
13552   struct attribute *attr;
13553   struct dwarf2_cu *origin_cu;
13554   struct pending **origin_previous_list_in_scope;
13555
13556   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13557   if (!attr)
13558     return;
13559
13560   /* Note that following die references may follow to a die in a
13561      different cu.  */
13562
13563   origin_cu = cu;
13564   origin_die = follow_die_ref (die, attr, &origin_cu);
13565
13566   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13567      symbols in.  */
13568   origin_previous_list_in_scope = origin_cu->list_in_scope;
13569   origin_cu->list_in_scope = cu->list_in_scope;
13570
13571   if (die->tag != origin_die->tag
13572       && !(die->tag == DW_TAG_inlined_subroutine
13573            && origin_die->tag == DW_TAG_subprogram))
13574     complaint (_("DIE %s and its abstract origin %s have different tags"),
13575                sect_offset_str (die->sect_off),
13576                sect_offset_str (origin_die->sect_off));
13577
13578   std::vector<sect_offset> offsets;
13579
13580   for (child_die = die->child;
13581        child_die && child_die->tag;
13582        child_die = sibling_die (child_die))
13583     {
13584       struct die_info *child_origin_die;
13585       struct dwarf2_cu *child_origin_cu;
13586
13587       /* We are trying to process concrete instance entries:
13588          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13589          it's not relevant to our analysis here. i.e. detecting DIEs that are
13590          present in the abstract instance but not referenced in the concrete
13591          one.  */
13592       if (child_die->tag == DW_TAG_call_site
13593           || child_die->tag == DW_TAG_GNU_call_site)
13594         continue;
13595
13596       /* For each CHILD_DIE, find the corresponding child of
13597          ORIGIN_DIE.  If there is more than one layer of
13598          DW_AT_abstract_origin, follow them all; there shouldn't be,
13599          but GCC versions at least through 4.4 generate this (GCC PR
13600          40573).  */
13601       child_origin_die = child_die;
13602       child_origin_cu = cu;
13603       while (1)
13604         {
13605           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13606                               child_origin_cu);
13607           if (attr == NULL)
13608             break;
13609           child_origin_die = follow_die_ref (child_origin_die, attr,
13610                                              &child_origin_cu);
13611         }
13612
13613       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13614          counterpart may exist.  */
13615       if (child_origin_die != child_die)
13616         {
13617           if (child_die->tag != child_origin_die->tag
13618               && !(child_die->tag == DW_TAG_inlined_subroutine
13619                    && child_origin_die->tag == DW_TAG_subprogram))
13620             complaint (_("Child DIE %s and its abstract origin %s have "
13621                          "different tags"),
13622                        sect_offset_str (child_die->sect_off),
13623                        sect_offset_str (child_origin_die->sect_off));
13624           if (child_origin_die->parent != origin_die)
13625             complaint (_("Child DIE %s and its abstract origin %s have "
13626                          "different parents"),
13627                        sect_offset_str (child_die->sect_off),
13628                        sect_offset_str (child_origin_die->sect_off));
13629           else
13630             offsets.push_back (child_origin_die->sect_off);
13631         }
13632     }
13633   std::sort (offsets.begin (), offsets.end ());
13634   sect_offset *offsets_end = offsets.data () + offsets.size ();
13635   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13636     if (offsetp[-1] == *offsetp)
13637       complaint (_("Multiple children of DIE %s refer "
13638                    "to DIE %s as their abstract origin"),
13639                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13640
13641   offsetp = offsets.data ();
13642   origin_child_die = origin_die->child;
13643   while (origin_child_die && origin_child_die->tag)
13644     {
13645       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13646       while (offsetp < offsets_end
13647              && *offsetp < origin_child_die->sect_off)
13648         offsetp++;
13649       if (offsetp >= offsets_end
13650           || *offsetp > origin_child_die->sect_off)
13651         {
13652           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13653              Check whether we're already processing ORIGIN_CHILD_DIE.
13654              This can happen with mutually referenced abstract_origins.
13655              PR 16581.  */
13656           if (!origin_child_die->in_process)
13657             process_die (origin_child_die, origin_cu);
13658         }
13659       origin_child_die = sibling_die (origin_child_die);
13660     }
13661   origin_cu->list_in_scope = origin_previous_list_in_scope;
13662 }
13663
13664 static void
13665 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13666 {
13667   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13668   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13669   struct context_stack *newobj;
13670   CORE_ADDR lowpc;
13671   CORE_ADDR highpc;
13672   struct die_info *child_die;
13673   struct attribute *attr, *call_line, *call_file;
13674   const char *name;
13675   CORE_ADDR baseaddr;
13676   struct block *block;
13677   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13678   std::vector<struct symbol *> template_args;
13679   struct template_symbol *templ_func = NULL;
13680
13681   if (inlined_func)
13682     {
13683       /* If we do not have call site information, we can't show the
13684          caller of this inlined function.  That's too confusing, so
13685          only use the scope for local variables.  */
13686       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13687       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13688       if (call_line == NULL || call_file == NULL)
13689         {
13690           read_lexical_block_scope (die, cu);
13691           return;
13692         }
13693     }
13694
13695   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13696
13697   name = dwarf2_name (die, cu);
13698
13699   /* Ignore functions with missing or empty names.  These are actually
13700      illegal according to the DWARF standard.  */
13701   if (name == NULL)
13702     {
13703       complaint (_("missing name for subprogram DIE at %s"),
13704                  sect_offset_str (die->sect_off));
13705       return;
13706     }
13707
13708   /* Ignore functions with missing or invalid low and high pc attributes.  */
13709   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13710       <= PC_BOUNDS_INVALID)
13711     {
13712       attr = dwarf2_attr (die, DW_AT_external, cu);
13713       if (!attr || !DW_UNSND (attr))
13714         complaint (_("cannot get low and high bounds "
13715                      "for subprogram DIE at %s"),
13716                    sect_offset_str (die->sect_off));
13717       return;
13718     }
13719
13720   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13721   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13722
13723   /* If we have any template arguments, then we must allocate a
13724      different sort of symbol.  */
13725   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13726     {
13727       if (child_die->tag == DW_TAG_template_type_param
13728           || child_die->tag == DW_TAG_template_value_param)
13729         {
13730           templ_func = allocate_template_symbol (objfile);
13731           templ_func->subclass = SYMBOL_TEMPLATE;
13732           break;
13733         }
13734     }
13735
13736   newobj = cu->get_builder ()->push_context (0, lowpc);
13737   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13738                              (struct symbol *) templ_func);
13739
13740   /* If there is a location expression for DW_AT_frame_base, record
13741      it.  */
13742   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13743   if (attr)
13744     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13745
13746   /* If there is a location for the static link, record it.  */
13747   newobj->static_link = NULL;
13748   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13749   if (attr)
13750     {
13751       newobj->static_link
13752         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13753       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13754     }
13755
13756   cu->list_in_scope = cu->get_builder ()->get_local_symbols ();
13757
13758   if (die->child != NULL)
13759     {
13760       child_die = die->child;
13761       while (child_die && child_die->tag)
13762         {
13763           if (child_die->tag == DW_TAG_template_type_param
13764               || child_die->tag == DW_TAG_template_value_param)
13765             {
13766               struct symbol *arg = new_symbol (child_die, NULL, cu);
13767
13768               if (arg != NULL)
13769                 template_args.push_back (arg);
13770             }
13771           else
13772             process_die (child_die, cu);
13773           child_die = sibling_die (child_die);
13774         }
13775     }
13776
13777   inherit_abstract_dies (die, cu);
13778
13779   /* If we have a DW_AT_specification, we might need to import using
13780      directives from the context of the specification DIE.  See the
13781      comment in determine_prefix.  */
13782   if (cu->language == language_cplus
13783       && dwarf2_attr (die, DW_AT_specification, cu))
13784     {
13785       struct dwarf2_cu *spec_cu = cu;
13786       struct die_info *spec_die = die_specification (die, &spec_cu);
13787
13788       while (spec_die)
13789         {
13790           child_die = spec_die->child;
13791           while (child_die && child_die->tag)
13792             {
13793               if (child_die->tag == DW_TAG_imported_module)
13794                 process_die (child_die, spec_cu);
13795               child_die = sibling_die (child_die);
13796             }
13797
13798           /* In some cases, GCC generates specification DIEs that
13799              themselves contain DW_AT_specification attributes.  */
13800           spec_die = die_specification (spec_die, &spec_cu);
13801         }
13802     }
13803
13804   struct context_stack cstk = cu->get_builder ()->pop_context ();
13805   /* Make a block for the local symbols within.  */
13806   block = cu->get_builder ()->finish_block (cstk.name, cstk.old_blocks,
13807                                      cstk.static_link, lowpc, highpc);
13808
13809   /* For C++, set the block's scope.  */
13810   if ((cu->language == language_cplus
13811        || cu->language == language_fortran
13812        || cu->language == language_d
13813        || cu->language == language_rust)
13814       && cu->processing_has_namespace_info)
13815     block_set_scope (block, determine_prefix (die, cu),
13816                      &objfile->objfile_obstack);
13817
13818   /* If we have address ranges, record them.  */
13819   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13820
13821   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13822
13823   /* Attach template arguments to function.  */
13824   if (!template_args.empty ())
13825     {
13826       gdb_assert (templ_func != NULL);
13827
13828       templ_func->n_template_arguments = template_args.size ();
13829       templ_func->template_arguments
13830         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13831                      templ_func->n_template_arguments);
13832       memcpy (templ_func->template_arguments,
13833               template_args.data (),
13834               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13835
13836       /* Make sure that the symtab is set on the new symbols.  Even
13837          though they don't appear in this symtab directly, other parts
13838          of gdb assume that symbols do, and this is reasonably
13839          true.  */
13840       for (symbol *sym : template_args)
13841         symbol_set_symtab (sym, symbol_symtab (templ_func));
13842     }
13843
13844   /* In C++, we can have functions nested inside functions (e.g., when
13845      a function declares a class that has methods).  This means that
13846      when we finish processing a function scope, we may need to go
13847      back to building a containing block's symbol lists.  */
13848   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13849   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13850
13851   /* If we've finished processing a top-level function, subsequent
13852      symbols go in the file symbol list.  */
13853   if (cu->get_builder ()->outermost_context_p ())
13854     cu->list_in_scope = cu->get_builder ()->get_file_symbols ();
13855 }
13856
13857 /* Process all the DIES contained within a lexical block scope.  Start
13858    a new scope, process the dies, and then close the scope.  */
13859
13860 static void
13861 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13862 {
13863   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13864   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13865   CORE_ADDR lowpc, highpc;
13866   struct die_info *child_die;
13867   CORE_ADDR baseaddr;
13868
13869   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13870
13871   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13872   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13873      as multiple lexical blocks?  Handling children in a sane way would
13874      be nasty.  Might be easier to properly extend generic blocks to
13875      describe ranges.  */
13876   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13877     {
13878     case PC_BOUNDS_NOT_PRESENT:
13879       /* DW_TAG_lexical_block has no attributes, process its children as if
13880          there was no wrapping by that DW_TAG_lexical_block.
13881          GCC does no longer produces such DWARF since GCC r224161.  */
13882       for (child_die = die->child;
13883            child_die != NULL && child_die->tag;
13884            child_die = sibling_die (child_die))
13885         process_die (child_die, cu);
13886       return;
13887     case PC_BOUNDS_INVALID:
13888       return;
13889     }
13890   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13891   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13892
13893   cu->get_builder ()->push_context (0, lowpc);
13894   if (die->child != NULL)
13895     {
13896       child_die = die->child;
13897       while (child_die && child_die->tag)
13898         {
13899           process_die (child_die, cu);
13900           child_die = sibling_die (child_die);
13901         }
13902     }
13903   inherit_abstract_dies (die, cu);
13904   struct context_stack cstk = cu->get_builder ()->pop_context ();
13905
13906   if (*cu->get_builder ()->get_local_symbols () != NULL
13907       || (*cu->get_builder ()->get_local_using_directives ()) != NULL)
13908     {
13909       struct block *block
13910         = cu->get_builder ()->finish_block (0, cstk.old_blocks, NULL,
13911                                      cstk.start_addr, highpc);
13912
13913       /* Note that recording ranges after traversing children, as we
13914          do here, means that recording a parent's ranges entails
13915          walking across all its children's ranges as they appear in
13916          the address map, which is quadratic behavior.
13917
13918          It would be nicer to record the parent's ranges before
13919          traversing its children, simply overriding whatever you find
13920          there.  But since we don't even decide whether to create a
13921          block until after we've traversed its children, that's hard
13922          to do.  */
13923       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13924     }
13925   *cu->get_builder ()->get_local_symbols () = cstk.locals;
13926   cu->get_builder ()->set_local_using_directives (cstk.local_using_directives);
13927 }
13928
13929 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13930
13931 static void
13932 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13933 {
13934   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13935   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13936   CORE_ADDR pc, baseaddr;
13937   struct attribute *attr;
13938   struct call_site *call_site, call_site_local;
13939   void **slot;
13940   int nparams;
13941   struct die_info *child_die;
13942
13943   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13944
13945   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13946   if (attr == NULL)
13947     {
13948       /* This was a pre-DWARF-5 GNU extension alias
13949          for DW_AT_call_return_pc.  */
13950       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13951     }
13952   if (!attr)
13953     {
13954       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13955                    "DIE %s [in module %s]"),
13956                  sect_offset_str (die->sect_off), objfile_name (objfile));
13957       return;
13958     }
13959   pc = attr_value_as_address (attr) + baseaddr;
13960   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13961
13962   if (cu->call_site_htab == NULL)
13963     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13964                                                NULL, &objfile->objfile_obstack,
13965                                                hashtab_obstack_allocate, NULL);
13966   call_site_local.pc = pc;
13967   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13968   if (*slot != NULL)
13969     {
13970       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13971                    "DIE %s [in module %s]"),
13972                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13973                  objfile_name (objfile));
13974       return;
13975     }
13976
13977   /* Count parameters at the caller.  */
13978
13979   nparams = 0;
13980   for (child_die = die->child; child_die && child_die->tag;
13981        child_die = sibling_die (child_die))
13982     {
13983       if (child_die->tag != DW_TAG_call_site_parameter
13984           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13985         {
13986           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13987                        "DW_TAG_call_site child DIE %s [in module %s]"),
13988                      child_die->tag, sect_offset_str (child_die->sect_off),
13989                      objfile_name (objfile));
13990           continue;
13991         }
13992
13993       nparams++;
13994     }
13995
13996   call_site
13997     = ((struct call_site *)
13998        obstack_alloc (&objfile->objfile_obstack,
13999                       sizeof (*call_site)
14000                       + (sizeof (*call_site->parameter) * (nparams - 1))));
14001   *slot = call_site;
14002   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14003   call_site->pc = pc;
14004
14005   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14006       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14007     {
14008       struct die_info *func_die;
14009
14010       /* Skip also over DW_TAG_inlined_subroutine.  */
14011       for (func_die = die->parent;
14012            func_die && func_die->tag != DW_TAG_subprogram
14013            && func_die->tag != DW_TAG_subroutine_type;
14014            func_die = func_die->parent);
14015
14016       /* DW_AT_call_all_calls is a superset
14017          of DW_AT_call_all_tail_calls.  */
14018       if (func_die
14019           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14020           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14021           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14022           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14023         {
14024           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14025              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14026              both the initial caller containing the real return address PC and
14027              the final callee containing the current PC of a chain of tail
14028              calls do not need to have the tail call list complete.  But any
14029              function candidate for a virtual tail call frame searched via
14030              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14031              determined unambiguously.  */
14032         }
14033       else
14034         {
14035           struct type *func_type = NULL;
14036
14037           if (func_die)
14038             func_type = get_die_type (func_die, cu);
14039           if (func_type != NULL)
14040             {
14041               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14042
14043               /* Enlist this call site to the function.  */
14044               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14045               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14046             }
14047           else
14048             complaint (_("Cannot find function owning DW_TAG_call_site "
14049                          "DIE %s [in module %s]"),
14050                        sect_offset_str (die->sect_off), objfile_name (objfile));
14051         }
14052     }
14053
14054   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14055   if (attr == NULL)
14056     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14057   if (attr == NULL)
14058     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14059   if (attr == NULL)
14060     {
14061       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14062       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14063     }
14064   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14065   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14066     /* Keep NULL DWARF_BLOCK.  */;
14067   else if (attr_form_is_block (attr))
14068     {
14069       struct dwarf2_locexpr_baton *dlbaton;
14070
14071       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14072       dlbaton->data = DW_BLOCK (attr)->data;
14073       dlbaton->size = DW_BLOCK (attr)->size;
14074       dlbaton->per_cu = cu->per_cu;
14075
14076       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14077     }
14078   else if (attr_form_is_ref (attr))
14079     {
14080       struct dwarf2_cu *target_cu = cu;
14081       struct die_info *target_die;
14082
14083       target_die = follow_die_ref (die, attr, &target_cu);
14084       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14085       if (die_is_declaration (target_die, target_cu))
14086         {
14087           const char *target_physname;
14088
14089           /* Prefer the mangled name; otherwise compute the demangled one.  */
14090           target_physname = dw2_linkage_name (target_die, target_cu);
14091           if (target_physname == NULL)
14092             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14093           if (target_physname == NULL)
14094             complaint (_("DW_AT_call_target target DIE has invalid "
14095                          "physname, for referencing DIE %s [in module %s]"),
14096                        sect_offset_str (die->sect_off), objfile_name (objfile));
14097           else
14098             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14099         }
14100       else
14101         {
14102           CORE_ADDR lowpc;
14103
14104           /* DW_AT_entry_pc should be preferred.  */
14105           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14106               <= PC_BOUNDS_INVALID)
14107             complaint (_("DW_AT_call_target target DIE has invalid "
14108                          "low pc, for referencing DIE %s [in module %s]"),
14109                        sect_offset_str (die->sect_off), objfile_name (objfile));
14110           else
14111             {
14112               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14113               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14114             }
14115         }
14116     }
14117   else
14118     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14119                  "block nor reference, for DIE %s [in module %s]"),
14120                sect_offset_str (die->sect_off), objfile_name (objfile));
14121
14122   call_site->per_cu = cu->per_cu;
14123
14124   for (child_die = die->child;
14125        child_die && child_die->tag;
14126        child_die = sibling_die (child_die))
14127     {
14128       struct call_site_parameter *parameter;
14129       struct attribute *loc, *origin;
14130
14131       if (child_die->tag != DW_TAG_call_site_parameter
14132           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14133         {
14134           /* Already printed the complaint above.  */
14135           continue;
14136         }
14137
14138       gdb_assert (call_site->parameter_count < nparams);
14139       parameter = &call_site->parameter[call_site->parameter_count];
14140
14141       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14142          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14143          register is contained in DW_AT_call_value.  */
14144
14145       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14146       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14147       if (origin == NULL)
14148         {
14149           /* This was a pre-DWARF-5 GNU extension alias
14150              for DW_AT_call_parameter.  */
14151           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14152         }
14153       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14154         {
14155           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14156
14157           sect_offset sect_off
14158             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14159           if (!offset_in_cu_p (&cu->header, sect_off))
14160             {
14161               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14162                  binding can be done only inside one CU.  Such referenced DIE
14163                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14164               complaint (_("DW_AT_call_parameter offset is not in CU for "
14165                            "DW_TAG_call_site child DIE %s [in module %s]"),
14166                          sect_offset_str (child_die->sect_off),
14167                          objfile_name (objfile));
14168               continue;
14169             }
14170           parameter->u.param_cu_off
14171             = (cu_offset) (sect_off - cu->header.sect_off);
14172         }
14173       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14174         {
14175           complaint (_("No DW_FORM_block* DW_AT_location for "
14176                        "DW_TAG_call_site child DIE %s [in module %s]"),
14177                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14178           continue;
14179         }
14180       else
14181         {
14182           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14183             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14184           if (parameter->u.dwarf_reg != -1)
14185             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14186           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14187                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14188                                              &parameter->u.fb_offset))
14189             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14190           else
14191             {
14192               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14193                            "for DW_FORM_block* DW_AT_location is supported for "
14194                            "DW_TAG_call_site child DIE %s "
14195                            "[in module %s]"),
14196                          sect_offset_str (child_die->sect_off),
14197                          objfile_name (objfile));
14198               continue;
14199             }
14200         }
14201
14202       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14203       if (attr == NULL)
14204         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14205       if (!attr_form_is_block (attr))
14206         {
14207           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14208                        "DW_TAG_call_site child DIE %s [in module %s]"),
14209                      sect_offset_str (child_die->sect_off),
14210                      objfile_name (objfile));
14211           continue;
14212         }
14213       parameter->value = DW_BLOCK (attr)->data;
14214       parameter->value_size = DW_BLOCK (attr)->size;
14215
14216       /* Parameters are not pre-cleared by memset above.  */
14217       parameter->data_value = NULL;
14218       parameter->data_value_size = 0;
14219       call_site->parameter_count++;
14220
14221       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14222       if (attr == NULL)
14223         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14224       if (attr)
14225         {
14226           if (!attr_form_is_block (attr))
14227             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14228                          "DW_TAG_call_site child DIE %s [in module %s]"),
14229                        sect_offset_str (child_die->sect_off),
14230                        objfile_name (objfile));
14231           else
14232             {
14233               parameter->data_value = DW_BLOCK (attr)->data;
14234               parameter->data_value_size = DW_BLOCK (attr)->size;
14235             }
14236         }
14237     }
14238 }
14239
14240 /* Helper function for read_variable.  If DIE represents a virtual
14241    table, then return the type of the concrete object that is
14242    associated with the virtual table.  Otherwise, return NULL.  */
14243
14244 static struct type *
14245 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14246 {
14247   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14248   if (attr == NULL)
14249     return NULL;
14250
14251   /* Find the type DIE.  */
14252   struct die_info *type_die = NULL;
14253   struct dwarf2_cu *type_cu = cu;
14254
14255   if (attr_form_is_ref (attr))
14256     type_die = follow_die_ref (die, attr, &type_cu);
14257   if (type_die == NULL)
14258     return NULL;
14259
14260   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14261     return NULL;
14262   return die_containing_type (type_die, type_cu);
14263 }
14264
14265 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14266
14267 static void
14268 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14269 {
14270   struct rust_vtable_symbol *storage = NULL;
14271
14272   if (cu->language == language_rust)
14273     {
14274       struct type *containing_type = rust_containing_type (die, cu);
14275
14276       if (containing_type != NULL)
14277         {
14278           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14279
14280           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14281                                     struct rust_vtable_symbol);
14282           initialize_objfile_symbol (storage);
14283           storage->concrete_type = containing_type;
14284           storage->subclass = SYMBOL_RUST_VTABLE;
14285         }
14286     }
14287
14288   struct symbol *res = new_symbol (die, NULL, cu, storage);
14289   struct attribute *abstract_origin
14290     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14291   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14292   if (res == NULL && loc && abstract_origin)
14293     {
14294       /* We have a variable without a name, but with a location and an abstract
14295          origin.  This may be a concrete instance of an abstract variable
14296          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14297          later.  */
14298       struct dwarf2_cu *origin_cu = cu;
14299       struct die_info *origin_die
14300         = follow_die_ref (die, abstract_origin, &origin_cu);
14301       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14302       dpo->abstract_to_concrete[origin_die].push_back (die);
14303     }
14304 }
14305
14306 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14307    reading .debug_rnglists.
14308    Callback's type should be:
14309     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14310    Return true if the attributes are present and valid, otherwise,
14311    return false.  */
14312
14313 template <typename Callback>
14314 static bool
14315 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14316                          Callback &&callback)
14317 {
14318   struct dwarf2_per_objfile *dwarf2_per_objfile
14319     = cu->per_cu->dwarf2_per_objfile;
14320   struct objfile *objfile = dwarf2_per_objfile->objfile;
14321   bfd *obfd = objfile->obfd;
14322   /* Base address selection entry.  */
14323   CORE_ADDR base;
14324   int found_base;
14325   const gdb_byte *buffer;
14326   CORE_ADDR baseaddr;
14327   bool overflow = false;
14328
14329   found_base = cu->base_known;
14330   base = cu->base_address;
14331
14332   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14333   if (offset >= dwarf2_per_objfile->rnglists.size)
14334     {
14335       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14336                  offset);
14337       return false;
14338     }
14339   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14340
14341   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14342
14343   while (1)
14344     {
14345       /* Initialize it due to a false compiler warning.  */
14346       CORE_ADDR range_beginning = 0, range_end = 0;
14347       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14348                                  + dwarf2_per_objfile->rnglists.size);
14349       unsigned int bytes_read;
14350
14351       if (buffer == buf_end)
14352         {
14353           overflow = true;
14354           break;
14355         }
14356       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14357       switch (rlet)
14358         {
14359         case DW_RLE_end_of_list:
14360           break;
14361         case DW_RLE_base_address:
14362           if (buffer + cu->header.addr_size > buf_end)
14363             {
14364               overflow = true;
14365               break;
14366             }
14367           base = read_address (obfd, buffer, cu, &bytes_read);
14368           found_base = 1;
14369           buffer += bytes_read;
14370           break;
14371         case DW_RLE_start_length:
14372           if (buffer + cu->header.addr_size > buf_end)
14373             {
14374               overflow = true;
14375               break;
14376             }
14377           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14378           buffer += bytes_read;
14379           range_end = (range_beginning
14380                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14381           buffer += bytes_read;
14382           if (buffer > buf_end)
14383             {
14384               overflow = true;
14385               break;
14386             }
14387           break;
14388         case DW_RLE_offset_pair:
14389           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14390           buffer += bytes_read;
14391           if (buffer > buf_end)
14392             {
14393               overflow = true;
14394               break;
14395             }
14396           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14397           buffer += bytes_read;
14398           if (buffer > buf_end)
14399             {
14400               overflow = true;
14401               break;
14402             }
14403           break;
14404         case DW_RLE_start_end:
14405           if (buffer + 2 * cu->header.addr_size > buf_end)
14406             {
14407               overflow = true;
14408               break;
14409             }
14410           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14411           buffer += bytes_read;
14412           range_end = read_address (obfd, buffer, cu, &bytes_read);
14413           buffer += bytes_read;
14414           break;
14415         default:
14416           complaint (_("Invalid .debug_rnglists data (no base address)"));
14417           return false;
14418         }
14419       if (rlet == DW_RLE_end_of_list || overflow)
14420         break;
14421       if (rlet == DW_RLE_base_address)
14422         continue;
14423
14424       if (!found_base)
14425         {
14426           /* We have no valid base address for the ranges
14427              data.  */
14428           complaint (_("Invalid .debug_rnglists data (no base address)"));
14429           return false;
14430         }
14431
14432       if (range_beginning > range_end)
14433         {
14434           /* Inverted range entries are invalid.  */
14435           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14436           return false;
14437         }
14438
14439       /* Empty range entries have no effect.  */
14440       if (range_beginning == range_end)
14441         continue;
14442
14443       range_beginning += base;
14444       range_end += base;
14445
14446       /* A not-uncommon case of bad debug info.
14447          Don't pollute the addrmap with bad data.  */
14448       if (range_beginning + baseaddr == 0
14449           && !dwarf2_per_objfile->has_section_at_zero)
14450         {
14451           complaint (_(".debug_rnglists entry has start address of zero"
14452                        " [in module %s]"), objfile_name (objfile));
14453           continue;
14454         }
14455
14456       callback (range_beginning, range_end);
14457     }
14458
14459   if (overflow)
14460     {
14461       complaint (_("Offset %d is not terminated "
14462                    "for DW_AT_ranges attribute"),
14463                  offset);
14464       return false;
14465     }
14466
14467   return true;
14468 }
14469
14470 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14471    Callback's type should be:
14472     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14473    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14474
14475 template <typename Callback>
14476 static int
14477 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14478                        Callback &&callback)
14479 {
14480   struct dwarf2_per_objfile *dwarf2_per_objfile
14481       = cu->per_cu->dwarf2_per_objfile;
14482   struct objfile *objfile = dwarf2_per_objfile->objfile;
14483   struct comp_unit_head *cu_header = &cu->header;
14484   bfd *obfd = objfile->obfd;
14485   unsigned int addr_size = cu_header->addr_size;
14486   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14487   /* Base address selection entry.  */
14488   CORE_ADDR base;
14489   int found_base;
14490   unsigned int dummy;
14491   const gdb_byte *buffer;
14492   CORE_ADDR baseaddr;
14493
14494   if (cu_header->version >= 5)
14495     return dwarf2_rnglists_process (offset, cu, callback);
14496
14497   found_base = cu->base_known;
14498   base = cu->base_address;
14499
14500   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14501   if (offset >= dwarf2_per_objfile->ranges.size)
14502     {
14503       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14504                  offset);
14505       return 0;
14506     }
14507   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14508
14509   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14510
14511   while (1)
14512     {
14513       CORE_ADDR range_beginning, range_end;
14514
14515       range_beginning = read_address (obfd, buffer, cu, &dummy);
14516       buffer += addr_size;
14517       range_end = read_address (obfd, buffer, cu, &dummy);
14518       buffer += addr_size;
14519       offset += 2 * addr_size;
14520
14521       /* An end of list marker is a pair of zero addresses.  */
14522       if (range_beginning == 0 && range_end == 0)
14523         /* Found the end of list entry.  */
14524         break;
14525
14526       /* Each base address selection entry is a pair of 2 values.
14527          The first is the largest possible address, the second is
14528          the base address.  Check for a base address here.  */
14529       if ((range_beginning & mask) == mask)
14530         {
14531           /* If we found the largest possible address, then we already
14532              have the base address in range_end.  */
14533           base = range_end;
14534           found_base = 1;
14535           continue;
14536         }
14537
14538       if (!found_base)
14539         {
14540           /* We have no valid base address for the ranges
14541              data.  */
14542           complaint (_("Invalid .debug_ranges data (no base address)"));
14543           return 0;
14544         }
14545
14546       if (range_beginning > range_end)
14547         {
14548           /* Inverted range entries are invalid.  */
14549           complaint (_("Invalid .debug_ranges data (inverted range)"));
14550           return 0;
14551         }
14552
14553       /* Empty range entries have no effect.  */
14554       if (range_beginning == range_end)
14555         continue;
14556
14557       range_beginning += base;
14558       range_end += base;
14559
14560       /* A not-uncommon case of bad debug info.
14561          Don't pollute the addrmap with bad data.  */
14562       if (range_beginning + baseaddr == 0
14563           && !dwarf2_per_objfile->has_section_at_zero)
14564         {
14565           complaint (_(".debug_ranges entry has start address of zero"
14566                        " [in module %s]"), objfile_name (objfile));
14567           continue;
14568         }
14569
14570       callback (range_beginning, range_end);
14571     }
14572
14573   return 1;
14574 }
14575
14576 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14577    Return 1 if the attributes are present and valid, otherwise, return 0.
14578    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14579
14580 static int
14581 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14582                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14583                     struct partial_symtab *ranges_pst)
14584 {
14585   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14586   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14587   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14588                                        SECT_OFF_TEXT (objfile));
14589   int low_set = 0;
14590   CORE_ADDR low = 0;
14591   CORE_ADDR high = 0;
14592   int retval;
14593
14594   retval = dwarf2_ranges_process (offset, cu,
14595     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14596     {
14597       if (ranges_pst != NULL)
14598         {
14599           CORE_ADDR lowpc;
14600           CORE_ADDR highpc;
14601
14602           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14603                                                range_beginning + baseaddr)
14604                    - baseaddr);
14605           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14606                                                 range_end + baseaddr)
14607                     - baseaddr);
14608           addrmap_set_empty (objfile->partial_symtabs->psymtabs_addrmap,
14609                              lowpc, highpc - 1, ranges_pst);
14610         }
14611
14612       /* FIXME: This is recording everything as a low-high
14613          segment of consecutive addresses.  We should have a
14614          data structure for discontiguous block ranges
14615          instead.  */
14616       if (! low_set)
14617         {
14618           low = range_beginning;
14619           high = range_end;
14620           low_set = 1;
14621         }
14622       else
14623         {
14624           if (range_beginning < low)
14625             low = range_beginning;
14626           if (range_end > high)
14627             high = range_end;
14628         }
14629     });
14630   if (!retval)
14631     return 0;
14632
14633   if (! low_set)
14634     /* If the first entry is an end-of-list marker, the range
14635        describes an empty scope, i.e. no instructions.  */
14636     return 0;
14637
14638   if (low_return)
14639     *low_return = low;
14640   if (high_return)
14641     *high_return = high;
14642   return 1;
14643 }
14644
14645 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14646    definition for the return value.  *LOWPC and *HIGHPC are set iff
14647    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14648
14649 static enum pc_bounds_kind
14650 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14651                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14652                       struct partial_symtab *pst)
14653 {
14654   struct dwarf2_per_objfile *dwarf2_per_objfile
14655     = cu->per_cu->dwarf2_per_objfile;
14656   struct attribute *attr;
14657   struct attribute *attr_high;
14658   CORE_ADDR low = 0;
14659   CORE_ADDR high = 0;
14660   enum pc_bounds_kind ret;
14661
14662   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14663   if (attr_high)
14664     {
14665       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14666       if (attr)
14667         {
14668           low = attr_value_as_address (attr);
14669           high = attr_value_as_address (attr_high);
14670           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14671             high += low;
14672         }
14673       else
14674         /* Found high w/o low attribute.  */
14675         return PC_BOUNDS_INVALID;
14676
14677       /* Found consecutive range of addresses.  */
14678       ret = PC_BOUNDS_HIGH_LOW;
14679     }
14680   else
14681     {
14682       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14683       if (attr != NULL)
14684         {
14685           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14686              We take advantage of the fact that DW_AT_ranges does not appear
14687              in DW_TAG_compile_unit of DWO files.  */
14688           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14689           unsigned int ranges_offset = (DW_UNSND (attr)
14690                                         + (need_ranges_base
14691                                            ? cu->ranges_base
14692                                            : 0));
14693
14694           /* Value of the DW_AT_ranges attribute is the offset in the
14695              .debug_ranges section.  */
14696           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14697             return PC_BOUNDS_INVALID;
14698           /* Found discontinuous range of addresses.  */
14699           ret = PC_BOUNDS_RANGES;
14700         }
14701       else
14702         return PC_BOUNDS_NOT_PRESENT;
14703     }
14704
14705   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14706   if (high <= low)
14707     return PC_BOUNDS_INVALID;
14708
14709   /* When using the GNU linker, .gnu.linkonce. sections are used to
14710      eliminate duplicate copies of functions and vtables and such.
14711      The linker will arbitrarily choose one and discard the others.
14712      The AT_*_pc values for such functions refer to local labels in
14713      these sections.  If the section from that file was discarded, the
14714      labels are not in the output, so the relocs get a value of 0.
14715      If this is a discarded function, mark the pc bounds as invalid,
14716      so that GDB will ignore it.  */
14717   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14718     return PC_BOUNDS_INVALID;
14719
14720   *lowpc = low;
14721   if (highpc)
14722     *highpc = high;
14723   return ret;
14724 }
14725
14726 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14727    its low and high PC addresses.  Do nothing if these addresses could not
14728    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14729    and HIGHPC to the high address if greater than HIGHPC.  */
14730
14731 static void
14732 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14733                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14734                                  struct dwarf2_cu *cu)
14735 {
14736   CORE_ADDR low, high;
14737   struct die_info *child = die->child;
14738
14739   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14740     {
14741       *lowpc = std::min (*lowpc, low);
14742       *highpc = std::max (*highpc, high);
14743     }
14744
14745   /* If the language does not allow nested subprograms (either inside
14746      subprograms or lexical blocks), we're done.  */
14747   if (cu->language != language_ada)
14748     return;
14749
14750   /* Check all the children of the given DIE.  If it contains nested
14751      subprograms, then check their pc bounds.  Likewise, we need to
14752      check lexical blocks as well, as they may also contain subprogram
14753      definitions.  */
14754   while (child && child->tag)
14755     {
14756       if (child->tag == DW_TAG_subprogram
14757           || child->tag == DW_TAG_lexical_block)
14758         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14759       child = sibling_die (child);
14760     }
14761 }
14762
14763 /* Get the low and high pc's represented by the scope DIE, and store
14764    them in *LOWPC and *HIGHPC.  If the correct values can't be
14765    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14766
14767 static void
14768 get_scope_pc_bounds (struct die_info *die,
14769                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14770                      struct dwarf2_cu *cu)
14771 {
14772   CORE_ADDR best_low = (CORE_ADDR) -1;
14773   CORE_ADDR best_high = (CORE_ADDR) 0;
14774   CORE_ADDR current_low, current_high;
14775
14776   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14777       >= PC_BOUNDS_RANGES)
14778     {
14779       best_low = current_low;
14780       best_high = current_high;
14781     }
14782   else
14783     {
14784       struct die_info *child = die->child;
14785
14786       while (child && child->tag)
14787         {
14788           switch (child->tag) {
14789           case DW_TAG_subprogram:
14790             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14791             break;
14792           case DW_TAG_namespace:
14793           case DW_TAG_module:
14794             /* FIXME: carlton/2004-01-16: Should we do this for
14795                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14796                that current GCC's always emit the DIEs corresponding
14797                to definitions of methods of classes as children of a
14798                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14799                the DIEs giving the declarations, which could be
14800                anywhere).  But I don't see any reason why the
14801                standards says that they have to be there.  */
14802             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14803
14804             if (current_low != ((CORE_ADDR) -1))
14805               {
14806                 best_low = std::min (best_low, current_low);
14807                 best_high = std::max (best_high, current_high);
14808               }
14809             break;
14810           default:
14811             /* Ignore.  */
14812             break;
14813           }
14814
14815           child = sibling_die (child);
14816         }
14817     }
14818
14819   *lowpc = best_low;
14820   *highpc = best_high;
14821 }
14822
14823 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14824    in DIE.  */
14825
14826 static void
14827 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14828                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14829 {
14830   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14831   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14832   struct attribute *attr;
14833   struct attribute *attr_high;
14834
14835   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14836   if (attr_high)
14837     {
14838       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14839       if (attr)
14840         {
14841           CORE_ADDR low = attr_value_as_address (attr);
14842           CORE_ADDR high = attr_value_as_address (attr_high);
14843
14844           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14845             high += low;
14846
14847           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14848           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14849           cu->get_builder ()->record_block_range (block, low, high - 1);
14850         }
14851     }
14852
14853   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14854   if (attr)
14855     {
14856       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14857          We take advantage of the fact that DW_AT_ranges does not appear
14858          in DW_TAG_compile_unit of DWO files.  */
14859       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14860
14861       /* The value of the DW_AT_ranges attribute is the offset of the
14862          address range list in the .debug_ranges section.  */
14863       unsigned long offset = (DW_UNSND (attr)
14864                               + (need_ranges_base ? cu->ranges_base : 0));
14865
14866       std::vector<blockrange> blockvec;
14867       dwarf2_ranges_process (offset, cu,
14868         [&] (CORE_ADDR start, CORE_ADDR end)
14869         {
14870           start += baseaddr;
14871           end += baseaddr;
14872           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14873           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14874           cu->get_builder ()->record_block_range (block, start, end - 1);
14875           blockvec.emplace_back (start, end);
14876         });
14877
14878       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14879     }
14880 }
14881
14882 /* Check whether the producer field indicates either of GCC < 4.6, or the
14883    Intel C/C++ compiler, and cache the result in CU.  */
14884
14885 static void
14886 check_producer (struct dwarf2_cu *cu)
14887 {
14888   int major, minor;
14889
14890   if (cu->producer == NULL)
14891     {
14892       /* For unknown compilers expect their behavior is DWARF version
14893          compliant.
14894
14895          GCC started to support .debug_types sections by -gdwarf-4 since
14896          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14897          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14898          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14899          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14900     }
14901   else if (producer_is_gcc (cu->producer, &major, &minor))
14902     {
14903       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14904       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14905     }
14906   else if (producer_is_icc (cu->producer, &major, &minor))
14907     {
14908       cu->producer_is_icc = true;
14909       cu->producer_is_icc_lt_14 = major < 14;
14910     }
14911   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14912     cu->producer_is_codewarrior = true;
14913   else
14914     {
14915       /* For other non-GCC compilers, expect their behavior is DWARF version
14916          compliant.  */
14917     }
14918
14919   cu->checked_producer = true;
14920 }
14921
14922 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14923    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14924    during 4.6.0 experimental.  */
14925
14926 static bool
14927 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14928 {
14929   if (!cu->checked_producer)
14930     check_producer (cu);
14931
14932   return cu->producer_is_gxx_lt_4_6;
14933 }
14934
14935
14936 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14937    with incorrect is_stmt attributes.  */
14938
14939 static bool
14940 producer_is_codewarrior (struct dwarf2_cu *cu)
14941 {
14942   if (!cu->checked_producer)
14943     check_producer (cu);
14944
14945   return cu->producer_is_codewarrior;
14946 }
14947
14948 /* Return the default accessibility type if it is not overriden by
14949    DW_AT_accessibility.  */
14950
14951 static enum dwarf_access_attribute
14952 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14953 {
14954   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14955     {
14956       /* The default DWARF 2 accessibility for members is public, the default
14957          accessibility for inheritance is private.  */
14958
14959       if (die->tag != DW_TAG_inheritance)
14960         return DW_ACCESS_public;
14961       else
14962         return DW_ACCESS_private;
14963     }
14964   else
14965     {
14966       /* DWARF 3+ defines the default accessibility a different way.  The same
14967          rules apply now for DW_TAG_inheritance as for the members and it only
14968          depends on the container kind.  */
14969
14970       if (die->parent->tag == DW_TAG_class_type)
14971         return DW_ACCESS_private;
14972       else
14973         return DW_ACCESS_public;
14974     }
14975 }
14976
14977 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14978    offset.  If the attribute was not found return 0, otherwise return
14979    1.  If it was found but could not properly be handled, set *OFFSET
14980    to 0.  */
14981
14982 static int
14983 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14984                              LONGEST *offset)
14985 {
14986   struct attribute *attr;
14987
14988   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14989   if (attr != NULL)
14990     {
14991       *offset = 0;
14992
14993       /* Note that we do not check for a section offset first here.
14994          This is because DW_AT_data_member_location is new in DWARF 4,
14995          so if we see it, we can assume that a constant form is really
14996          a constant and not a section offset.  */
14997       if (attr_form_is_constant (attr))
14998         *offset = dwarf2_get_attr_constant_value (attr, 0);
14999       else if (attr_form_is_section_offset (attr))
15000         dwarf2_complex_location_expr_complaint ();
15001       else if (attr_form_is_block (attr))
15002         *offset = decode_locdesc (DW_BLOCK (attr), cu);
15003       else
15004         dwarf2_complex_location_expr_complaint ();
15005
15006       return 1;
15007     }
15008
15009   return 0;
15010 }
15011
15012 /* Add an aggregate field to the field list.  */
15013
15014 static void
15015 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15016                   struct dwarf2_cu *cu)
15017 {
15018   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15019   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15020   struct nextfield *new_field;
15021   struct attribute *attr;
15022   struct field *fp;
15023   const char *fieldname = "";
15024
15025   if (die->tag == DW_TAG_inheritance)
15026     {
15027       fip->baseclasses.emplace_back ();
15028       new_field = &fip->baseclasses.back ();
15029     }
15030   else
15031     {
15032       fip->fields.emplace_back ();
15033       new_field = &fip->fields.back ();
15034     }
15035
15036   fip->nfields++;
15037
15038   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15039   if (attr)
15040     new_field->accessibility = DW_UNSND (attr);
15041   else
15042     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15043   if (new_field->accessibility != DW_ACCESS_public)
15044     fip->non_public_fields = 1;
15045
15046   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15047   if (attr)
15048     new_field->virtuality = DW_UNSND (attr);
15049   else
15050     new_field->virtuality = DW_VIRTUALITY_none;
15051
15052   fp = &new_field->field;
15053
15054   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15055     {
15056       LONGEST offset;
15057
15058       /* Data member other than a C++ static data member.  */
15059
15060       /* Get type of field.  */
15061       fp->type = die_type (die, cu);
15062
15063       SET_FIELD_BITPOS (*fp, 0);
15064
15065       /* Get bit size of field (zero if none).  */
15066       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15067       if (attr)
15068         {
15069           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15070         }
15071       else
15072         {
15073           FIELD_BITSIZE (*fp) = 0;
15074         }
15075
15076       /* Get bit offset of field.  */
15077       if (handle_data_member_location (die, cu, &offset))
15078         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15079       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15080       if (attr)
15081         {
15082           if (gdbarch_bits_big_endian (gdbarch))
15083             {
15084               /* For big endian bits, the DW_AT_bit_offset gives the
15085                  additional bit offset from the MSB of the containing
15086                  anonymous object to the MSB of the field.  We don't
15087                  have to do anything special since we don't need to
15088                  know the size of the anonymous object.  */
15089               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15090             }
15091           else
15092             {
15093               /* For little endian bits, compute the bit offset to the
15094                  MSB of the anonymous object, subtract off the number of
15095                  bits from the MSB of the field to the MSB of the
15096                  object, and then subtract off the number of bits of
15097                  the field itself.  The result is the bit offset of
15098                  the LSB of the field.  */
15099               int anonymous_size;
15100               int bit_offset = DW_UNSND (attr);
15101
15102               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15103               if (attr)
15104                 {
15105                   /* The size of the anonymous object containing
15106                      the bit field is explicit, so use the
15107                      indicated size (in bytes).  */
15108                   anonymous_size = DW_UNSND (attr);
15109                 }
15110               else
15111                 {
15112                   /* The size of the anonymous object containing
15113                      the bit field must be inferred from the type
15114                      attribute of the data member containing the
15115                      bit field.  */
15116                   anonymous_size = TYPE_LENGTH (fp->type);
15117                 }
15118               SET_FIELD_BITPOS (*fp,
15119                                 (FIELD_BITPOS (*fp)
15120                                  + anonymous_size * bits_per_byte
15121                                  - bit_offset - FIELD_BITSIZE (*fp)));
15122             }
15123         }
15124       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15125       if (attr != NULL)
15126         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15127                                 + dwarf2_get_attr_constant_value (attr, 0)));
15128
15129       /* Get name of field.  */
15130       fieldname = dwarf2_name (die, cu);
15131       if (fieldname == NULL)
15132         fieldname = "";
15133
15134       /* The name is already allocated along with this objfile, so we don't
15135          need to duplicate it for the type.  */
15136       fp->name = fieldname;
15137
15138       /* Change accessibility for artificial fields (e.g. virtual table
15139          pointer or virtual base class pointer) to private.  */
15140       if (dwarf2_attr (die, DW_AT_artificial, cu))
15141         {
15142           FIELD_ARTIFICIAL (*fp) = 1;
15143           new_field->accessibility = DW_ACCESS_private;
15144           fip->non_public_fields = 1;
15145         }
15146     }
15147   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15148     {
15149       /* C++ static member.  */
15150
15151       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15152          is a declaration, but all versions of G++ as of this writing
15153          (so through at least 3.2.1) incorrectly generate
15154          DW_TAG_variable tags.  */
15155
15156       const char *physname;
15157
15158       /* Get name of field.  */
15159       fieldname = dwarf2_name (die, cu);
15160       if (fieldname == NULL)
15161         return;
15162
15163       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15164       if (attr
15165           /* Only create a symbol if this is an external value.
15166              new_symbol checks this and puts the value in the global symbol
15167              table, which we want.  If it is not external, new_symbol
15168              will try to put the value in cu->list_in_scope which is wrong.  */
15169           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15170         {
15171           /* A static const member, not much different than an enum as far as
15172              we're concerned, except that we can support more types.  */
15173           new_symbol (die, NULL, cu);
15174         }
15175
15176       /* Get physical name.  */
15177       physname = dwarf2_physname (fieldname, die, cu);
15178
15179       /* The name is already allocated along with this objfile, so we don't
15180          need to duplicate it for the type.  */
15181       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15182       FIELD_TYPE (*fp) = die_type (die, cu);
15183       FIELD_NAME (*fp) = fieldname;
15184     }
15185   else if (die->tag == DW_TAG_inheritance)
15186     {
15187       LONGEST offset;
15188
15189       /* C++ base class field.  */
15190       if (handle_data_member_location (die, cu, &offset))
15191         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15192       FIELD_BITSIZE (*fp) = 0;
15193       FIELD_TYPE (*fp) = die_type (die, cu);
15194       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15195     }
15196   else if (die->tag == DW_TAG_variant_part)
15197     {
15198       /* process_structure_scope will treat this DIE as a union.  */
15199       process_structure_scope (die, cu);
15200
15201       /* The variant part is relative to the start of the enclosing
15202          structure.  */
15203       SET_FIELD_BITPOS (*fp, 0);
15204       fp->type = get_die_type (die, cu);
15205       fp->artificial = 1;
15206       fp->name = "<<variant>>";
15207
15208       /* Normally a DW_TAG_variant_part won't have a size, but our
15209          representation requires one, so set it to the maximum of the
15210          child sizes.  */
15211       if (TYPE_LENGTH (fp->type) == 0)
15212         {
15213           unsigned max = 0;
15214           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15215             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15216               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15217           TYPE_LENGTH (fp->type) = max;
15218         }
15219     }
15220   else
15221     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15222 }
15223
15224 /* Can the type given by DIE define another type?  */
15225
15226 static bool
15227 type_can_define_types (const struct die_info *die)
15228 {
15229   switch (die->tag)
15230     {
15231     case DW_TAG_typedef:
15232     case DW_TAG_class_type:
15233     case DW_TAG_structure_type:
15234     case DW_TAG_union_type:
15235     case DW_TAG_enumeration_type:
15236       return true;
15237
15238     default:
15239       return false;
15240     }
15241 }
15242
15243 /* Add a type definition defined in the scope of the FIP's class.  */
15244
15245 static void
15246 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15247                       struct dwarf2_cu *cu)
15248 {
15249   struct decl_field fp;
15250   memset (&fp, 0, sizeof (fp));
15251
15252   gdb_assert (type_can_define_types (die));
15253
15254   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15255   fp.name = dwarf2_name (die, cu);
15256   fp.type = read_type_die (die, cu);
15257
15258   /* Save accessibility.  */
15259   enum dwarf_access_attribute accessibility;
15260   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15261   if (attr != NULL)
15262     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15263   else
15264     accessibility = dwarf2_default_access_attribute (die, cu);
15265   switch (accessibility)
15266     {
15267     case DW_ACCESS_public:
15268       /* The assumed value if neither private nor protected.  */
15269       break;
15270     case DW_ACCESS_private:
15271       fp.is_private = 1;
15272       break;
15273     case DW_ACCESS_protected:
15274       fp.is_protected = 1;
15275       break;
15276     default:
15277       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15278     }
15279
15280   if (die->tag == DW_TAG_typedef)
15281     fip->typedef_field_list.push_back (fp);
15282   else
15283     fip->nested_types_list.push_back (fp);
15284 }
15285
15286 /* Create the vector of fields, and attach it to the type.  */
15287
15288 static void
15289 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15290                               struct dwarf2_cu *cu)
15291 {
15292   int nfields = fip->nfields;
15293
15294   /* Record the field count, allocate space for the array of fields,
15295      and create blank accessibility bitfields if necessary.  */
15296   TYPE_NFIELDS (type) = nfields;
15297   TYPE_FIELDS (type) = (struct field *)
15298     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15299
15300   if (fip->non_public_fields && cu->language != language_ada)
15301     {
15302       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15303
15304       TYPE_FIELD_PRIVATE_BITS (type) =
15305         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15306       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15307
15308       TYPE_FIELD_PROTECTED_BITS (type) =
15309         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15310       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15311
15312       TYPE_FIELD_IGNORE_BITS (type) =
15313         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15314       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15315     }
15316
15317   /* If the type has baseclasses, allocate and clear a bit vector for
15318      TYPE_FIELD_VIRTUAL_BITS.  */
15319   if (!fip->baseclasses.empty () && cu->language != language_ada)
15320     {
15321       int num_bytes = B_BYTES (fip->baseclasses.size ());
15322       unsigned char *pointer;
15323
15324       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15325       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15326       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15327       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15328       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15329     }
15330
15331   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15332     {
15333       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15334
15335       for (int index = 0; index < nfields; ++index)
15336         {
15337           struct nextfield &field = fip->fields[index];
15338
15339           if (field.variant.is_discriminant)
15340             di->discriminant_index = index;
15341           else if (field.variant.default_branch)
15342             di->default_index = index;
15343           else
15344             di->discriminants[index] = field.variant.discriminant_value;
15345         }
15346     }
15347
15348   /* Copy the saved-up fields into the field vector.  */
15349   for (int i = 0; i < nfields; ++i)
15350     {
15351       struct nextfield &field
15352         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15353            : fip->fields[i - fip->baseclasses.size ()]);
15354
15355       TYPE_FIELD (type, i) = field.field;
15356       switch (field.accessibility)
15357         {
15358         case DW_ACCESS_private:
15359           if (cu->language != language_ada)
15360             SET_TYPE_FIELD_PRIVATE (type, i);
15361           break;
15362
15363         case DW_ACCESS_protected:
15364           if (cu->language != language_ada)
15365             SET_TYPE_FIELD_PROTECTED (type, i);
15366           break;
15367
15368         case DW_ACCESS_public:
15369           break;
15370
15371         default:
15372           /* Unknown accessibility.  Complain and treat it as public.  */
15373           {
15374             complaint (_("unsupported accessibility %d"),
15375                        field.accessibility);
15376           }
15377           break;
15378         }
15379       if (i < fip->baseclasses.size ())
15380         {
15381           switch (field.virtuality)
15382             {
15383             case DW_VIRTUALITY_virtual:
15384             case DW_VIRTUALITY_pure_virtual:
15385               if (cu->language == language_ada)
15386                 error (_("unexpected virtuality in component of Ada type"));
15387               SET_TYPE_FIELD_VIRTUAL (type, i);
15388               break;
15389             }
15390         }
15391     }
15392 }
15393
15394 /* Return true if this member function is a constructor, false
15395    otherwise.  */
15396
15397 static int
15398 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15399 {
15400   const char *fieldname;
15401   const char *type_name;
15402   int len;
15403
15404   if (die->parent == NULL)
15405     return 0;
15406
15407   if (die->parent->tag != DW_TAG_structure_type
15408       && die->parent->tag != DW_TAG_union_type
15409       && die->parent->tag != DW_TAG_class_type)
15410     return 0;
15411
15412   fieldname = dwarf2_name (die, cu);
15413   type_name = dwarf2_name (die->parent, cu);
15414   if (fieldname == NULL || type_name == NULL)
15415     return 0;
15416
15417   len = strlen (fieldname);
15418   return (strncmp (fieldname, type_name, len) == 0
15419           && (type_name[len] == '\0' || type_name[len] == '<'));
15420 }
15421
15422 /* Add a member function to the proper fieldlist.  */
15423
15424 static void
15425 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15426                       struct type *type, struct dwarf2_cu *cu)
15427 {
15428   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15429   struct attribute *attr;
15430   int i;
15431   struct fnfieldlist *flp = nullptr;
15432   struct fn_field *fnp;
15433   const char *fieldname;
15434   struct type *this_type;
15435   enum dwarf_access_attribute accessibility;
15436
15437   if (cu->language == language_ada)
15438     error (_("unexpected member function in Ada type"));
15439
15440   /* Get name of member function.  */
15441   fieldname = dwarf2_name (die, cu);
15442   if (fieldname == NULL)
15443     return;
15444
15445   /* Look up member function name in fieldlist.  */
15446   for (i = 0; i < fip->fnfieldlists.size (); i++)
15447     {
15448       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15449         {
15450           flp = &fip->fnfieldlists[i];
15451           break;
15452         }
15453     }
15454
15455   /* Create a new fnfieldlist if necessary.  */
15456   if (flp == nullptr)
15457     {
15458       fip->fnfieldlists.emplace_back ();
15459       flp = &fip->fnfieldlists.back ();
15460       flp->name = fieldname;
15461       i = fip->fnfieldlists.size () - 1;
15462     }
15463
15464   /* Create a new member function field and add it to the vector of
15465      fnfieldlists.  */
15466   flp->fnfields.emplace_back ();
15467   fnp = &flp->fnfields.back ();
15468
15469   /* Delay processing of the physname until later.  */
15470   if (cu->language == language_cplus)
15471     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15472                         die, cu);
15473   else
15474     {
15475       const char *physname = dwarf2_physname (fieldname, die, cu);
15476       fnp->physname = physname ? physname : "";
15477     }
15478
15479   fnp->type = alloc_type (objfile);
15480   this_type = read_type_die (die, cu);
15481   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15482     {
15483       int nparams = TYPE_NFIELDS (this_type);
15484
15485       /* TYPE is the domain of this method, and THIS_TYPE is the type
15486            of the method itself (TYPE_CODE_METHOD).  */
15487       smash_to_method_type (fnp->type, type,
15488                             TYPE_TARGET_TYPE (this_type),
15489                             TYPE_FIELDS (this_type),
15490                             TYPE_NFIELDS (this_type),
15491                             TYPE_VARARGS (this_type));
15492
15493       /* Handle static member functions.
15494          Dwarf2 has no clean way to discern C++ static and non-static
15495          member functions.  G++ helps GDB by marking the first
15496          parameter for non-static member functions (which is the this
15497          pointer) as artificial.  We obtain this information from
15498          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15499       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15500         fnp->voffset = VOFFSET_STATIC;
15501     }
15502   else
15503     complaint (_("member function type missing for '%s'"),
15504                dwarf2_full_name (fieldname, die, cu));
15505
15506   /* Get fcontext from DW_AT_containing_type if present.  */
15507   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15508     fnp->fcontext = die_containing_type (die, cu);
15509
15510   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15511      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15512
15513   /* Get accessibility.  */
15514   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15515   if (attr)
15516     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15517   else
15518     accessibility = dwarf2_default_access_attribute (die, cu);
15519   switch (accessibility)
15520     {
15521     case DW_ACCESS_private:
15522       fnp->is_private = 1;
15523       break;
15524     case DW_ACCESS_protected:
15525       fnp->is_protected = 1;
15526       break;
15527     }
15528
15529   /* Check for artificial methods.  */
15530   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15531   if (attr && DW_UNSND (attr) != 0)
15532     fnp->is_artificial = 1;
15533
15534   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15535
15536   /* Get index in virtual function table if it is a virtual member
15537      function.  For older versions of GCC, this is an offset in the
15538      appropriate virtual table, as specified by DW_AT_containing_type.
15539      For everyone else, it is an expression to be evaluated relative
15540      to the object address.  */
15541
15542   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15543   if (attr)
15544     {
15545       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15546         {
15547           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15548             {
15549               /* Old-style GCC.  */
15550               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15551             }
15552           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15553                    || (DW_BLOCK (attr)->size > 1
15554                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15555                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15556             {
15557               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15558               if ((fnp->voffset % cu->header.addr_size) != 0)
15559                 dwarf2_complex_location_expr_complaint ();
15560               else
15561                 fnp->voffset /= cu->header.addr_size;
15562               fnp->voffset += 2;
15563             }
15564           else
15565             dwarf2_complex_location_expr_complaint ();
15566
15567           if (!fnp->fcontext)
15568             {
15569               /* If there is no `this' field and no DW_AT_containing_type,
15570                  we cannot actually find a base class context for the
15571                  vtable!  */
15572               if (TYPE_NFIELDS (this_type) == 0
15573                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15574                 {
15575                   complaint (_("cannot determine context for virtual member "
15576                                "function \"%s\" (offset %s)"),
15577                              fieldname, sect_offset_str (die->sect_off));
15578                 }
15579               else
15580                 {
15581                   fnp->fcontext
15582                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15583                 }
15584             }
15585         }
15586       else if (attr_form_is_section_offset (attr))
15587         {
15588           dwarf2_complex_location_expr_complaint ();
15589         }
15590       else
15591         {
15592           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15593                                                  fieldname);
15594         }
15595     }
15596   else
15597     {
15598       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15599       if (attr && DW_UNSND (attr))
15600         {
15601           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15602           complaint (_("Member function \"%s\" (offset %s) is virtual "
15603                        "but the vtable offset is not specified"),
15604                      fieldname, sect_offset_str (die->sect_off));
15605           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15606           TYPE_CPLUS_DYNAMIC (type) = 1;
15607         }
15608     }
15609 }
15610
15611 /* Create the vector of member function fields, and attach it to the type.  */
15612
15613 static void
15614 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15615                                  struct dwarf2_cu *cu)
15616 {
15617   if (cu->language == language_ada)
15618     error (_("unexpected member functions in Ada type"));
15619
15620   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15621   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15622     TYPE_ALLOC (type,
15623                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15624
15625   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15626     {
15627       struct fnfieldlist &nf = fip->fnfieldlists[i];
15628       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15629
15630       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15631       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15632       fn_flp->fn_fields = (struct fn_field *)
15633         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15634
15635       for (int k = 0; k < nf.fnfields.size (); ++k)
15636         fn_flp->fn_fields[k] = nf.fnfields[k];
15637     }
15638
15639   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15640 }
15641
15642 /* Returns non-zero if NAME is the name of a vtable member in CU's
15643    language, zero otherwise.  */
15644 static int
15645 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15646 {
15647   static const char vptr[] = "_vptr";
15648
15649   /* Look for the C++ form of the vtable.  */
15650   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15651     return 1;
15652
15653   return 0;
15654 }
15655
15656 /* GCC outputs unnamed structures that are really pointers to member
15657    functions, with the ABI-specified layout.  If TYPE describes
15658    such a structure, smash it into a member function type.
15659
15660    GCC shouldn't do this; it should just output pointer to member DIEs.
15661    This is GCC PR debug/28767.  */
15662
15663 static void
15664 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15665 {
15666   struct type *pfn_type, *self_type, *new_type;
15667
15668   /* Check for a structure with no name and two children.  */
15669   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15670     return;
15671
15672   /* Check for __pfn and __delta members.  */
15673   if (TYPE_FIELD_NAME (type, 0) == NULL
15674       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15675       || TYPE_FIELD_NAME (type, 1) == NULL
15676       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15677     return;
15678
15679   /* Find the type of the method.  */
15680   pfn_type = TYPE_FIELD_TYPE (type, 0);
15681   if (pfn_type == NULL
15682       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15683       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15684     return;
15685
15686   /* Look for the "this" argument.  */
15687   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15688   if (TYPE_NFIELDS (pfn_type) == 0
15689       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15690       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15691     return;
15692
15693   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15694   new_type = alloc_type (objfile);
15695   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15696                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15697                         TYPE_VARARGS (pfn_type));
15698   smash_to_methodptr_type (type, new_type);
15699 }
15700
15701 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15702    appropriate error checking and issuing complaints if there is a
15703    problem.  */
15704
15705 static ULONGEST
15706 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15707 {
15708   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15709
15710   if (attr == nullptr)
15711     return 0;
15712
15713   if (!attr_form_is_constant (attr))
15714     {
15715       complaint (_("DW_AT_alignment must have constant form"
15716                    " - DIE at %s [in module %s]"),
15717                  sect_offset_str (die->sect_off),
15718                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15719       return 0;
15720     }
15721
15722   ULONGEST align;
15723   if (attr->form == DW_FORM_sdata)
15724     {
15725       LONGEST val = DW_SND (attr);
15726       if (val < 0)
15727         {
15728           complaint (_("DW_AT_alignment value must not be negative"
15729                        " - DIE at %s [in module %s]"),
15730                      sect_offset_str (die->sect_off),
15731                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15732           return 0;
15733         }
15734       align = val;
15735     }
15736   else
15737     align = DW_UNSND (attr);
15738
15739   if (align == 0)
15740     {
15741       complaint (_("DW_AT_alignment value must not be zero"
15742                    " - DIE at %s [in module %s]"),
15743                  sect_offset_str (die->sect_off),
15744                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15745       return 0;
15746     }
15747   if ((align & (align - 1)) != 0)
15748     {
15749       complaint (_("DW_AT_alignment value must be a power of 2"
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
15756   return align;
15757 }
15758
15759 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15760    the alignment for TYPE.  */
15761
15762 static void
15763 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15764                      struct type *type)
15765 {
15766   if (!set_type_align (type, get_alignment (cu, die)))
15767     complaint (_("DW_AT_alignment value too large"
15768                  " - DIE at %s [in module %s]"),
15769                sect_offset_str (die->sect_off),
15770                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15771 }
15772
15773 /* Called when we find the DIE that starts a structure or union scope
15774    (definition) to create a type for the structure or union.  Fill in
15775    the type's name and general properties; the members will not be
15776    processed until process_structure_scope.  A symbol table entry for
15777    the type will also not be done until process_structure_scope (assuming
15778    the type has a name).
15779
15780    NOTE: we need to call these functions regardless of whether or not the
15781    DIE has a DW_AT_name attribute, since it might be an anonymous
15782    structure or union.  This gets the type entered into our set of
15783    user defined types.  */
15784
15785 static struct type *
15786 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15787 {
15788   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15789   struct type *type;
15790   struct attribute *attr;
15791   const char *name;
15792
15793   /* If the definition of this type lives in .debug_types, read that type.
15794      Don't follow DW_AT_specification though, that will take us back up
15795      the chain and we want to go down.  */
15796   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15797   if (attr)
15798     {
15799       type = get_DW_AT_signature_type (die, attr, cu);
15800
15801       /* The type's CU may not be the same as CU.
15802          Ensure TYPE is recorded with CU in die_type_hash.  */
15803       return set_die_type (die, type, cu);
15804     }
15805
15806   type = alloc_type (objfile);
15807   INIT_CPLUS_SPECIFIC (type);
15808
15809   name = dwarf2_name (die, cu);
15810   if (name != NULL)
15811     {
15812       if (cu->language == language_cplus
15813           || cu->language == language_d
15814           || cu->language == language_rust)
15815         {
15816           const char *full_name = dwarf2_full_name (name, die, cu);
15817
15818           /* dwarf2_full_name might have already finished building the DIE's
15819              type.  If so, there is no need to continue.  */
15820           if (get_die_type (die, cu) != NULL)
15821             return get_die_type (die, cu);
15822
15823           TYPE_NAME (type) = full_name;
15824         }
15825       else
15826         {
15827           /* The name is already allocated along with this objfile, so
15828              we don't need to duplicate it for the type.  */
15829           TYPE_NAME (type) = name;
15830         }
15831     }
15832
15833   if (die->tag == DW_TAG_structure_type)
15834     {
15835       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15836     }
15837   else if (die->tag == DW_TAG_union_type)
15838     {
15839       TYPE_CODE (type) = TYPE_CODE_UNION;
15840     }
15841   else if (die->tag == DW_TAG_variant_part)
15842     {
15843       TYPE_CODE (type) = TYPE_CODE_UNION;
15844       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15845     }
15846   else
15847     {
15848       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15849     }
15850
15851   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15852     TYPE_DECLARED_CLASS (type) = 1;
15853
15854   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15855   if (attr)
15856     {
15857       if (attr_form_is_constant (attr))
15858         TYPE_LENGTH (type) = DW_UNSND (attr);
15859       else
15860         {
15861           /* For the moment, dynamic type sizes are not supported
15862              by GDB's struct type.  The actual size is determined
15863              on-demand when resolving the type of a given object,
15864              so set the type's length to zero for now.  Otherwise,
15865              we record an expression as the length, and that expression
15866              could lead to a very large value, which could eventually
15867              lead to us trying to allocate that much memory when creating
15868              a value of that type.  */
15869           TYPE_LENGTH (type) = 0;
15870         }
15871     }
15872   else
15873     {
15874       TYPE_LENGTH (type) = 0;
15875     }
15876
15877   maybe_set_alignment (cu, die, type);
15878
15879   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15880     {
15881       /* ICC<14 does not output the required DW_AT_declaration on
15882          incomplete types, but gives them a size of zero.  */
15883       TYPE_STUB (type) = 1;
15884     }
15885   else
15886     TYPE_STUB_SUPPORTED (type) = 1;
15887
15888   if (die_is_declaration (die, cu))
15889     TYPE_STUB (type) = 1;
15890   else if (attr == NULL && die->child == NULL
15891            && producer_is_realview (cu->producer))
15892     /* RealView does not output the required DW_AT_declaration
15893        on incomplete types.  */
15894     TYPE_STUB (type) = 1;
15895
15896   /* We need to add the type field to the die immediately so we don't
15897      infinitely recurse when dealing with pointers to the structure
15898      type within the structure itself.  */
15899   set_die_type (die, type, cu);
15900
15901   /* set_die_type should be already done.  */
15902   set_descriptive_type (type, die, cu);
15903
15904   return type;
15905 }
15906
15907 /* A helper for process_structure_scope that handles a single member
15908    DIE.  */
15909
15910 static void
15911 handle_struct_member_die (struct die_info *child_die, struct type *type,
15912                           struct field_info *fi,
15913                           std::vector<struct symbol *> *template_args,
15914                           struct dwarf2_cu *cu)
15915 {
15916   if (child_die->tag == DW_TAG_member
15917       || child_die->tag == DW_TAG_variable
15918       || child_die->tag == DW_TAG_variant_part)
15919     {
15920       /* NOTE: carlton/2002-11-05: A C++ static data member
15921          should be a DW_TAG_member that is a declaration, but
15922          all versions of G++ as of this writing (so through at
15923          least 3.2.1) incorrectly generate DW_TAG_variable
15924          tags for them instead.  */
15925       dwarf2_add_field (fi, child_die, cu);
15926     }
15927   else if (child_die->tag == DW_TAG_subprogram)
15928     {
15929       /* Rust doesn't have member functions in the C++ sense.
15930          However, it does emit ordinary functions as children
15931          of a struct DIE.  */
15932       if (cu->language == language_rust)
15933         read_func_scope (child_die, cu);
15934       else
15935         {
15936           /* C++ member function.  */
15937           dwarf2_add_member_fn (fi, child_die, type, cu);
15938         }
15939     }
15940   else if (child_die->tag == DW_TAG_inheritance)
15941     {
15942       /* C++ base class field.  */
15943       dwarf2_add_field (fi, child_die, cu);
15944     }
15945   else if (type_can_define_types (child_die))
15946     dwarf2_add_type_defn (fi, child_die, cu);
15947   else if (child_die->tag == DW_TAG_template_type_param
15948            || child_die->tag == DW_TAG_template_value_param)
15949     {
15950       struct symbol *arg = new_symbol (child_die, NULL, cu);
15951
15952       if (arg != NULL)
15953         template_args->push_back (arg);
15954     }
15955   else if (child_die->tag == DW_TAG_variant)
15956     {
15957       /* In a variant we want to get the discriminant and also add a
15958          field for our sole member child.  */
15959       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15960
15961       for (struct die_info *variant_child = child_die->child;
15962            variant_child != NULL;
15963            variant_child = sibling_die (variant_child))
15964         {
15965           if (variant_child->tag == DW_TAG_member)
15966             {
15967               handle_struct_member_die (variant_child, type, fi,
15968                                         template_args, cu);
15969               /* Only handle the one.  */
15970               break;
15971             }
15972         }
15973
15974       /* We don't handle this but we might as well report it if we see
15975          it.  */
15976       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15977           complaint (_("DW_AT_discr_list is not supported yet"
15978                        " - DIE at %s [in module %s]"),
15979                      sect_offset_str (child_die->sect_off),
15980                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15981
15982       /* The first field was just added, so we can stash the
15983          discriminant there.  */
15984       gdb_assert (!fi->fields.empty ());
15985       if (discr == NULL)
15986         fi->fields.back ().variant.default_branch = true;
15987       else
15988         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15989     }
15990 }
15991
15992 /* Finish creating a structure or union type, including filling in
15993    its members and creating a symbol for it.  */
15994
15995 static void
15996 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15997 {
15998   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15999   struct die_info *child_die;
16000   struct type *type;
16001
16002   type = get_die_type (die, cu);
16003   if (type == NULL)
16004     type = read_structure_type (die, cu);
16005
16006   /* When reading a DW_TAG_variant_part, we need to notice when we
16007      read the discriminant member, so we can record it later in the
16008      discriminant_info.  */
16009   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16010   sect_offset discr_offset;
16011   bool has_template_parameters = false;
16012
16013   if (is_variant_part)
16014     {
16015       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16016       if (discr == NULL)
16017         {
16018           /* Maybe it's a univariant form, an extension we support.
16019              In this case arrange not to check the offset.  */
16020           is_variant_part = false;
16021         }
16022       else if (attr_form_is_ref (discr))
16023         {
16024           struct dwarf2_cu *target_cu = cu;
16025           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16026
16027           discr_offset = target_die->sect_off;
16028         }
16029       else
16030         {
16031           complaint (_("DW_AT_discr does not have DIE reference form"
16032                        " - DIE at %s [in module %s]"),
16033                      sect_offset_str (die->sect_off),
16034                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16035           is_variant_part = false;
16036         }
16037     }
16038
16039   if (die->child != NULL && ! die_is_declaration (die, cu))
16040     {
16041       struct field_info fi;
16042       std::vector<struct symbol *> template_args;
16043
16044       child_die = die->child;
16045
16046       while (child_die && child_die->tag)
16047         {
16048           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16049
16050           if (is_variant_part && discr_offset == child_die->sect_off)
16051             fi.fields.back ().variant.is_discriminant = true;
16052
16053           child_die = sibling_die (child_die);
16054         }
16055
16056       /* Attach template arguments to type.  */
16057       if (!template_args.empty ())
16058         {
16059           has_template_parameters = true;
16060           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16061           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16062           TYPE_TEMPLATE_ARGUMENTS (type)
16063             = XOBNEWVEC (&objfile->objfile_obstack,
16064                          struct symbol *,
16065                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16066           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16067                   template_args.data (),
16068                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16069                    * sizeof (struct symbol *)));
16070         }
16071
16072       /* Attach fields and member functions to the type.  */
16073       if (fi.nfields)
16074         dwarf2_attach_fields_to_type (&fi, type, cu);
16075       if (!fi.fnfieldlists.empty ())
16076         {
16077           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16078
16079           /* Get the type which refers to the base class (possibly this
16080              class itself) which contains the vtable pointer for the current
16081              class from the DW_AT_containing_type attribute.  This use of
16082              DW_AT_containing_type is a GNU extension.  */
16083
16084           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16085             {
16086               struct type *t = die_containing_type (die, cu);
16087
16088               set_type_vptr_basetype (type, t);
16089               if (type == t)
16090                 {
16091                   int i;
16092
16093                   /* Our own class provides vtbl ptr.  */
16094                   for (i = TYPE_NFIELDS (t) - 1;
16095                        i >= TYPE_N_BASECLASSES (t);
16096                        --i)
16097                     {
16098                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16099
16100                       if (is_vtable_name (fieldname, cu))
16101                         {
16102                           set_type_vptr_fieldno (type, i);
16103                           break;
16104                         }
16105                     }
16106
16107                   /* Complain if virtual function table field not found.  */
16108                   if (i < TYPE_N_BASECLASSES (t))
16109                     complaint (_("virtual function table pointer "
16110                                  "not found when defining class '%s'"),
16111                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16112                 }
16113               else
16114                 {
16115                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16116                 }
16117             }
16118           else if (cu->producer
16119                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16120             {
16121               /* The IBM XLC compiler does not provide direct indication
16122                  of the containing type, but the vtable pointer is
16123                  always named __vfp.  */
16124
16125               int i;
16126
16127               for (i = TYPE_NFIELDS (type) - 1;
16128                    i >= TYPE_N_BASECLASSES (type);
16129                    --i)
16130                 {
16131                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16132                     {
16133                       set_type_vptr_fieldno (type, i);
16134                       set_type_vptr_basetype (type, type);
16135                       break;
16136                     }
16137                 }
16138             }
16139         }
16140
16141       /* Copy fi.typedef_field_list linked list elements content into the
16142          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16143       if (!fi.typedef_field_list.empty ())
16144         {
16145           int count = fi.typedef_field_list.size ();
16146
16147           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16148           TYPE_TYPEDEF_FIELD_ARRAY (type)
16149             = ((struct decl_field *)
16150                TYPE_ALLOC (type,
16151                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16152           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16153
16154           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16155             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16156         }
16157
16158       /* Copy fi.nested_types_list linked list elements content into the
16159          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16160       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16161         {
16162           int count = fi.nested_types_list.size ();
16163
16164           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16165           TYPE_NESTED_TYPES_ARRAY (type)
16166             = ((struct decl_field *)
16167                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16168           TYPE_NESTED_TYPES_COUNT (type) = count;
16169
16170           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16171             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16172         }
16173     }
16174
16175   quirk_gcc_member_function_pointer (type, objfile);
16176   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16177     cu->rust_unions.push_back (type);
16178
16179   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16180      snapshots) has been known to create a die giving a declaration
16181      for a class that has, as a child, a die giving a definition for a
16182      nested class.  So we have to process our children even if the
16183      current die is a declaration.  Normally, of course, a declaration
16184      won't have any children at all.  */
16185
16186   child_die = die->child;
16187
16188   while (child_die != NULL && child_die->tag)
16189     {
16190       if (child_die->tag == DW_TAG_member
16191           || child_die->tag == DW_TAG_variable
16192           || child_die->tag == DW_TAG_inheritance
16193           || child_die->tag == DW_TAG_template_value_param
16194           || child_die->tag == DW_TAG_template_type_param)
16195         {
16196           /* Do nothing.  */
16197         }
16198       else
16199         process_die (child_die, cu);
16200
16201       child_die = sibling_die (child_die);
16202     }
16203
16204   /* Do not consider external references.  According to the DWARF standard,
16205      these DIEs are identified by the fact that they have no byte_size
16206      attribute, and a declaration attribute.  */
16207   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16208       || !die_is_declaration (die, cu))
16209     {
16210       struct symbol *sym = new_symbol (die, type, cu);
16211
16212       if (has_template_parameters)
16213         {
16214           /* Make sure that the symtab is set on the new symbols.
16215              Even though they don't appear in this symtab directly,
16216              other parts of gdb assume that symbols do, and this is
16217              reasonably true.  */
16218           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16219             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16220                                symbol_symtab (sym));
16221         }
16222     }
16223 }
16224
16225 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16226    update TYPE using some information only available in DIE's children.  */
16227
16228 static void
16229 update_enumeration_type_from_children (struct die_info *die,
16230                                        struct type *type,
16231                                        struct dwarf2_cu *cu)
16232 {
16233   struct die_info *child_die;
16234   int unsigned_enum = 1;
16235   int flag_enum = 1;
16236   ULONGEST mask = 0;
16237
16238   auto_obstack obstack;
16239
16240   for (child_die = die->child;
16241        child_die != NULL && child_die->tag;
16242        child_die = sibling_die (child_die))
16243     {
16244       struct attribute *attr;
16245       LONGEST value;
16246       const gdb_byte *bytes;
16247       struct dwarf2_locexpr_baton *baton;
16248       const char *name;
16249
16250       if (child_die->tag != DW_TAG_enumerator)
16251         continue;
16252
16253       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16254       if (attr == NULL)
16255         continue;
16256
16257       name = dwarf2_name (child_die, cu);
16258       if (name == NULL)
16259         name = "<anonymous enumerator>";
16260
16261       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16262                                &value, &bytes, &baton);
16263       if (value < 0)
16264         {
16265           unsigned_enum = 0;
16266           flag_enum = 0;
16267         }
16268       else if ((mask & value) != 0)
16269         flag_enum = 0;
16270       else
16271         mask |= value;
16272
16273       /* If we already know that the enum type is neither unsigned, nor
16274          a flag type, no need to look at the rest of the enumerates.  */
16275       if (!unsigned_enum && !flag_enum)
16276         break;
16277     }
16278
16279   if (unsigned_enum)
16280     TYPE_UNSIGNED (type) = 1;
16281   if (flag_enum)
16282     TYPE_FLAG_ENUM (type) = 1;
16283 }
16284
16285 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16286    complete the type's fields yet, or create any symbols.  */
16287
16288 static struct type *
16289 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16290 {
16291   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16292   struct type *type;
16293   struct attribute *attr;
16294   const char *name;
16295
16296   /* If the definition of this type lives in .debug_types, read that type.
16297      Don't follow DW_AT_specification though, that will take us back up
16298      the chain and we want to go down.  */
16299   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16300   if (attr)
16301     {
16302       type = get_DW_AT_signature_type (die, attr, cu);
16303
16304       /* The type's CU may not be the same as CU.
16305          Ensure TYPE is recorded with CU in die_type_hash.  */
16306       return set_die_type (die, type, cu);
16307     }
16308
16309   type = alloc_type (objfile);
16310
16311   TYPE_CODE (type) = TYPE_CODE_ENUM;
16312   name = dwarf2_full_name (NULL, die, cu);
16313   if (name != NULL)
16314     TYPE_NAME (type) = name;
16315
16316   attr = dwarf2_attr (die, DW_AT_type, cu);
16317   if (attr != NULL)
16318     {
16319       struct type *underlying_type = die_type (die, cu);
16320
16321       TYPE_TARGET_TYPE (type) = underlying_type;
16322     }
16323
16324   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16325   if (attr)
16326     {
16327       TYPE_LENGTH (type) = DW_UNSND (attr);
16328     }
16329   else
16330     {
16331       TYPE_LENGTH (type) = 0;
16332     }
16333
16334   maybe_set_alignment (cu, die, type);
16335
16336   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16337      declared as private in the package spec, and then defined only
16338      inside the package body.  Such types are known as Taft Amendment
16339      Types.  When another package uses such a type, an incomplete DIE
16340      may be generated by the compiler.  */
16341   if (die_is_declaration (die, cu))
16342     TYPE_STUB (type) = 1;
16343
16344   /* Finish the creation of this type by using the enum's children.
16345      We must call this even when the underlying type has been provided
16346      so that we can determine if we're looking at a "flag" enum.  */
16347   update_enumeration_type_from_children (die, type, cu);
16348
16349   /* If this type has an underlying type that is not a stub, then we
16350      may use its attributes.  We always use the "unsigned" attribute
16351      in this situation, because ordinarily we guess whether the type
16352      is unsigned -- but the guess can be wrong and the underlying type
16353      can tell us the reality.  However, we defer to a local size
16354      attribute if one exists, because this lets the compiler override
16355      the underlying type if needed.  */
16356   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16357     {
16358       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16359       if (TYPE_LENGTH (type) == 0)
16360         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16361       if (TYPE_RAW_ALIGN (type) == 0
16362           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16363         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16364     }
16365
16366   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16367
16368   return set_die_type (die, type, cu);
16369 }
16370
16371 /* Given a pointer to a die which begins an enumeration, process all
16372    the dies that define the members of the enumeration, and create the
16373    symbol for the enumeration type.
16374
16375    NOTE: We reverse the order of the element list.  */
16376
16377 static void
16378 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16379 {
16380   struct type *this_type;
16381
16382   this_type = get_die_type (die, cu);
16383   if (this_type == NULL)
16384     this_type = read_enumeration_type (die, cu);
16385
16386   if (die->child != NULL)
16387     {
16388       struct die_info *child_die;
16389       struct symbol *sym;
16390       struct field *fields = NULL;
16391       int num_fields = 0;
16392       const char *name;
16393
16394       child_die = die->child;
16395       while (child_die && child_die->tag)
16396         {
16397           if (child_die->tag != DW_TAG_enumerator)
16398             {
16399               process_die (child_die, cu);
16400             }
16401           else
16402             {
16403               name = dwarf2_name (child_die, cu);
16404               if (name)
16405                 {
16406                   sym = new_symbol (child_die, this_type, cu);
16407
16408                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16409                     {
16410                       fields = (struct field *)
16411                         xrealloc (fields,
16412                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16413                                   * sizeof (struct field));
16414                     }
16415
16416                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16417                   FIELD_TYPE (fields[num_fields]) = NULL;
16418                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16419                   FIELD_BITSIZE (fields[num_fields]) = 0;
16420
16421                   num_fields++;
16422                 }
16423             }
16424
16425           child_die = sibling_die (child_die);
16426         }
16427
16428       if (num_fields)
16429         {
16430           TYPE_NFIELDS (this_type) = num_fields;
16431           TYPE_FIELDS (this_type) = (struct field *)
16432             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16433           memcpy (TYPE_FIELDS (this_type), fields,
16434                   sizeof (struct field) * num_fields);
16435           xfree (fields);
16436         }
16437     }
16438
16439   /* If we are reading an enum from a .debug_types unit, and the enum
16440      is a declaration, and the enum is not the signatured type in the
16441      unit, then we do not want to add a symbol for it.  Adding a
16442      symbol would in some cases obscure the true definition of the
16443      enum, giving users an incomplete type when the definition is
16444      actually available.  Note that we do not want to do this for all
16445      enums which are just declarations, because C++0x allows forward
16446      enum declarations.  */
16447   if (cu->per_cu->is_debug_types
16448       && die_is_declaration (die, cu))
16449     {
16450       struct signatured_type *sig_type;
16451
16452       sig_type = (struct signatured_type *) cu->per_cu;
16453       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16454       if (sig_type->type_offset_in_section != die->sect_off)
16455         return;
16456     }
16457
16458   new_symbol (die, this_type, cu);
16459 }
16460
16461 /* Extract all information from a DW_TAG_array_type DIE and put it in
16462    the DIE's type field.  For now, this only handles one dimensional
16463    arrays.  */
16464
16465 static struct type *
16466 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16467 {
16468   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16469   struct die_info *child_die;
16470   struct type *type;
16471   struct type *element_type, *range_type, *index_type;
16472   struct attribute *attr;
16473   const char *name;
16474   struct dynamic_prop *byte_stride_prop = NULL;
16475   unsigned int bit_stride = 0;
16476
16477   element_type = die_type (die, cu);
16478
16479   /* The die_type call above may have already set the type for this DIE.  */
16480   type = get_die_type (die, cu);
16481   if (type)
16482     return type;
16483
16484   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16485   if (attr != NULL)
16486     {
16487       int stride_ok;
16488
16489       byte_stride_prop
16490         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16491       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16492       if (!stride_ok)
16493         {
16494           complaint (_("unable to read array DW_AT_byte_stride "
16495                        " - DIE at %s [in module %s]"),
16496                      sect_offset_str (die->sect_off),
16497                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16498           /* Ignore this attribute.  We will likely not be able to print
16499              arrays of this type correctly, but there is little we can do
16500              to help if we cannot read the attribute's value.  */
16501           byte_stride_prop = NULL;
16502         }
16503     }
16504
16505   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16506   if (attr != NULL)
16507     bit_stride = DW_UNSND (attr);
16508
16509   /* Irix 6.2 native cc creates array types without children for
16510      arrays with unspecified length.  */
16511   if (die->child == NULL)
16512     {
16513       index_type = objfile_type (objfile)->builtin_int;
16514       range_type = create_static_range_type (NULL, index_type, 0, -1);
16515       type = create_array_type_with_stride (NULL, element_type, range_type,
16516                                             byte_stride_prop, bit_stride);
16517       return set_die_type (die, type, cu);
16518     }
16519
16520   std::vector<struct type *> range_types;
16521   child_die = die->child;
16522   while (child_die && child_die->tag)
16523     {
16524       if (child_die->tag == DW_TAG_subrange_type)
16525         {
16526           struct type *child_type = read_type_die (child_die, cu);
16527
16528           if (child_type != NULL)
16529             {
16530               /* The range type was succesfully read.  Save it for the
16531                  array type creation.  */
16532               range_types.push_back (child_type);
16533             }
16534         }
16535       child_die = sibling_die (child_die);
16536     }
16537
16538   /* Dwarf2 dimensions are output from left to right, create the
16539      necessary array types in backwards order.  */
16540
16541   type = element_type;
16542
16543   if (read_array_order (die, cu) == DW_ORD_col_major)
16544     {
16545       int i = 0;
16546
16547       while (i < range_types.size ())
16548         type = create_array_type_with_stride (NULL, type, range_types[i++],
16549                                               byte_stride_prop, bit_stride);
16550     }
16551   else
16552     {
16553       size_t ndim = range_types.size ();
16554       while (ndim-- > 0)
16555         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16556                                               byte_stride_prop, bit_stride);
16557     }
16558
16559   /* Understand Dwarf2 support for vector types (like they occur on
16560      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16561      array type.  This is not part of the Dwarf2/3 standard yet, but a
16562      custom vendor extension.  The main difference between a regular
16563      array and the vector variant is that vectors are passed by value
16564      to functions.  */
16565   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16566   if (attr)
16567     make_vector_type (type);
16568
16569   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16570      implementation may choose to implement triple vectors using this
16571      attribute.  */
16572   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16573   if (attr)
16574     {
16575       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16576         TYPE_LENGTH (type) = DW_UNSND (attr);
16577       else
16578         complaint (_("DW_AT_byte_size for array type smaller "
16579                      "than the total size of elements"));
16580     }
16581
16582   name = dwarf2_name (die, cu);
16583   if (name)
16584     TYPE_NAME (type) = name;
16585
16586   maybe_set_alignment (cu, die, type);
16587
16588   /* Install the type in the die.  */
16589   set_die_type (die, type, cu);
16590
16591   /* set_die_type should be already done.  */
16592   set_descriptive_type (type, die, cu);
16593
16594   return type;
16595 }
16596
16597 static enum dwarf_array_dim_ordering
16598 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16599 {
16600   struct attribute *attr;
16601
16602   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16603
16604   if (attr)
16605     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16606
16607   /* GNU F77 is a special case, as at 08/2004 array type info is the
16608      opposite order to the dwarf2 specification, but data is still
16609      laid out as per normal fortran.
16610
16611      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16612      version checking.  */
16613
16614   if (cu->language == language_fortran
16615       && cu->producer && strstr (cu->producer, "GNU F77"))
16616     {
16617       return DW_ORD_row_major;
16618     }
16619
16620   switch (cu->language_defn->la_array_ordering)
16621     {
16622     case array_column_major:
16623       return DW_ORD_col_major;
16624     case array_row_major:
16625     default:
16626       return DW_ORD_row_major;
16627     };
16628 }
16629
16630 /* Extract all information from a DW_TAG_set_type DIE and put it in
16631    the DIE's type field.  */
16632
16633 static struct type *
16634 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16635 {
16636   struct type *domain_type, *set_type;
16637   struct attribute *attr;
16638
16639   domain_type = die_type (die, cu);
16640
16641   /* The die_type call above may have already set the type for this DIE.  */
16642   set_type = get_die_type (die, cu);
16643   if (set_type)
16644     return set_type;
16645
16646   set_type = create_set_type (NULL, domain_type);
16647
16648   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16649   if (attr)
16650     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16651
16652   maybe_set_alignment (cu, die, set_type);
16653
16654   return set_die_type (die, set_type, cu);
16655 }
16656
16657 /* A helper for read_common_block that creates a locexpr baton.
16658    SYM is the symbol which we are marking as computed.
16659    COMMON_DIE is the DIE for the common block.
16660    COMMON_LOC is the location expression attribute for the common
16661    block itself.
16662    MEMBER_LOC is the location expression attribute for the particular
16663    member of the common block that we are processing.
16664    CU is the CU from which the above come.  */
16665
16666 static void
16667 mark_common_block_symbol_computed (struct symbol *sym,
16668                                    struct die_info *common_die,
16669                                    struct attribute *common_loc,
16670                                    struct attribute *member_loc,
16671                                    struct dwarf2_cu *cu)
16672 {
16673   struct dwarf2_per_objfile *dwarf2_per_objfile
16674     = cu->per_cu->dwarf2_per_objfile;
16675   struct objfile *objfile = dwarf2_per_objfile->objfile;
16676   struct dwarf2_locexpr_baton *baton;
16677   gdb_byte *ptr;
16678   unsigned int cu_off;
16679   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16680   LONGEST offset = 0;
16681
16682   gdb_assert (common_loc && member_loc);
16683   gdb_assert (attr_form_is_block (common_loc));
16684   gdb_assert (attr_form_is_block (member_loc)
16685               || attr_form_is_constant (member_loc));
16686
16687   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16688   baton->per_cu = cu->per_cu;
16689   gdb_assert (baton->per_cu);
16690
16691   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16692
16693   if (attr_form_is_constant (member_loc))
16694     {
16695       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16696       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16697     }
16698   else
16699     baton->size += DW_BLOCK (member_loc)->size;
16700
16701   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16702   baton->data = ptr;
16703
16704   *ptr++ = DW_OP_call4;
16705   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16706   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16707   ptr += 4;
16708
16709   if (attr_form_is_constant (member_loc))
16710     {
16711       *ptr++ = DW_OP_addr;
16712       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16713       ptr += cu->header.addr_size;
16714     }
16715   else
16716     {
16717       /* We have to copy the data here, because DW_OP_call4 will only
16718          use a DW_AT_location attribute.  */
16719       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16720       ptr += DW_BLOCK (member_loc)->size;
16721     }
16722
16723   *ptr++ = DW_OP_plus;
16724   gdb_assert (ptr - baton->data == baton->size);
16725
16726   SYMBOL_LOCATION_BATON (sym) = baton;
16727   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16728 }
16729
16730 /* Create appropriate locally-scoped variables for all the
16731    DW_TAG_common_block entries.  Also create a struct common_block
16732    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16733    is used to sepate the common blocks name namespace from regular
16734    variable names.  */
16735
16736 static void
16737 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16738 {
16739   struct attribute *attr;
16740
16741   attr = dwarf2_attr (die, DW_AT_location, cu);
16742   if (attr)
16743     {
16744       /* Support the .debug_loc offsets.  */
16745       if (attr_form_is_block (attr))
16746         {
16747           /* Ok.  */
16748         }
16749       else if (attr_form_is_section_offset (attr))
16750         {
16751           dwarf2_complex_location_expr_complaint ();
16752           attr = NULL;
16753         }
16754       else
16755         {
16756           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16757                                                  "common block member");
16758           attr = NULL;
16759         }
16760     }
16761
16762   if (die->child != NULL)
16763     {
16764       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16765       struct die_info *child_die;
16766       size_t n_entries = 0, size;
16767       struct common_block *common_block;
16768       struct symbol *sym;
16769
16770       for (child_die = die->child;
16771            child_die && child_die->tag;
16772            child_die = sibling_die (child_die))
16773         ++n_entries;
16774
16775       size = (sizeof (struct common_block)
16776               + (n_entries - 1) * sizeof (struct symbol *));
16777       common_block
16778         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16779                                                  size);
16780       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16781       common_block->n_entries = 0;
16782
16783       for (child_die = die->child;
16784            child_die && child_die->tag;
16785            child_die = sibling_die (child_die))
16786         {
16787           /* Create the symbol in the DW_TAG_common_block block in the current
16788              symbol scope.  */
16789           sym = new_symbol (child_die, NULL, cu);
16790           if (sym != NULL)
16791             {
16792               struct attribute *member_loc;
16793
16794               common_block->contents[common_block->n_entries++] = sym;
16795
16796               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16797                                         cu);
16798               if (member_loc)
16799                 {
16800                   /* GDB has handled this for a long time, but it is
16801                      not specified by DWARF.  It seems to have been
16802                      emitted by gfortran at least as recently as:
16803                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16804                   complaint (_("Variable in common block has "
16805                                "DW_AT_data_member_location "
16806                                "- DIE at %s [in module %s]"),
16807                                sect_offset_str (child_die->sect_off),
16808                              objfile_name (objfile));
16809
16810                   if (attr_form_is_section_offset (member_loc))
16811                     dwarf2_complex_location_expr_complaint ();
16812                   else if (attr_form_is_constant (member_loc)
16813                            || attr_form_is_block (member_loc))
16814                     {
16815                       if (attr)
16816                         mark_common_block_symbol_computed (sym, die, attr,
16817                                                            member_loc, cu);
16818                     }
16819                   else
16820                     dwarf2_complex_location_expr_complaint ();
16821                 }
16822             }
16823         }
16824
16825       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16826       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16827     }
16828 }
16829
16830 /* Create a type for a C++ namespace.  */
16831
16832 static struct type *
16833 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16834 {
16835   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16836   const char *previous_prefix, *name;
16837   int is_anonymous;
16838   struct type *type;
16839
16840   /* For extensions, reuse the type of the original namespace.  */
16841   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16842     {
16843       struct die_info *ext_die;
16844       struct dwarf2_cu *ext_cu = cu;
16845
16846       ext_die = dwarf2_extension (die, &ext_cu);
16847       type = read_type_die (ext_die, ext_cu);
16848
16849       /* EXT_CU may not be the same as CU.
16850          Ensure TYPE is recorded with CU in die_type_hash.  */
16851       return set_die_type (die, type, cu);
16852     }
16853
16854   name = namespace_name (die, &is_anonymous, cu);
16855
16856   /* Now build the name of the current namespace.  */
16857
16858   previous_prefix = determine_prefix (die, cu);
16859   if (previous_prefix[0] != '\0')
16860     name = typename_concat (&objfile->objfile_obstack,
16861                             previous_prefix, name, 0, cu);
16862
16863   /* Create the type.  */
16864   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16865
16866   return set_die_type (die, type, cu);
16867 }
16868
16869 /* Read a namespace scope.  */
16870
16871 static void
16872 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16873 {
16874   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16875   int is_anonymous;
16876
16877   /* Add a symbol associated to this if we haven't seen the namespace
16878      before.  Also, add a using directive if it's an anonymous
16879      namespace.  */
16880
16881   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16882     {
16883       struct type *type;
16884
16885       type = read_type_die (die, cu);
16886       new_symbol (die, type, cu);
16887
16888       namespace_name (die, &is_anonymous, cu);
16889       if (is_anonymous)
16890         {
16891           const char *previous_prefix = determine_prefix (die, cu);
16892
16893           std::vector<const char *> excludes;
16894           add_using_directive (using_directives (cu),
16895                                previous_prefix, TYPE_NAME (type), NULL,
16896                                NULL, excludes, 0, &objfile->objfile_obstack);
16897         }
16898     }
16899
16900   if (die->child != NULL)
16901     {
16902       struct die_info *child_die = die->child;
16903
16904       while (child_die && child_die->tag)
16905         {
16906           process_die (child_die, cu);
16907           child_die = sibling_die (child_die);
16908         }
16909     }
16910 }
16911
16912 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16913    imported module.  Still we need that type as local Fortran "use ... only"
16914    declaration imports depend on the created type in determine_prefix.  */
16915
16916 static struct type *
16917 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16918 {
16919   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16920   const char *module_name;
16921   struct type *type;
16922
16923   module_name = dwarf2_name (die, cu);
16924   if (!module_name)
16925     complaint (_("DW_TAG_module has no name, offset %s"),
16926                sect_offset_str (die->sect_off));
16927   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16928
16929   return set_die_type (die, type, cu);
16930 }
16931
16932 /* Read a Fortran module.  */
16933
16934 static void
16935 read_module (struct die_info *die, struct dwarf2_cu *cu)
16936 {
16937   struct die_info *child_die = die->child;
16938   struct type *type;
16939
16940   type = read_type_die (die, cu);
16941   new_symbol (die, type, cu);
16942
16943   while (child_die && child_die->tag)
16944     {
16945       process_die (child_die, cu);
16946       child_die = sibling_die (child_die);
16947     }
16948 }
16949
16950 /* Return the name of the namespace represented by DIE.  Set
16951    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16952    namespace.  */
16953
16954 static const char *
16955 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16956 {
16957   struct die_info *current_die;
16958   const char *name = NULL;
16959
16960   /* Loop through the extensions until we find a name.  */
16961
16962   for (current_die = die;
16963        current_die != NULL;
16964        current_die = dwarf2_extension (die, &cu))
16965     {
16966       /* We don't use dwarf2_name here so that we can detect the absence
16967          of a name -> anonymous namespace.  */
16968       name = dwarf2_string_attr (die, DW_AT_name, cu);
16969
16970       if (name != NULL)
16971         break;
16972     }
16973
16974   /* Is it an anonymous namespace?  */
16975
16976   *is_anonymous = (name == NULL);
16977   if (*is_anonymous)
16978     name = CP_ANONYMOUS_NAMESPACE_STR;
16979
16980   return name;
16981 }
16982
16983 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16984    the user defined type vector.  */
16985
16986 static struct type *
16987 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16988 {
16989   struct gdbarch *gdbarch
16990     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16991   struct comp_unit_head *cu_header = &cu->header;
16992   struct type *type;
16993   struct attribute *attr_byte_size;
16994   struct attribute *attr_address_class;
16995   int byte_size, addr_class;
16996   struct type *target_type;
16997
16998   target_type = die_type (die, cu);
16999
17000   /* The die_type call above may have already set the type for this DIE.  */
17001   type = get_die_type (die, cu);
17002   if (type)
17003     return type;
17004
17005   type = lookup_pointer_type (target_type);
17006
17007   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17008   if (attr_byte_size)
17009     byte_size = DW_UNSND (attr_byte_size);
17010   else
17011     byte_size = cu_header->addr_size;
17012
17013   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17014   if (attr_address_class)
17015     addr_class = DW_UNSND (attr_address_class);
17016   else
17017     addr_class = DW_ADDR_none;
17018
17019   ULONGEST alignment = get_alignment (cu, die);
17020
17021   /* If the pointer size, alignment, or address class is different
17022      than the default, create a type variant marked as such and set
17023      the length accordingly.  */
17024   if (TYPE_LENGTH (type) != byte_size
17025       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17026           && alignment != TYPE_RAW_ALIGN (type))
17027       || addr_class != DW_ADDR_none)
17028     {
17029       if (gdbarch_address_class_type_flags_p (gdbarch))
17030         {
17031           int type_flags;
17032
17033           type_flags = gdbarch_address_class_type_flags
17034                          (gdbarch, byte_size, addr_class);
17035           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17036                       == 0);
17037           type = make_type_with_address_space (type, type_flags);
17038         }
17039       else if (TYPE_LENGTH (type) != byte_size)
17040         {
17041           complaint (_("invalid pointer size %d"), byte_size);
17042         }
17043       else if (TYPE_RAW_ALIGN (type) != alignment)
17044         {
17045           complaint (_("Invalid DW_AT_alignment"
17046                        " - DIE at %s [in module %s]"),
17047                      sect_offset_str (die->sect_off),
17048                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17049         }
17050       else
17051         {
17052           /* Should we also complain about unhandled address classes?  */
17053         }
17054     }
17055
17056   TYPE_LENGTH (type) = byte_size;
17057   set_type_align (type, alignment);
17058   return set_die_type (die, type, cu);
17059 }
17060
17061 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17062    the user defined type vector.  */
17063
17064 static struct type *
17065 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17066 {
17067   struct type *type;
17068   struct type *to_type;
17069   struct type *domain;
17070
17071   to_type = die_type (die, cu);
17072   domain = die_containing_type (die, cu);
17073
17074   /* The calls above may have already set the type for this DIE.  */
17075   type = get_die_type (die, cu);
17076   if (type)
17077     return type;
17078
17079   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17080     type = lookup_methodptr_type (to_type);
17081   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17082     {
17083       struct type *new_type
17084         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17085
17086       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17087                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17088                             TYPE_VARARGS (to_type));
17089       type = lookup_methodptr_type (new_type);
17090     }
17091   else
17092     type = lookup_memberptr_type (to_type, domain);
17093
17094   return set_die_type (die, type, cu);
17095 }
17096
17097 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17098    the user defined type vector.  */
17099
17100 static struct type *
17101 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17102                           enum type_code refcode)
17103 {
17104   struct comp_unit_head *cu_header = &cu->header;
17105   struct type *type, *target_type;
17106   struct attribute *attr;
17107
17108   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17109
17110   target_type = die_type (die, cu);
17111
17112   /* The die_type call above may have already set the type for this DIE.  */
17113   type = get_die_type (die, cu);
17114   if (type)
17115     return type;
17116
17117   type = lookup_reference_type (target_type, refcode);
17118   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17119   if (attr)
17120     {
17121       TYPE_LENGTH (type) = DW_UNSND (attr);
17122     }
17123   else
17124     {
17125       TYPE_LENGTH (type) = cu_header->addr_size;
17126     }
17127   maybe_set_alignment (cu, die, type);
17128   return set_die_type (die, type, cu);
17129 }
17130
17131 /* Add the given cv-qualifiers to the element type of the array.  GCC
17132    outputs DWARF type qualifiers that apply to an array, not the
17133    element type.  But GDB relies on the array element type to carry
17134    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17135    specification.  */
17136
17137 static struct type *
17138 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17139                    struct type *base_type, int cnst, int voltl)
17140 {
17141   struct type *el_type, *inner_array;
17142
17143   base_type = copy_type (base_type);
17144   inner_array = base_type;
17145
17146   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17147     {
17148       TYPE_TARGET_TYPE (inner_array) =
17149         copy_type (TYPE_TARGET_TYPE (inner_array));
17150       inner_array = TYPE_TARGET_TYPE (inner_array);
17151     }
17152
17153   el_type = TYPE_TARGET_TYPE (inner_array);
17154   cnst |= TYPE_CONST (el_type);
17155   voltl |= TYPE_VOLATILE (el_type);
17156   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17157
17158   return set_die_type (die, base_type, cu);
17159 }
17160
17161 static struct type *
17162 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17163 {
17164   struct type *base_type, *cv_type;
17165
17166   base_type = die_type (die, cu);
17167
17168   /* The die_type call above may have already set the type for this DIE.  */
17169   cv_type = get_die_type (die, cu);
17170   if (cv_type)
17171     return cv_type;
17172
17173   /* In case the const qualifier is applied to an array type, the element type
17174      is so qualified, not the array type (section 6.7.3 of C99).  */
17175   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17176     return add_array_cv_type (die, cu, base_type, 1, 0);
17177
17178   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17179   return set_die_type (die, cv_type, cu);
17180 }
17181
17182 static struct type *
17183 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17184 {
17185   struct type *base_type, *cv_type;
17186
17187   base_type = die_type (die, cu);
17188
17189   /* The die_type call above may have already set the type for this DIE.  */
17190   cv_type = get_die_type (die, cu);
17191   if (cv_type)
17192     return cv_type;
17193
17194   /* In case the volatile qualifier is applied to an array type, the
17195      element type is so qualified, not the array type (section 6.7.3
17196      of C99).  */
17197   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17198     return add_array_cv_type (die, cu, base_type, 0, 1);
17199
17200   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17201   return set_die_type (die, cv_type, cu);
17202 }
17203
17204 /* Handle DW_TAG_restrict_type.  */
17205
17206 static struct type *
17207 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17208 {
17209   struct type *base_type, *cv_type;
17210
17211   base_type = die_type (die, cu);
17212
17213   /* The die_type call above may have already set the type for this DIE.  */
17214   cv_type = get_die_type (die, cu);
17215   if (cv_type)
17216     return cv_type;
17217
17218   cv_type = make_restrict_type (base_type);
17219   return set_die_type (die, cv_type, cu);
17220 }
17221
17222 /* Handle DW_TAG_atomic_type.  */
17223
17224 static struct type *
17225 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17226 {
17227   struct type *base_type, *cv_type;
17228
17229   base_type = die_type (die, cu);
17230
17231   /* The die_type call above may have already set the type for this DIE.  */
17232   cv_type = get_die_type (die, cu);
17233   if (cv_type)
17234     return cv_type;
17235
17236   cv_type = make_atomic_type (base_type);
17237   return set_die_type (die, cv_type, cu);
17238 }
17239
17240 /* Extract all information from a DW_TAG_string_type DIE and add to
17241    the user defined type vector.  It isn't really a user defined type,
17242    but it behaves like one, with other DIE's using an AT_user_def_type
17243    attribute to reference it.  */
17244
17245 static struct type *
17246 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17247 {
17248   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17249   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17250   struct type *type, *range_type, *index_type, *char_type;
17251   struct attribute *attr;
17252   unsigned int length;
17253
17254   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17255   if (attr)
17256     {
17257       length = DW_UNSND (attr);
17258     }
17259   else
17260     {
17261       /* Check for the DW_AT_byte_size attribute.  */
17262       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17263       if (attr)
17264         {
17265           length = DW_UNSND (attr);
17266         }
17267       else
17268         {
17269           length = 1;
17270         }
17271     }
17272
17273   index_type = objfile_type (objfile)->builtin_int;
17274   range_type = create_static_range_type (NULL, index_type, 1, length);
17275   char_type = language_string_char_type (cu->language_defn, gdbarch);
17276   type = create_string_type (NULL, char_type, range_type);
17277
17278   return set_die_type (die, type, cu);
17279 }
17280
17281 /* Assuming that DIE corresponds to a function, returns nonzero
17282    if the function is prototyped.  */
17283
17284 static int
17285 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17286 {
17287   struct attribute *attr;
17288
17289   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17290   if (attr && (DW_UNSND (attr) != 0))
17291     return 1;
17292
17293   /* The DWARF standard implies that the DW_AT_prototyped attribute
17294      is only meaninful for C, but the concept also extends to other
17295      languages that allow unprototyped functions (Eg: Objective C).
17296      For all other languages, assume that functions are always
17297      prototyped.  */
17298   if (cu->language != language_c
17299       && cu->language != language_objc
17300       && cu->language != language_opencl)
17301     return 1;
17302
17303   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17304      prototyped and unprototyped functions; default to prototyped,
17305      since that is more common in modern code (and RealView warns
17306      about unprototyped functions).  */
17307   if (producer_is_realview (cu->producer))
17308     return 1;
17309
17310   return 0;
17311 }
17312
17313 /* Handle DIES due to C code like:
17314
17315    struct foo
17316    {
17317    int (*funcp)(int a, long l);
17318    int b;
17319    };
17320
17321    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17322
17323 static struct type *
17324 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17325 {
17326   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17327   struct type *type;            /* Type that this function returns.  */
17328   struct type *ftype;           /* Function that returns above type.  */
17329   struct attribute *attr;
17330
17331   type = die_type (die, cu);
17332
17333   /* The die_type call above may have already set the type for this DIE.  */
17334   ftype = get_die_type (die, cu);
17335   if (ftype)
17336     return ftype;
17337
17338   ftype = lookup_function_type (type);
17339
17340   if (prototyped_function_p (die, cu))
17341     TYPE_PROTOTYPED (ftype) = 1;
17342
17343   /* Store the calling convention in the type if it's available in
17344      the subroutine die.  Otherwise set the calling convention to
17345      the default value DW_CC_normal.  */
17346   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17347   if (attr)
17348     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17349   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17350     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17351   else
17352     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17353
17354   /* Record whether the function returns normally to its caller or not
17355      if the DWARF producer set that information.  */
17356   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17357   if (attr && (DW_UNSND (attr) != 0))
17358     TYPE_NO_RETURN (ftype) = 1;
17359
17360   /* We need to add the subroutine type to the die immediately so
17361      we don't infinitely recurse when dealing with parameters
17362      declared as the same subroutine type.  */
17363   set_die_type (die, ftype, cu);
17364
17365   if (die->child != NULL)
17366     {
17367       struct type *void_type = objfile_type (objfile)->builtin_void;
17368       struct die_info *child_die;
17369       int nparams, iparams;
17370
17371       /* Count the number of parameters.
17372          FIXME: GDB currently ignores vararg functions, but knows about
17373          vararg member functions.  */
17374       nparams = 0;
17375       child_die = die->child;
17376       while (child_die && child_die->tag)
17377         {
17378           if (child_die->tag == DW_TAG_formal_parameter)
17379             nparams++;
17380           else if (child_die->tag == DW_TAG_unspecified_parameters)
17381             TYPE_VARARGS (ftype) = 1;
17382           child_die = sibling_die (child_die);
17383         }
17384
17385       /* Allocate storage for parameters and fill them in.  */
17386       TYPE_NFIELDS (ftype) = nparams;
17387       TYPE_FIELDS (ftype) = (struct field *)
17388         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17389
17390       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17391          even if we error out during the parameters reading below.  */
17392       for (iparams = 0; iparams < nparams; iparams++)
17393         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17394
17395       iparams = 0;
17396       child_die = die->child;
17397       while (child_die && child_die->tag)
17398         {
17399           if (child_die->tag == DW_TAG_formal_parameter)
17400             {
17401               struct type *arg_type;
17402
17403               /* DWARF version 2 has no clean way to discern C++
17404                  static and non-static member functions.  G++ helps
17405                  GDB by marking the first parameter for non-static
17406                  member functions (which is the this pointer) as
17407                  artificial.  We pass this information to
17408                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17409
17410                  DWARF version 3 added DW_AT_object_pointer, which GCC
17411                  4.5 does not yet generate.  */
17412               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17413               if (attr)
17414                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17415               else
17416                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17417               arg_type = die_type (child_die, cu);
17418
17419               /* RealView does not mark THIS as const, which the testsuite
17420                  expects.  GCC marks THIS as const in method definitions,
17421                  but not in the class specifications (GCC PR 43053).  */
17422               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17423                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17424                 {
17425                   int is_this = 0;
17426                   struct dwarf2_cu *arg_cu = cu;
17427                   const char *name = dwarf2_name (child_die, cu);
17428
17429                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17430                   if (attr)
17431                     {
17432                       /* If the compiler emits this, use it.  */
17433                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17434                         is_this = 1;
17435                     }
17436                   else if (name && strcmp (name, "this") == 0)
17437                     /* Function definitions will have the argument names.  */
17438                     is_this = 1;
17439                   else if (name == NULL && iparams == 0)
17440                     /* Declarations may not have the names, so like
17441                        elsewhere in GDB, assume an artificial first
17442                        argument is "this".  */
17443                     is_this = 1;
17444
17445                   if (is_this)
17446                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17447                                              arg_type, 0);
17448                 }
17449
17450               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17451               iparams++;
17452             }
17453           child_die = sibling_die (child_die);
17454         }
17455     }
17456
17457   return ftype;
17458 }
17459
17460 static struct type *
17461 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17462 {
17463   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17464   const char *name = NULL;
17465   struct type *this_type, *target_type;
17466
17467   name = dwarf2_full_name (NULL, die, cu);
17468   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17469   TYPE_TARGET_STUB (this_type) = 1;
17470   set_die_type (die, this_type, cu);
17471   target_type = die_type (die, cu);
17472   if (target_type != this_type)
17473     TYPE_TARGET_TYPE (this_type) = target_type;
17474   else
17475     {
17476       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17477          spec and cause infinite loops in GDB.  */
17478       complaint (_("Self-referential DW_TAG_typedef "
17479                    "- DIE at %s [in module %s]"),
17480                  sect_offset_str (die->sect_off), objfile_name (objfile));
17481       TYPE_TARGET_TYPE (this_type) = NULL;
17482     }
17483   return this_type;
17484 }
17485
17486 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17487    (which may be different from NAME) to the architecture back-end to allow
17488    it to guess the correct format if necessary.  */
17489
17490 static struct type *
17491 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17492                         const char *name_hint)
17493 {
17494   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17495   const struct floatformat **format;
17496   struct type *type;
17497
17498   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17499   if (format)
17500     type = init_float_type (objfile, bits, name, format);
17501   else
17502     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17503
17504   return type;
17505 }
17506
17507 /* Allocate an integer type of size BITS and name NAME.  */
17508
17509 static struct type *
17510 dwarf2_init_integer_type (struct dwarf2_cu *cu, struct objfile *objfile,
17511                           int bits, int unsigned_p, const char *name)
17512 {
17513   struct type *type;
17514
17515   /* Versions of Intel's C Compiler generate an integer type called "void"
17516      instead of using DW_TAG_unspecified_type.  This has been seen on
17517      at least versions 14, 17, and 18.  */
17518   if (bits == 0 && producer_is_icc (cu) && name != nullptr
17519       && strcmp (name, "void") == 0)
17520     type = objfile_type (objfile)->builtin_void;
17521   else
17522     type = init_integer_type (objfile, bits, unsigned_p, name);
17523
17524   return type;
17525 }
17526
17527 /* Initialise and return a floating point type of size BITS suitable for
17528    use as a component of a complex number.  The NAME_HINT is passed through
17529    when initialising the floating point type and is the name of the complex
17530    type.
17531
17532    As DWARF doesn't currently provide an explicit name for the components
17533    of a complex number, but it can be helpful to have these components
17534    named, we try to select a suitable name based on the size of the
17535    component.  */
17536 static struct type *
17537 dwarf2_init_complex_target_type (struct dwarf2_cu *cu,
17538                                  struct objfile *objfile,
17539                                  int bits, const char *name_hint)
17540 {
17541   gdbarch *gdbarch = get_objfile_arch (objfile);
17542   struct type *tt = nullptr;
17543
17544   /* Try to find a suitable floating point builtin type of size BITS.
17545      We're going to use the name of this type as the name for the complex
17546      target type that we are about to create.  */
17547   switch (bits)
17548     {
17549     case 32:
17550       tt = builtin_type (gdbarch)->builtin_float;
17551       break;
17552     case 64:
17553       tt = builtin_type (gdbarch)->builtin_double;
17554       break;
17555     case 96:    /* The x86-32 ABI specifies 96-bit long double.  */
17556     case 128:
17557       tt = builtin_type (gdbarch)->builtin_long_double;
17558       break;
17559     }
17560
17561   /* If the type we found doesn't match the size we were looking for, then
17562      pretend we didn't find a type at all, the complex target type we
17563      create will then be nameless.  */
17564   if (tt != nullptr && TYPE_LENGTH (tt) * TARGET_CHAR_BIT != bits)
17565     tt = nullptr;
17566
17567   const char *name = (tt == nullptr) ? nullptr : TYPE_NAME (tt);
17568   return dwarf2_init_float_type (objfile, bits, name, name_hint);
17569 }
17570
17571 /* Find a representation of a given base type and install
17572    it in the TYPE field of the die.  */
17573
17574 static struct type *
17575 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17576 {
17577   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17578   struct type *type;
17579   struct attribute *attr;
17580   int encoding = 0, bits = 0;
17581   const char *name;
17582
17583   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17584   if (attr)
17585     {
17586       encoding = DW_UNSND (attr);
17587     }
17588   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17589   if (attr)
17590     {
17591       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17592     }
17593   name = dwarf2_name (die, cu);
17594   if (!name)
17595     {
17596       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17597     }
17598
17599   switch (encoding)
17600     {
17601       case DW_ATE_address:
17602         /* Turn DW_ATE_address into a void * pointer.  */
17603         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17604         type = init_pointer_type (objfile, bits, name, type);
17605         break;
17606       case DW_ATE_boolean:
17607         type = init_boolean_type (objfile, bits, 1, name);
17608         break;
17609       case DW_ATE_complex_float:
17610         type = dwarf2_init_complex_target_type (cu, objfile, bits / 2, name);
17611         type = init_complex_type (objfile, name, type);
17612         break;
17613       case DW_ATE_decimal_float:
17614         type = init_decfloat_type (objfile, bits, name);
17615         break;
17616       case DW_ATE_float:
17617         type = dwarf2_init_float_type (objfile, bits, name, name);
17618         break;
17619       case DW_ATE_signed:
17620         type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17621         break;
17622       case DW_ATE_unsigned:
17623         if (cu->language == language_fortran
17624             && name
17625             && startswith (name, "character("))
17626           type = init_character_type (objfile, bits, 1, name);
17627         else
17628           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17629         break;
17630       case DW_ATE_signed_char:
17631         if (cu->language == language_ada || cu->language == language_m2
17632             || cu->language == language_pascal
17633             || cu->language == language_fortran)
17634           type = init_character_type (objfile, bits, 0, name);
17635         else
17636           type = dwarf2_init_integer_type (cu, objfile, bits, 0, name);
17637         break;
17638       case DW_ATE_unsigned_char:
17639         if (cu->language == language_ada || cu->language == language_m2
17640             || cu->language == language_pascal
17641             || cu->language == language_fortran
17642             || cu->language == language_rust)
17643           type = init_character_type (objfile, bits, 1, name);
17644         else
17645           type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17646         break;
17647       case DW_ATE_UTF:
17648         {
17649           gdbarch *arch = get_objfile_arch (objfile);
17650
17651           if (bits == 16)
17652             type = builtin_type (arch)->builtin_char16;
17653           else if (bits == 32)
17654             type = builtin_type (arch)->builtin_char32;
17655           else
17656             {
17657               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17658                          bits);
17659               type = dwarf2_init_integer_type (cu, objfile, bits, 1, name);
17660             }
17661           return set_die_type (die, type, cu);
17662         }
17663         break;
17664
17665       default:
17666         complaint (_("unsupported DW_AT_encoding: '%s'"),
17667                    dwarf_type_encoding_name (encoding));
17668         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17669         break;
17670     }
17671
17672   if (name && strcmp (name, "char") == 0)
17673     TYPE_NOSIGN (type) = 1;
17674
17675   maybe_set_alignment (cu, die, type);
17676
17677   return set_die_type (die, type, cu);
17678 }
17679
17680 /* Parse dwarf attribute if it's a block, reference or constant and put the
17681    resulting value of the attribute into struct bound_prop.
17682    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17683
17684 static int
17685 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17686                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17687 {
17688   struct dwarf2_property_baton *baton;
17689   struct obstack *obstack
17690     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17691
17692   if (attr == NULL || prop == NULL)
17693     return 0;
17694
17695   if (attr_form_is_block (attr))
17696     {
17697       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17698       baton->referenced_type = NULL;
17699       baton->locexpr.per_cu = cu->per_cu;
17700       baton->locexpr.size = DW_BLOCK (attr)->size;
17701       baton->locexpr.data = DW_BLOCK (attr)->data;
17702       prop->data.baton = baton;
17703       prop->kind = PROP_LOCEXPR;
17704       gdb_assert (prop->data.baton != NULL);
17705     }
17706   else if (attr_form_is_ref (attr))
17707     {
17708       struct dwarf2_cu *target_cu = cu;
17709       struct die_info *target_die;
17710       struct attribute *target_attr;
17711
17712       target_die = follow_die_ref (die, attr, &target_cu);
17713       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17714       if (target_attr == NULL)
17715         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17716                                    target_cu);
17717       if (target_attr == NULL)
17718         return 0;
17719
17720       switch (target_attr->name)
17721         {
17722           case DW_AT_location:
17723             if (attr_form_is_section_offset (target_attr))
17724               {
17725                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17726                 baton->referenced_type = die_type (target_die, target_cu);
17727                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17728                 prop->data.baton = baton;
17729                 prop->kind = PROP_LOCLIST;
17730                 gdb_assert (prop->data.baton != NULL);
17731               }
17732             else if (attr_form_is_block (target_attr))
17733               {
17734                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17735                 baton->referenced_type = die_type (target_die, target_cu);
17736                 baton->locexpr.per_cu = cu->per_cu;
17737                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17738                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17739                 prop->data.baton = baton;
17740                 prop->kind = PROP_LOCEXPR;
17741                 gdb_assert (prop->data.baton != NULL);
17742               }
17743             else
17744               {
17745                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17746                                                        "dynamic property");
17747                 return 0;
17748               }
17749             break;
17750           case DW_AT_data_member_location:
17751             {
17752               LONGEST offset;
17753
17754               if (!handle_data_member_location (target_die, target_cu,
17755                                                 &offset))
17756                 return 0;
17757
17758               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17759               baton->referenced_type = read_type_die (target_die->parent,
17760                                                       target_cu);
17761               baton->offset_info.offset = offset;
17762               baton->offset_info.type = die_type (target_die, target_cu);
17763               prop->data.baton = baton;
17764               prop->kind = PROP_ADDR_OFFSET;
17765               break;
17766             }
17767         }
17768     }
17769   else if (attr_form_is_constant (attr))
17770     {
17771       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17772       prop->kind = PROP_CONST;
17773     }
17774   else
17775     {
17776       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17777                                              dwarf2_name (die, cu));
17778       return 0;
17779     }
17780
17781   return 1;
17782 }
17783
17784 /* Read the given DW_AT_subrange DIE.  */
17785
17786 static struct type *
17787 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17788 {
17789   struct type *base_type, *orig_base_type;
17790   struct type *range_type;
17791   struct attribute *attr;
17792   struct dynamic_prop low, high;
17793   int low_default_is_valid;
17794   int high_bound_is_count = 0;
17795   const char *name;
17796   ULONGEST negative_mask;
17797
17798   orig_base_type = die_type (die, cu);
17799   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17800      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17801      creating the range type, but we use the result of check_typedef
17802      when examining properties of the type.  */
17803   base_type = check_typedef (orig_base_type);
17804
17805   /* The die_type call above may have already set the type for this DIE.  */
17806   range_type = get_die_type (die, cu);
17807   if (range_type)
17808     return range_type;
17809
17810   low.kind = PROP_CONST;
17811   high.kind = PROP_CONST;
17812   high.data.const_val = 0;
17813
17814   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17815      omitting DW_AT_lower_bound.  */
17816   switch (cu->language)
17817     {
17818     case language_c:
17819     case language_cplus:
17820       low.data.const_val = 0;
17821       low_default_is_valid = 1;
17822       break;
17823     case language_fortran:
17824       low.data.const_val = 1;
17825       low_default_is_valid = 1;
17826       break;
17827     case language_d:
17828     case language_objc:
17829     case language_rust:
17830       low.data.const_val = 0;
17831       low_default_is_valid = (cu->header.version >= 4);
17832       break;
17833     case language_ada:
17834     case language_m2:
17835     case language_pascal:
17836       low.data.const_val = 1;
17837       low_default_is_valid = (cu->header.version >= 4);
17838       break;
17839     default:
17840       low.data.const_val = 0;
17841       low_default_is_valid = 0;
17842       break;
17843     }
17844
17845   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17846   if (attr)
17847     attr_to_dynamic_prop (attr, die, cu, &low);
17848   else if (!low_default_is_valid)
17849     complaint (_("Missing DW_AT_lower_bound "
17850                                       "- DIE at %s [in module %s]"),
17851                sect_offset_str (die->sect_off),
17852                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17853
17854   struct attribute *attr_ub, *attr_count;
17855   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17856   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17857     {
17858       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17859       if (attr_to_dynamic_prop (attr, die, cu, &high))
17860         {
17861           /* If bounds are constant do the final calculation here.  */
17862           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17863             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17864           else
17865             high_bound_is_count = 1;
17866         }
17867       else
17868         {
17869           if (attr_ub != NULL)
17870             complaint (_("Unresolved DW_AT_upper_bound "
17871                          "- DIE at %s [in module %s]"),
17872                        sect_offset_str (die->sect_off),
17873                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17874           if (attr_count != NULL)
17875             complaint (_("Unresolved DW_AT_count "
17876                          "- DIE at %s [in module %s]"),
17877                        sect_offset_str (die->sect_off),
17878                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17879         }
17880         
17881     }
17882
17883   /* Dwarf-2 specifications explicitly allows to create subrange types
17884      without specifying a base type.
17885      In that case, the base type must be set to the type of
17886      the lower bound, upper bound or count, in that order, if any of these
17887      three attributes references an object that has a type.
17888      If no base type is found, the Dwarf-2 specifications say that
17889      a signed integer type of size equal to the size of an address should
17890      be used.
17891      For the following C code: `extern char gdb_int [];'
17892      GCC produces an empty range DIE.
17893      FIXME: muller/2010-05-28: Possible references to object for low bound,
17894      high bound or count are not yet handled by this code.  */
17895   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17896     {
17897       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17898       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17899       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17900       struct type *int_type = objfile_type (objfile)->builtin_int;
17901
17902       /* Test "int", "long int", and "long long int" objfile types,
17903          and select the first one having a size above or equal to the
17904          architecture address size.  */
17905       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17906         base_type = int_type;
17907       else
17908         {
17909           int_type = objfile_type (objfile)->builtin_long;
17910           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17911             base_type = int_type;
17912           else
17913             {
17914               int_type = objfile_type (objfile)->builtin_long_long;
17915               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17916                 base_type = int_type;
17917             }
17918         }
17919     }
17920
17921   /* Normally, the DWARF producers are expected to use a signed
17922      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17923      But this is unfortunately not always the case, as witnessed
17924      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17925      is used instead.  To work around that ambiguity, we treat
17926      the bounds as signed, and thus sign-extend their values, when
17927      the base type is signed.  */
17928   negative_mask =
17929     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17930   if (low.kind == PROP_CONST
17931       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17932     low.data.const_val |= negative_mask;
17933   if (high.kind == PROP_CONST
17934       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17935     high.data.const_val |= negative_mask;
17936
17937   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17938
17939   if (high_bound_is_count)
17940     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17941
17942   /* Ada expects an empty array on no boundary attributes.  */
17943   if (attr == NULL && cu->language != language_ada)
17944     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17945
17946   name = dwarf2_name (die, cu);
17947   if (name)
17948     TYPE_NAME (range_type) = name;
17949
17950   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17951   if (attr)
17952     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17953
17954   maybe_set_alignment (cu, die, range_type);
17955
17956   set_die_type (die, range_type, cu);
17957
17958   /* set_die_type should be already done.  */
17959   set_descriptive_type (range_type, die, cu);
17960
17961   return range_type;
17962 }
17963
17964 static struct type *
17965 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17966 {
17967   struct type *type;
17968
17969   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17970                     NULL);
17971   TYPE_NAME (type) = dwarf2_name (die, cu);
17972
17973   /* In Ada, an unspecified type is typically used when the description
17974      of the type is defered to a different unit.  When encountering
17975      such a type, we treat it as a stub, and try to resolve it later on,
17976      when needed.  */
17977   if (cu->language == language_ada)
17978     TYPE_STUB (type) = 1;
17979
17980   return set_die_type (die, type, cu);
17981 }
17982
17983 /* Read a single die and all its descendents.  Set the die's sibling
17984    field to NULL; set other fields in the die correctly, and set all
17985    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17986    location of the info_ptr after reading all of those dies.  PARENT
17987    is the parent of the die in question.  */
17988
17989 static struct die_info *
17990 read_die_and_children (const struct die_reader_specs *reader,
17991                        const gdb_byte *info_ptr,
17992                        const gdb_byte **new_info_ptr,
17993                        struct die_info *parent)
17994 {
17995   struct die_info *die;
17996   const gdb_byte *cur_ptr;
17997   int has_children;
17998
17999   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
18000   if (die == NULL)
18001     {
18002       *new_info_ptr = cur_ptr;
18003       return NULL;
18004     }
18005   store_in_ref_table (die, reader->cu);
18006
18007   if (has_children)
18008     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
18009   else
18010     {
18011       die->child = NULL;
18012       *new_info_ptr = cur_ptr;
18013     }
18014
18015   die->sibling = NULL;
18016   die->parent = parent;
18017   return die;
18018 }
18019
18020 /* Read a die, all of its descendents, and all of its siblings; set
18021    all of the fields of all of the dies correctly.  Arguments are as
18022    in read_die_and_children.  */
18023
18024 static struct die_info *
18025 read_die_and_siblings_1 (const struct die_reader_specs *reader,
18026                          const gdb_byte *info_ptr,
18027                          const gdb_byte **new_info_ptr,
18028                          struct die_info *parent)
18029 {
18030   struct die_info *first_die, *last_sibling;
18031   const gdb_byte *cur_ptr;
18032
18033   cur_ptr = info_ptr;
18034   first_die = last_sibling = NULL;
18035
18036   while (1)
18037     {
18038       struct die_info *die
18039         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
18040
18041       if (die == NULL)
18042         {
18043           *new_info_ptr = cur_ptr;
18044           return first_die;
18045         }
18046
18047       if (!first_die)
18048         first_die = die;
18049       else
18050         last_sibling->sibling = die;
18051
18052       last_sibling = die;
18053     }
18054 }
18055
18056 /* Read a die, all of its descendents, and all of its siblings; set
18057    all of the fields of all of the dies correctly.  Arguments are as
18058    in read_die_and_children.
18059    This the main entry point for reading a DIE and all its children.  */
18060
18061 static struct die_info *
18062 read_die_and_siblings (const struct die_reader_specs *reader,
18063                        const gdb_byte *info_ptr,
18064                        const gdb_byte **new_info_ptr,
18065                        struct die_info *parent)
18066 {
18067   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
18068                                                   new_info_ptr, parent);
18069
18070   if (dwarf_die_debug)
18071     {
18072       fprintf_unfiltered (gdb_stdlog,
18073                           "Read die from %s@0x%x of %s:\n",
18074                           get_section_name (reader->die_section),
18075                           (unsigned) (info_ptr - reader->die_section->buffer),
18076                           bfd_get_filename (reader->abfd));
18077       dump_die (die, dwarf_die_debug);
18078     }
18079
18080   return die;
18081 }
18082
18083 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18084    attributes.
18085    The caller is responsible for filling in the extra attributes
18086    and updating (*DIEP)->num_attrs.
18087    Set DIEP to point to a newly allocated die with its information,
18088    except for its child, sibling, and parent fields.
18089    Set HAS_CHILDREN to tell whether the die has children or not.  */
18090
18091 static const gdb_byte *
18092 read_full_die_1 (const struct die_reader_specs *reader,
18093                  struct die_info **diep, const gdb_byte *info_ptr,
18094                  int *has_children, int num_extra_attrs)
18095 {
18096   unsigned int abbrev_number, bytes_read, i;
18097   struct abbrev_info *abbrev;
18098   struct die_info *die;
18099   struct dwarf2_cu *cu = reader->cu;
18100   bfd *abfd = reader->abfd;
18101
18102   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18103   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18104   info_ptr += bytes_read;
18105   if (!abbrev_number)
18106     {
18107       *diep = NULL;
18108       *has_children = 0;
18109       return info_ptr;
18110     }
18111
18112   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18113   if (!abbrev)
18114     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18115            abbrev_number,
18116            bfd_get_filename (abfd));
18117
18118   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18119   die->sect_off = sect_off;
18120   die->tag = abbrev->tag;
18121   die->abbrev = abbrev_number;
18122
18123   /* Make the result usable.
18124      The caller needs to update num_attrs after adding the extra
18125      attributes.  */
18126   die->num_attrs = abbrev->num_attrs;
18127
18128   for (i = 0; i < abbrev->num_attrs; ++i)
18129     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18130                                info_ptr);
18131
18132   *diep = die;
18133   *has_children = abbrev->has_children;
18134   return info_ptr;
18135 }
18136
18137 /* Read a die and all its attributes.
18138    Set DIEP to point to a newly allocated die with its information,
18139    except for its child, sibling, and parent fields.
18140    Set HAS_CHILDREN to tell whether the die has children or not.  */
18141
18142 static const gdb_byte *
18143 read_full_die (const struct die_reader_specs *reader,
18144                struct die_info **diep, const gdb_byte *info_ptr,
18145                int *has_children)
18146 {
18147   const gdb_byte *result;
18148
18149   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18150
18151   if (dwarf_die_debug)
18152     {
18153       fprintf_unfiltered (gdb_stdlog,
18154                           "Read die from %s@0x%x of %s:\n",
18155                           get_section_name (reader->die_section),
18156                           (unsigned) (info_ptr - reader->die_section->buffer),
18157                           bfd_get_filename (reader->abfd));
18158       dump_die (*diep, dwarf_die_debug);
18159     }
18160
18161   return result;
18162 }
18163 \f
18164 /* Abbreviation tables.
18165
18166    In DWARF version 2, the description of the debugging information is
18167    stored in a separate .debug_abbrev section.  Before we read any
18168    dies from a section we read in all abbreviations and install them
18169    in a hash table.  */
18170
18171 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18172
18173 struct abbrev_info *
18174 abbrev_table::alloc_abbrev ()
18175 {
18176   struct abbrev_info *abbrev;
18177
18178   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18179   memset (abbrev, 0, sizeof (struct abbrev_info));
18180
18181   return abbrev;
18182 }
18183
18184 /* Add an abbreviation to the table.  */
18185
18186 void
18187 abbrev_table::add_abbrev (unsigned int abbrev_number,
18188                           struct abbrev_info *abbrev)
18189 {
18190   unsigned int hash_number;
18191
18192   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18193   abbrev->next = m_abbrevs[hash_number];
18194   m_abbrevs[hash_number] = abbrev;
18195 }
18196
18197 /* Look up an abbrev in the table.
18198    Returns NULL if the abbrev is not found.  */
18199
18200 struct abbrev_info *
18201 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18202 {
18203   unsigned int hash_number;
18204   struct abbrev_info *abbrev;
18205
18206   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18207   abbrev = m_abbrevs[hash_number];
18208
18209   while (abbrev)
18210     {
18211       if (abbrev->number == abbrev_number)
18212         return abbrev;
18213       abbrev = abbrev->next;
18214     }
18215   return NULL;
18216 }
18217
18218 /* Read in an abbrev table.  */
18219
18220 static abbrev_table_up
18221 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18222                          struct dwarf2_section_info *section,
18223                          sect_offset sect_off)
18224 {
18225   struct objfile *objfile = dwarf2_per_objfile->objfile;
18226   bfd *abfd = get_section_bfd_owner (section);
18227   const gdb_byte *abbrev_ptr;
18228   struct abbrev_info *cur_abbrev;
18229   unsigned int abbrev_number, bytes_read, abbrev_name;
18230   unsigned int abbrev_form;
18231   struct attr_abbrev *cur_attrs;
18232   unsigned int allocated_attrs;
18233
18234   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18235
18236   dwarf2_read_section (objfile, section);
18237   abbrev_ptr = section->buffer + to_underlying (sect_off);
18238   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18239   abbrev_ptr += bytes_read;
18240
18241   allocated_attrs = ATTR_ALLOC_CHUNK;
18242   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18243
18244   /* Loop until we reach an abbrev number of 0.  */
18245   while (abbrev_number)
18246     {
18247       cur_abbrev = abbrev_table->alloc_abbrev ();
18248
18249       /* read in abbrev header */
18250       cur_abbrev->number = abbrev_number;
18251       cur_abbrev->tag
18252         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18253       abbrev_ptr += bytes_read;
18254       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18255       abbrev_ptr += 1;
18256
18257       /* now read in declarations */
18258       for (;;)
18259         {
18260           LONGEST implicit_const;
18261
18262           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18263           abbrev_ptr += bytes_read;
18264           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18265           abbrev_ptr += bytes_read;
18266           if (abbrev_form == DW_FORM_implicit_const)
18267             {
18268               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18269                                                    &bytes_read);
18270               abbrev_ptr += bytes_read;
18271             }
18272           else
18273             {
18274               /* Initialize it due to a false compiler warning.  */
18275               implicit_const = -1;
18276             }
18277
18278           if (abbrev_name == 0)
18279             break;
18280
18281           if (cur_abbrev->num_attrs == allocated_attrs)
18282             {
18283               allocated_attrs += ATTR_ALLOC_CHUNK;
18284               cur_attrs
18285                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18286             }
18287
18288           cur_attrs[cur_abbrev->num_attrs].name
18289             = (enum dwarf_attribute) abbrev_name;
18290           cur_attrs[cur_abbrev->num_attrs].form
18291             = (enum dwarf_form) abbrev_form;
18292           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18293           ++cur_abbrev->num_attrs;
18294         }
18295
18296       cur_abbrev->attrs =
18297         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18298                    cur_abbrev->num_attrs);
18299       memcpy (cur_abbrev->attrs, cur_attrs,
18300               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18301
18302       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18303
18304       /* Get next abbreviation.
18305          Under Irix6 the abbreviations for a compilation unit are not
18306          always properly terminated with an abbrev number of 0.
18307          Exit loop if we encounter an abbreviation which we have
18308          already read (which means we are about to read the abbreviations
18309          for the next compile unit) or if the end of the abbreviation
18310          table is reached.  */
18311       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18312         break;
18313       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18314       abbrev_ptr += bytes_read;
18315       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18316         break;
18317     }
18318
18319   xfree (cur_attrs);
18320   return abbrev_table;
18321 }
18322
18323 /* Returns nonzero if TAG represents a type that we might generate a partial
18324    symbol for.  */
18325
18326 static int
18327 is_type_tag_for_partial (int tag)
18328 {
18329   switch (tag)
18330     {
18331 #if 0
18332     /* Some types that would be reasonable to generate partial symbols for,
18333        that we don't at present.  */
18334     case DW_TAG_array_type:
18335     case DW_TAG_file_type:
18336     case DW_TAG_ptr_to_member_type:
18337     case DW_TAG_set_type:
18338     case DW_TAG_string_type:
18339     case DW_TAG_subroutine_type:
18340 #endif
18341     case DW_TAG_base_type:
18342     case DW_TAG_class_type:
18343     case DW_TAG_interface_type:
18344     case DW_TAG_enumeration_type:
18345     case DW_TAG_structure_type:
18346     case DW_TAG_subrange_type:
18347     case DW_TAG_typedef:
18348     case DW_TAG_union_type:
18349       return 1;
18350     default:
18351       return 0;
18352     }
18353 }
18354
18355 /* Load all DIEs that are interesting for partial symbols into memory.  */
18356
18357 static struct partial_die_info *
18358 load_partial_dies (const struct die_reader_specs *reader,
18359                    const gdb_byte *info_ptr, int building_psymtab)
18360 {
18361   struct dwarf2_cu *cu = reader->cu;
18362   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18363   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18364   unsigned int bytes_read;
18365   unsigned int load_all = 0;
18366   int nesting_level = 1;
18367
18368   parent_die = NULL;
18369   last_die = NULL;
18370
18371   gdb_assert (cu->per_cu != NULL);
18372   if (cu->per_cu->load_all_dies)
18373     load_all = 1;
18374
18375   cu->partial_dies
18376     = htab_create_alloc_ex (cu->header.length / 12,
18377                             partial_die_hash,
18378                             partial_die_eq,
18379                             NULL,
18380                             &cu->comp_unit_obstack,
18381                             hashtab_obstack_allocate,
18382                             dummy_obstack_deallocate);
18383
18384   while (1)
18385     {
18386       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18387
18388       /* A NULL abbrev means the end of a series of children.  */
18389       if (abbrev == NULL)
18390         {
18391           if (--nesting_level == 0)
18392             return first_die;
18393
18394           info_ptr += bytes_read;
18395           last_die = parent_die;
18396           parent_die = parent_die->die_parent;
18397           continue;
18398         }
18399
18400       /* Check for template arguments.  We never save these; if
18401          they're seen, we just mark the parent, and go on our way.  */
18402       if (parent_die != NULL
18403           && cu->language == language_cplus
18404           && (abbrev->tag == DW_TAG_template_type_param
18405               || abbrev->tag == DW_TAG_template_value_param))
18406         {
18407           parent_die->has_template_arguments = 1;
18408
18409           if (!load_all)
18410             {
18411               /* We don't need a partial DIE for the template argument.  */
18412               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18413               continue;
18414             }
18415         }
18416
18417       /* We only recurse into c++ subprograms looking for template arguments.
18418          Skip their other children.  */
18419       if (!load_all
18420           && cu->language == language_cplus
18421           && parent_die != NULL
18422           && parent_die->tag == DW_TAG_subprogram)
18423         {
18424           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18425           continue;
18426         }
18427
18428       /* Check whether this DIE is interesting enough to save.  Normally
18429          we would not be interested in members here, but there may be
18430          later variables referencing them via DW_AT_specification (for
18431          static members).  */
18432       if (!load_all
18433           && !is_type_tag_for_partial (abbrev->tag)
18434           && abbrev->tag != DW_TAG_constant
18435           && abbrev->tag != DW_TAG_enumerator
18436           && abbrev->tag != DW_TAG_subprogram
18437           && abbrev->tag != DW_TAG_inlined_subroutine
18438           && abbrev->tag != DW_TAG_lexical_block
18439           && abbrev->tag != DW_TAG_variable
18440           && abbrev->tag != DW_TAG_namespace
18441           && abbrev->tag != DW_TAG_module
18442           && abbrev->tag != DW_TAG_member
18443           && abbrev->tag != DW_TAG_imported_unit
18444           && abbrev->tag != DW_TAG_imported_declaration)
18445         {
18446           /* Otherwise we skip to the next sibling, if any.  */
18447           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18448           continue;
18449         }
18450
18451       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18452                                    abbrev);
18453
18454       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18455
18456       /* This two-pass algorithm for processing partial symbols has a
18457          high cost in cache pressure.  Thus, handle some simple cases
18458          here which cover the majority of C partial symbols.  DIEs
18459          which neither have specification tags in them, nor could have
18460          specification tags elsewhere pointing at them, can simply be
18461          processed and discarded.
18462
18463          This segment is also optional; scan_partial_symbols and
18464          add_partial_symbol will handle these DIEs if we chain
18465          them in normally.  When compilers which do not emit large
18466          quantities of duplicate debug information are more common,
18467          this code can probably be removed.  */
18468
18469       /* Any complete simple types at the top level (pretty much all
18470          of them, for a language without namespaces), can be processed
18471          directly.  */
18472       if (parent_die == NULL
18473           && pdi.has_specification == 0
18474           && pdi.is_declaration == 0
18475           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18476               || pdi.tag == DW_TAG_base_type
18477               || pdi.tag == DW_TAG_subrange_type))
18478         {
18479           if (building_psymtab && pdi.name != NULL)
18480             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18481                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18482                                  psymbol_placement::STATIC,
18483                                  0, cu->language, objfile);
18484           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18485           continue;
18486         }
18487
18488       /* The exception for DW_TAG_typedef with has_children above is
18489          a workaround of GCC PR debug/47510.  In the case of this complaint
18490          type_name_or_error will error on such types later.
18491
18492          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18493          it could not find the child DIEs referenced later, this is checked
18494          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18495
18496       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18497         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18498                      "- DIE at %s [in module %s]"),
18499                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18500
18501       /* If we're at the second level, and we're an enumerator, and
18502          our parent has no specification (meaning possibly lives in a
18503          namespace elsewhere), then we can add the partial symbol now
18504          instead of queueing it.  */
18505       if (pdi.tag == DW_TAG_enumerator
18506           && parent_die != NULL
18507           && parent_die->die_parent == NULL
18508           && parent_die->tag == DW_TAG_enumeration_type
18509           && parent_die->has_specification == 0)
18510         {
18511           if (pdi.name == NULL)
18512             complaint (_("malformed enumerator DIE ignored"));
18513           else if (building_psymtab)
18514             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18515                                  VAR_DOMAIN, LOC_CONST, -1,
18516                                  cu->language == language_cplus
18517                                  ? psymbol_placement::GLOBAL
18518                                  : psymbol_placement::STATIC,
18519                                  0, cu->language, objfile);
18520
18521           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18522           continue;
18523         }
18524
18525       struct partial_die_info *part_die
18526         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18527
18528       /* We'll save this DIE so link it in.  */
18529       part_die->die_parent = parent_die;
18530       part_die->die_sibling = NULL;
18531       part_die->die_child = NULL;
18532
18533       if (last_die && last_die == parent_die)
18534         last_die->die_child = part_die;
18535       else if (last_die)
18536         last_die->die_sibling = part_die;
18537
18538       last_die = part_die;
18539
18540       if (first_die == NULL)
18541         first_die = part_die;
18542
18543       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18544          find interesting need to be in the hash table, because we
18545          also have the parent/sibling/child chains; only those that we
18546          might refer to by offset later during partial symbol reading.
18547
18548          For now this means things that might have be the target of a
18549          DW_AT_specification, DW_AT_abstract_origin, or
18550          DW_AT_extension.  DW_AT_extension will refer only to
18551          namespaces; DW_AT_abstract_origin refers to functions (and
18552          many things under the function DIE, but we do not recurse
18553          into function DIEs during partial symbol reading) and
18554          possibly variables as well; DW_AT_specification refers to
18555          declarations.  Declarations ought to have the DW_AT_declaration
18556          flag.  It happens that GCC forgets to put it in sometimes, but
18557          only for functions, not for types.
18558
18559          Adding more things than necessary to the hash table is harmless
18560          except for the performance cost.  Adding too few will result in
18561          wasted time in find_partial_die, when we reread the compilation
18562          unit with load_all_dies set.  */
18563
18564       if (load_all
18565           || abbrev->tag == DW_TAG_constant
18566           || abbrev->tag == DW_TAG_subprogram
18567           || abbrev->tag == DW_TAG_variable
18568           || abbrev->tag == DW_TAG_namespace
18569           || part_die->is_declaration)
18570         {
18571           void **slot;
18572
18573           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18574                                            to_underlying (part_die->sect_off),
18575                                            INSERT);
18576           *slot = part_die;
18577         }
18578
18579       /* For some DIEs we want to follow their children (if any).  For C
18580          we have no reason to follow the children of structures; for other
18581          languages we have to, so that we can get at method physnames
18582          to infer fully qualified class names, for DW_AT_specification,
18583          and for C++ template arguments.  For C++, we also look one level
18584          inside functions to find template arguments (if the name of the
18585          function does not already contain the template arguments).
18586
18587          For Ada, we need to scan the children of subprograms and lexical
18588          blocks as well because Ada allows the definition of nested
18589          entities that could be interesting for the debugger, such as
18590          nested subprograms for instance.  */
18591       if (last_die->has_children
18592           && (load_all
18593               || last_die->tag == DW_TAG_namespace
18594               || last_die->tag == DW_TAG_module
18595               || last_die->tag == DW_TAG_enumeration_type
18596               || (cu->language == language_cplus
18597                   && last_die->tag == DW_TAG_subprogram
18598                   && (last_die->name == NULL
18599                       || strchr (last_die->name, '<') == NULL))
18600               || (cu->language != language_c
18601                   && (last_die->tag == DW_TAG_class_type
18602                       || last_die->tag == DW_TAG_interface_type
18603                       || last_die->tag == DW_TAG_structure_type
18604                       || last_die->tag == DW_TAG_union_type))
18605               || (cu->language == language_ada
18606                   && (last_die->tag == DW_TAG_subprogram
18607                       || last_die->tag == DW_TAG_lexical_block))))
18608         {
18609           nesting_level++;
18610           parent_die = last_die;
18611           continue;
18612         }
18613
18614       /* Otherwise we skip to the next sibling, if any.  */
18615       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18616
18617       /* Back to the top, do it again.  */
18618     }
18619 }
18620
18621 partial_die_info::partial_die_info (sect_offset sect_off_,
18622                                     struct abbrev_info *abbrev)
18623   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18624 {
18625 }
18626
18627 /* Read a minimal amount of information into the minimal die structure.
18628    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18629
18630 const gdb_byte *
18631 partial_die_info::read (const struct die_reader_specs *reader,
18632                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18633 {
18634   struct dwarf2_cu *cu = reader->cu;
18635   struct dwarf2_per_objfile *dwarf2_per_objfile
18636     = cu->per_cu->dwarf2_per_objfile;
18637   unsigned int i;
18638   int has_low_pc_attr = 0;
18639   int has_high_pc_attr = 0;
18640   int high_pc_relative = 0;
18641
18642   for (i = 0; i < abbrev.num_attrs; ++i)
18643     {
18644       struct attribute attr;
18645
18646       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18647
18648       /* Store the data if it is of an attribute we want to keep in a
18649          partial symbol table.  */
18650       switch (attr.name)
18651         {
18652         case DW_AT_name:
18653           switch (tag)
18654             {
18655             case DW_TAG_compile_unit:
18656             case DW_TAG_partial_unit:
18657             case DW_TAG_type_unit:
18658               /* Compilation units have a DW_AT_name that is a filename, not
18659                  a source language identifier.  */
18660             case DW_TAG_enumeration_type:
18661             case DW_TAG_enumerator:
18662               /* These tags always have simple identifiers already; no need
18663                  to canonicalize them.  */
18664               name = DW_STRING (&attr);
18665               break;
18666             default:
18667               {
18668                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18669
18670                 name
18671                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18672                                               &objfile->per_bfd->storage_obstack);
18673               }
18674               break;
18675             }
18676           break;
18677         case DW_AT_linkage_name:
18678         case DW_AT_MIPS_linkage_name:
18679           /* Note that both forms of linkage name might appear.  We
18680              assume they will be the same, and we only store the last
18681              one we see.  */
18682           if (cu->language == language_ada)
18683             name = DW_STRING (&attr);
18684           linkage_name = DW_STRING (&attr);
18685           break;
18686         case DW_AT_low_pc:
18687           has_low_pc_attr = 1;
18688           lowpc = attr_value_as_address (&attr);
18689           break;
18690         case DW_AT_high_pc:
18691           has_high_pc_attr = 1;
18692           highpc = attr_value_as_address (&attr);
18693           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18694                 high_pc_relative = 1;
18695           break;
18696         case DW_AT_location:
18697           /* Support the .debug_loc offsets.  */
18698           if (attr_form_is_block (&attr))
18699             {
18700                d.locdesc = DW_BLOCK (&attr);
18701             }
18702           else if (attr_form_is_section_offset (&attr))
18703             {
18704               dwarf2_complex_location_expr_complaint ();
18705             }
18706           else
18707             {
18708               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18709                                                      "partial symbol information");
18710             }
18711           break;
18712         case DW_AT_external:
18713           is_external = DW_UNSND (&attr);
18714           break;
18715         case DW_AT_declaration:
18716           is_declaration = DW_UNSND (&attr);
18717           break;
18718         case DW_AT_type:
18719           has_type = 1;
18720           break;
18721         case DW_AT_abstract_origin:
18722         case DW_AT_specification:
18723         case DW_AT_extension:
18724           has_specification = 1;
18725           spec_offset = dwarf2_get_ref_die_offset (&attr);
18726           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18727                                    || cu->per_cu->is_dwz);
18728           break;
18729         case DW_AT_sibling:
18730           /* Ignore absolute siblings, they might point outside of
18731              the current compile unit.  */
18732           if (attr.form == DW_FORM_ref_addr)
18733             complaint (_("ignoring absolute DW_AT_sibling"));
18734           else
18735             {
18736               const gdb_byte *buffer = reader->buffer;
18737               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18738               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18739
18740               if (sibling_ptr < info_ptr)
18741                 complaint (_("DW_AT_sibling points backwards"));
18742               else if (sibling_ptr > reader->buffer_end)
18743                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18744               else
18745                 sibling = sibling_ptr;
18746             }
18747           break;
18748         case DW_AT_byte_size:
18749           has_byte_size = 1;
18750           break;
18751         case DW_AT_const_value:
18752           has_const_value = 1;
18753           break;
18754         case DW_AT_calling_convention:
18755           /* DWARF doesn't provide a way to identify a program's source-level
18756              entry point.  DW_AT_calling_convention attributes are only meant
18757              to describe functions' calling conventions.
18758
18759              However, because it's a necessary piece of information in
18760              Fortran, and before DWARF 4 DW_CC_program was the only
18761              piece of debugging information whose definition refers to
18762              a 'main program' at all, several compilers marked Fortran
18763              main programs with DW_CC_program --- even when those
18764              functions use the standard calling conventions.
18765
18766              Although DWARF now specifies a way to provide this
18767              information, we support this practice for backward
18768              compatibility.  */
18769           if (DW_UNSND (&attr) == DW_CC_program
18770               && cu->language == language_fortran)
18771             main_subprogram = 1;
18772           break;
18773         case DW_AT_inline:
18774           if (DW_UNSND (&attr) == DW_INL_inlined
18775               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18776             may_be_inlined = 1;
18777           break;
18778
18779         case DW_AT_import:
18780           if (tag == DW_TAG_imported_unit)
18781             {
18782               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18783               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18784                                   || cu->per_cu->is_dwz);
18785             }
18786           break;
18787
18788         case DW_AT_main_subprogram:
18789           main_subprogram = DW_UNSND (&attr);
18790           break;
18791
18792         case DW_AT_ranges:
18793           {
18794             /* It would be nice to reuse dwarf2_get_pc_bounds here,
18795                but that requires a full DIE, so instead we just
18796                reimplement it.  */
18797             int need_ranges_base = tag != DW_TAG_compile_unit;
18798             unsigned int ranges_offset = (DW_UNSND (&attr)
18799                                           + (need_ranges_base
18800                                              ? cu->ranges_base
18801                                              : 0));
18802
18803             /* Value of the DW_AT_ranges attribute is the offset in the
18804                .debug_ranges section.  */
18805             if (dwarf2_ranges_read (ranges_offset, &lowpc, &highpc, cu,
18806                                     nullptr))
18807               has_pc_info = 1;
18808           }
18809           break;
18810
18811         default:
18812           break;
18813         }
18814     }
18815
18816   if (high_pc_relative)
18817     highpc += lowpc;
18818
18819   if (has_low_pc_attr && has_high_pc_attr)
18820     {
18821       /* When using the GNU linker, .gnu.linkonce. sections are used to
18822          eliminate duplicate copies of functions and vtables and such.
18823          The linker will arbitrarily choose one and discard the others.
18824          The AT_*_pc values for such functions refer to local labels in
18825          these sections.  If the section from that file was discarded, the
18826          labels are not in the output, so the relocs get a value of 0.
18827          If this is a discarded function, mark the pc bounds as invalid,
18828          so that GDB will ignore it.  */
18829       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18830         {
18831           struct objfile *objfile = dwarf2_per_objfile->objfile;
18832           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18833
18834           complaint (_("DW_AT_low_pc %s is zero "
18835                        "for DIE at %s [in module %s]"),
18836                      paddress (gdbarch, lowpc),
18837                      sect_offset_str (sect_off),
18838                      objfile_name (objfile));
18839         }
18840       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18841       else if (lowpc >= highpc)
18842         {
18843           struct objfile *objfile = dwarf2_per_objfile->objfile;
18844           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18845
18846           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18847                        "for DIE at %s [in module %s]"),
18848                      paddress (gdbarch, lowpc),
18849                      paddress (gdbarch, highpc),
18850                      sect_offset_str (sect_off),
18851                      objfile_name (objfile));
18852         }
18853       else
18854         has_pc_info = 1;
18855     }
18856
18857   return info_ptr;
18858 }
18859
18860 /* Find a cached partial DIE at OFFSET in CU.  */
18861
18862 struct partial_die_info *
18863 dwarf2_cu::find_partial_die (sect_offset sect_off)
18864 {
18865   struct partial_die_info *lookup_die = NULL;
18866   struct partial_die_info part_die (sect_off);
18867
18868   lookup_die = ((struct partial_die_info *)
18869                 htab_find_with_hash (partial_dies, &part_die,
18870                                      to_underlying (sect_off)));
18871
18872   return lookup_die;
18873 }
18874
18875 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18876    except in the case of .debug_types DIEs which do not reference
18877    outside their CU (they do however referencing other types via
18878    DW_FORM_ref_sig8).  */
18879
18880 static struct partial_die_info *
18881 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18882 {
18883   struct dwarf2_per_objfile *dwarf2_per_objfile
18884     = cu->per_cu->dwarf2_per_objfile;
18885   struct objfile *objfile = dwarf2_per_objfile->objfile;
18886   struct dwarf2_per_cu_data *per_cu = NULL;
18887   struct partial_die_info *pd = NULL;
18888
18889   if (offset_in_dwz == cu->per_cu->is_dwz
18890       && offset_in_cu_p (&cu->header, sect_off))
18891     {
18892       pd = cu->find_partial_die (sect_off);
18893       if (pd != NULL)
18894         return pd;
18895       /* We missed recording what we needed.
18896          Load all dies and try again.  */
18897       per_cu = cu->per_cu;
18898     }
18899   else
18900     {
18901       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18902       if (cu->per_cu->is_debug_types)
18903         {
18904           error (_("Dwarf Error: Type Unit at offset %s contains"
18905                    " external reference to offset %s [in module %s].\n"),
18906                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18907                  bfd_get_filename (objfile->obfd));
18908         }
18909       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18910                                                  dwarf2_per_objfile);
18911
18912       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18913         load_partial_comp_unit (per_cu);
18914
18915       per_cu->cu->last_used = 0;
18916       pd = per_cu->cu->find_partial_die (sect_off);
18917     }
18918
18919   /* If we didn't find it, and not all dies have been loaded,
18920      load them all and try again.  */
18921
18922   if (pd == NULL && per_cu->load_all_dies == 0)
18923     {
18924       per_cu->load_all_dies = 1;
18925
18926       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18927          THIS_CU->cu may already be in use.  So we can't just free it and
18928          replace its DIEs with the ones we read in.  Instead, we leave those
18929          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18930          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18931          set.  */
18932       load_partial_comp_unit (per_cu);
18933
18934       pd = per_cu->cu->find_partial_die (sect_off);
18935     }
18936
18937   if (pd == NULL)
18938     internal_error (__FILE__, __LINE__,
18939                     _("could not find partial DIE %s "
18940                       "in cache [from module %s]\n"),
18941                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18942   return pd;
18943 }
18944
18945 /* See if we can figure out if the class lives in a namespace.  We do
18946    this by looking for a member function; its demangled name will
18947    contain namespace info, if there is any.  */
18948
18949 static void
18950 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18951                                   struct dwarf2_cu *cu)
18952 {
18953   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18954      what template types look like, because the demangler
18955      frequently doesn't give the same name as the debug info.  We
18956      could fix this by only using the demangled name to get the
18957      prefix (but see comment in read_structure_type).  */
18958
18959   struct partial_die_info *real_pdi;
18960   struct partial_die_info *child_pdi;
18961
18962   /* If this DIE (this DIE's specification, if any) has a parent, then
18963      we should not do this.  We'll prepend the parent's fully qualified
18964      name when we create the partial symbol.  */
18965
18966   real_pdi = struct_pdi;
18967   while (real_pdi->has_specification)
18968     real_pdi = find_partial_die (real_pdi->spec_offset,
18969                                  real_pdi->spec_is_dwz, cu);
18970
18971   if (real_pdi->die_parent != NULL)
18972     return;
18973
18974   for (child_pdi = struct_pdi->die_child;
18975        child_pdi != NULL;
18976        child_pdi = child_pdi->die_sibling)
18977     {
18978       if (child_pdi->tag == DW_TAG_subprogram
18979           && child_pdi->linkage_name != NULL)
18980         {
18981           char *actual_class_name
18982             = language_class_name_from_physname (cu->language_defn,
18983                                                  child_pdi->linkage_name);
18984           if (actual_class_name != NULL)
18985             {
18986               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18987               struct_pdi->name
18988                 = ((const char *)
18989                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18990                                   actual_class_name,
18991                                   strlen (actual_class_name)));
18992               xfree (actual_class_name);
18993             }
18994           break;
18995         }
18996     }
18997 }
18998
18999 void
19000 partial_die_info::fixup (struct dwarf2_cu *cu)
19001 {
19002   /* Once we've fixed up a die, there's no point in doing so again.
19003      This also avoids a memory leak if we were to call
19004      guess_partial_die_structure_name multiple times.  */
19005   if (fixup_called)
19006     return;
19007
19008   /* If we found a reference attribute and the DIE has no name, try
19009      to find a name in the referred to DIE.  */
19010
19011   if (name == NULL && has_specification)
19012     {
19013       struct partial_die_info *spec_die;
19014
19015       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
19016
19017       spec_die->fixup (cu);
19018
19019       if (spec_die->name)
19020         {
19021           name = spec_die->name;
19022
19023           /* Copy DW_AT_external attribute if it is set.  */
19024           if (spec_die->is_external)
19025             is_external = spec_die->is_external;
19026         }
19027     }
19028
19029   /* Set default names for some unnamed DIEs.  */
19030
19031   if (name == NULL && tag == DW_TAG_namespace)
19032     name = CP_ANONYMOUS_NAMESPACE_STR;
19033
19034   /* If there is no parent die to provide a namespace, and there are
19035      children, see if we can determine the namespace from their linkage
19036      name.  */
19037   if (cu->language == language_cplus
19038       && !VEC_empty (dwarf2_section_info_def,
19039                      cu->per_cu->dwarf2_per_objfile->types)
19040       && die_parent == NULL
19041       && has_children
19042       && (tag == DW_TAG_class_type
19043           || tag == DW_TAG_structure_type
19044           || tag == DW_TAG_union_type))
19045     guess_partial_die_structure_name (this, cu);
19046
19047   /* GCC might emit a nameless struct or union that has a linkage
19048      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
19049   if (name == NULL
19050       && (tag == DW_TAG_class_type
19051           || tag == DW_TAG_interface_type
19052           || tag == DW_TAG_structure_type
19053           || tag == DW_TAG_union_type)
19054       && linkage_name != NULL)
19055     {
19056       char *demangled;
19057
19058       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
19059       if (demangled)
19060         {
19061           const char *base;
19062
19063           /* Strip any leading namespaces/classes, keep only the base name.
19064              DW_AT_name for named DIEs does not contain the prefixes.  */
19065           base = strrchr (demangled, ':');
19066           if (base && base > demangled && base[-1] == ':')
19067             base++;
19068           else
19069             base = demangled;
19070
19071           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
19072           name
19073             = ((const char *)
19074                obstack_copy0 (&objfile->per_bfd->storage_obstack,
19075                               base, strlen (base)));
19076           xfree (demangled);
19077         }
19078     }
19079
19080   fixup_called = 1;
19081 }
19082
19083 /* Read an attribute value described by an attribute form.  */
19084
19085 static const gdb_byte *
19086 read_attribute_value (const struct die_reader_specs *reader,
19087                       struct attribute *attr, unsigned form,
19088                       LONGEST implicit_const, const gdb_byte *info_ptr)
19089 {
19090   struct dwarf2_cu *cu = reader->cu;
19091   struct dwarf2_per_objfile *dwarf2_per_objfile
19092     = cu->per_cu->dwarf2_per_objfile;
19093   struct objfile *objfile = dwarf2_per_objfile->objfile;
19094   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19095   bfd *abfd = reader->abfd;
19096   struct comp_unit_head *cu_header = &cu->header;
19097   unsigned int bytes_read;
19098   struct dwarf_block *blk;
19099
19100   attr->form = (enum dwarf_form) form;
19101   switch (form)
19102     {
19103     case DW_FORM_ref_addr:
19104       if (cu->header.version == 2)
19105         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19106       else
19107         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19108                                        &cu->header, &bytes_read);
19109       info_ptr += bytes_read;
19110       break;
19111     case DW_FORM_GNU_ref_alt:
19112       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19113       info_ptr += bytes_read;
19114       break;
19115     case DW_FORM_addr:
19116       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19117       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19118       info_ptr += bytes_read;
19119       break;
19120     case DW_FORM_block2:
19121       blk = dwarf_alloc_block (cu);
19122       blk->size = read_2_bytes (abfd, info_ptr);
19123       info_ptr += 2;
19124       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19125       info_ptr += blk->size;
19126       DW_BLOCK (attr) = blk;
19127       break;
19128     case DW_FORM_block4:
19129       blk = dwarf_alloc_block (cu);
19130       blk->size = read_4_bytes (abfd, info_ptr);
19131       info_ptr += 4;
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_data2:
19137       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19138       info_ptr += 2;
19139       break;
19140     case DW_FORM_data4:
19141       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19142       info_ptr += 4;
19143       break;
19144     case DW_FORM_data8:
19145       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19146       info_ptr += 8;
19147       break;
19148     case DW_FORM_data16:
19149       blk = dwarf_alloc_block (cu);
19150       blk->size = 16;
19151       blk->data = read_n_bytes (abfd, info_ptr, 16);
19152       info_ptr += 16;
19153       DW_BLOCK (attr) = blk;
19154       break;
19155     case DW_FORM_sec_offset:
19156       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19157       info_ptr += bytes_read;
19158       break;
19159     case DW_FORM_string:
19160       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19161       DW_STRING_IS_CANONICAL (attr) = 0;
19162       info_ptr += bytes_read;
19163       break;
19164     case DW_FORM_strp:
19165       if (!cu->per_cu->is_dwz)
19166         {
19167           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19168                                                    abfd, info_ptr, cu_header,
19169                                                    &bytes_read);
19170           DW_STRING_IS_CANONICAL (attr) = 0;
19171           info_ptr += bytes_read;
19172           break;
19173         }
19174       /* FALLTHROUGH */
19175     case DW_FORM_line_strp:
19176       if (!cu->per_cu->is_dwz)
19177         {
19178           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19179                                                         abfd, info_ptr,
19180                                                         cu_header, &bytes_read);
19181           DW_STRING_IS_CANONICAL (attr) = 0;
19182           info_ptr += bytes_read;
19183           break;
19184         }
19185       /* FALLTHROUGH */
19186     case DW_FORM_GNU_strp_alt:
19187       {
19188         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19189         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19190                                           &bytes_read);
19191
19192         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19193                                                           dwz, str_offset);
19194         DW_STRING_IS_CANONICAL (attr) = 0;
19195         info_ptr += bytes_read;
19196       }
19197       break;
19198     case DW_FORM_exprloc:
19199     case DW_FORM_block:
19200       blk = dwarf_alloc_block (cu);
19201       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19202       info_ptr += bytes_read;
19203       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19204       info_ptr += blk->size;
19205       DW_BLOCK (attr) = blk;
19206       break;
19207     case DW_FORM_block1:
19208       blk = dwarf_alloc_block (cu);
19209       blk->size = read_1_byte (abfd, info_ptr);
19210       info_ptr += 1;
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_data1:
19216       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19217       info_ptr += 1;
19218       break;
19219     case DW_FORM_flag:
19220       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19221       info_ptr += 1;
19222       break;
19223     case DW_FORM_flag_present:
19224       DW_UNSND (attr) = 1;
19225       break;
19226     case DW_FORM_sdata:
19227       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19228       info_ptr += bytes_read;
19229       break;
19230     case DW_FORM_udata:
19231       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19232       info_ptr += bytes_read;
19233       break;
19234     case DW_FORM_ref1:
19235       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19236                          + read_1_byte (abfd, info_ptr));
19237       info_ptr += 1;
19238       break;
19239     case DW_FORM_ref2:
19240       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19241                          + read_2_bytes (abfd, info_ptr));
19242       info_ptr += 2;
19243       break;
19244     case DW_FORM_ref4:
19245       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19246                          + read_4_bytes (abfd, info_ptr));
19247       info_ptr += 4;
19248       break;
19249     case DW_FORM_ref8:
19250       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19251                          + read_8_bytes (abfd, info_ptr));
19252       info_ptr += 8;
19253       break;
19254     case DW_FORM_ref_sig8:
19255       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19256       info_ptr += 8;
19257       break;
19258     case DW_FORM_ref_udata:
19259       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19260                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19261       info_ptr += bytes_read;
19262       break;
19263     case DW_FORM_indirect:
19264       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19265       info_ptr += bytes_read;
19266       if (form == DW_FORM_implicit_const)
19267         {
19268           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19269           info_ptr += bytes_read;
19270         }
19271       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19272                                        info_ptr);
19273       break;
19274     case DW_FORM_implicit_const:
19275       DW_SND (attr) = implicit_const;
19276       break;
19277     case DW_FORM_addrx:
19278     case DW_FORM_GNU_addr_index:
19279       if (reader->dwo_file == NULL)
19280         {
19281           /* For now flag a hard error.
19282              Later we can turn this into a complaint.  */
19283           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19284                  dwarf_form_name (form),
19285                  bfd_get_filename (abfd));
19286         }
19287       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19288       info_ptr += bytes_read;
19289       break;
19290     case DW_FORM_GNU_str_index:
19291       if (reader->dwo_file == NULL)
19292         {
19293           /* For now flag a hard error.
19294              Later we can turn this into a complaint if warranted.  */
19295           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19296                  dwarf_form_name (form),
19297                  bfd_get_filename (abfd));
19298         }
19299       {
19300         ULONGEST str_index =
19301           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19302
19303         DW_STRING (attr) = read_str_index (reader, str_index);
19304         DW_STRING_IS_CANONICAL (attr) = 0;
19305         info_ptr += bytes_read;
19306       }
19307       break;
19308     default:
19309       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19310              dwarf_form_name (form),
19311              bfd_get_filename (abfd));
19312     }
19313
19314   /* Super hack.  */
19315   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19316     attr->form = DW_FORM_GNU_ref_alt;
19317
19318   /* We have seen instances where the compiler tried to emit a byte
19319      size attribute of -1 which ended up being encoded as an unsigned
19320      0xffffffff.  Although 0xffffffff is technically a valid size value,
19321      an object of this size seems pretty unlikely so we can relatively
19322      safely treat these cases as if the size attribute was invalid and
19323      treat them as zero by default.  */
19324   if (attr->name == DW_AT_byte_size
19325       && form == DW_FORM_data4
19326       && DW_UNSND (attr) >= 0xffffffff)
19327     {
19328       complaint
19329         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19330          hex_string (DW_UNSND (attr)));
19331       DW_UNSND (attr) = 0;
19332     }
19333
19334   return info_ptr;
19335 }
19336
19337 /* Read an attribute described by an abbreviated attribute.  */
19338
19339 static const gdb_byte *
19340 read_attribute (const struct die_reader_specs *reader,
19341                 struct attribute *attr, struct attr_abbrev *abbrev,
19342                 const gdb_byte *info_ptr)
19343 {
19344   attr->name = abbrev->name;
19345   return read_attribute_value (reader, attr, abbrev->form,
19346                                abbrev->implicit_const, info_ptr);
19347 }
19348
19349 /* Read dwarf information from a buffer.  */
19350
19351 static unsigned int
19352 read_1_byte (bfd *abfd, const gdb_byte *buf)
19353 {
19354   return bfd_get_8 (abfd, buf);
19355 }
19356
19357 static int
19358 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19359 {
19360   return bfd_get_signed_8 (abfd, buf);
19361 }
19362
19363 static unsigned int
19364 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19365 {
19366   return bfd_get_16 (abfd, buf);
19367 }
19368
19369 static int
19370 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19371 {
19372   return bfd_get_signed_16 (abfd, buf);
19373 }
19374
19375 static unsigned int
19376 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19377 {
19378   return bfd_get_32 (abfd, buf);
19379 }
19380
19381 static int
19382 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19383 {
19384   return bfd_get_signed_32 (abfd, buf);
19385 }
19386
19387 static ULONGEST
19388 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19389 {
19390   return bfd_get_64 (abfd, buf);
19391 }
19392
19393 static CORE_ADDR
19394 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19395               unsigned int *bytes_read)
19396 {
19397   struct comp_unit_head *cu_header = &cu->header;
19398   CORE_ADDR retval = 0;
19399
19400   if (cu_header->signed_addr_p)
19401     {
19402       switch (cu_header->addr_size)
19403         {
19404         case 2:
19405           retval = bfd_get_signed_16 (abfd, buf);
19406           break;
19407         case 4:
19408           retval = bfd_get_signed_32 (abfd, buf);
19409           break;
19410         case 8:
19411           retval = bfd_get_signed_64 (abfd, buf);
19412           break;
19413         default:
19414           internal_error (__FILE__, __LINE__,
19415                           _("read_address: bad switch, signed [in module %s]"),
19416                           bfd_get_filename (abfd));
19417         }
19418     }
19419   else
19420     {
19421       switch (cu_header->addr_size)
19422         {
19423         case 2:
19424           retval = bfd_get_16 (abfd, buf);
19425           break;
19426         case 4:
19427           retval = bfd_get_32 (abfd, buf);
19428           break;
19429         case 8:
19430           retval = bfd_get_64 (abfd, buf);
19431           break;
19432         default:
19433           internal_error (__FILE__, __LINE__,
19434                           _("read_address: bad switch, "
19435                             "unsigned [in module %s]"),
19436                           bfd_get_filename (abfd));
19437         }
19438     }
19439
19440   *bytes_read = cu_header->addr_size;
19441   return retval;
19442 }
19443
19444 /* Read the initial length from a section.  The (draft) DWARF 3
19445    specification allows the initial length to take up either 4 bytes
19446    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19447    bytes describe the length and all offsets will be 8 bytes in length
19448    instead of 4.
19449
19450    An older, non-standard 64-bit format is also handled by this
19451    function.  The older format in question stores the initial length
19452    as an 8-byte quantity without an escape value.  Lengths greater
19453    than 2^32 aren't very common which means that the initial 4 bytes
19454    is almost always zero.  Since a length value of zero doesn't make
19455    sense for the 32-bit format, this initial zero can be considered to
19456    be an escape value which indicates the presence of the older 64-bit
19457    format.  As written, the code can't detect (old format) lengths
19458    greater than 4GB.  If it becomes necessary to handle lengths
19459    somewhat larger than 4GB, we could allow other small values (such
19460    as the non-sensical values of 1, 2, and 3) to also be used as
19461    escape values indicating the presence of the old format.
19462
19463    The value returned via bytes_read should be used to increment the
19464    relevant pointer after calling read_initial_length().
19465
19466    [ Note:  read_initial_length() and read_offset() are based on the
19467      document entitled "DWARF Debugging Information Format", revision
19468      3, draft 8, dated November 19, 2001.  This document was obtained
19469      from:
19470
19471         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19472
19473      This document is only a draft and is subject to change.  (So beware.)
19474
19475      Details regarding the older, non-standard 64-bit format were
19476      determined empirically by examining 64-bit ELF files produced by
19477      the SGI toolchain on an IRIX 6.5 machine.
19478
19479      - Kevin, July 16, 2002
19480    ] */
19481
19482 static LONGEST
19483 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19484 {
19485   LONGEST length = bfd_get_32 (abfd, buf);
19486
19487   if (length == 0xffffffff)
19488     {
19489       length = bfd_get_64 (abfd, buf + 4);
19490       *bytes_read = 12;
19491     }
19492   else if (length == 0)
19493     {
19494       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19495       length = bfd_get_64 (abfd, buf);
19496       *bytes_read = 8;
19497     }
19498   else
19499     {
19500       *bytes_read = 4;
19501     }
19502
19503   return length;
19504 }
19505
19506 /* Cover function for read_initial_length.
19507    Returns the length of the object at BUF, and stores the size of the
19508    initial length in *BYTES_READ and stores the size that offsets will be in
19509    *OFFSET_SIZE.
19510    If the initial length size is not equivalent to that specified in
19511    CU_HEADER then issue a complaint.
19512    This is useful when reading non-comp-unit headers.  */
19513
19514 static LONGEST
19515 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19516                                         const struct comp_unit_head *cu_header,
19517                                         unsigned int *bytes_read,
19518                                         unsigned int *offset_size)
19519 {
19520   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19521
19522   gdb_assert (cu_header->initial_length_size == 4
19523               || cu_header->initial_length_size == 8
19524               || cu_header->initial_length_size == 12);
19525
19526   if (cu_header->initial_length_size != *bytes_read)
19527     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19528
19529   *offset_size = (*bytes_read == 4) ? 4 : 8;
19530   return length;
19531 }
19532
19533 /* Read an offset from the data stream.  The size of the offset is
19534    given by cu_header->offset_size.  */
19535
19536 static LONGEST
19537 read_offset (bfd *abfd, const gdb_byte *buf,
19538              const struct comp_unit_head *cu_header,
19539              unsigned int *bytes_read)
19540 {
19541   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19542
19543   *bytes_read = cu_header->offset_size;
19544   return offset;
19545 }
19546
19547 /* Read an offset from the data stream.  */
19548
19549 static LONGEST
19550 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19551 {
19552   LONGEST retval = 0;
19553
19554   switch (offset_size)
19555     {
19556     case 4:
19557       retval = bfd_get_32 (abfd, buf);
19558       break;
19559     case 8:
19560       retval = bfd_get_64 (abfd, buf);
19561       break;
19562     default:
19563       internal_error (__FILE__, __LINE__,
19564                       _("read_offset_1: bad switch [in module %s]"),
19565                       bfd_get_filename (abfd));
19566     }
19567
19568   return retval;
19569 }
19570
19571 static const gdb_byte *
19572 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19573 {
19574   /* If the size of a host char is 8 bits, we can return a pointer
19575      to the buffer, otherwise we have to copy the data to a buffer
19576      allocated on the temporary obstack.  */
19577   gdb_assert (HOST_CHAR_BIT == 8);
19578   return buf;
19579 }
19580
19581 static const char *
19582 read_direct_string (bfd *abfd, const gdb_byte *buf,
19583                     unsigned int *bytes_read_ptr)
19584 {
19585   /* If the size of a host char is 8 bits, we can return a pointer
19586      to the string, otherwise we have to copy the string to a buffer
19587      allocated on the temporary obstack.  */
19588   gdb_assert (HOST_CHAR_BIT == 8);
19589   if (*buf == '\0')
19590     {
19591       *bytes_read_ptr = 1;
19592       return NULL;
19593     }
19594   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19595   return (const char *) buf;
19596 }
19597
19598 /* Return pointer to string at section SECT offset STR_OFFSET with error
19599    reporting strings FORM_NAME and SECT_NAME.  */
19600
19601 static const char *
19602 read_indirect_string_at_offset_from (struct objfile *objfile,
19603                                      bfd *abfd, LONGEST str_offset,
19604                                      struct dwarf2_section_info *sect,
19605                                      const char *form_name,
19606                                      const char *sect_name)
19607 {
19608   dwarf2_read_section (objfile, sect);
19609   if (sect->buffer == NULL)
19610     error (_("%s used without %s section [in module %s]"),
19611            form_name, sect_name, bfd_get_filename (abfd));
19612   if (str_offset >= sect->size)
19613     error (_("%s pointing outside of %s section [in module %s]"),
19614            form_name, sect_name, bfd_get_filename (abfd));
19615   gdb_assert (HOST_CHAR_BIT == 8);
19616   if (sect->buffer[str_offset] == '\0')
19617     return NULL;
19618   return (const char *) (sect->buffer + str_offset);
19619 }
19620
19621 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19622
19623 static const char *
19624 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19625                                 bfd *abfd, LONGEST str_offset)
19626 {
19627   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19628                                               abfd, str_offset,
19629                                               &dwarf2_per_objfile->str,
19630                                               "DW_FORM_strp", ".debug_str");
19631 }
19632
19633 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19634
19635 static const char *
19636 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19637                                      bfd *abfd, LONGEST str_offset)
19638 {
19639   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19640                                               abfd, str_offset,
19641                                               &dwarf2_per_objfile->line_str,
19642                                               "DW_FORM_line_strp",
19643                                               ".debug_line_str");
19644 }
19645
19646 /* Read a string at offset STR_OFFSET in the .debug_str section from
19647    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19648    the string consists of a single NUL byte, return NULL; otherwise
19649    return a pointer to the string.  */
19650
19651 static const char *
19652 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19653                                LONGEST str_offset)
19654 {
19655   dwarf2_read_section (objfile, &dwz->str);
19656
19657   if (dwz->str.buffer == NULL)
19658     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19659              "section [in module %s]"),
19660            bfd_get_filename (dwz->dwz_bfd));
19661   if (str_offset >= dwz->str.size)
19662     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19663              ".debug_str section [in module %s]"),
19664            bfd_get_filename (dwz->dwz_bfd));
19665   gdb_assert (HOST_CHAR_BIT == 8);
19666   if (dwz->str.buffer[str_offset] == '\0')
19667     return NULL;
19668   return (const char *) (dwz->str.buffer + str_offset);
19669 }
19670
19671 /* Return pointer to string at .debug_str offset as read from BUF.
19672    BUF is assumed to be in a compilation unit described by CU_HEADER.
19673    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19674
19675 static const char *
19676 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19677                       const gdb_byte *buf,
19678                       const struct comp_unit_head *cu_header,
19679                       unsigned int *bytes_read_ptr)
19680 {
19681   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19682
19683   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19684 }
19685
19686 /* Return pointer to string at .debug_line_str offset as read from BUF.
19687    BUF is assumed to be in a compilation unit described by CU_HEADER.
19688    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19689
19690 static const char *
19691 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19692                            bfd *abfd, const gdb_byte *buf,
19693                            const struct comp_unit_head *cu_header,
19694                            unsigned int *bytes_read_ptr)
19695 {
19696   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19697
19698   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19699                                               str_offset);
19700 }
19701
19702 ULONGEST
19703 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19704                           unsigned int *bytes_read_ptr)
19705 {
19706   ULONGEST result;
19707   unsigned int num_read;
19708   int shift;
19709   unsigned char byte;
19710
19711   result = 0;
19712   shift = 0;
19713   num_read = 0;
19714   while (1)
19715     {
19716       byte = bfd_get_8 (abfd, buf);
19717       buf++;
19718       num_read++;
19719       result |= ((ULONGEST) (byte & 127) << shift);
19720       if ((byte & 128) == 0)
19721         {
19722           break;
19723         }
19724       shift += 7;
19725     }
19726   *bytes_read_ptr = num_read;
19727   return result;
19728 }
19729
19730 static LONGEST
19731 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19732                     unsigned int *bytes_read_ptr)
19733 {
19734   ULONGEST result;
19735   int shift, num_read;
19736   unsigned char byte;
19737
19738   result = 0;
19739   shift = 0;
19740   num_read = 0;
19741   while (1)
19742     {
19743       byte = bfd_get_8 (abfd, buf);
19744       buf++;
19745       num_read++;
19746       result |= ((ULONGEST) (byte & 127) << shift);
19747       shift += 7;
19748       if ((byte & 128) == 0)
19749         {
19750           break;
19751         }
19752     }
19753   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19754     result |= -(((ULONGEST) 1) << shift);
19755   *bytes_read_ptr = num_read;
19756   return result;
19757 }
19758
19759 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19760    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19761    ADDR_SIZE is the size of addresses from the CU header.  */
19762
19763 static CORE_ADDR
19764 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19765                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19766 {
19767   struct objfile *objfile = dwarf2_per_objfile->objfile;
19768   bfd *abfd = objfile->obfd;
19769   const gdb_byte *info_ptr;
19770
19771   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19772   if (dwarf2_per_objfile->addr.buffer == NULL)
19773     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19774            objfile_name (objfile));
19775   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19776     error (_("DW_FORM_addr_index pointing outside of "
19777              ".debug_addr section [in module %s]"),
19778            objfile_name (objfile));
19779   info_ptr = (dwarf2_per_objfile->addr.buffer
19780               + addr_base + addr_index * addr_size);
19781   if (addr_size == 4)
19782     return bfd_get_32 (abfd, info_ptr);
19783   else
19784     return bfd_get_64 (abfd, info_ptr);
19785 }
19786
19787 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19788
19789 static CORE_ADDR
19790 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19791 {
19792   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19793                             cu->addr_base, cu->header.addr_size);
19794 }
19795
19796 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19797
19798 static CORE_ADDR
19799 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19800                              unsigned int *bytes_read)
19801 {
19802   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19803   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19804
19805   return read_addr_index (cu, addr_index);
19806 }
19807
19808 /* Data structure to pass results from dwarf2_read_addr_index_reader
19809    back to dwarf2_read_addr_index.  */
19810
19811 struct dwarf2_read_addr_index_data
19812 {
19813   ULONGEST addr_base;
19814   int addr_size;
19815 };
19816
19817 /* die_reader_func for dwarf2_read_addr_index.  */
19818
19819 static void
19820 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19821                                const gdb_byte *info_ptr,
19822                                struct die_info *comp_unit_die,
19823                                int has_children,
19824                                void *data)
19825 {
19826   struct dwarf2_cu *cu = reader->cu;
19827   struct dwarf2_read_addr_index_data *aidata =
19828     (struct dwarf2_read_addr_index_data *) data;
19829
19830   aidata->addr_base = cu->addr_base;
19831   aidata->addr_size = cu->header.addr_size;
19832 }
19833
19834 /* Given an index in .debug_addr, fetch the value.
19835    NOTE: This can be called during dwarf expression evaluation,
19836    long after the debug information has been read, and thus per_cu->cu
19837    may no longer exist.  */
19838
19839 CORE_ADDR
19840 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19841                         unsigned int addr_index)
19842 {
19843   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19844   struct dwarf2_cu *cu = per_cu->cu;
19845   ULONGEST addr_base;
19846   int addr_size;
19847
19848   /* We need addr_base and addr_size.
19849      If we don't have PER_CU->cu, we have to get it.
19850      Nasty, but the alternative is storing the needed info in PER_CU,
19851      which at this point doesn't seem justified: it's not clear how frequently
19852      it would get used and it would increase the size of every PER_CU.
19853      Entry points like dwarf2_per_cu_addr_size do a similar thing
19854      so we're not in uncharted territory here.
19855      Alas we need to be a bit more complicated as addr_base is contained
19856      in the DIE.
19857
19858      We don't need to read the entire CU(/TU).
19859      We just need the header and top level die.
19860
19861      IWBN to use the aging mechanism to let us lazily later discard the CU.
19862      For now we skip this optimization.  */
19863
19864   if (cu != NULL)
19865     {
19866       addr_base = cu->addr_base;
19867       addr_size = cu->header.addr_size;
19868     }
19869   else
19870     {
19871       struct dwarf2_read_addr_index_data aidata;
19872
19873       /* Note: We can't use init_cutu_and_read_dies_simple here,
19874          we need addr_base.  */
19875       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19876                                dwarf2_read_addr_index_reader, &aidata);
19877       addr_base = aidata.addr_base;
19878       addr_size = aidata.addr_size;
19879     }
19880
19881   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19882                             addr_size);
19883 }
19884
19885 /* Given a DW_FORM_GNU_str_index, fetch the string.
19886    This is only used by the Fission support.  */
19887
19888 static const char *
19889 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19890 {
19891   struct dwarf2_cu *cu = reader->cu;
19892   struct dwarf2_per_objfile *dwarf2_per_objfile
19893     = cu->per_cu->dwarf2_per_objfile;
19894   struct objfile *objfile = dwarf2_per_objfile->objfile;
19895   const char *objf_name = objfile_name (objfile);
19896   bfd *abfd = objfile->obfd;
19897   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19898   struct dwarf2_section_info *str_offsets_section =
19899     &reader->dwo_file->sections.str_offsets;
19900   const gdb_byte *info_ptr;
19901   ULONGEST str_offset;
19902   static const char form_name[] = "DW_FORM_GNU_str_index";
19903
19904   dwarf2_read_section (objfile, str_section);
19905   dwarf2_read_section (objfile, str_offsets_section);
19906   if (str_section->buffer == NULL)
19907     error (_("%s used without .debug_str.dwo section"
19908              " in CU at offset %s [in module %s]"),
19909            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19910   if (str_offsets_section->buffer == NULL)
19911     error (_("%s used without .debug_str_offsets.dwo section"
19912              " in CU at offset %s [in module %s]"),
19913            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19914   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19915     error (_("%s pointing outside of .debug_str_offsets.dwo"
19916              " section in CU at offset %s [in module %s]"),
19917            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19918   info_ptr = (str_offsets_section->buffer
19919               + str_index * cu->header.offset_size);
19920   if (cu->header.offset_size == 4)
19921     str_offset = bfd_get_32 (abfd, info_ptr);
19922   else
19923     str_offset = bfd_get_64 (abfd, info_ptr);
19924   if (str_offset >= str_section->size)
19925     error (_("Offset from %s pointing outside of"
19926              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19927            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19928   return (const char *) (str_section->buffer + str_offset);
19929 }
19930
19931 /* Return the length of an LEB128 number in BUF.  */
19932
19933 static int
19934 leb128_size (const gdb_byte *buf)
19935 {
19936   const gdb_byte *begin = buf;
19937   gdb_byte byte;
19938
19939   while (1)
19940     {
19941       byte = *buf++;
19942       if ((byte & 128) == 0)
19943         return buf - begin;
19944     }
19945 }
19946
19947 static void
19948 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19949 {
19950   switch (lang)
19951     {
19952     case DW_LANG_C89:
19953     case DW_LANG_C99:
19954     case DW_LANG_C11:
19955     case DW_LANG_C:
19956     case DW_LANG_UPC:
19957       cu->language = language_c;
19958       break;
19959     case DW_LANG_Java:
19960     case DW_LANG_C_plus_plus:
19961     case DW_LANG_C_plus_plus_11:
19962     case DW_LANG_C_plus_plus_14:
19963       cu->language = language_cplus;
19964       break;
19965     case DW_LANG_D:
19966       cu->language = language_d;
19967       break;
19968     case DW_LANG_Fortran77:
19969     case DW_LANG_Fortran90:
19970     case DW_LANG_Fortran95:
19971     case DW_LANG_Fortran03:
19972     case DW_LANG_Fortran08:
19973       cu->language = language_fortran;
19974       break;
19975     case DW_LANG_Go:
19976       cu->language = language_go;
19977       break;
19978     case DW_LANG_Mips_Assembler:
19979       cu->language = language_asm;
19980       break;
19981     case DW_LANG_Ada83:
19982     case DW_LANG_Ada95:
19983       cu->language = language_ada;
19984       break;
19985     case DW_LANG_Modula2:
19986       cu->language = language_m2;
19987       break;
19988     case DW_LANG_Pascal83:
19989       cu->language = language_pascal;
19990       break;
19991     case DW_LANG_ObjC:
19992       cu->language = language_objc;
19993       break;
19994     case DW_LANG_Rust:
19995     case DW_LANG_Rust_old:
19996       cu->language = language_rust;
19997       break;
19998     case DW_LANG_Cobol74:
19999     case DW_LANG_Cobol85:
20000     default:
20001       cu->language = language_minimal;
20002       break;
20003     }
20004   cu->language_defn = language_def (cu->language);
20005 }
20006
20007 /* Return the named attribute or NULL if not there.  */
20008
20009 static struct attribute *
20010 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20011 {
20012   for (;;)
20013     {
20014       unsigned int i;
20015       struct attribute *spec = NULL;
20016
20017       for (i = 0; i < die->num_attrs; ++i)
20018         {
20019           if (die->attrs[i].name == name)
20020             return &die->attrs[i];
20021           if (die->attrs[i].name == DW_AT_specification
20022               || die->attrs[i].name == DW_AT_abstract_origin)
20023             spec = &die->attrs[i];
20024         }
20025
20026       if (!spec)
20027         break;
20028
20029       die = follow_die_ref (die, spec, &cu);
20030     }
20031
20032   return NULL;
20033 }
20034
20035 /* Return the named attribute or NULL if not there,
20036    but do not follow DW_AT_specification, etc.
20037    This is for use in contexts where we're reading .debug_types dies.
20038    Following DW_AT_specification, DW_AT_abstract_origin will take us
20039    back up the chain, and we want to go down.  */
20040
20041 static struct attribute *
20042 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
20043 {
20044   unsigned int i;
20045
20046   for (i = 0; i < die->num_attrs; ++i)
20047     if (die->attrs[i].name == name)
20048       return &die->attrs[i];
20049
20050   return NULL;
20051 }
20052
20053 /* Return the string associated with a string-typed attribute, or NULL if it
20054    is either not found or is of an incorrect type.  */
20055
20056 static const char *
20057 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
20058 {
20059   struct attribute *attr;
20060   const char *str = NULL;
20061
20062   attr = dwarf2_attr (die, name, cu);
20063
20064   if (attr != NULL)
20065     {
20066       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
20067           || attr->form == DW_FORM_string
20068           || attr->form == DW_FORM_GNU_str_index
20069           || attr->form == DW_FORM_GNU_strp_alt)
20070         str = DW_STRING (attr);
20071       else
20072         complaint (_("string type expected for attribute %s for "
20073                      "DIE at %s in module %s"),
20074                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
20075                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
20076     }
20077
20078   return str;
20079 }
20080
20081 /* Return non-zero iff the attribute NAME is defined for the given DIE,
20082    and holds a non-zero value.  This function should only be used for
20083    DW_FORM_flag or DW_FORM_flag_present attributes.  */
20084
20085 static int
20086 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
20087 {
20088   struct attribute *attr = dwarf2_attr (die, name, cu);
20089
20090   return (attr && DW_UNSND (attr));
20091 }
20092
20093 static int
20094 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20095 {
20096   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20097      which value is non-zero.  However, we have to be careful with
20098      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20099      (via dwarf2_flag_true_p) follows this attribute.  So we may
20100      end up accidently finding a declaration attribute that belongs
20101      to a different DIE referenced by the specification attribute,
20102      even though the given DIE does not have a declaration attribute.  */
20103   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20104           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20105 }
20106
20107 /* Return the die giving the specification for DIE, if there is
20108    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20109    containing the return value on output.  If there is no
20110    specification, but there is an abstract origin, that is
20111    returned.  */
20112
20113 static struct die_info *
20114 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20115 {
20116   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20117                                              *spec_cu);
20118
20119   if (spec_attr == NULL)
20120     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20121
20122   if (spec_attr == NULL)
20123     return NULL;
20124   else
20125     return follow_die_ref (die, spec_attr, spec_cu);
20126 }
20127
20128 /* Stub for free_line_header to match void * callback types.  */
20129
20130 static void
20131 free_line_header_voidp (void *arg)
20132 {
20133   struct line_header *lh = (struct line_header *) arg;
20134
20135   delete lh;
20136 }
20137
20138 void
20139 line_header::add_include_dir (const char *include_dir)
20140 {
20141   if (dwarf_line_debug >= 2)
20142     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20143                         include_dirs.size () + 1, include_dir);
20144
20145   include_dirs.push_back (include_dir);
20146 }
20147
20148 void
20149 line_header::add_file_name (const char *name,
20150                             dir_index d_index,
20151                             unsigned int mod_time,
20152                             unsigned int length)
20153 {
20154   if (dwarf_line_debug >= 2)
20155     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20156                         (unsigned) file_names.size () + 1, name);
20157
20158   file_names.emplace_back (name, d_index, mod_time, length);
20159 }
20160
20161 /* A convenience function to find the proper .debug_line section for a CU.  */
20162
20163 static struct dwarf2_section_info *
20164 get_debug_line_section (struct dwarf2_cu *cu)
20165 {
20166   struct dwarf2_section_info *section;
20167   struct dwarf2_per_objfile *dwarf2_per_objfile
20168     = cu->per_cu->dwarf2_per_objfile;
20169
20170   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20171      DWO file.  */
20172   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20173     section = &cu->dwo_unit->dwo_file->sections.line;
20174   else if (cu->per_cu->is_dwz)
20175     {
20176       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20177
20178       section = &dwz->line;
20179     }
20180   else
20181     section = &dwarf2_per_objfile->line;
20182
20183   return section;
20184 }
20185
20186 /* Read directory or file name entry format, starting with byte of
20187    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20188    entries count and the entries themselves in the described entry
20189    format.  */
20190
20191 static void
20192 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20193                         bfd *abfd, const gdb_byte **bufp,
20194                         struct line_header *lh,
20195                         const struct comp_unit_head *cu_header,
20196                         void (*callback) (struct line_header *lh,
20197                                           const char *name,
20198                                           dir_index d_index,
20199                                           unsigned int mod_time,
20200                                           unsigned int length))
20201 {
20202   gdb_byte format_count, formati;
20203   ULONGEST data_count, datai;
20204   const gdb_byte *buf = *bufp;
20205   const gdb_byte *format_header_data;
20206   unsigned int bytes_read;
20207
20208   format_count = read_1_byte (abfd, buf);
20209   buf += 1;
20210   format_header_data = buf;
20211   for (formati = 0; formati < format_count; formati++)
20212     {
20213       read_unsigned_leb128 (abfd, buf, &bytes_read);
20214       buf += bytes_read;
20215       read_unsigned_leb128 (abfd, buf, &bytes_read);
20216       buf += bytes_read;
20217     }
20218
20219   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20220   buf += bytes_read;
20221   for (datai = 0; datai < data_count; datai++)
20222     {
20223       const gdb_byte *format = format_header_data;
20224       struct file_entry fe;
20225
20226       for (formati = 0; formati < format_count; formati++)
20227         {
20228           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20229           format += bytes_read;
20230
20231           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20232           format += bytes_read;
20233
20234           gdb::optional<const char *> string;
20235           gdb::optional<unsigned int> uint;
20236
20237           switch (form)
20238             {
20239             case DW_FORM_string:
20240               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20241               buf += bytes_read;
20242               break;
20243
20244             case DW_FORM_line_strp:
20245               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20246                                                          abfd, buf,
20247                                                          cu_header,
20248                                                          &bytes_read));
20249               buf += bytes_read;
20250               break;
20251
20252             case DW_FORM_data1:
20253               uint.emplace (read_1_byte (abfd, buf));
20254               buf += 1;
20255               break;
20256
20257             case DW_FORM_data2:
20258               uint.emplace (read_2_bytes (abfd, buf));
20259               buf += 2;
20260               break;
20261
20262             case DW_FORM_data4:
20263               uint.emplace (read_4_bytes (abfd, buf));
20264               buf += 4;
20265               break;
20266
20267             case DW_FORM_data8:
20268               uint.emplace (read_8_bytes (abfd, buf));
20269               buf += 8;
20270               break;
20271
20272             case DW_FORM_udata:
20273               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20274               buf += bytes_read;
20275               break;
20276
20277             case DW_FORM_block:
20278               /* It is valid only for DW_LNCT_timestamp which is ignored by
20279                  current GDB.  */
20280               break;
20281             }
20282
20283           switch (content_type)
20284             {
20285             case DW_LNCT_path:
20286               if (string.has_value ())
20287                 fe.name = *string;
20288               break;
20289             case DW_LNCT_directory_index:
20290               if (uint.has_value ())
20291                 fe.d_index = (dir_index) *uint;
20292               break;
20293             case DW_LNCT_timestamp:
20294               if (uint.has_value ())
20295                 fe.mod_time = *uint;
20296               break;
20297             case DW_LNCT_size:
20298               if (uint.has_value ())
20299                 fe.length = *uint;
20300               break;
20301             case DW_LNCT_MD5:
20302               break;
20303             default:
20304               complaint (_("Unknown format content type %s"),
20305                          pulongest (content_type));
20306             }
20307         }
20308
20309       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20310     }
20311
20312   *bufp = buf;
20313 }
20314
20315 /* Read the statement program header starting at OFFSET in
20316    .debug_line, or .debug_line.dwo.  Return a pointer
20317    to a struct line_header, allocated using xmalloc.
20318    Returns NULL if there is a problem reading the header, e.g., if it
20319    has a version we don't understand.
20320
20321    NOTE: the strings in the include directory and file name tables of
20322    the returned object point into the dwarf line section buffer,
20323    and must not be freed.  */
20324
20325 static line_header_up
20326 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20327 {
20328   const gdb_byte *line_ptr;
20329   unsigned int bytes_read, offset_size;
20330   int i;
20331   const char *cur_dir, *cur_file;
20332   struct dwarf2_section_info *section;
20333   bfd *abfd;
20334   struct dwarf2_per_objfile *dwarf2_per_objfile
20335     = cu->per_cu->dwarf2_per_objfile;
20336
20337   section = get_debug_line_section (cu);
20338   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20339   if (section->buffer == NULL)
20340     {
20341       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20342         complaint (_("missing .debug_line.dwo section"));
20343       else
20344         complaint (_("missing .debug_line section"));
20345       return 0;
20346     }
20347
20348   /* We can't do this until we know the section is non-empty.
20349      Only then do we know we have such a section.  */
20350   abfd = get_section_bfd_owner (section);
20351
20352   /* Make sure that at least there's room for the total_length field.
20353      That could be 12 bytes long, but we're just going to fudge that.  */
20354   if (to_underlying (sect_off) + 4 >= section->size)
20355     {
20356       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20357       return 0;
20358     }
20359
20360   line_header_up lh (new line_header ());
20361
20362   lh->sect_off = sect_off;
20363   lh->offset_in_dwz = cu->per_cu->is_dwz;
20364
20365   line_ptr = section->buffer + to_underlying (sect_off);
20366
20367   /* Read in the header.  */
20368   lh->total_length =
20369     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20370                                             &bytes_read, &offset_size);
20371   line_ptr += bytes_read;
20372   if (line_ptr + lh->total_length > (section->buffer + section->size))
20373     {
20374       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20375       return 0;
20376     }
20377   lh->statement_program_end = line_ptr + lh->total_length;
20378   lh->version = read_2_bytes (abfd, line_ptr);
20379   line_ptr += 2;
20380   if (lh->version > 5)
20381     {
20382       /* This is a version we don't understand.  The format could have
20383          changed in ways we don't handle properly so just punt.  */
20384       complaint (_("unsupported version in .debug_line section"));
20385       return NULL;
20386     }
20387   if (lh->version >= 5)
20388     {
20389       gdb_byte segment_selector_size;
20390
20391       /* Skip address size.  */
20392       read_1_byte (abfd, line_ptr);
20393       line_ptr += 1;
20394
20395       segment_selector_size = read_1_byte (abfd, line_ptr);
20396       line_ptr += 1;
20397       if (segment_selector_size != 0)
20398         {
20399           complaint (_("unsupported segment selector size %u "
20400                        "in .debug_line section"),
20401                      segment_selector_size);
20402           return NULL;
20403         }
20404     }
20405   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20406   line_ptr += offset_size;
20407   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20408   line_ptr += 1;
20409   if (lh->version >= 4)
20410     {
20411       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20412       line_ptr += 1;
20413     }
20414   else
20415     lh->maximum_ops_per_instruction = 1;
20416
20417   if (lh->maximum_ops_per_instruction == 0)
20418     {
20419       lh->maximum_ops_per_instruction = 1;
20420       complaint (_("invalid maximum_ops_per_instruction "
20421                    "in `.debug_line' section"));
20422     }
20423
20424   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20425   line_ptr += 1;
20426   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20427   line_ptr += 1;
20428   lh->line_range = read_1_byte (abfd, line_ptr);
20429   line_ptr += 1;
20430   lh->opcode_base = read_1_byte (abfd, line_ptr);
20431   line_ptr += 1;
20432   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20433
20434   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20435   for (i = 1; i < lh->opcode_base; ++i)
20436     {
20437       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20438       line_ptr += 1;
20439     }
20440
20441   if (lh->version >= 5)
20442     {
20443       /* Read directory table.  */
20444       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20445                               &cu->header,
20446                               [] (struct line_header *header, const char *name,
20447                                   dir_index d_index, unsigned int mod_time,
20448                                   unsigned int length)
20449         {
20450           header->add_include_dir (name);
20451         });
20452
20453       /* Read file name table.  */
20454       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20455                               &cu->header,
20456                               [] (struct line_header *header, const char *name,
20457                                   dir_index d_index, unsigned int mod_time,
20458                                   unsigned int length)
20459         {
20460           header->add_file_name (name, d_index, mod_time, length);
20461         });
20462     }
20463   else
20464     {
20465       /* Read directory table.  */
20466       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20467         {
20468           line_ptr += bytes_read;
20469           lh->add_include_dir (cur_dir);
20470         }
20471       line_ptr += bytes_read;
20472
20473       /* Read file name table.  */
20474       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20475         {
20476           unsigned int mod_time, length;
20477           dir_index d_index;
20478
20479           line_ptr += bytes_read;
20480           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20481           line_ptr += bytes_read;
20482           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20483           line_ptr += bytes_read;
20484           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20485           line_ptr += bytes_read;
20486
20487           lh->add_file_name (cur_file, d_index, mod_time, length);
20488         }
20489       line_ptr += bytes_read;
20490     }
20491   lh->statement_program_start = line_ptr;
20492
20493   if (line_ptr > (section->buffer + section->size))
20494     complaint (_("line number info header doesn't "
20495                  "fit in `.debug_line' section"));
20496
20497   return lh;
20498 }
20499
20500 /* Subroutine of dwarf_decode_lines to simplify it.
20501    Return the file name of the psymtab for included file FILE_INDEX
20502    in line header LH of PST.
20503    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20504    If space for the result is malloc'd, *NAME_HOLDER will be set.
20505    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20506
20507 static const char *
20508 psymtab_include_file_name (const struct line_header *lh, int file_index,
20509                            const struct partial_symtab *pst,
20510                            const char *comp_dir,
20511                            gdb::unique_xmalloc_ptr<char> *name_holder)
20512 {
20513   const file_entry &fe = lh->file_names[file_index];
20514   const char *include_name = fe.name;
20515   const char *include_name_to_compare = include_name;
20516   const char *pst_filename;
20517   int file_is_pst;
20518
20519   const char *dir_name = fe.include_dir (lh);
20520
20521   gdb::unique_xmalloc_ptr<char> hold_compare;
20522   if (!IS_ABSOLUTE_PATH (include_name)
20523       && (dir_name != NULL || comp_dir != NULL))
20524     {
20525       /* Avoid creating a duplicate psymtab for PST.
20526          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20527          Before we do the comparison, however, we need to account
20528          for DIR_NAME and COMP_DIR.
20529          First prepend dir_name (if non-NULL).  If we still don't
20530          have an absolute path prepend comp_dir (if non-NULL).
20531          However, the directory we record in the include-file's
20532          psymtab does not contain COMP_DIR (to match the
20533          corresponding symtab(s)).
20534
20535          Example:
20536
20537          bash$ cd /tmp
20538          bash$ gcc -g ./hello.c
20539          include_name = "hello.c"
20540          dir_name = "."
20541          DW_AT_comp_dir = comp_dir = "/tmp"
20542          DW_AT_name = "./hello.c"
20543
20544       */
20545
20546       if (dir_name != NULL)
20547         {
20548           name_holder->reset (concat (dir_name, SLASH_STRING,
20549                                       include_name, (char *) NULL));
20550           include_name = name_holder->get ();
20551           include_name_to_compare = include_name;
20552         }
20553       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20554         {
20555           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20556                                       include_name, (char *) NULL));
20557           include_name_to_compare = hold_compare.get ();
20558         }
20559     }
20560
20561   pst_filename = pst->filename;
20562   gdb::unique_xmalloc_ptr<char> copied_name;
20563   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20564     {
20565       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20566                                  pst_filename, (char *) NULL));
20567       pst_filename = copied_name.get ();
20568     }
20569
20570   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20571
20572   if (file_is_pst)
20573     return NULL;
20574   return include_name;
20575 }
20576
20577 /* State machine to track the state of the line number program.  */
20578
20579 class lnp_state_machine
20580 {
20581 public:
20582   /* Initialize a machine state for the start of a line number
20583      program.  */
20584   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20585                      bool record_lines_p);
20586
20587   file_entry *current_file ()
20588   {
20589     /* lh->file_names is 0-based, but the file name numbers in the
20590        statement program are 1-based.  */
20591     return m_line_header->file_name_at (m_file);
20592   }
20593
20594   /* Record the line in the state machine.  END_SEQUENCE is true if
20595      we're processing the end of a sequence.  */
20596   void record_line (bool end_sequence);
20597
20598   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20599      nop-out rest of the lines in this sequence.  */
20600   void check_line_address (struct dwarf2_cu *cu,
20601                            const gdb_byte *line_ptr,
20602                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20603
20604   void handle_set_discriminator (unsigned int discriminator)
20605   {
20606     m_discriminator = discriminator;
20607     m_line_has_non_zero_discriminator |= discriminator != 0;
20608   }
20609
20610   /* Handle DW_LNE_set_address.  */
20611   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20612   {
20613     m_op_index = 0;
20614     address += baseaddr;
20615     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20616   }
20617
20618   /* Handle DW_LNS_advance_pc.  */
20619   void handle_advance_pc (CORE_ADDR adjust);
20620
20621   /* Handle a special opcode.  */
20622   void handle_special_opcode (unsigned char op_code);
20623
20624   /* Handle DW_LNS_advance_line.  */
20625   void handle_advance_line (int line_delta)
20626   {
20627     advance_line (line_delta);
20628   }
20629
20630   /* Handle DW_LNS_set_file.  */
20631   void handle_set_file (file_name_index file);
20632
20633   /* Handle DW_LNS_negate_stmt.  */
20634   void handle_negate_stmt ()
20635   {
20636     m_is_stmt = !m_is_stmt;
20637   }
20638
20639   /* Handle DW_LNS_const_add_pc.  */
20640   void handle_const_add_pc ();
20641
20642   /* Handle DW_LNS_fixed_advance_pc.  */
20643   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20644   {
20645     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20646     m_op_index = 0;
20647   }
20648
20649   /* Handle DW_LNS_copy.  */
20650   void handle_copy ()
20651   {
20652     record_line (false);
20653     m_discriminator = 0;
20654   }
20655
20656   /* Handle DW_LNE_end_sequence.  */
20657   void handle_end_sequence ()
20658   {
20659     m_currently_recording_lines = true;
20660   }
20661
20662 private:
20663   /* Advance the line by LINE_DELTA.  */
20664   void advance_line (int line_delta)
20665   {
20666     m_line += line_delta;
20667
20668     if (line_delta != 0)
20669       m_line_has_non_zero_discriminator = m_discriminator != 0;
20670   }
20671
20672   struct dwarf2_cu *m_cu;
20673
20674   gdbarch *m_gdbarch;
20675
20676   /* True if we're recording lines.
20677      Otherwise we're building partial symtabs and are just interested in
20678      finding include files mentioned by the line number program.  */
20679   bool m_record_lines_p;
20680
20681   /* The line number header.  */
20682   line_header *m_line_header;
20683
20684   /* These are part of the standard DWARF line number state machine,
20685      and initialized according to the DWARF spec.  */
20686
20687   unsigned char m_op_index = 0;
20688   /* The line table index (1-based) of the current file.  */
20689   file_name_index m_file = (file_name_index) 1;
20690   unsigned int m_line = 1;
20691
20692   /* These are initialized in the constructor.  */
20693
20694   CORE_ADDR m_address;
20695   bool m_is_stmt;
20696   unsigned int m_discriminator;
20697
20698   /* Additional bits of state we need to track.  */
20699
20700   /* The last file that we called dwarf2_start_subfile for.
20701      This is only used for TLLs.  */
20702   unsigned int m_last_file = 0;
20703   /* The last file a line number was recorded for.  */
20704   struct subfile *m_last_subfile = NULL;
20705
20706   /* When true, record the lines we decode.  */
20707   bool m_currently_recording_lines = false;
20708
20709   /* The last line number that was recorded, used to coalesce
20710      consecutive entries for the same line.  This can happen, for
20711      example, when discriminators are present.  PR 17276.  */
20712   unsigned int m_last_line = 0;
20713   bool m_line_has_non_zero_discriminator = false;
20714 };
20715
20716 void
20717 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20718 {
20719   CORE_ADDR addr_adj = (((m_op_index + adjust)
20720                          / m_line_header->maximum_ops_per_instruction)
20721                         * m_line_header->minimum_instruction_length);
20722   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20723   m_op_index = ((m_op_index + adjust)
20724                 % m_line_header->maximum_ops_per_instruction);
20725 }
20726
20727 void
20728 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20729 {
20730   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20731   CORE_ADDR addr_adj = (((m_op_index
20732                           + (adj_opcode / m_line_header->line_range))
20733                          / m_line_header->maximum_ops_per_instruction)
20734                         * m_line_header->minimum_instruction_length);
20735   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20736   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20737                 % m_line_header->maximum_ops_per_instruction);
20738
20739   int line_delta = (m_line_header->line_base
20740                     + (adj_opcode % m_line_header->line_range));
20741   advance_line (line_delta);
20742   record_line (false);
20743   m_discriminator = 0;
20744 }
20745
20746 void
20747 lnp_state_machine::handle_set_file (file_name_index file)
20748 {
20749   m_file = file;
20750
20751   const file_entry *fe = current_file ();
20752   if (fe == NULL)
20753     dwarf2_debug_line_missing_file_complaint ();
20754   else if (m_record_lines_p)
20755     {
20756       const char *dir = fe->include_dir (m_line_header);
20757
20758       m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20759       m_line_has_non_zero_discriminator = m_discriminator != 0;
20760       dwarf2_start_subfile (m_cu, fe->name, dir);
20761     }
20762 }
20763
20764 void
20765 lnp_state_machine::handle_const_add_pc ()
20766 {
20767   CORE_ADDR adjust
20768     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20769
20770   CORE_ADDR addr_adj
20771     = (((m_op_index + adjust)
20772         / m_line_header->maximum_ops_per_instruction)
20773        * m_line_header->minimum_instruction_length);
20774
20775   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20776   m_op_index = ((m_op_index + adjust)
20777                 % m_line_header->maximum_ops_per_instruction);
20778 }
20779
20780 /* Return non-zero if we should add LINE to the line number table.
20781    LINE is the line to add, LAST_LINE is the last line that was added,
20782    LAST_SUBFILE is the subfile for LAST_LINE.
20783    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20784    had a non-zero discriminator.
20785
20786    We have to be careful in the presence of discriminators.
20787    E.g., for this line:
20788
20789      for (i = 0; i < 100000; i++);
20790
20791    clang can emit four line number entries for that one line,
20792    each with a different discriminator.
20793    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20794
20795    However, we want gdb to coalesce all four entries into one.
20796    Otherwise the user could stepi into the middle of the line and
20797    gdb would get confused about whether the pc really was in the
20798    middle of the line.
20799
20800    Things are further complicated by the fact that two consecutive
20801    line number entries for the same line is a heuristic used by gcc
20802    to denote the end of the prologue.  So we can't just discard duplicate
20803    entries, we have to be selective about it.  The heuristic we use is
20804    that we only collapse consecutive entries for the same line if at least
20805    one of those entries has a non-zero discriminator.  PR 17276.
20806
20807    Note: Addresses in the line number state machine can never go backwards
20808    within one sequence, thus this coalescing is ok.  */
20809
20810 static int
20811 dwarf_record_line_p (struct dwarf2_cu *cu,
20812                      unsigned int line, unsigned int last_line,
20813                      int line_has_non_zero_discriminator,
20814                      struct subfile *last_subfile)
20815 {
20816   if (cu->get_builder ()->get_current_subfile () != last_subfile)
20817     return 1;
20818   if (line != last_line)
20819     return 1;
20820   /* Same line for the same file that we've seen already.
20821      As a last check, for pr 17276, only record the line if the line
20822      has never had a non-zero discriminator.  */
20823   if (!line_has_non_zero_discriminator)
20824     return 1;
20825   return 0;
20826 }
20827
20828 /* Use the CU's builder to record line number LINE beginning at
20829    address ADDRESS in the line table of subfile SUBFILE.  */
20830
20831 static void
20832 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20833                      unsigned int line, CORE_ADDR address,
20834                      struct dwarf2_cu *cu)
20835 {
20836   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20837
20838   if (dwarf_line_debug)
20839     {
20840       fprintf_unfiltered (gdb_stdlog,
20841                           "Recording line %u, file %s, address %s\n",
20842                           line, lbasename (subfile->name),
20843                           paddress (gdbarch, address));
20844     }
20845
20846   if (cu != nullptr)
20847     cu->get_builder ()->record_line (subfile, line, addr);
20848 }
20849
20850 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20851    Mark the end of a set of line number records.
20852    The arguments are the same as for dwarf_record_line_1.
20853    If SUBFILE is NULL the request is ignored.  */
20854
20855 static void
20856 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20857                    CORE_ADDR address, struct dwarf2_cu *cu)
20858 {
20859   if (subfile == NULL)
20860     return;
20861
20862   if (dwarf_line_debug)
20863     {
20864       fprintf_unfiltered (gdb_stdlog,
20865                           "Finishing current line, file %s, address %s\n",
20866                           lbasename (subfile->name),
20867                           paddress (gdbarch, address));
20868     }
20869
20870   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20871 }
20872
20873 void
20874 lnp_state_machine::record_line (bool end_sequence)
20875 {
20876   if (dwarf_line_debug)
20877     {
20878       fprintf_unfiltered (gdb_stdlog,
20879                           "Processing actual line %u: file %u,"
20880                           " address %s, is_stmt %u, discrim %u\n",
20881                           m_line, to_underlying (m_file),
20882                           paddress (m_gdbarch, m_address),
20883                           m_is_stmt, m_discriminator);
20884     }
20885
20886   file_entry *fe = current_file ();
20887
20888   if (fe == NULL)
20889     dwarf2_debug_line_missing_file_complaint ();
20890   /* For now we ignore lines not starting on an instruction boundary.
20891      But not when processing end_sequence for compatibility with the
20892      previous version of the code.  */
20893   else if (m_op_index == 0 || end_sequence)
20894     {
20895       fe->included_p = 1;
20896       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20897         {
20898           if (m_last_subfile != m_cu->get_builder ()->get_current_subfile ()
20899               || end_sequence)
20900             {
20901               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20902                                  m_currently_recording_lines ? m_cu : nullptr);
20903             }
20904
20905           if (!end_sequence)
20906             {
20907               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20908                                        m_line_has_non_zero_discriminator,
20909                                        m_last_subfile))
20910                 {
20911                   buildsym_compunit *builder = m_cu->get_builder ();
20912                   dwarf_record_line_1 (m_gdbarch,
20913                                        builder->get_current_subfile (),
20914                                        m_line, m_address,
20915                                        m_currently_recording_lines ? m_cu : nullptr);
20916                 }
20917               m_last_subfile = m_cu->get_builder ()->get_current_subfile ();
20918               m_last_line = m_line;
20919             }
20920         }
20921     }
20922 }
20923
20924 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20925                                       line_header *lh, bool record_lines_p)
20926 {
20927   m_cu = cu;
20928   m_gdbarch = arch;
20929   m_record_lines_p = record_lines_p;
20930   m_line_header = lh;
20931
20932   m_currently_recording_lines = true;
20933
20934   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20935      was a line entry for it so that the backend has a chance to adjust it
20936      and also record it in case it needs it.  This is currently used by MIPS
20937      code, cf. `mips_adjust_dwarf2_line'.  */
20938   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20939   m_is_stmt = lh->default_is_stmt;
20940   m_discriminator = 0;
20941 }
20942
20943 void
20944 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20945                                        const gdb_byte *line_ptr,
20946                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20947 {
20948   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20949      the pc range of the CU.  However, we restrict the test to only ADDRESS
20950      values of zero to preserve GDB's previous behaviour which is to handle
20951      the specific case of a function being GC'd by the linker.  */
20952
20953   if (address == 0 && address < unrelocated_lowpc)
20954     {
20955       /* This line table is for a function which has been
20956          GCd by the linker.  Ignore it.  PR gdb/12528 */
20957
20958       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20959       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20960
20961       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20962                  line_offset, objfile_name (objfile));
20963       m_currently_recording_lines = false;
20964       /* Note: m_currently_recording_lines is left as false until we see
20965          DW_LNE_end_sequence.  */
20966     }
20967 }
20968
20969 /* Subroutine of dwarf_decode_lines to simplify it.
20970    Process the line number information in LH.
20971    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20972    program in order to set included_p for every referenced header.  */
20973
20974 static void
20975 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20976                       const int decode_for_pst_p, CORE_ADDR lowpc)
20977 {
20978   const gdb_byte *line_ptr, *extended_end;
20979   const gdb_byte *line_end;
20980   unsigned int bytes_read, extended_len;
20981   unsigned char op_code, extended_op;
20982   CORE_ADDR baseaddr;
20983   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20984   bfd *abfd = objfile->obfd;
20985   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20986   /* True if we're recording line info (as opposed to building partial
20987      symtabs and just interested in finding include files mentioned by
20988      the line number program).  */
20989   bool record_lines_p = !decode_for_pst_p;
20990
20991   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20992
20993   line_ptr = lh->statement_program_start;
20994   line_end = lh->statement_program_end;
20995
20996   /* Read the statement sequences until there's nothing left.  */
20997   while (line_ptr < line_end)
20998     {
20999       /* The DWARF line number program state machine.  Reset the state
21000          machine at the start of each sequence.  */
21001       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
21002       bool end_sequence = false;
21003
21004       if (record_lines_p)
21005         {
21006           /* Start a subfile for the current file of the state
21007              machine.  */
21008           const file_entry *fe = state_machine.current_file ();
21009
21010           if (fe != NULL)
21011             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
21012         }
21013
21014       /* Decode the table.  */
21015       while (line_ptr < line_end && !end_sequence)
21016         {
21017           op_code = read_1_byte (abfd, line_ptr);
21018           line_ptr += 1;
21019
21020           if (op_code >= lh->opcode_base)
21021             {
21022               /* Special opcode.  */
21023               state_machine.handle_special_opcode (op_code);
21024             }
21025           else switch (op_code)
21026             {
21027             case DW_LNS_extended_op:
21028               extended_len = read_unsigned_leb128 (abfd, line_ptr,
21029                                                    &bytes_read);
21030               line_ptr += bytes_read;
21031               extended_end = line_ptr + extended_len;
21032               extended_op = read_1_byte (abfd, line_ptr);
21033               line_ptr += 1;
21034               switch (extended_op)
21035                 {
21036                 case DW_LNE_end_sequence:
21037                   state_machine.handle_end_sequence ();
21038                   end_sequence = true;
21039                   break;
21040                 case DW_LNE_set_address:
21041                   {
21042                     CORE_ADDR address
21043                       = read_address (abfd, line_ptr, cu, &bytes_read);
21044                     line_ptr += bytes_read;
21045
21046                     state_machine.check_line_address (cu, line_ptr,
21047                                                       lowpc - baseaddr, address);
21048                     state_machine.handle_set_address (baseaddr, address);
21049                   }
21050                   break;
21051                 case DW_LNE_define_file:
21052                   {
21053                     const char *cur_file;
21054                     unsigned int mod_time, length;
21055                     dir_index dindex;
21056
21057                     cur_file = read_direct_string (abfd, line_ptr,
21058                                                    &bytes_read);
21059                     line_ptr += bytes_read;
21060                     dindex = (dir_index)
21061                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21062                     line_ptr += bytes_read;
21063                     mod_time =
21064                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21065                     line_ptr += bytes_read;
21066                     length =
21067                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21068                     line_ptr += bytes_read;
21069                     lh->add_file_name (cur_file, dindex, mod_time, length);
21070                   }
21071                   break;
21072                 case DW_LNE_set_discriminator:
21073                   {
21074                     /* The discriminator is not interesting to the
21075                        debugger; just ignore it.  We still need to
21076                        check its value though:
21077                        if there are consecutive entries for the same
21078                        (non-prologue) line we want to coalesce them.
21079                        PR 17276.  */
21080                     unsigned int discr
21081                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21082                     line_ptr += bytes_read;
21083
21084                     state_machine.handle_set_discriminator (discr);
21085                   }
21086                   break;
21087                 default:
21088                   complaint (_("mangled .debug_line section"));
21089                   return;
21090                 }
21091               /* Make sure that we parsed the extended op correctly.  If e.g.
21092                  we expected a different address size than the producer used,
21093                  we may have read the wrong number of bytes.  */
21094               if (line_ptr != extended_end)
21095                 {
21096                   complaint (_("mangled .debug_line section"));
21097                   return;
21098                 }
21099               break;
21100             case DW_LNS_copy:
21101               state_machine.handle_copy ();
21102               break;
21103             case DW_LNS_advance_pc:
21104               {
21105                 CORE_ADDR adjust
21106                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21107                 line_ptr += bytes_read;
21108
21109                 state_machine.handle_advance_pc (adjust);
21110               }
21111               break;
21112             case DW_LNS_advance_line:
21113               {
21114                 int line_delta
21115                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21116                 line_ptr += bytes_read;
21117
21118                 state_machine.handle_advance_line (line_delta);
21119               }
21120               break;
21121             case DW_LNS_set_file:
21122               {
21123                 file_name_index file
21124                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21125                                                             &bytes_read);
21126                 line_ptr += bytes_read;
21127
21128                 state_machine.handle_set_file (file);
21129               }
21130               break;
21131             case DW_LNS_set_column:
21132               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21133               line_ptr += bytes_read;
21134               break;
21135             case DW_LNS_negate_stmt:
21136               state_machine.handle_negate_stmt ();
21137               break;
21138             case DW_LNS_set_basic_block:
21139               break;
21140             /* Add to the address register of the state machine the
21141                address increment value corresponding to special opcode
21142                255.  I.e., this value is scaled by the minimum
21143                instruction length since special opcode 255 would have
21144                scaled the increment.  */
21145             case DW_LNS_const_add_pc:
21146               state_machine.handle_const_add_pc ();
21147               break;
21148             case DW_LNS_fixed_advance_pc:
21149               {
21150                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21151                 line_ptr += 2;
21152
21153                 state_machine.handle_fixed_advance_pc (addr_adj);
21154               }
21155               break;
21156             default:
21157               {
21158                 /* Unknown standard opcode, ignore it.  */
21159                 int i;
21160
21161                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21162                   {
21163                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21164                     line_ptr += bytes_read;
21165                   }
21166               }
21167             }
21168         }
21169
21170       if (!end_sequence)
21171         dwarf2_debug_line_missing_end_sequence_complaint ();
21172
21173       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21174          in which case we still finish recording the last line).  */
21175       state_machine.record_line (true);
21176     }
21177 }
21178
21179 /* Decode the Line Number Program (LNP) for the given line_header
21180    structure and CU.  The actual information extracted and the type
21181    of structures created from the LNP depends on the value of PST.
21182
21183    1. If PST is NULL, then this procedure uses the data from the program
21184       to create all necessary symbol tables, and their linetables.
21185
21186    2. If PST is not NULL, this procedure reads the program to determine
21187       the list of files included by the unit represented by PST, and
21188       builds all the associated partial symbol tables.
21189
21190    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21191    It is used for relative paths in the line table.
21192    NOTE: When processing partial symtabs (pst != NULL),
21193    comp_dir == pst->dirname.
21194
21195    NOTE: It is important that psymtabs have the same file name (via strcmp)
21196    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21197    symtab we don't use it in the name of the psymtabs we create.
21198    E.g. expand_line_sal requires this when finding psymtabs to expand.
21199    A good testcase for this is mb-inline.exp.
21200
21201    LOWPC is the lowest address in CU (or 0 if not known).
21202
21203    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21204    for its PC<->lines mapping information.  Otherwise only the filename
21205    table is read in.  */
21206
21207 static void
21208 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21209                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21210                     CORE_ADDR lowpc, int decode_mapping)
21211 {
21212   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21213   const int decode_for_pst_p = (pst != NULL);
21214
21215   if (decode_mapping)
21216     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21217
21218   if (decode_for_pst_p)
21219     {
21220       int file_index;
21221
21222       /* Now that we're done scanning the Line Header Program, we can
21223          create the psymtab of each included file.  */
21224       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21225         if (lh->file_names[file_index].included_p == 1)
21226           {
21227             gdb::unique_xmalloc_ptr<char> name_holder;
21228             const char *include_name =
21229               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21230                                          &name_holder);
21231             if (include_name != NULL)
21232               dwarf2_create_include_psymtab (include_name, pst, objfile);
21233           }
21234     }
21235   else
21236     {
21237       /* Make sure a symtab is created for every file, even files
21238          which contain only variables (i.e. no code with associated
21239          line numbers).  */
21240       buildsym_compunit *builder = cu->get_builder ();
21241       struct compunit_symtab *cust = builder->get_compunit_symtab ();
21242       int i;
21243
21244       for (i = 0; i < lh->file_names.size (); i++)
21245         {
21246           file_entry &fe = lh->file_names[i];
21247
21248           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21249
21250           if (builder->get_current_subfile ()->symtab == NULL)
21251             {
21252               builder->get_current_subfile ()->symtab
21253                 = allocate_symtab (cust,
21254                                    builder->get_current_subfile ()->name);
21255             }
21256           fe.symtab = builder->get_current_subfile ()->symtab;
21257         }
21258     }
21259 }
21260
21261 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21262    DIRNAME the name of the source directory which contains FILENAME
21263    or NULL if not known.
21264    This routine tries to keep line numbers from identical absolute and
21265    relative file names in a common subfile.
21266
21267    Using the `list' example from the GDB testsuite, which resides in
21268    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21269    of /srcdir/list0.c yields the following debugging information for list0.c:
21270
21271    DW_AT_name:          /srcdir/list0.c
21272    DW_AT_comp_dir:      /compdir
21273    files.files[0].name: list0.h
21274    files.files[0].dir:  /srcdir
21275    files.files[1].name: list0.c
21276    files.files[1].dir:  /srcdir
21277
21278    The line number information for list0.c has to end up in a single
21279    subfile, so that `break /srcdir/list0.c:1' works as expected.
21280    start_subfile will ensure that this happens provided that we pass the
21281    concatenation of files.files[1].dir and files.files[1].name as the
21282    subfile's name.  */
21283
21284 static void
21285 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21286                       const char *dirname)
21287 {
21288   char *copy = NULL;
21289
21290   /* In order not to lose the line information directory,
21291      we concatenate it to the filename when it makes sense.
21292      Note that the Dwarf3 standard says (speaking of filenames in line
21293      information): ``The directory index is ignored for file names
21294      that represent full path names''.  Thus ignoring dirname in the
21295      `else' branch below isn't an issue.  */
21296
21297   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21298     {
21299       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21300       filename = copy;
21301     }
21302
21303   cu->get_builder ()->start_subfile (filename);
21304
21305   if (copy != NULL)
21306     xfree (copy);
21307 }
21308
21309 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21310    buildsym_compunit constructor.  */
21311
21312 struct compunit_symtab *
21313 dwarf2_cu::start_symtab (const char *name, const char *comp_dir,
21314                          CORE_ADDR low_pc)
21315 {
21316   gdb_assert (m_builder == nullptr);
21317
21318   m_builder.reset (new struct buildsym_compunit
21319                    (per_cu->dwarf2_per_objfile->objfile,
21320                     name, comp_dir, language, low_pc));
21321
21322   list_in_scope = get_builder ()->get_file_symbols ();
21323
21324   get_builder ()->record_debugformat ("DWARF 2");
21325   get_builder ()->record_producer (producer);
21326
21327   processing_has_namespace_info = false;
21328
21329   return get_builder ()->get_compunit_symtab ();
21330 }
21331
21332 static void
21333 var_decode_location (struct attribute *attr, struct symbol *sym,
21334                      struct dwarf2_cu *cu)
21335 {
21336   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21337   struct comp_unit_head *cu_header = &cu->header;
21338
21339   /* NOTE drow/2003-01-30: There used to be a comment and some special
21340      code here to turn a symbol with DW_AT_external and a
21341      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21342      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21343      with some versions of binutils) where shared libraries could have
21344      relocations against symbols in their debug information - the
21345      minimal symbol would have the right address, but the debug info
21346      would not.  It's no longer necessary, because we will explicitly
21347      apply relocations when we read in the debug information now.  */
21348
21349   /* A DW_AT_location attribute with no contents indicates that a
21350      variable has been optimized away.  */
21351   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21352     {
21353       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21354       return;
21355     }
21356
21357   /* Handle one degenerate form of location expression specially, to
21358      preserve GDB's previous behavior when section offsets are
21359      specified.  If this is just a DW_OP_addr, DW_OP_addrx, or
21360      DW_OP_GNU_addr_index then mark this symbol as LOC_STATIC.  */
21361
21362   if (attr_form_is_block (attr)
21363       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21364            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21365           || ((DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21366                || DW_BLOCK (attr)->data[0] == DW_OP_addrx)
21367               && (DW_BLOCK (attr)->size
21368                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21369     {
21370       unsigned int dummy;
21371
21372       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21373         SYMBOL_VALUE_ADDRESS (sym) =
21374           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21375       else
21376         SYMBOL_VALUE_ADDRESS (sym) =
21377           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21378       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21379       fixup_symbol_section (sym, objfile);
21380       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21381                                               SYMBOL_SECTION (sym));
21382       return;
21383     }
21384
21385   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21386      expression evaluator, and use LOC_COMPUTED only when necessary
21387      (i.e. when the value of a register or memory location is
21388      referenced, or a thread-local block, etc.).  Then again, it might
21389      not be worthwhile.  I'm assuming that it isn't unless performance
21390      or memory numbers show me otherwise.  */
21391
21392   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21393
21394   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21395     cu->has_loclist = true;
21396 }
21397
21398 /* Given a pointer to a DWARF information entry, figure out if we need
21399    to make a symbol table entry for it, and if so, create a new entry
21400    and return a pointer to it.
21401    If TYPE is NULL, determine symbol type from the die, otherwise
21402    used the passed type.
21403    If SPACE is not NULL, use it to hold the new symbol.  If it is
21404    NULL, allocate a new symbol on the objfile's obstack.  */
21405
21406 static struct symbol *
21407 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21408             struct symbol *space)
21409 {
21410   struct dwarf2_per_objfile *dwarf2_per_objfile
21411     = cu->per_cu->dwarf2_per_objfile;
21412   struct objfile *objfile = dwarf2_per_objfile->objfile;
21413   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21414   struct symbol *sym = NULL;
21415   const char *name;
21416   struct attribute *attr = NULL;
21417   struct attribute *attr2 = NULL;
21418   CORE_ADDR baseaddr;
21419   struct pending **list_to_add = NULL;
21420
21421   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21422
21423   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21424
21425   name = dwarf2_name (die, cu);
21426   if (name)
21427     {
21428       const char *linkagename;
21429       int suppress_add = 0;
21430
21431       if (space)
21432         sym = space;
21433       else
21434         sym = allocate_symbol (objfile);
21435       OBJSTAT (objfile, n_syms++);
21436
21437       /* Cache this symbol's name and the name's demangled form (if any).  */
21438       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21439       linkagename = dwarf2_physname (name, die, cu);
21440       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21441
21442       /* Fortran does not have mangling standard and the mangling does differ
21443          between gfortran, iFort etc.  */
21444       if (cu->language == language_fortran
21445           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21446         symbol_set_demangled_name (&(sym->ginfo),
21447                                    dwarf2_full_name (name, die, cu),
21448                                    NULL);
21449
21450       /* Default assumptions.
21451          Use the passed type or decode it from the die.  */
21452       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21453       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21454       if (type != NULL)
21455         SYMBOL_TYPE (sym) = type;
21456       else
21457         SYMBOL_TYPE (sym) = die_type (die, cu);
21458       attr = dwarf2_attr (die,
21459                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21460                           cu);
21461       if (attr)
21462         {
21463           SYMBOL_LINE (sym) = DW_UNSND (attr);
21464         }
21465
21466       attr = dwarf2_attr (die,
21467                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21468                           cu);
21469       if (attr)
21470         {
21471           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21472           struct file_entry *fe;
21473
21474           if (cu->line_header != NULL)
21475             fe = cu->line_header->file_name_at (file_index);
21476           else
21477             fe = NULL;
21478
21479           if (fe == NULL)
21480             complaint (_("file index out of range"));
21481           else
21482             symbol_set_symtab (sym, fe->symtab);
21483         }
21484
21485       switch (die->tag)
21486         {
21487         case DW_TAG_label:
21488           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21489           if (attr)
21490             {
21491               CORE_ADDR addr;
21492
21493               addr = attr_value_as_address (attr);
21494               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21495               SYMBOL_VALUE_ADDRESS (sym) = addr;
21496             }
21497           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21498           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21499           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21500           add_symbol_to_list (sym, cu->list_in_scope);
21501           break;
21502         case DW_TAG_subprogram:
21503           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21504              finish_block.  */
21505           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21506           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21507           if ((attr2 && (DW_UNSND (attr2) != 0))
21508               || cu->language == language_ada)
21509             {
21510               /* Subprograms marked external are stored as a global symbol.
21511                  Ada subprograms, whether marked external or not, are always
21512                  stored as a global symbol, because we want to be able to
21513                  access them globally.  For instance, we want to be able
21514                  to break on a nested subprogram without having to
21515                  specify the context.  */
21516               list_to_add = cu->get_builder ()->get_global_symbols ();
21517             }
21518           else
21519             {
21520               list_to_add = cu->list_in_scope;
21521             }
21522           break;
21523         case DW_TAG_inlined_subroutine:
21524           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21525              finish_block.  */
21526           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21527           SYMBOL_INLINED (sym) = 1;
21528           list_to_add = cu->list_in_scope;
21529           break;
21530         case DW_TAG_template_value_param:
21531           suppress_add = 1;
21532           /* Fall through.  */
21533         case DW_TAG_constant:
21534         case DW_TAG_variable:
21535         case DW_TAG_member:
21536           /* Compilation with minimal debug info may result in
21537              variables with missing type entries.  Change the
21538              misleading `void' type to something sensible.  */
21539           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21540             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21541
21542           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21543           /* In the case of DW_TAG_member, we should only be called for
21544              static const members.  */
21545           if (die->tag == DW_TAG_member)
21546             {
21547               /* dwarf2_add_field uses die_is_declaration,
21548                  so we do the same.  */
21549               gdb_assert (die_is_declaration (die, cu));
21550               gdb_assert (attr);
21551             }
21552           if (attr)
21553             {
21554               dwarf2_const_value (attr, sym, cu);
21555               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21556               if (!suppress_add)
21557                 {
21558                   if (attr2 && (DW_UNSND (attr2) != 0))
21559                     list_to_add = cu->get_builder ()->get_global_symbols ();
21560                   else
21561                     list_to_add = cu->list_in_scope;
21562                 }
21563               break;
21564             }
21565           attr = dwarf2_attr (die, DW_AT_location, cu);
21566           if (attr)
21567             {
21568               var_decode_location (attr, sym, cu);
21569               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21570
21571               /* Fortran explicitly imports any global symbols to the local
21572                  scope by DW_TAG_common_block.  */
21573               if (cu->language == language_fortran && die->parent
21574                   && die->parent->tag == DW_TAG_common_block)
21575                 attr2 = NULL;
21576
21577               if (SYMBOL_CLASS (sym) == LOC_STATIC
21578                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21579                   && !dwarf2_per_objfile->has_section_at_zero)
21580                 {
21581                   /* When a static variable is eliminated by the linker,
21582                      the corresponding debug information is not stripped
21583                      out, but the variable address is set to null;
21584                      do not add such variables into symbol table.  */
21585                 }
21586               else if (attr2 && (DW_UNSND (attr2) != 0))
21587                 {
21588                   /* Workaround gfortran PR debug/40040 - it uses
21589                      DW_AT_location for variables in -fPIC libraries which may
21590                      get overriden by other libraries/executable and get
21591                      a different address.  Resolve it by the minimal symbol
21592                      which may come from inferior's executable using copy
21593                      relocation.  Make this workaround only for gfortran as for
21594                      other compilers GDB cannot guess the minimal symbol
21595                      Fortran mangling kind.  */
21596                   if (cu->language == language_fortran && die->parent
21597                       && die->parent->tag == DW_TAG_module
21598                       && cu->producer
21599                       && startswith (cu->producer, "GNU Fortran"))
21600                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21601
21602                   /* A variable with DW_AT_external is never static,
21603                      but it may be block-scoped.  */
21604                   list_to_add
21605                     = ((cu->list_in_scope
21606                         == cu->get_builder ()->get_file_symbols ())
21607                        ? cu->get_builder ()->get_global_symbols ()
21608                        : cu->list_in_scope);
21609                 }
21610               else
21611                 list_to_add = cu->list_in_scope;
21612             }
21613           else
21614             {
21615               /* We do not know the address of this symbol.
21616                  If it is an external symbol and we have type information
21617                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21618                  The address of the variable will then be determined from
21619                  the minimal symbol table whenever the variable is
21620                  referenced.  */
21621               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21622
21623               /* Fortran explicitly imports any global symbols to the local
21624                  scope by DW_TAG_common_block.  */
21625               if (cu->language == language_fortran && die->parent
21626                   && die->parent->tag == DW_TAG_common_block)
21627                 {
21628                   /* SYMBOL_CLASS doesn't matter here because
21629                      read_common_block is going to reset it.  */
21630                   if (!suppress_add)
21631                     list_to_add = cu->list_in_scope;
21632                 }
21633               else if (attr2 && (DW_UNSND (attr2) != 0)
21634                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21635                 {
21636                   /* A variable with DW_AT_external is never static, but it
21637                      may be block-scoped.  */
21638                   list_to_add
21639                     = ((cu->list_in_scope
21640                         == cu->get_builder ()->get_file_symbols ())
21641                        ? cu->get_builder ()->get_global_symbols ()
21642                        : cu->list_in_scope);
21643
21644                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21645                 }
21646               else if (!die_is_declaration (die, cu))
21647                 {
21648                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21649                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21650                   if (!suppress_add)
21651                     list_to_add = cu->list_in_scope;
21652                 }
21653             }
21654           break;
21655         case DW_TAG_formal_parameter:
21656           {
21657             /* If we are inside a function, mark this as an argument.  If
21658                not, we might be looking at an argument to an inlined function
21659                when we do not have enough information to show inlined frames;
21660                pretend it's a local variable in that case so that the user can
21661                still see it.  */
21662             struct context_stack *curr
21663               = cu->get_builder ()->get_current_context_stack ();
21664             if (curr != nullptr && curr->name != nullptr)
21665               SYMBOL_IS_ARGUMENT (sym) = 1;
21666             attr = dwarf2_attr (die, DW_AT_location, cu);
21667             if (attr)
21668               {
21669                 var_decode_location (attr, sym, cu);
21670               }
21671             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21672             if (attr)
21673               {
21674                 dwarf2_const_value (attr, sym, cu);
21675               }
21676
21677             list_to_add = cu->list_in_scope;
21678           }
21679           break;
21680         case DW_TAG_unspecified_parameters:
21681           /* From varargs functions; gdb doesn't seem to have any
21682              interest in this information, so just ignore it for now.
21683              (FIXME?) */
21684           break;
21685         case DW_TAG_template_type_param:
21686           suppress_add = 1;
21687           /* Fall through.  */
21688         case DW_TAG_class_type:
21689         case DW_TAG_interface_type:
21690         case DW_TAG_structure_type:
21691         case DW_TAG_union_type:
21692         case DW_TAG_set_type:
21693         case DW_TAG_enumeration_type:
21694           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21695           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21696
21697           {
21698             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21699                really ever be static objects: otherwise, if you try
21700                to, say, break of a class's method and you're in a file
21701                which doesn't mention that class, it won't work unless
21702                the check for all static symbols in lookup_symbol_aux
21703                saves you.  See the OtherFileClass tests in
21704                gdb.c++/namespace.exp.  */
21705
21706             if (!suppress_add)
21707               {
21708                 buildsym_compunit *builder = cu->get_builder ();
21709                 list_to_add
21710                   = (cu->list_in_scope == builder->get_file_symbols ()
21711                      && cu->language == language_cplus
21712                      ? builder->get_global_symbols ()
21713                      : cu->list_in_scope);
21714
21715                 /* The semantics of C++ state that "struct foo {
21716                    ... }" also defines a typedef for "foo".  */
21717                 if (cu->language == language_cplus
21718                     || cu->language == language_ada
21719                     || cu->language == language_d
21720                     || cu->language == language_rust)
21721                   {
21722                     /* The symbol's name is already allocated along
21723                        with this objfile, so we don't need to
21724                        duplicate it for the type.  */
21725                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21726                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21727                   }
21728               }
21729           }
21730           break;
21731         case DW_TAG_typedef:
21732           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21733           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21734           list_to_add = cu->list_in_scope;
21735           break;
21736         case DW_TAG_base_type:
21737         case DW_TAG_subrange_type:
21738           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21739           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21740           list_to_add = cu->list_in_scope;
21741           break;
21742         case DW_TAG_enumerator:
21743           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21744           if (attr)
21745             {
21746               dwarf2_const_value (attr, sym, cu);
21747             }
21748           {
21749             /* NOTE: carlton/2003-11-10: See comment above in the
21750                DW_TAG_class_type, etc. block.  */
21751
21752             list_to_add
21753               = (cu->list_in_scope == cu->get_builder ()->get_file_symbols ()
21754                  && cu->language == language_cplus
21755                  ? cu->get_builder ()->get_global_symbols ()
21756                  : cu->list_in_scope);
21757           }
21758           break;
21759         case DW_TAG_imported_declaration:
21760         case DW_TAG_namespace:
21761           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21762           list_to_add = cu->get_builder ()->get_global_symbols ();
21763           break;
21764         case DW_TAG_module:
21765           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21766           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21767           list_to_add = cu->get_builder ()->get_global_symbols ();
21768           break;
21769         case DW_TAG_common_block:
21770           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21771           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21772           add_symbol_to_list (sym, cu->list_in_scope);
21773           break;
21774         default:
21775           /* Not a tag we recognize.  Hopefully we aren't processing
21776              trash data, but since we must specifically ignore things
21777              we don't recognize, there is nothing else we should do at
21778              this point.  */
21779           complaint (_("unsupported tag: '%s'"),
21780                      dwarf_tag_name (die->tag));
21781           break;
21782         }
21783
21784       if (suppress_add)
21785         {
21786           sym->hash_next = objfile->template_symbols;
21787           objfile->template_symbols = sym;
21788           list_to_add = NULL;
21789         }
21790
21791       if (list_to_add != NULL)
21792         add_symbol_to_list (sym, list_to_add);
21793
21794       /* For the benefit of old versions of GCC, check for anonymous
21795          namespaces based on the demangled name.  */
21796       if (!cu->processing_has_namespace_info
21797           && cu->language == language_cplus)
21798         cp_scan_for_anonymous_namespaces (cu->get_builder (), sym, objfile);
21799     }
21800   return (sym);
21801 }
21802
21803 /* Given an attr with a DW_FORM_dataN value in host byte order,
21804    zero-extend it as appropriate for the symbol's type.  The DWARF
21805    standard (v4) is not entirely clear about the meaning of using
21806    DW_FORM_dataN for a constant with a signed type, where the type is
21807    wider than the data.  The conclusion of a discussion on the DWARF
21808    list was that this is unspecified.  We choose to always zero-extend
21809    because that is the interpretation long in use by GCC.  */
21810
21811 static gdb_byte *
21812 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21813                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21814 {
21815   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21816   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21817                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21818   LONGEST l = DW_UNSND (attr);
21819
21820   if (bits < sizeof (*value) * 8)
21821     {
21822       l &= ((LONGEST) 1 << bits) - 1;
21823       *value = l;
21824     }
21825   else if (bits == sizeof (*value) * 8)
21826     *value = l;
21827   else
21828     {
21829       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21830       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21831       return bytes;
21832     }
21833
21834   return NULL;
21835 }
21836
21837 /* Read a constant value from an attribute.  Either set *VALUE, or if
21838    the value does not fit in *VALUE, set *BYTES - either already
21839    allocated on the objfile obstack, or newly allocated on OBSTACK,
21840    or, set *BATON, if we translated the constant to a location
21841    expression.  */
21842
21843 static void
21844 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21845                          const char *name, struct obstack *obstack,
21846                          struct dwarf2_cu *cu,
21847                          LONGEST *value, const gdb_byte **bytes,
21848                          struct dwarf2_locexpr_baton **baton)
21849 {
21850   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21851   struct comp_unit_head *cu_header = &cu->header;
21852   struct dwarf_block *blk;
21853   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21854                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21855
21856   *value = 0;
21857   *bytes = NULL;
21858   *baton = NULL;
21859
21860   switch (attr->form)
21861     {
21862     case DW_FORM_addr:
21863     case DW_FORM_addrx:
21864     case DW_FORM_GNU_addr_index:
21865       {
21866         gdb_byte *data;
21867
21868         if (TYPE_LENGTH (type) != cu_header->addr_size)
21869           dwarf2_const_value_length_mismatch_complaint (name,
21870                                                         cu_header->addr_size,
21871                                                         TYPE_LENGTH (type));
21872         /* Symbols of this form are reasonably rare, so we just
21873            piggyback on the existing location code rather than writing
21874            a new implementation of symbol_computed_ops.  */
21875         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21876         (*baton)->per_cu = cu->per_cu;
21877         gdb_assert ((*baton)->per_cu);
21878
21879         (*baton)->size = 2 + cu_header->addr_size;
21880         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21881         (*baton)->data = data;
21882
21883         data[0] = DW_OP_addr;
21884         store_unsigned_integer (&data[1], cu_header->addr_size,
21885                                 byte_order, DW_ADDR (attr));
21886         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21887       }
21888       break;
21889     case DW_FORM_string:
21890     case DW_FORM_strp:
21891     case DW_FORM_GNU_str_index:
21892     case DW_FORM_GNU_strp_alt:
21893       /* DW_STRING is already allocated on the objfile obstack, point
21894          directly to it.  */
21895       *bytes = (const gdb_byte *) DW_STRING (attr);
21896       break;
21897     case DW_FORM_block1:
21898     case DW_FORM_block2:
21899     case DW_FORM_block4:
21900     case DW_FORM_block:
21901     case DW_FORM_exprloc:
21902     case DW_FORM_data16:
21903       blk = DW_BLOCK (attr);
21904       if (TYPE_LENGTH (type) != blk->size)
21905         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21906                                                       TYPE_LENGTH (type));
21907       *bytes = blk->data;
21908       break;
21909
21910       /* The DW_AT_const_value attributes are supposed to carry the
21911          symbol's value "represented as it would be on the target
21912          architecture."  By the time we get here, it's already been
21913          converted to host endianness, so we just need to sign- or
21914          zero-extend it as appropriate.  */
21915     case DW_FORM_data1:
21916       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21917       break;
21918     case DW_FORM_data2:
21919       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21920       break;
21921     case DW_FORM_data4:
21922       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21923       break;
21924     case DW_FORM_data8:
21925       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21926       break;
21927
21928     case DW_FORM_sdata:
21929     case DW_FORM_implicit_const:
21930       *value = DW_SND (attr);
21931       break;
21932
21933     case DW_FORM_udata:
21934       *value = DW_UNSND (attr);
21935       break;
21936
21937     default:
21938       complaint (_("unsupported const value attribute form: '%s'"),
21939                  dwarf_form_name (attr->form));
21940       *value = 0;
21941       break;
21942     }
21943 }
21944
21945
21946 /* Copy constant value from an attribute to a symbol.  */
21947
21948 static void
21949 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21950                     struct dwarf2_cu *cu)
21951 {
21952   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21953   LONGEST value;
21954   const gdb_byte *bytes;
21955   struct dwarf2_locexpr_baton *baton;
21956
21957   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21958                            SYMBOL_PRINT_NAME (sym),
21959                            &objfile->objfile_obstack, cu,
21960                            &value, &bytes, &baton);
21961
21962   if (baton != NULL)
21963     {
21964       SYMBOL_LOCATION_BATON (sym) = baton;
21965       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21966     }
21967   else if (bytes != NULL)
21968      {
21969       SYMBOL_VALUE_BYTES (sym) = bytes;
21970       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21971     }
21972   else
21973     {
21974       SYMBOL_VALUE (sym) = value;
21975       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21976     }
21977 }
21978
21979 /* Return the type of the die in question using its DW_AT_type attribute.  */
21980
21981 static struct type *
21982 die_type (struct die_info *die, struct dwarf2_cu *cu)
21983 {
21984   struct attribute *type_attr;
21985
21986   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21987   if (!type_attr)
21988     {
21989       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21990       /* A missing DW_AT_type represents a void type.  */
21991       return objfile_type (objfile)->builtin_void;
21992     }
21993
21994   return lookup_die_type (die, type_attr, cu);
21995 }
21996
21997 /* True iff CU's producer generates GNAT Ada auxiliary information
21998    that allows to find parallel types through that information instead
21999    of having to do expensive parallel lookups by type name.  */
22000
22001 static int
22002 need_gnat_info (struct dwarf2_cu *cu)
22003 {
22004   /* Assume that the Ada compiler was GNAT, which always produces
22005      the auxiliary information.  */
22006   return (cu->language == language_ada);
22007 }
22008
22009 /* Return the auxiliary type of the die in question using its
22010    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
22011    attribute is not present.  */
22012
22013 static struct type *
22014 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
22015 {
22016   struct attribute *type_attr;
22017
22018   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
22019   if (!type_attr)
22020     return NULL;
22021
22022   return lookup_die_type (die, type_attr, cu);
22023 }
22024
22025 /* If DIE has a descriptive_type attribute, then set the TYPE's
22026    descriptive type accordingly.  */
22027
22028 static void
22029 set_descriptive_type (struct type *type, struct die_info *die,
22030                       struct dwarf2_cu *cu)
22031 {
22032   struct type *descriptive_type = die_descriptive_type (die, cu);
22033
22034   if (descriptive_type)
22035     {
22036       ALLOCATE_GNAT_AUX_TYPE (type);
22037       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
22038     }
22039 }
22040
22041 /* Return the containing type of the die in question using its
22042    DW_AT_containing_type attribute.  */
22043
22044 static struct type *
22045 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
22046 {
22047   struct attribute *type_attr;
22048   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22049
22050   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
22051   if (!type_attr)
22052     error (_("Dwarf Error: Problem turning containing type into gdb type "
22053              "[in module %s]"), objfile_name (objfile));
22054
22055   return lookup_die_type (die, type_attr, cu);
22056 }
22057
22058 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
22059
22060 static struct type *
22061 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
22062 {
22063   struct dwarf2_per_objfile *dwarf2_per_objfile
22064     = cu->per_cu->dwarf2_per_objfile;
22065   struct objfile *objfile = dwarf2_per_objfile->objfile;
22066   char *saved;
22067
22068   std::string message
22069     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
22070                      objfile_name (objfile),
22071                      sect_offset_str (cu->header.sect_off),
22072                      sect_offset_str (die->sect_off));
22073   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
22074                                   message.c_str (), message.length ());
22075
22076   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
22077 }
22078
22079 /* Look up the type of DIE in CU using its type attribute ATTR.
22080    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
22081    DW_AT_containing_type.
22082    If there is no type substitute an error marker.  */
22083
22084 static struct type *
22085 lookup_die_type (struct die_info *die, const struct attribute *attr,
22086                  struct dwarf2_cu *cu)
22087 {
22088   struct dwarf2_per_objfile *dwarf2_per_objfile
22089     = cu->per_cu->dwarf2_per_objfile;
22090   struct objfile *objfile = dwarf2_per_objfile->objfile;
22091   struct type *this_type;
22092
22093   gdb_assert (attr->name == DW_AT_type
22094               || attr->name == DW_AT_GNAT_descriptive_type
22095               || attr->name == DW_AT_containing_type);
22096
22097   /* First see if we have it cached.  */
22098
22099   if (attr->form == DW_FORM_GNU_ref_alt)
22100     {
22101       struct dwarf2_per_cu_data *per_cu;
22102       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22103
22104       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22105                                                  dwarf2_per_objfile);
22106       this_type = get_die_type_at_offset (sect_off, per_cu);
22107     }
22108   else if (attr_form_is_ref (attr))
22109     {
22110       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22111
22112       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22113     }
22114   else if (attr->form == DW_FORM_ref_sig8)
22115     {
22116       ULONGEST signature = DW_SIGNATURE (attr);
22117
22118       return get_signatured_type (die, signature, cu);
22119     }
22120   else
22121     {
22122       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22123                    " at %s [in module %s]"),
22124                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22125                  objfile_name (objfile));
22126       return build_error_marker_type (cu, die);
22127     }
22128
22129   /* If not cached we need to read it in.  */
22130
22131   if (this_type == NULL)
22132     {
22133       struct die_info *type_die = NULL;
22134       struct dwarf2_cu *type_cu = cu;
22135
22136       if (attr_form_is_ref (attr))
22137         type_die = follow_die_ref (die, attr, &type_cu);
22138       if (type_die == NULL)
22139         return build_error_marker_type (cu, die);
22140       /* If we find the type now, it's probably because the type came
22141          from an inter-CU reference and the type's CU got expanded before
22142          ours.  */
22143       this_type = read_type_die (type_die, type_cu);
22144     }
22145
22146   /* If we still don't have a type use an error marker.  */
22147
22148   if (this_type == NULL)
22149     return build_error_marker_type (cu, die);
22150
22151   return this_type;
22152 }
22153
22154 /* Return the type in DIE, CU.
22155    Returns NULL for invalid types.
22156
22157    This first does a lookup in die_type_hash,
22158    and only reads the die in if necessary.
22159
22160    NOTE: This can be called when reading in partial or full symbols.  */
22161
22162 static struct type *
22163 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22164 {
22165   struct type *this_type;
22166
22167   this_type = get_die_type (die, cu);
22168   if (this_type)
22169     return this_type;
22170
22171   return read_type_die_1 (die, cu);
22172 }
22173
22174 /* Read the type in DIE, CU.
22175    Returns NULL for invalid types.  */
22176
22177 static struct type *
22178 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22179 {
22180   struct type *this_type = NULL;
22181
22182   switch (die->tag)
22183     {
22184     case DW_TAG_class_type:
22185     case DW_TAG_interface_type:
22186     case DW_TAG_structure_type:
22187     case DW_TAG_union_type:
22188       this_type = read_structure_type (die, cu);
22189       break;
22190     case DW_TAG_enumeration_type:
22191       this_type = read_enumeration_type (die, cu);
22192       break;
22193     case DW_TAG_subprogram:
22194     case DW_TAG_subroutine_type:
22195     case DW_TAG_inlined_subroutine:
22196       this_type = read_subroutine_type (die, cu);
22197       break;
22198     case DW_TAG_array_type:
22199       this_type = read_array_type (die, cu);
22200       break;
22201     case DW_TAG_set_type:
22202       this_type = read_set_type (die, cu);
22203       break;
22204     case DW_TAG_pointer_type:
22205       this_type = read_tag_pointer_type (die, cu);
22206       break;
22207     case DW_TAG_ptr_to_member_type:
22208       this_type = read_tag_ptr_to_member_type (die, cu);
22209       break;
22210     case DW_TAG_reference_type:
22211       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22212       break;
22213     case DW_TAG_rvalue_reference_type:
22214       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22215       break;
22216     case DW_TAG_const_type:
22217       this_type = read_tag_const_type (die, cu);
22218       break;
22219     case DW_TAG_volatile_type:
22220       this_type = read_tag_volatile_type (die, cu);
22221       break;
22222     case DW_TAG_restrict_type:
22223       this_type = read_tag_restrict_type (die, cu);
22224       break;
22225     case DW_TAG_string_type:
22226       this_type = read_tag_string_type (die, cu);
22227       break;
22228     case DW_TAG_typedef:
22229       this_type = read_typedef (die, cu);
22230       break;
22231     case DW_TAG_subrange_type:
22232       this_type = read_subrange_type (die, cu);
22233       break;
22234     case DW_TAG_base_type:
22235       this_type = read_base_type (die, cu);
22236       break;
22237     case DW_TAG_unspecified_type:
22238       this_type = read_unspecified_type (die, cu);
22239       break;
22240     case DW_TAG_namespace:
22241       this_type = read_namespace_type (die, cu);
22242       break;
22243     case DW_TAG_module:
22244       this_type = read_module_type (die, cu);
22245       break;
22246     case DW_TAG_atomic_type:
22247       this_type = read_tag_atomic_type (die, cu);
22248       break;
22249     default:
22250       complaint (_("unexpected tag in read_type_die: '%s'"),
22251                  dwarf_tag_name (die->tag));
22252       break;
22253     }
22254
22255   return this_type;
22256 }
22257
22258 /* See if we can figure out if the class lives in a namespace.  We do
22259    this by looking for a member function; its demangled name will
22260    contain namespace info, if there is any.
22261    Return the computed name or NULL.
22262    Space for the result is allocated on the objfile's obstack.
22263    This is the full-die version of guess_partial_die_structure_name.
22264    In this case we know DIE has no useful parent.  */
22265
22266 static char *
22267 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22268 {
22269   struct die_info *spec_die;
22270   struct dwarf2_cu *spec_cu;
22271   struct die_info *child;
22272   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22273
22274   spec_cu = cu;
22275   spec_die = die_specification (die, &spec_cu);
22276   if (spec_die != NULL)
22277     {
22278       die = spec_die;
22279       cu = spec_cu;
22280     }
22281
22282   for (child = die->child;
22283        child != NULL;
22284        child = child->sibling)
22285     {
22286       if (child->tag == DW_TAG_subprogram)
22287         {
22288           const char *linkage_name = dw2_linkage_name (child, cu);
22289
22290           if (linkage_name != NULL)
22291             {
22292               char *actual_name
22293                 = language_class_name_from_physname (cu->language_defn,
22294                                                      linkage_name);
22295               char *name = NULL;
22296
22297               if (actual_name != NULL)
22298                 {
22299                   const char *die_name = dwarf2_name (die, cu);
22300
22301                   if (die_name != NULL
22302                       && strcmp (die_name, actual_name) != 0)
22303                     {
22304                       /* Strip off the class name from the full name.
22305                          We want the prefix.  */
22306                       int die_name_len = strlen (die_name);
22307                       int actual_name_len = strlen (actual_name);
22308
22309                       /* Test for '::' as a sanity check.  */
22310                       if (actual_name_len > die_name_len + 2
22311                           && actual_name[actual_name_len
22312                                          - die_name_len - 1] == ':')
22313                         name = (char *) obstack_copy0 (
22314                           &objfile->per_bfd->storage_obstack,
22315                           actual_name, actual_name_len - die_name_len - 2);
22316                     }
22317                 }
22318               xfree (actual_name);
22319               return name;
22320             }
22321         }
22322     }
22323
22324   return NULL;
22325 }
22326
22327 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22328    prefix part in such case.  See
22329    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22330
22331 static const char *
22332 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22333 {
22334   struct attribute *attr;
22335   const char *base;
22336
22337   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22338       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22339     return NULL;
22340
22341   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22342     return NULL;
22343
22344   attr = dw2_linkage_name_attr (die, cu);
22345   if (attr == NULL || DW_STRING (attr) == NULL)
22346     return NULL;
22347
22348   /* dwarf2_name had to be already called.  */
22349   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22350
22351   /* Strip the base name, keep any leading namespaces/classes.  */
22352   base = strrchr (DW_STRING (attr), ':');
22353   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22354     return "";
22355
22356   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22357   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22358                                  DW_STRING (attr),
22359                                  &base[-1] - DW_STRING (attr));
22360 }
22361
22362 /* Return the name of the namespace/class that DIE is defined within,
22363    or "" if we can't tell.  The caller should not xfree the result.
22364
22365    For example, if we're within the method foo() in the following
22366    code:
22367
22368    namespace N {
22369      class C {
22370        void foo () {
22371        }
22372      };
22373    }
22374
22375    then determine_prefix on foo's die will return "N::C".  */
22376
22377 static const char *
22378 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22379 {
22380   struct dwarf2_per_objfile *dwarf2_per_objfile
22381     = cu->per_cu->dwarf2_per_objfile;
22382   struct die_info *parent, *spec_die;
22383   struct dwarf2_cu *spec_cu;
22384   struct type *parent_type;
22385   const char *retval;
22386
22387   if (cu->language != language_cplus
22388       && cu->language != language_fortran && cu->language != language_d
22389       && cu->language != language_rust)
22390     return "";
22391
22392   retval = anonymous_struct_prefix (die, cu);
22393   if (retval)
22394     return retval;
22395
22396   /* We have to be careful in the presence of DW_AT_specification.
22397      For example, with GCC 3.4, given the code
22398
22399      namespace N {
22400        void foo() {
22401          // Definition of N::foo.
22402        }
22403      }
22404
22405      then we'll have a tree of DIEs like this:
22406
22407      1: DW_TAG_compile_unit
22408        2: DW_TAG_namespace        // N
22409          3: DW_TAG_subprogram     // declaration of N::foo
22410        4: DW_TAG_subprogram       // definition of N::foo
22411             DW_AT_specification   // refers to die #3
22412
22413      Thus, when processing die #4, we have to pretend that we're in
22414      the context of its DW_AT_specification, namely the contex of die
22415      #3.  */
22416   spec_cu = cu;
22417   spec_die = die_specification (die, &spec_cu);
22418   if (spec_die == NULL)
22419     parent = die->parent;
22420   else
22421     {
22422       parent = spec_die->parent;
22423       cu = spec_cu;
22424     }
22425
22426   if (parent == NULL)
22427     return "";
22428   else if (parent->building_fullname)
22429     {
22430       const char *name;
22431       const char *parent_name;
22432
22433       /* It has been seen on RealView 2.2 built binaries,
22434          DW_TAG_template_type_param types actually _defined_ as
22435          children of the parent class:
22436
22437          enum E {};
22438          template class <class Enum> Class{};
22439          Class<enum E> class_e;
22440
22441          1: DW_TAG_class_type (Class)
22442            2: DW_TAG_enumeration_type (E)
22443              3: DW_TAG_enumerator (enum1:0)
22444              3: DW_TAG_enumerator (enum2:1)
22445              ...
22446            2: DW_TAG_template_type_param
22447               DW_AT_type  DW_FORM_ref_udata (E)
22448
22449          Besides being broken debug info, it can put GDB into an
22450          infinite loop.  Consider:
22451
22452          When we're building the full name for Class<E>, we'll start
22453          at Class, and go look over its template type parameters,
22454          finding E.  We'll then try to build the full name of E, and
22455          reach here.  We're now trying to build the full name of E,
22456          and look over the parent DIE for containing scope.  In the
22457          broken case, if we followed the parent DIE of E, we'd again
22458          find Class, and once again go look at its template type
22459          arguments, etc., etc.  Simply don't consider such parent die
22460          as source-level parent of this die (it can't be, the language
22461          doesn't allow it), and break the loop here.  */
22462       name = dwarf2_name (die, cu);
22463       parent_name = dwarf2_name (parent, cu);
22464       complaint (_("template param type '%s' defined within parent '%s'"),
22465                  name ? name : "<unknown>",
22466                  parent_name ? parent_name : "<unknown>");
22467       return "";
22468     }
22469   else
22470     switch (parent->tag)
22471       {
22472       case DW_TAG_namespace:
22473         parent_type = read_type_die (parent, cu);
22474         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22475            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22476            Work around this problem here.  */
22477         if (cu->language == language_cplus
22478             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22479           return "";
22480         /* We give a name to even anonymous namespaces.  */
22481         return TYPE_NAME (parent_type);
22482       case DW_TAG_class_type:
22483       case DW_TAG_interface_type:
22484       case DW_TAG_structure_type:
22485       case DW_TAG_union_type:
22486       case DW_TAG_module:
22487         parent_type = read_type_die (parent, cu);
22488         if (TYPE_NAME (parent_type) != NULL)
22489           return TYPE_NAME (parent_type);
22490         else
22491           /* An anonymous structure is only allowed non-static data
22492              members; no typedefs, no member functions, et cetera.
22493              So it does not need a prefix.  */
22494           return "";
22495       case DW_TAG_compile_unit:
22496       case DW_TAG_partial_unit:
22497         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22498         if (cu->language == language_cplus
22499             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22500             && die->child != NULL
22501             && (die->tag == DW_TAG_class_type
22502                 || die->tag == DW_TAG_structure_type
22503                 || die->tag == DW_TAG_union_type))
22504           {
22505             char *name = guess_full_die_structure_name (die, cu);
22506             if (name != NULL)
22507               return name;
22508           }
22509         return "";
22510       case DW_TAG_enumeration_type:
22511         parent_type = read_type_die (parent, cu);
22512         if (TYPE_DECLARED_CLASS (parent_type))
22513           {
22514             if (TYPE_NAME (parent_type) != NULL)
22515               return TYPE_NAME (parent_type);
22516             return "";
22517           }
22518         /* Fall through.  */
22519       default:
22520         return determine_prefix (parent, cu);
22521       }
22522 }
22523
22524 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22525    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22526    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22527    an obconcat, otherwise allocate storage for the result.  The CU argument is
22528    used to determine the language and hence, the appropriate separator.  */
22529
22530 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22531
22532 static char *
22533 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22534                  int physname, struct dwarf2_cu *cu)
22535 {
22536   const char *lead = "";
22537   const char *sep;
22538
22539   if (suffix == NULL || suffix[0] == '\0'
22540       || prefix == NULL || prefix[0] == '\0')
22541     sep = "";
22542   else if (cu->language == language_d)
22543     {
22544       /* For D, the 'main' function could be defined in any module, but it
22545          should never be prefixed.  */
22546       if (strcmp (suffix, "D main") == 0)
22547         {
22548           prefix = "";
22549           sep = "";
22550         }
22551       else
22552         sep = ".";
22553     }
22554   else if (cu->language == language_fortran && physname)
22555     {
22556       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22557          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22558
22559       lead = "__";
22560       sep = "_MOD_";
22561     }
22562   else
22563     sep = "::";
22564
22565   if (prefix == NULL)
22566     prefix = "";
22567   if (suffix == NULL)
22568     suffix = "";
22569
22570   if (obs == NULL)
22571     {
22572       char *retval
22573         = ((char *)
22574            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22575
22576       strcpy (retval, lead);
22577       strcat (retval, prefix);
22578       strcat (retval, sep);
22579       strcat (retval, suffix);
22580       return retval;
22581     }
22582   else
22583     {
22584       /* We have an obstack.  */
22585       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22586     }
22587 }
22588
22589 /* Return sibling of die, NULL if no sibling.  */
22590
22591 static struct die_info *
22592 sibling_die (struct die_info *die)
22593 {
22594   return die->sibling;
22595 }
22596
22597 /* Get name of a die, return NULL if not found.  */
22598
22599 static const char *
22600 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22601                           struct obstack *obstack)
22602 {
22603   if (name && cu->language == language_cplus)
22604     {
22605       std::string canon_name = cp_canonicalize_string (name);
22606
22607       if (!canon_name.empty ())
22608         {
22609           if (canon_name != name)
22610             name = (const char *) obstack_copy0 (obstack,
22611                                                  canon_name.c_str (),
22612                                                  canon_name.length ());
22613         }
22614     }
22615
22616   return name;
22617 }
22618
22619 /* Get name of a die, return NULL if not found.
22620    Anonymous namespaces are converted to their magic string.  */
22621
22622 static const char *
22623 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22624 {
22625   struct attribute *attr;
22626   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22627
22628   attr = dwarf2_attr (die, DW_AT_name, cu);
22629   if ((!attr || !DW_STRING (attr))
22630       && die->tag != DW_TAG_namespace
22631       && die->tag != DW_TAG_class_type
22632       && die->tag != DW_TAG_interface_type
22633       && die->tag != DW_TAG_structure_type
22634       && die->tag != DW_TAG_union_type)
22635     return NULL;
22636
22637   switch (die->tag)
22638     {
22639     case DW_TAG_compile_unit:
22640     case DW_TAG_partial_unit:
22641       /* Compilation units have a DW_AT_name that is a filename, not
22642          a source language identifier.  */
22643     case DW_TAG_enumeration_type:
22644     case DW_TAG_enumerator:
22645       /* These tags always have simple identifiers already; no need
22646          to canonicalize them.  */
22647       return DW_STRING (attr);
22648
22649     case DW_TAG_namespace:
22650       if (attr != NULL && DW_STRING (attr) != NULL)
22651         return DW_STRING (attr);
22652       return CP_ANONYMOUS_NAMESPACE_STR;
22653
22654     case DW_TAG_class_type:
22655     case DW_TAG_interface_type:
22656     case DW_TAG_structure_type:
22657     case DW_TAG_union_type:
22658       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22659          structures or unions.  These were of the form "._%d" in GCC 4.1,
22660          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22661          and GCC 4.4.  We work around this problem by ignoring these.  */
22662       if (attr && DW_STRING (attr)
22663           && (startswith (DW_STRING (attr), "._")
22664               || startswith (DW_STRING (attr), "<anonymous")))
22665         return NULL;
22666
22667       /* GCC might emit a nameless typedef that has a linkage name.  See
22668          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22669       if (!attr || DW_STRING (attr) == NULL)
22670         {
22671           char *demangled = NULL;
22672
22673           attr = dw2_linkage_name_attr (die, cu);
22674           if (attr == NULL || DW_STRING (attr) == NULL)
22675             return NULL;
22676
22677           /* Avoid demangling DW_STRING (attr) the second time on a second
22678              call for the same DIE.  */
22679           if (!DW_STRING_IS_CANONICAL (attr))
22680             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22681
22682           if (demangled)
22683             {
22684               const char *base;
22685
22686               /* FIXME: we already did this for the partial symbol... */
22687               DW_STRING (attr)
22688                 = ((const char *)
22689                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22690                                   demangled, strlen (demangled)));
22691               DW_STRING_IS_CANONICAL (attr) = 1;
22692               xfree (demangled);
22693
22694               /* Strip any leading namespaces/classes, keep only the base name.
22695                  DW_AT_name for named DIEs does not contain the prefixes.  */
22696               base = strrchr (DW_STRING (attr), ':');
22697               if (base && base > DW_STRING (attr) && base[-1] == ':')
22698                 return &base[1];
22699               else
22700                 return DW_STRING (attr);
22701             }
22702         }
22703       break;
22704
22705     default:
22706       break;
22707     }
22708
22709   if (!DW_STRING_IS_CANONICAL (attr))
22710     {
22711       DW_STRING (attr)
22712         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22713                                     &objfile->per_bfd->storage_obstack);
22714       DW_STRING_IS_CANONICAL (attr) = 1;
22715     }
22716   return DW_STRING (attr);
22717 }
22718
22719 /* Return the die that this die in an extension of, or NULL if there
22720    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22721    containing the return value on output.  */
22722
22723 static struct die_info *
22724 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22725 {
22726   struct attribute *attr;
22727
22728   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22729   if (attr == NULL)
22730     return NULL;
22731
22732   return follow_die_ref (die, attr, ext_cu);
22733 }
22734
22735 /* Convert a DIE tag into its string name.  */
22736
22737 static const char *
22738 dwarf_tag_name (unsigned tag)
22739 {
22740   const char *name = get_DW_TAG_name (tag);
22741
22742   if (name == NULL)
22743     return "DW_TAG_<unknown>";
22744
22745   return name;
22746 }
22747
22748 /* Convert a DWARF attribute code into its string name.  */
22749
22750 static const char *
22751 dwarf_attr_name (unsigned attr)
22752 {
22753   const char *name;
22754
22755 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22756   if (attr == DW_AT_MIPS_fde)
22757     return "DW_AT_MIPS_fde";
22758 #else
22759   if (attr == DW_AT_HP_block_index)
22760     return "DW_AT_HP_block_index";
22761 #endif
22762
22763   name = get_DW_AT_name (attr);
22764
22765   if (name == NULL)
22766     return "DW_AT_<unknown>";
22767
22768   return name;
22769 }
22770
22771 /* Convert a DWARF value form code into its string name.  */
22772
22773 static const char *
22774 dwarf_form_name (unsigned form)
22775 {
22776   const char *name = get_DW_FORM_name (form);
22777
22778   if (name == NULL)
22779     return "DW_FORM_<unknown>";
22780
22781   return name;
22782 }
22783
22784 static const char *
22785 dwarf_bool_name (unsigned mybool)
22786 {
22787   if (mybool)
22788     return "TRUE";
22789   else
22790     return "FALSE";
22791 }
22792
22793 /* Convert a DWARF type code into its string name.  */
22794
22795 static const char *
22796 dwarf_type_encoding_name (unsigned enc)
22797 {
22798   const char *name = get_DW_ATE_name (enc);
22799
22800   if (name == NULL)
22801     return "DW_ATE_<unknown>";
22802
22803   return name;
22804 }
22805
22806 static void
22807 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22808 {
22809   unsigned int i;
22810
22811   print_spaces (indent, f);
22812   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22813                       dwarf_tag_name (die->tag), die->abbrev,
22814                       sect_offset_str (die->sect_off));
22815
22816   if (die->parent != NULL)
22817     {
22818       print_spaces (indent, f);
22819       fprintf_unfiltered (f, "  parent at offset: %s\n",
22820                           sect_offset_str (die->parent->sect_off));
22821     }
22822
22823   print_spaces (indent, f);
22824   fprintf_unfiltered (f, "  has children: %s\n",
22825            dwarf_bool_name (die->child != NULL));
22826
22827   print_spaces (indent, f);
22828   fprintf_unfiltered (f, "  attributes:\n");
22829
22830   for (i = 0; i < die->num_attrs; ++i)
22831     {
22832       print_spaces (indent, f);
22833       fprintf_unfiltered (f, "    %s (%s) ",
22834                dwarf_attr_name (die->attrs[i].name),
22835                dwarf_form_name (die->attrs[i].form));
22836
22837       switch (die->attrs[i].form)
22838         {
22839         case DW_FORM_addr:
22840         case DW_FORM_addrx:
22841         case DW_FORM_GNU_addr_index:
22842           fprintf_unfiltered (f, "address: ");
22843           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22844           break;
22845         case DW_FORM_block2:
22846         case DW_FORM_block4:
22847         case DW_FORM_block:
22848         case DW_FORM_block1:
22849           fprintf_unfiltered (f, "block: size %s",
22850                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22851           break;
22852         case DW_FORM_exprloc:
22853           fprintf_unfiltered (f, "expression: size %s",
22854                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22855           break;
22856         case DW_FORM_data16:
22857           fprintf_unfiltered (f, "constant of 16 bytes");
22858           break;
22859         case DW_FORM_ref_addr:
22860           fprintf_unfiltered (f, "ref address: ");
22861           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22862           break;
22863         case DW_FORM_GNU_ref_alt:
22864           fprintf_unfiltered (f, "alt ref address: ");
22865           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22866           break;
22867         case DW_FORM_ref1:
22868         case DW_FORM_ref2:
22869         case DW_FORM_ref4:
22870         case DW_FORM_ref8:
22871         case DW_FORM_ref_udata:
22872           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22873                               (long) (DW_UNSND (&die->attrs[i])));
22874           break;
22875         case DW_FORM_data1:
22876         case DW_FORM_data2:
22877         case DW_FORM_data4:
22878         case DW_FORM_data8:
22879         case DW_FORM_udata:
22880         case DW_FORM_sdata:
22881           fprintf_unfiltered (f, "constant: %s",
22882                               pulongest (DW_UNSND (&die->attrs[i])));
22883           break;
22884         case DW_FORM_sec_offset:
22885           fprintf_unfiltered (f, "section offset: %s",
22886                               pulongest (DW_UNSND (&die->attrs[i])));
22887           break;
22888         case DW_FORM_ref_sig8:
22889           fprintf_unfiltered (f, "signature: %s",
22890                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22891           break;
22892         case DW_FORM_string:
22893         case DW_FORM_strp:
22894         case DW_FORM_line_strp:
22895         case DW_FORM_GNU_str_index:
22896         case DW_FORM_GNU_strp_alt:
22897           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22898                    DW_STRING (&die->attrs[i])
22899                    ? DW_STRING (&die->attrs[i]) : "",
22900                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22901           break;
22902         case DW_FORM_flag:
22903           if (DW_UNSND (&die->attrs[i]))
22904             fprintf_unfiltered (f, "flag: TRUE");
22905           else
22906             fprintf_unfiltered (f, "flag: FALSE");
22907           break;
22908         case DW_FORM_flag_present:
22909           fprintf_unfiltered (f, "flag: TRUE");
22910           break;
22911         case DW_FORM_indirect:
22912           /* The reader will have reduced the indirect form to
22913              the "base form" so this form should not occur.  */
22914           fprintf_unfiltered (f, 
22915                               "unexpected attribute form: DW_FORM_indirect");
22916           break;
22917         case DW_FORM_implicit_const:
22918           fprintf_unfiltered (f, "constant: %s",
22919                               plongest (DW_SND (&die->attrs[i])));
22920           break;
22921         default:
22922           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22923                    die->attrs[i].form);
22924           break;
22925         }
22926       fprintf_unfiltered (f, "\n");
22927     }
22928 }
22929
22930 static void
22931 dump_die_for_error (struct die_info *die)
22932 {
22933   dump_die_shallow (gdb_stderr, 0, die);
22934 }
22935
22936 static void
22937 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22938 {
22939   int indent = level * 4;
22940
22941   gdb_assert (die != NULL);
22942
22943   if (level >= max_level)
22944     return;
22945
22946   dump_die_shallow (f, indent, die);
22947
22948   if (die->child != NULL)
22949     {
22950       print_spaces (indent, f);
22951       fprintf_unfiltered (f, "  Children:");
22952       if (level + 1 < max_level)
22953         {
22954           fprintf_unfiltered (f, "\n");
22955           dump_die_1 (f, level + 1, max_level, die->child);
22956         }
22957       else
22958         {
22959           fprintf_unfiltered (f,
22960                               " [not printed, max nesting level reached]\n");
22961         }
22962     }
22963
22964   if (die->sibling != NULL && level > 0)
22965     {
22966       dump_die_1 (f, level, max_level, die->sibling);
22967     }
22968 }
22969
22970 /* This is called from the pdie macro in gdbinit.in.
22971    It's not static so gcc will keep a copy callable from gdb.  */
22972
22973 void
22974 dump_die (struct die_info *die, int max_level)
22975 {
22976   dump_die_1 (gdb_stdlog, 0, max_level, die);
22977 }
22978
22979 static void
22980 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22981 {
22982   void **slot;
22983
22984   slot = htab_find_slot_with_hash (cu->die_hash, die,
22985                                    to_underlying (die->sect_off),
22986                                    INSERT);
22987
22988   *slot = die;
22989 }
22990
22991 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22992    required kind.  */
22993
22994 static sect_offset
22995 dwarf2_get_ref_die_offset (const struct attribute *attr)
22996 {
22997   if (attr_form_is_ref (attr))
22998     return (sect_offset) DW_UNSND (attr);
22999
23000   complaint (_("unsupported die ref attribute form: '%s'"),
23001              dwarf_form_name (attr->form));
23002   return {};
23003 }
23004
23005 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
23006  * the value held by the attribute is not constant.  */
23007
23008 static LONGEST
23009 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
23010 {
23011   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
23012     return DW_SND (attr);
23013   else if (attr->form == DW_FORM_udata
23014            || attr->form == DW_FORM_data1
23015            || attr->form == DW_FORM_data2
23016            || attr->form == DW_FORM_data4
23017            || attr->form == DW_FORM_data8)
23018     return DW_UNSND (attr);
23019   else
23020     {
23021       /* For DW_FORM_data16 see attr_form_is_constant.  */
23022       complaint (_("Attribute value is not a constant (%s)"),
23023                  dwarf_form_name (attr->form));
23024       return default_value;
23025     }
23026 }
23027
23028 /* Follow reference or signature attribute ATTR of SRC_DIE.
23029    On entry *REF_CU is the CU of SRC_DIE.
23030    On exit *REF_CU is the CU of the result.  */
23031
23032 static struct die_info *
23033 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
23034                        struct dwarf2_cu **ref_cu)
23035 {
23036   struct die_info *die;
23037
23038   if (attr_form_is_ref (attr))
23039     die = follow_die_ref (src_die, attr, ref_cu);
23040   else if (attr->form == DW_FORM_ref_sig8)
23041     die = follow_die_sig (src_die, attr, ref_cu);
23042   else
23043     {
23044       dump_die_for_error (src_die);
23045       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
23046              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23047     }
23048
23049   return die;
23050 }
23051
23052 /* Follow reference OFFSET.
23053    On entry *REF_CU is the CU of the source die referencing OFFSET.
23054    On exit *REF_CU is the CU of the result.
23055    Returns NULL if OFFSET is invalid.  */
23056
23057 static struct die_info *
23058 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
23059                    struct dwarf2_cu **ref_cu)
23060 {
23061   struct die_info temp_die;
23062   struct dwarf2_cu *target_cu, *cu = *ref_cu;
23063   struct dwarf2_per_objfile *dwarf2_per_objfile
23064     = cu->per_cu->dwarf2_per_objfile;
23065
23066   gdb_assert (cu->per_cu != NULL);
23067
23068   target_cu = cu;
23069
23070   if (cu->per_cu->is_debug_types)
23071     {
23072       /* .debug_types CUs cannot reference anything outside their CU.
23073          If they need to, they have to reference a signatured type via
23074          DW_FORM_ref_sig8.  */
23075       if (!offset_in_cu_p (&cu->header, sect_off))
23076         return NULL;
23077     }
23078   else if (offset_in_dwz != cu->per_cu->is_dwz
23079            || !offset_in_cu_p (&cu->header, sect_off))
23080     {
23081       struct dwarf2_per_cu_data *per_cu;
23082
23083       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
23084                                                  dwarf2_per_objfile);
23085
23086       /* If necessary, add it to the queue and load its DIEs.  */
23087       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
23088         load_full_comp_unit (per_cu, false, cu->language);
23089
23090       target_cu = per_cu->cu;
23091     }
23092   else if (cu->dies == NULL)
23093     {
23094       /* We're loading full DIEs during partial symbol reading.  */
23095       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
23096       load_full_comp_unit (cu->per_cu, false, language_minimal);
23097     }
23098
23099   *ref_cu = target_cu;
23100   temp_die.sect_off = sect_off;
23101
23102   if (target_cu != cu)
23103     target_cu->ancestor = cu;
23104
23105   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23106                                                   &temp_die,
23107                                                   to_underlying (sect_off));
23108 }
23109
23110 /* Follow reference attribute ATTR of SRC_DIE.
23111    On entry *REF_CU is the CU of SRC_DIE.
23112    On exit *REF_CU is the CU of the result.  */
23113
23114 static struct die_info *
23115 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23116                 struct dwarf2_cu **ref_cu)
23117 {
23118   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23119   struct dwarf2_cu *cu = *ref_cu;
23120   struct die_info *die;
23121
23122   die = follow_die_offset (sect_off,
23123                            (attr->form == DW_FORM_GNU_ref_alt
23124                             || cu->per_cu->is_dwz),
23125                            ref_cu);
23126   if (!die)
23127     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23128            "at %s [in module %s]"),
23129            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23130            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23131
23132   return die;
23133 }
23134
23135 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23136    Returned value is intended for DW_OP_call*.  Returned
23137    dwarf2_locexpr_baton->data has lifetime of
23138    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23139
23140 struct dwarf2_locexpr_baton
23141 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23142                                struct dwarf2_per_cu_data *per_cu,
23143                                CORE_ADDR (*get_frame_pc) (void *baton),
23144                                void *baton, bool resolve_abstract_p)
23145 {
23146   struct dwarf2_cu *cu;
23147   struct die_info *die;
23148   struct attribute *attr;
23149   struct dwarf2_locexpr_baton retval;
23150   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23151   struct objfile *objfile = dwarf2_per_objfile->objfile;
23152
23153   if (per_cu->cu == NULL)
23154     load_cu (per_cu, false);
23155   cu = per_cu->cu;
23156   if (cu == NULL)
23157     {
23158       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23159          Instead just throw an error, not much else we can do.  */
23160       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23161              sect_offset_str (sect_off), objfile_name (objfile));
23162     }
23163
23164   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23165   if (!die)
23166     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23167            sect_offset_str (sect_off), objfile_name (objfile));
23168
23169   attr = dwarf2_attr (die, DW_AT_location, cu);
23170   if (!attr && resolve_abstract_p
23171       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23172           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23173     {
23174       CORE_ADDR pc = (*get_frame_pc) (baton);
23175
23176       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23177         {
23178           if (!cand->parent
23179               || cand->parent->tag != DW_TAG_subprogram)
23180             continue;
23181
23182           CORE_ADDR pc_low, pc_high;
23183           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23184           if (pc_low == ((CORE_ADDR) -1)
23185               || !(pc_low <= pc && pc < pc_high))
23186             continue;
23187
23188           die = cand;
23189           attr = dwarf2_attr (die, DW_AT_location, cu);
23190           break;
23191         }
23192     }
23193
23194   if (!attr)
23195     {
23196       /* DWARF: "If there is no such attribute, then there is no effect.".
23197          DATA is ignored if SIZE is 0.  */
23198
23199       retval.data = NULL;
23200       retval.size = 0;
23201     }
23202   else if (attr_form_is_section_offset (attr))
23203     {
23204       struct dwarf2_loclist_baton loclist_baton;
23205       CORE_ADDR pc = (*get_frame_pc) (baton);
23206       size_t size;
23207
23208       fill_in_loclist_baton (cu, &loclist_baton, attr);
23209
23210       retval.data = dwarf2_find_location_expression (&loclist_baton,
23211                                                      &size, pc);
23212       retval.size = size;
23213     }
23214   else
23215     {
23216       if (!attr_form_is_block (attr))
23217         error (_("Dwarf Error: DIE at %s referenced in module %s "
23218                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23219                sect_offset_str (sect_off), objfile_name (objfile));
23220
23221       retval.data = DW_BLOCK (attr)->data;
23222       retval.size = DW_BLOCK (attr)->size;
23223     }
23224   retval.per_cu = cu->per_cu;
23225
23226   age_cached_comp_units (dwarf2_per_objfile);
23227
23228   return retval;
23229 }
23230
23231 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23232    offset.  */
23233
23234 struct dwarf2_locexpr_baton
23235 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23236                              struct dwarf2_per_cu_data *per_cu,
23237                              CORE_ADDR (*get_frame_pc) (void *baton),
23238                              void *baton)
23239 {
23240   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23241
23242   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23243 }
23244
23245 /* Write a constant of a given type as target-ordered bytes into
23246    OBSTACK.  */
23247
23248 static const gdb_byte *
23249 write_constant_as_bytes (struct obstack *obstack,
23250                          enum bfd_endian byte_order,
23251                          struct type *type,
23252                          ULONGEST value,
23253                          LONGEST *len)
23254 {
23255   gdb_byte *result;
23256
23257   *len = TYPE_LENGTH (type);
23258   result = (gdb_byte *) obstack_alloc (obstack, *len);
23259   store_unsigned_integer (result, *len, byte_order, value);
23260
23261   return result;
23262 }
23263
23264 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23265    pointer to the constant bytes and set LEN to the length of the
23266    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23267    does not have a DW_AT_const_value, return NULL.  */
23268
23269 const gdb_byte *
23270 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23271                              struct dwarf2_per_cu_data *per_cu,
23272                              struct obstack *obstack,
23273                              LONGEST *len)
23274 {
23275   struct dwarf2_cu *cu;
23276   struct die_info *die;
23277   struct attribute *attr;
23278   const gdb_byte *result = NULL;
23279   struct type *type;
23280   LONGEST value;
23281   enum bfd_endian byte_order;
23282   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23283
23284   if (per_cu->cu == NULL)
23285     load_cu (per_cu, false);
23286   cu = per_cu->cu;
23287   if (cu == NULL)
23288     {
23289       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23290          Instead just throw an error, not much else we can do.  */
23291       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23292              sect_offset_str (sect_off), objfile_name (objfile));
23293     }
23294
23295   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23296   if (!die)
23297     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23298            sect_offset_str (sect_off), objfile_name (objfile));
23299
23300   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23301   if (attr == NULL)
23302     return NULL;
23303
23304   byte_order = (bfd_big_endian (objfile->obfd)
23305                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23306
23307   switch (attr->form)
23308     {
23309     case DW_FORM_addr:
23310     case DW_FORM_addrx:
23311     case DW_FORM_GNU_addr_index:
23312       {
23313         gdb_byte *tem;
23314
23315         *len = cu->header.addr_size;
23316         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23317         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23318         result = tem;
23319       }
23320       break;
23321     case DW_FORM_string:
23322     case DW_FORM_strp:
23323     case DW_FORM_GNU_str_index:
23324     case DW_FORM_GNU_strp_alt:
23325       /* DW_STRING is already allocated on the objfile obstack, point
23326          directly to it.  */
23327       result = (const gdb_byte *) DW_STRING (attr);
23328       *len = strlen (DW_STRING (attr));
23329       break;
23330     case DW_FORM_block1:
23331     case DW_FORM_block2:
23332     case DW_FORM_block4:
23333     case DW_FORM_block:
23334     case DW_FORM_exprloc:
23335     case DW_FORM_data16:
23336       result = DW_BLOCK (attr)->data;
23337       *len = DW_BLOCK (attr)->size;
23338       break;
23339
23340       /* The DW_AT_const_value attributes are supposed to carry the
23341          symbol's value "represented as it would be on the target
23342          architecture."  By the time we get here, it's already been
23343          converted to host endianness, so we just need to sign- or
23344          zero-extend it as appropriate.  */
23345     case DW_FORM_data1:
23346       type = die_type (die, cu);
23347       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23348       if (result == NULL)
23349         result = write_constant_as_bytes (obstack, byte_order,
23350                                           type, value, len);
23351       break;
23352     case DW_FORM_data2:
23353       type = die_type (die, cu);
23354       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23355       if (result == NULL)
23356         result = write_constant_as_bytes (obstack, byte_order,
23357                                           type, value, len);
23358       break;
23359     case DW_FORM_data4:
23360       type = die_type (die, cu);
23361       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23362       if (result == NULL)
23363         result = write_constant_as_bytes (obstack, byte_order,
23364                                           type, value, len);
23365       break;
23366     case DW_FORM_data8:
23367       type = die_type (die, cu);
23368       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23369       if (result == NULL)
23370         result = write_constant_as_bytes (obstack, byte_order,
23371                                           type, value, len);
23372       break;
23373
23374     case DW_FORM_sdata:
23375     case DW_FORM_implicit_const:
23376       type = die_type (die, cu);
23377       result = write_constant_as_bytes (obstack, byte_order,
23378                                         type, DW_SND (attr), len);
23379       break;
23380
23381     case DW_FORM_udata:
23382       type = die_type (die, cu);
23383       result = write_constant_as_bytes (obstack, byte_order,
23384                                         type, DW_UNSND (attr), len);
23385       break;
23386
23387     default:
23388       complaint (_("unsupported const value attribute form: '%s'"),
23389                  dwarf_form_name (attr->form));
23390       break;
23391     }
23392
23393   return result;
23394 }
23395
23396 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23397    valid type for this die is found.  */
23398
23399 struct type *
23400 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23401                                 struct dwarf2_per_cu_data *per_cu)
23402 {
23403   struct dwarf2_cu *cu;
23404   struct die_info *die;
23405
23406   if (per_cu->cu == NULL)
23407     load_cu (per_cu, false);
23408   cu = per_cu->cu;
23409   if (!cu)
23410     return NULL;
23411
23412   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23413   if (!die)
23414     return NULL;
23415
23416   return die_type (die, cu);
23417 }
23418
23419 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23420    PER_CU.  */
23421
23422 struct type *
23423 dwarf2_get_die_type (cu_offset die_offset,
23424                      struct dwarf2_per_cu_data *per_cu)
23425 {
23426   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23427   return get_die_type_at_offset (die_offset_sect, per_cu);
23428 }
23429
23430 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23431    On entry *REF_CU is the CU of SRC_DIE.
23432    On exit *REF_CU is the CU of the result.
23433    Returns NULL if the referenced DIE isn't found.  */
23434
23435 static struct die_info *
23436 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23437                   struct dwarf2_cu **ref_cu)
23438 {
23439   struct die_info temp_die;
23440   struct dwarf2_cu *sig_cu, *cu = *ref_cu;
23441   struct die_info *die;
23442
23443   /* While it might be nice to assert sig_type->type == NULL here,
23444      we can get here for DW_AT_imported_declaration where we need
23445      the DIE not the type.  */
23446
23447   /* If necessary, add it to the queue and load its DIEs.  */
23448
23449   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23450     read_signatured_type (sig_type);
23451
23452   sig_cu = sig_type->per_cu.cu;
23453   gdb_assert (sig_cu != NULL);
23454   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23455   temp_die.sect_off = sig_type->type_offset_in_section;
23456   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23457                                                  to_underlying (temp_die.sect_off));
23458   if (die)
23459     {
23460       struct dwarf2_per_objfile *dwarf2_per_objfile
23461         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23462
23463       /* For .gdb_index version 7 keep track of included TUs.
23464          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23465       if (dwarf2_per_objfile->index_table != NULL
23466           && dwarf2_per_objfile->index_table->version <= 7)
23467         {
23468           VEC_safe_push (dwarf2_per_cu_ptr,
23469                          (*ref_cu)->per_cu->imported_symtabs,
23470                          sig_cu->per_cu);
23471         }
23472
23473       *ref_cu = sig_cu;
23474       if (sig_cu != cu)
23475         sig_cu->ancestor = cu;
23476
23477       return die;
23478     }
23479
23480   return NULL;
23481 }
23482
23483 /* Follow signatured type referenced by ATTR in SRC_DIE.
23484    On entry *REF_CU is the CU of SRC_DIE.
23485    On exit *REF_CU is the CU of the result.
23486    The result is the DIE of the type.
23487    If the referenced type cannot be found an error is thrown.  */
23488
23489 static struct die_info *
23490 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23491                 struct dwarf2_cu **ref_cu)
23492 {
23493   ULONGEST signature = DW_SIGNATURE (attr);
23494   struct signatured_type *sig_type;
23495   struct die_info *die;
23496
23497   gdb_assert (attr->form == DW_FORM_ref_sig8);
23498
23499   sig_type = lookup_signatured_type (*ref_cu, signature);
23500   /* sig_type will be NULL if the signatured type is missing from
23501      the debug info.  */
23502   if (sig_type == NULL)
23503     {
23504       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23505                " from DIE at %s [in module %s]"),
23506              hex_string (signature), sect_offset_str (src_die->sect_off),
23507              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23508     }
23509
23510   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23511   if (die == NULL)
23512     {
23513       dump_die_for_error (src_die);
23514       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23515                " from DIE at %s [in module %s]"),
23516              hex_string (signature), sect_offset_str (src_die->sect_off),
23517              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23518     }
23519
23520   return die;
23521 }
23522
23523 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23524    reading in and processing the type unit if necessary.  */
23525
23526 static struct type *
23527 get_signatured_type (struct die_info *die, ULONGEST signature,
23528                      struct dwarf2_cu *cu)
23529 {
23530   struct dwarf2_per_objfile *dwarf2_per_objfile
23531     = cu->per_cu->dwarf2_per_objfile;
23532   struct signatured_type *sig_type;
23533   struct dwarf2_cu *type_cu;
23534   struct die_info *type_die;
23535   struct type *type;
23536
23537   sig_type = lookup_signatured_type (cu, signature);
23538   /* sig_type will be NULL if the signatured type is missing from
23539      the debug info.  */
23540   if (sig_type == NULL)
23541     {
23542       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23543                    " from DIE at %s [in module %s]"),
23544                  hex_string (signature), sect_offset_str (die->sect_off),
23545                  objfile_name (dwarf2_per_objfile->objfile));
23546       return build_error_marker_type (cu, die);
23547     }
23548
23549   /* If we already know the type we're done.  */
23550   if (sig_type->type != NULL)
23551     return sig_type->type;
23552
23553   type_cu = cu;
23554   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23555   if (type_die != NULL)
23556     {
23557       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23558          is created.  This is important, for example, because for c++ classes
23559          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23560       type = read_type_die (type_die, type_cu);
23561       if (type == NULL)
23562         {
23563           complaint (_("Dwarf Error: Cannot build signatured type %s"
23564                        " referenced from DIE at %s [in module %s]"),
23565                      hex_string (signature), sect_offset_str (die->sect_off),
23566                      objfile_name (dwarf2_per_objfile->objfile));
23567           type = build_error_marker_type (cu, die);
23568         }
23569     }
23570   else
23571     {
23572       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23573                    " from DIE at %s [in module %s]"),
23574                  hex_string (signature), sect_offset_str (die->sect_off),
23575                  objfile_name (dwarf2_per_objfile->objfile));
23576       type = build_error_marker_type (cu, die);
23577     }
23578   sig_type->type = type;
23579
23580   return type;
23581 }
23582
23583 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23584    reading in and processing the type unit if necessary.  */
23585
23586 static struct type *
23587 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23588                           struct dwarf2_cu *cu) /* ARI: editCase function */
23589 {
23590   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23591   if (attr_form_is_ref (attr))
23592     {
23593       struct dwarf2_cu *type_cu = cu;
23594       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23595
23596       return read_type_die (type_die, type_cu);
23597     }
23598   else if (attr->form == DW_FORM_ref_sig8)
23599     {
23600       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23601     }
23602   else
23603     {
23604       struct dwarf2_per_objfile *dwarf2_per_objfile
23605         = cu->per_cu->dwarf2_per_objfile;
23606
23607       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23608                    " at %s [in module %s]"),
23609                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23610                  objfile_name (dwarf2_per_objfile->objfile));
23611       return build_error_marker_type (cu, die);
23612     }
23613 }
23614
23615 /* Load the DIEs associated with type unit PER_CU into memory.  */
23616
23617 static void
23618 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23619 {
23620   struct signatured_type *sig_type;
23621
23622   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23623   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23624
23625   /* We have the per_cu, but we need the signatured_type.
23626      Fortunately this is an easy translation.  */
23627   gdb_assert (per_cu->is_debug_types);
23628   sig_type = (struct signatured_type *) per_cu;
23629
23630   gdb_assert (per_cu->cu == NULL);
23631
23632   read_signatured_type (sig_type);
23633
23634   gdb_assert (per_cu->cu != NULL);
23635 }
23636
23637 /* die_reader_func for read_signatured_type.
23638    This is identical to load_full_comp_unit_reader,
23639    but is kept separate for now.  */
23640
23641 static void
23642 read_signatured_type_reader (const struct die_reader_specs *reader,
23643                              const gdb_byte *info_ptr,
23644                              struct die_info *comp_unit_die,
23645                              int has_children,
23646                              void *data)
23647 {
23648   struct dwarf2_cu *cu = reader->cu;
23649
23650   gdb_assert (cu->die_hash == NULL);
23651   cu->die_hash =
23652     htab_create_alloc_ex (cu->header.length / 12,
23653                           die_hash,
23654                           die_eq,
23655                           NULL,
23656                           &cu->comp_unit_obstack,
23657                           hashtab_obstack_allocate,
23658                           dummy_obstack_deallocate);
23659
23660   if (has_children)
23661     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23662                                                   &info_ptr, comp_unit_die);
23663   cu->dies = comp_unit_die;
23664   /* comp_unit_die is not stored in die_hash, no need.  */
23665
23666   /* We try not to read any attributes in this function, because not
23667      all CUs needed for references have been loaded yet, and symbol
23668      table processing isn't initialized.  But we have to set the CU language,
23669      or we won't be able to build types correctly.
23670      Similarly, if we do not read the producer, we can not apply
23671      producer-specific interpretation.  */
23672   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23673 }
23674
23675 /* Read in a signatured type and build its CU and DIEs.
23676    If the type is a stub for the real type in a DWO file,
23677    read in the real type from the DWO file as well.  */
23678
23679 static void
23680 read_signatured_type (struct signatured_type *sig_type)
23681 {
23682   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23683
23684   gdb_assert (per_cu->is_debug_types);
23685   gdb_assert (per_cu->cu == NULL);
23686
23687   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23688                            read_signatured_type_reader, NULL);
23689   sig_type->per_cu.tu_read = 1;
23690 }
23691
23692 /* Decode simple location descriptions.
23693    Given a pointer to a dwarf block that defines a location, compute
23694    the location and return the value.
23695
23696    NOTE drow/2003-11-18: This function is called in two situations
23697    now: for the address of static or global variables (partial symbols
23698    only) and for offsets into structures which are expected to be
23699    (more or less) constant.  The partial symbol case should go away,
23700    and only the constant case should remain.  That will let this
23701    function complain more accurately.  A few special modes are allowed
23702    without complaint for global variables (for instance, global
23703    register values and thread-local values).
23704
23705    A location description containing no operations indicates that the
23706    object is optimized out.  The return value is 0 for that case.
23707    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23708    callers will only want a very basic result and this can become a
23709    complaint.
23710
23711    Note that stack[0] is unused except as a default error return.  */
23712
23713 static CORE_ADDR
23714 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23715 {
23716   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23717   size_t i;
23718   size_t size = blk->size;
23719   const gdb_byte *data = blk->data;
23720   CORE_ADDR stack[64];
23721   int stacki;
23722   unsigned int bytes_read, unsnd;
23723   gdb_byte op;
23724
23725   i = 0;
23726   stacki = 0;
23727   stack[stacki] = 0;
23728   stack[++stacki] = 0;
23729
23730   while (i < size)
23731     {
23732       op = data[i++];
23733       switch (op)
23734         {
23735         case DW_OP_lit0:
23736         case DW_OP_lit1:
23737         case DW_OP_lit2:
23738         case DW_OP_lit3:
23739         case DW_OP_lit4:
23740         case DW_OP_lit5:
23741         case DW_OP_lit6:
23742         case DW_OP_lit7:
23743         case DW_OP_lit8:
23744         case DW_OP_lit9:
23745         case DW_OP_lit10:
23746         case DW_OP_lit11:
23747         case DW_OP_lit12:
23748         case DW_OP_lit13:
23749         case DW_OP_lit14:
23750         case DW_OP_lit15:
23751         case DW_OP_lit16:
23752         case DW_OP_lit17:
23753         case DW_OP_lit18:
23754         case DW_OP_lit19:
23755         case DW_OP_lit20:
23756         case DW_OP_lit21:
23757         case DW_OP_lit22:
23758         case DW_OP_lit23:
23759         case DW_OP_lit24:
23760         case DW_OP_lit25:
23761         case DW_OP_lit26:
23762         case DW_OP_lit27:
23763         case DW_OP_lit28:
23764         case DW_OP_lit29:
23765         case DW_OP_lit30:
23766         case DW_OP_lit31:
23767           stack[++stacki] = op - DW_OP_lit0;
23768           break;
23769
23770         case DW_OP_reg0:
23771         case DW_OP_reg1:
23772         case DW_OP_reg2:
23773         case DW_OP_reg3:
23774         case DW_OP_reg4:
23775         case DW_OP_reg5:
23776         case DW_OP_reg6:
23777         case DW_OP_reg7:
23778         case DW_OP_reg8:
23779         case DW_OP_reg9:
23780         case DW_OP_reg10:
23781         case DW_OP_reg11:
23782         case DW_OP_reg12:
23783         case DW_OP_reg13:
23784         case DW_OP_reg14:
23785         case DW_OP_reg15:
23786         case DW_OP_reg16:
23787         case DW_OP_reg17:
23788         case DW_OP_reg18:
23789         case DW_OP_reg19:
23790         case DW_OP_reg20:
23791         case DW_OP_reg21:
23792         case DW_OP_reg22:
23793         case DW_OP_reg23:
23794         case DW_OP_reg24:
23795         case DW_OP_reg25:
23796         case DW_OP_reg26:
23797         case DW_OP_reg27:
23798         case DW_OP_reg28:
23799         case DW_OP_reg29:
23800         case DW_OP_reg30:
23801         case DW_OP_reg31:
23802           stack[++stacki] = op - DW_OP_reg0;
23803           if (i < size)
23804             dwarf2_complex_location_expr_complaint ();
23805           break;
23806
23807         case DW_OP_regx:
23808           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23809           i += bytes_read;
23810           stack[++stacki] = unsnd;
23811           if (i < size)
23812             dwarf2_complex_location_expr_complaint ();
23813           break;
23814
23815         case DW_OP_addr:
23816           stack[++stacki] = read_address (objfile->obfd, &data[i],
23817                                           cu, &bytes_read);
23818           i += bytes_read;
23819           break;
23820
23821         case DW_OP_const1u:
23822           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23823           i += 1;
23824           break;
23825
23826         case DW_OP_const1s:
23827           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23828           i += 1;
23829           break;
23830
23831         case DW_OP_const2u:
23832           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23833           i += 2;
23834           break;
23835
23836         case DW_OP_const2s:
23837           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23838           i += 2;
23839           break;
23840
23841         case DW_OP_const4u:
23842           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23843           i += 4;
23844           break;
23845
23846         case DW_OP_const4s:
23847           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23848           i += 4;
23849           break;
23850
23851         case DW_OP_const8u:
23852           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23853           i += 8;
23854           break;
23855
23856         case DW_OP_constu:
23857           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23858                                                   &bytes_read);
23859           i += bytes_read;
23860           break;
23861
23862         case DW_OP_consts:
23863           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23864           i += bytes_read;
23865           break;
23866
23867         case DW_OP_dup:
23868           stack[stacki + 1] = stack[stacki];
23869           stacki++;
23870           break;
23871
23872         case DW_OP_plus:
23873           stack[stacki - 1] += stack[stacki];
23874           stacki--;
23875           break;
23876
23877         case DW_OP_plus_uconst:
23878           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23879                                                  &bytes_read);
23880           i += bytes_read;
23881           break;
23882
23883         case DW_OP_minus:
23884           stack[stacki - 1] -= stack[stacki];
23885           stacki--;
23886           break;
23887
23888         case DW_OP_deref:
23889           /* If we're not the last op, then we definitely can't encode
23890              this using GDB's address_class enum.  This is valid for partial
23891              global symbols, although the variable's address will be bogus
23892              in the psymtab.  */
23893           if (i < size)
23894             dwarf2_complex_location_expr_complaint ();
23895           break;
23896
23897         case DW_OP_GNU_push_tls_address:
23898         case DW_OP_form_tls_address:
23899           /* The top of the stack has the offset from the beginning
23900              of the thread control block at which the variable is located.  */
23901           /* Nothing should follow this operator, so the top of stack would
23902              be returned.  */
23903           /* This is valid for partial global symbols, but the variable's
23904              address will be bogus in the psymtab.  Make it always at least
23905              non-zero to not look as a variable garbage collected by linker
23906              which have DW_OP_addr 0.  */
23907           if (i < size)
23908             dwarf2_complex_location_expr_complaint ();
23909           stack[stacki]++;
23910           break;
23911
23912         case DW_OP_GNU_uninit:
23913           break;
23914
23915         case DW_OP_addrx:
23916         case DW_OP_GNU_addr_index:
23917         case DW_OP_GNU_const_index:
23918           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23919                                                          &bytes_read);
23920           i += bytes_read;
23921           break;
23922
23923         default:
23924           {
23925             const char *name = get_DW_OP_name (op);
23926
23927             if (name)
23928               complaint (_("unsupported stack op: '%s'"),
23929                          name);
23930             else
23931               complaint (_("unsupported stack op: '%02x'"),
23932                          op);
23933           }
23934
23935           return (stack[stacki]);
23936         }
23937
23938       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23939          outside of the allocated space.  Also enforce minimum>0.  */
23940       if (stacki >= ARRAY_SIZE (stack) - 1)
23941         {
23942           complaint (_("location description stack overflow"));
23943           return 0;
23944         }
23945
23946       if (stacki <= 0)
23947         {
23948           complaint (_("location description stack underflow"));
23949           return 0;
23950         }
23951     }
23952   return (stack[stacki]);
23953 }
23954
23955 /* memory allocation interface */
23956
23957 static struct dwarf_block *
23958 dwarf_alloc_block (struct dwarf2_cu *cu)
23959 {
23960   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23961 }
23962
23963 static struct die_info *
23964 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23965 {
23966   struct die_info *die;
23967   size_t size = sizeof (struct die_info);
23968
23969   if (num_attrs > 1)
23970     size += (num_attrs - 1) * sizeof (struct attribute);
23971
23972   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23973   memset (die, 0, sizeof (struct die_info));
23974   return (die);
23975 }
23976
23977 \f
23978 /* Macro support.  */
23979
23980 /* Return file name relative to the compilation directory of file number I in
23981    *LH's file name table.  The result is allocated using xmalloc; the caller is
23982    responsible for freeing it.  */
23983
23984 static char *
23985 file_file_name (int file, struct line_header *lh)
23986 {
23987   /* Is the file number a valid index into the line header's file name
23988      table?  Remember that file numbers start with one, not zero.  */
23989   if (1 <= file && file <= lh->file_names.size ())
23990     {
23991       const file_entry &fe = lh->file_names[file - 1];
23992
23993       if (!IS_ABSOLUTE_PATH (fe.name))
23994         {
23995           const char *dir = fe.include_dir (lh);
23996           if (dir != NULL)
23997             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23998         }
23999       return xstrdup (fe.name);
24000     }
24001   else
24002     {
24003       /* The compiler produced a bogus file number.  We can at least
24004          record the macro definitions made in the file, even if we
24005          won't be able to find the file by name.  */
24006       char fake_name[80];
24007
24008       xsnprintf (fake_name, sizeof (fake_name),
24009                  "<bad macro file number %d>", file);
24010
24011       complaint (_("bad file number in macro information (%d)"),
24012                  file);
24013
24014       return xstrdup (fake_name);
24015     }
24016 }
24017
24018 /* Return the full name of file number I in *LH's file name table.
24019    Use COMP_DIR as the name of the current directory of the
24020    compilation.  The result is allocated using xmalloc; the caller is
24021    responsible for freeing it.  */
24022 static char *
24023 file_full_name (int file, struct line_header *lh, const char *comp_dir)
24024 {
24025   /* Is the file number a valid index into the line header's file name
24026      table?  Remember that file numbers start with one, not zero.  */
24027   if (1 <= file && file <= lh->file_names.size ())
24028     {
24029       char *relative = file_file_name (file, lh);
24030
24031       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
24032         return relative;
24033       return reconcat (relative, comp_dir, SLASH_STRING,
24034                        relative, (char *) NULL);
24035     }
24036   else
24037     return file_file_name (file, lh);
24038 }
24039
24040
24041 static struct macro_source_file *
24042 macro_start_file (struct dwarf2_cu *cu,
24043                   int file, int line,
24044                   struct macro_source_file *current_file,
24045                   struct line_header *lh)
24046 {
24047   /* File name relative to the compilation directory of this source file.  */
24048   char *file_name = file_file_name (file, lh);
24049
24050   if (! current_file)
24051     {
24052       /* Note: We don't create a macro table for this compilation unit
24053          at all until we actually get a filename.  */
24054       struct macro_table *macro_table = cu->get_builder ()->get_macro_table ();
24055
24056       /* If we have no current file, then this must be the start_file
24057          directive for the compilation unit's main source file.  */
24058       current_file = macro_set_main (macro_table, file_name);
24059       macro_define_special (macro_table);
24060     }
24061   else
24062     current_file = macro_include (current_file, line, file_name);
24063
24064   xfree (file_name);
24065
24066   return current_file;
24067 }
24068
24069 static const char *
24070 consume_improper_spaces (const char *p, const char *body)
24071 {
24072   if (*p == ' ')
24073     {
24074       complaint (_("macro definition contains spaces "
24075                    "in formal argument list:\n`%s'"),
24076                  body);
24077
24078       while (*p == ' ')
24079         p++;
24080     }
24081
24082   return p;
24083 }
24084
24085
24086 static void
24087 parse_macro_definition (struct macro_source_file *file, int line,
24088                         const char *body)
24089 {
24090   const char *p;
24091
24092   /* The body string takes one of two forms.  For object-like macro
24093      definitions, it should be:
24094
24095         <macro name> " " <definition>
24096
24097      For function-like macro definitions, it should be:
24098
24099         <macro name> "() " <definition>
24100      or
24101         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
24102
24103      Spaces may appear only where explicitly indicated, and in the
24104      <definition>.
24105
24106      The Dwarf 2 spec says that an object-like macro's name is always
24107      followed by a space, but versions of GCC around March 2002 omit
24108      the space when the macro's definition is the empty string.
24109
24110      The Dwarf 2 spec says that there should be no spaces between the
24111      formal arguments in a function-like macro's formal argument list,
24112      but versions of GCC around March 2002 include spaces after the
24113      commas.  */
24114
24115
24116   /* Find the extent of the macro name.  The macro name is terminated
24117      by either a space or null character (for an object-like macro) or
24118      an opening paren (for a function-like macro).  */
24119   for (p = body; *p; p++)
24120     if (*p == ' ' || *p == '(')
24121       break;
24122
24123   if (*p == ' ' || *p == '\0')
24124     {
24125       /* It's an object-like macro.  */
24126       int name_len = p - body;
24127       char *name = savestring (body, name_len);
24128       const char *replacement;
24129
24130       if (*p == ' ')
24131         replacement = body + name_len + 1;
24132       else
24133         {
24134           dwarf2_macro_malformed_definition_complaint (body);
24135           replacement = body + name_len;
24136         }
24137
24138       macro_define_object (file, line, name, replacement);
24139
24140       xfree (name);
24141     }
24142   else if (*p == '(')
24143     {
24144       /* It's a function-like macro.  */
24145       char *name = savestring (body, p - body);
24146       int argc = 0;
24147       int argv_size = 1;
24148       char **argv = XNEWVEC (char *, argv_size);
24149
24150       p++;
24151
24152       p = consume_improper_spaces (p, body);
24153
24154       /* Parse the formal argument list.  */
24155       while (*p && *p != ')')
24156         {
24157           /* Find the extent of the current argument name.  */
24158           const char *arg_start = p;
24159
24160           while (*p && *p != ',' && *p != ')' && *p != ' ')
24161             p++;
24162
24163           if (! *p || p == arg_start)
24164             dwarf2_macro_malformed_definition_complaint (body);
24165           else
24166             {
24167               /* Make sure argv has room for the new argument.  */
24168               if (argc >= argv_size)
24169                 {
24170                   argv_size *= 2;
24171                   argv = XRESIZEVEC (char *, argv, argv_size);
24172                 }
24173
24174               argv[argc++] = savestring (arg_start, p - arg_start);
24175             }
24176
24177           p = consume_improper_spaces (p, body);
24178
24179           /* Consume the comma, if present.  */
24180           if (*p == ',')
24181             {
24182               p++;
24183
24184               p = consume_improper_spaces (p, body);
24185             }
24186         }
24187
24188       if (*p == ')')
24189         {
24190           p++;
24191
24192           if (*p == ' ')
24193             /* Perfectly formed definition, no complaints.  */
24194             macro_define_function (file, line, name,
24195                                    argc, (const char **) argv,
24196                                    p + 1);
24197           else if (*p == '\0')
24198             {
24199               /* Complain, but do define it.  */
24200               dwarf2_macro_malformed_definition_complaint (body);
24201               macro_define_function (file, line, name,
24202                                      argc, (const char **) argv,
24203                                      p);
24204             }
24205           else
24206             /* Just complain.  */
24207             dwarf2_macro_malformed_definition_complaint (body);
24208         }
24209       else
24210         /* Just complain.  */
24211         dwarf2_macro_malformed_definition_complaint (body);
24212
24213       xfree (name);
24214       {
24215         int i;
24216
24217         for (i = 0; i < argc; i++)
24218           xfree (argv[i]);
24219       }
24220       xfree (argv);
24221     }
24222   else
24223     dwarf2_macro_malformed_definition_complaint (body);
24224 }
24225
24226 /* Skip some bytes from BYTES according to the form given in FORM.
24227    Returns the new pointer.  */
24228
24229 static const gdb_byte *
24230 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24231                  enum dwarf_form form,
24232                  unsigned int offset_size,
24233                  struct dwarf2_section_info *section)
24234 {
24235   unsigned int bytes_read;
24236
24237   switch (form)
24238     {
24239     case DW_FORM_data1:
24240     case DW_FORM_flag:
24241       ++bytes;
24242       break;
24243
24244     case DW_FORM_data2:
24245       bytes += 2;
24246       break;
24247
24248     case DW_FORM_data4:
24249       bytes += 4;
24250       break;
24251
24252     case DW_FORM_data8:
24253       bytes += 8;
24254       break;
24255
24256     case DW_FORM_data16:
24257       bytes += 16;
24258       break;
24259
24260     case DW_FORM_string:
24261       read_direct_string (abfd, bytes, &bytes_read);
24262       bytes += bytes_read;
24263       break;
24264
24265     case DW_FORM_sec_offset:
24266     case DW_FORM_strp:
24267     case DW_FORM_GNU_strp_alt:
24268       bytes += offset_size;
24269       break;
24270
24271     case DW_FORM_block:
24272       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24273       bytes += bytes_read;
24274       break;
24275
24276     case DW_FORM_block1:
24277       bytes += 1 + read_1_byte (abfd, bytes);
24278       break;
24279     case DW_FORM_block2:
24280       bytes += 2 + read_2_bytes (abfd, bytes);
24281       break;
24282     case DW_FORM_block4:
24283       bytes += 4 + read_4_bytes (abfd, bytes);
24284       break;
24285
24286     case DW_FORM_addrx:
24287     case DW_FORM_sdata:
24288     case DW_FORM_udata:
24289     case DW_FORM_GNU_addr_index:
24290     case DW_FORM_GNU_str_index:
24291       bytes = gdb_skip_leb128 (bytes, buffer_end);
24292       if (bytes == NULL)
24293         {
24294           dwarf2_section_buffer_overflow_complaint (section);
24295           return NULL;
24296         }
24297       break;
24298
24299     case DW_FORM_implicit_const:
24300       break;
24301
24302     default:
24303       {
24304         complaint (_("invalid form 0x%x in `%s'"),
24305                    form, get_section_name (section));
24306         return NULL;
24307       }
24308     }
24309
24310   return bytes;
24311 }
24312
24313 /* A helper for dwarf_decode_macros that handles skipping an unknown
24314    opcode.  Returns an updated pointer to the macro data buffer; or,
24315    on error, issues a complaint and returns NULL.  */
24316
24317 static const gdb_byte *
24318 skip_unknown_opcode (unsigned int opcode,
24319                      const gdb_byte **opcode_definitions,
24320                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24321                      bfd *abfd,
24322                      unsigned int offset_size,
24323                      struct dwarf2_section_info *section)
24324 {
24325   unsigned int bytes_read, i;
24326   unsigned long arg;
24327   const gdb_byte *defn;
24328
24329   if (opcode_definitions[opcode] == NULL)
24330     {
24331       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24332                  opcode);
24333       return NULL;
24334     }
24335
24336   defn = opcode_definitions[opcode];
24337   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24338   defn += bytes_read;
24339
24340   for (i = 0; i < arg; ++i)
24341     {
24342       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24343                                  (enum dwarf_form) defn[i], offset_size,
24344                                  section);
24345       if (mac_ptr == NULL)
24346         {
24347           /* skip_form_bytes already issued the complaint.  */
24348           return NULL;
24349         }
24350     }
24351
24352   return mac_ptr;
24353 }
24354
24355 /* A helper function which parses the header of a macro section.
24356    If the macro section is the extended (for now called "GNU") type,
24357    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24358    the header, or issues a complaint and returns NULL on error.  */
24359
24360 static const gdb_byte *
24361 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24362                           bfd *abfd,
24363                           const gdb_byte *mac_ptr,
24364                           unsigned int *offset_size,
24365                           int section_is_gnu)
24366 {
24367   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24368
24369   if (section_is_gnu)
24370     {
24371       unsigned int version, flags;
24372
24373       version = read_2_bytes (abfd, mac_ptr);
24374       if (version != 4 && version != 5)
24375         {
24376           complaint (_("unrecognized version `%d' in .debug_macro section"),
24377                      version);
24378           return NULL;
24379         }
24380       mac_ptr += 2;
24381
24382       flags = read_1_byte (abfd, mac_ptr);
24383       ++mac_ptr;
24384       *offset_size = (flags & 1) ? 8 : 4;
24385
24386       if ((flags & 2) != 0)
24387         /* We don't need the line table offset.  */
24388         mac_ptr += *offset_size;
24389
24390       /* Vendor opcode descriptions.  */
24391       if ((flags & 4) != 0)
24392         {
24393           unsigned int i, count;
24394
24395           count = read_1_byte (abfd, mac_ptr);
24396           ++mac_ptr;
24397           for (i = 0; i < count; ++i)
24398             {
24399               unsigned int opcode, bytes_read;
24400               unsigned long arg;
24401
24402               opcode = read_1_byte (abfd, mac_ptr);
24403               ++mac_ptr;
24404               opcode_definitions[opcode] = mac_ptr;
24405               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24406               mac_ptr += bytes_read;
24407               mac_ptr += arg;
24408             }
24409         }
24410     }
24411
24412   return mac_ptr;
24413 }
24414
24415 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24416    including DW_MACRO_import.  */
24417
24418 static void
24419 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24420                           bfd *abfd,
24421                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24422                           struct macro_source_file *current_file,
24423                           struct line_header *lh,
24424                           struct dwarf2_section_info *section,
24425                           int section_is_gnu, int section_is_dwz,
24426                           unsigned int offset_size,
24427                           htab_t include_hash)
24428 {
24429   struct dwarf2_per_objfile *dwarf2_per_objfile
24430     = cu->per_cu->dwarf2_per_objfile;
24431   struct objfile *objfile = dwarf2_per_objfile->objfile;
24432   enum dwarf_macro_record_type macinfo_type;
24433   int at_commandline;
24434   const gdb_byte *opcode_definitions[256];
24435
24436   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24437                                       &offset_size, section_is_gnu);
24438   if (mac_ptr == NULL)
24439     {
24440       /* We already issued a complaint.  */
24441       return;
24442     }
24443
24444   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24445      GDB is still reading the definitions from command line.  First
24446      DW_MACINFO_start_file will need to be ignored as it was already executed
24447      to create CURRENT_FILE for the main source holding also the command line
24448      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24449      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24450
24451   at_commandline = 1;
24452
24453   do
24454     {
24455       /* Do we at least have room for a macinfo type byte?  */
24456       if (mac_ptr >= mac_end)
24457         {
24458           dwarf2_section_buffer_overflow_complaint (section);
24459           break;
24460         }
24461
24462       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24463       mac_ptr++;
24464
24465       /* Note that we rely on the fact that the corresponding GNU and
24466          DWARF constants are the same.  */
24467       DIAGNOSTIC_PUSH
24468       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24469       switch (macinfo_type)
24470         {
24471           /* A zero macinfo type indicates the end of the macro
24472              information.  */
24473         case 0:
24474           break;
24475
24476         case DW_MACRO_define:
24477         case DW_MACRO_undef:
24478         case DW_MACRO_define_strp:
24479         case DW_MACRO_undef_strp:
24480         case DW_MACRO_define_sup:
24481         case DW_MACRO_undef_sup:
24482           {
24483             unsigned int bytes_read;
24484             int line;
24485             const char *body;
24486             int is_define;
24487
24488             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24489             mac_ptr += bytes_read;
24490
24491             if (macinfo_type == DW_MACRO_define
24492                 || macinfo_type == DW_MACRO_undef)
24493               {
24494                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24495                 mac_ptr += bytes_read;
24496               }
24497             else
24498               {
24499                 LONGEST str_offset;
24500
24501                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24502                 mac_ptr += offset_size;
24503
24504                 if (macinfo_type == DW_MACRO_define_sup
24505                     || macinfo_type == DW_MACRO_undef_sup
24506                     || section_is_dwz)
24507                   {
24508                     struct dwz_file *dwz
24509                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24510
24511                     body = read_indirect_string_from_dwz (objfile,
24512                                                           dwz, str_offset);
24513                   }
24514                 else
24515                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24516                                                          abfd, str_offset);
24517               }
24518
24519             is_define = (macinfo_type == DW_MACRO_define
24520                          || macinfo_type == DW_MACRO_define_strp
24521                          || macinfo_type == DW_MACRO_define_sup);
24522             if (! current_file)
24523               {
24524                 /* DWARF violation as no main source is present.  */
24525                 complaint (_("debug info with no main source gives macro %s "
24526                              "on line %d: %s"),
24527                            is_define ? _("definition") : _("undefinition"),
24528                            line, body);
24529                 break;
24530               }
24531             if ((line == 0 && !at_commandline)
24532                 || (line != 0 && at_commandline))
24533               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24534                          at_commandline ? _("command-line") : _("in-file"),
24535                          is_define ? _("definition") : _("undefinition"),
24536                          line == 0 ? _("zero") : _("non-zero"), line, body);
24537
24538             if (is_define)
24539               parse_macro_definition (current_file, line, body);
24540             else
24541               {
24542                 gdb_assert (macinfo_type == DW_MACRO_undef
24543                             || macinfo_type == DW_MACRO_undef_strp
24544                             || macinfo_type == DW_MACRO_undef_sup);
24545                 macro_undef (current_file, line, body);
24546               }
24547           }
24548           break;
24549
24550         case DW_MACRO_start_file:
24551           {
24552             unsigned int bytes_read;
24553             int line, file;
24554
24555             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24556             mac_ptr += bytes_read;
24557             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24558             mac_ptr += bytes_read;
24559
24560             if ((line == 0 && !at_commandline)
24561                 || (line != 0 && at_commandline))
24562               complaint (_("debug info gives source %d included "
24563                            "from %s at %s line %d"),
24564                          file, at_commandline ? _("command-line") : _("file"),
24565                          line == 0 ? _("zero") : _("non-zero"), line);
24566
24567             if (at_commandline)
24568               {
24569                 /* This DW_MACRO_start_file was executed in the
24570                    pass one.  */
24571                 at_commandline = 0;
24572               }
24573             else
24574               current_file = macro_start_file (cu, file, line, current_file,
24575                                                lh);
24576           }
24577           break;
24578
24579         case DW_MACRO_end_file:
24580           if (! current_file)
24581             complaint (_("macro debug info has an unmatched "
24582                          "`close_file' directive"));
24583           else
24584             {
24585               current_file = current_file->included_by;
24586               if (! current_file)
24587                 {
24588                   enum dwarf_macro_record_type next_type;
24589
24590                   /* GCC circa March 2002 doesn't produce the zero
24591                      type byte marking the end of the compilation
24592                      unit.  Complain if it's not there, but exit no
24593                      matter what.  */
24594
24595                   /* Do we at least have room for a macinfo type byte?  */
24596                   if (mac_ptr >= mac_end)
24597                     {
24598                       dwarf2_section_buffer_overflow_complaint (section);
24599                       return;
24600                     }
24601
24602                   /* We don't increment mac_ptr here, so this is just
24603                      a look-ahead.  */
24604                   next_type
24605                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24606                                                                   mac_ptr);
24607                   if (next_type != 0)
24608                     complaint (_("no terminating 0-type entry for "
24609                                  "macros in `.debug_macinfo' section"));
24610
24611                   return;
24612                 }
24613             }
24614           break;
24615
24616         case DW_MACRO_import:
24617         case DW_MACRO_import_sup:
24618           {
24619             LONGEST offset;
24620             void **slot;
24621             bfd *include_bfd = abfd;
24622             struct dwarf2_section_info *include_section = section;
24623             const gdb_byte *include_mac_end = mac_end;
24624             int is_dwz = section_is_dwz;
24625             const gdb_byte *new_mac_ptr;
24626
24627             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24628             mac_ptr += offset_size;
24629
24630             if (macinfo_type == DW_MACRO_import_sup)
24631               {
24632                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24633
24634                 dwarf2_read_section (objfile, &dwz->macro);
24635
24636                 include_section = &dwz->macro;
24637                 include_bfd = get_section_bfd_owner (include_section);
24638                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24639                 is_dwz = 1;
24640               }
24641
24642             new_mac_ptr = include_section->buffer + offset;
24643             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24644
24645             if (*slot != NULL)
24646               {
24647                 /* This has actually happened; see
24648                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24649                 complaint (_("recursive DW_MACRO_import in "
24650                              ".debug_macro section"));
24651               }
24652             else
24653               {
24654                 *slot = (void *) new_mac_ptr;
24655
24656                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24657                                           include_mac_end, current_file, lh,
24658                                           section, section_is_gnu, is_dwz,
24659                                           offset_size, include_hash);
24660
24661                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24662               }
24663           }
24664           break;
24665
24666         case DW_MACINFO_vendor_ext:
24667           if (!section_is_gnu)
24668             {
24669               unsigned int bytes_read;
24670
24671               /* This reads the constant, but since we don't recognize
24672                  any vendor extensions, we ignore it.  */
24673               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24674               mac_ptr += bytes_read;
24675               read_direct_string (abfd, mac_ptr, &bytes_read);
24676               mac_ptr += bytes_read;
24677
24678               /* We don't recognize any vendor extensions.  */
24679               break;
24680             }
24681           /* FALLTHROUGH */
24682
24683         default:
24684           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24685                                          mac_ptr, mac_end, abfd, offset_size,
24686                                          section);
24687           if (mac_ptr == NULL)
24688             return;
24689           break;
24690         }
24691       DIAGNOSTIC_POP
24692     } while (macinfo_type != 0);
24693 }
24694
24695 static void
24696 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24697                      int section_is_gnu)
24698 {
24699   struct dwarf2_per_objfile *dwarf2_per_objfile
24700     = cu->per_cu->dwarf2_per_objfile;
24701   struct objfile *objfile = dwarf2_per_objfile->objfile;
24702   struct line_header *lh = cu->line_header;
24703   bfd *abfd;
24704   const gdb_byte *mac_ptr, *mac_end;
24705   struct macro_source_file *current_file = 0;
24706   enum dwarf_macro_record_type macinfo_type;
24707   unsigned int offset_size = cu->header.offset_size;
24708   const gdb_byte *opcode_definitions[256];
24709   void **slot;
24710   struct dwarf2_section_info *section;
24711   const char *section_name;
24712
24713   if (cu->dwo_unit != NULL)
24714     {
24715       if (section_is_gnu)
24716         {
24717           section = &cu->dwo_unit->dwo_file->sections.macro;
24718           section_name = ".debug_macro.dwo";
24719         }
24720       else
24721         {
24722           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24723           section_name = ".debug_macinfo.dwo";
24724         }
24725     }
24726   else
24727     {
24728       if (section_is_gnu)
24729         {
24730           section = &dwarf2_per_objfile->macro;
24731           section_name = ".debug_macro";
24732         }
24733       else
24734         {
24735           section = &dwarf2_per_objfile->macinfo;
24736           section_name = ".debug_macinfo";
24737         }
24738     }
24739
24740   dwarf2_read_section (objfile, section);
24741   if (section->buffer == NULL)
24742     {
24743       complaint (_("missing %s section"), section_name);
24744       return;
24745     }
24746   abfd = get_section_bfd_owner (section);
24747
24748   /* First pass: Find the name of the base filename.
24749      This filename is needed in order to process all macros whose definition
24750      (or undefinition) comes from the command line.  These macros are defined
24751      before the first DW_MACINFO_start_file entry, and yet still need to be
24752      associated to the base file.
24753
24754      To determine the base file name, we scan the macro definitions until we
24755      reach the first DW_MACINFO_start_file entry.  We then initialize
24756      CURRENT_FILE accordingly so that any macro definition found before the
24757      first DW_MACINFO_start_file can still be associated to the base file.  */
24758
24759   mac_ptr = section->buffer + offset;
24760   mac_end = section->buffer + section->size;
24761
24762   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24763                                       &offset_size, section_is_gnu);
24764   if (mac_ptr == NULL)
24765     {
24766       /* We already issued a complaint.  */
24767       return;
24768     }
24769
24770   do
24771     {
24772       /* Do we at least have room for a macinfo type byte?  */
24773       if (mac_ptr >= mac_end)
24774         {
24775           /* Complaint is printed during the second pass as GDB will probably
24776              stop the first pass earlier upon finding
24777              DW_MACINFO_start_file.  */
24778           break;
24779         }
24780
24781       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24782       mac_ptr++;
24783
24784       /* Note that we rely on the fact that the corresponding GNU and
24785          DWARF constants are the same.  */
24786       DIAGNOSTIC_PUSH
24787       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24788       switch (macinfo_type)
24789         {
24790           /* A zero macinfo type indicates the end of the macro
24791              information.  */
24792         case 0:
24793           break;
24794
24795         case DW_MACRO_define:
24796         case DW_MACRO_undef:
24797           /* Only skip the data by MAC_PTR.  */
24798           {
24799             unsigned int bytes_read;
24800
24801             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24802             mac_ptr += bytes_read;
24803             read_direct_string (abfd, mac_ptr, &bytes_read);
24804             mac_ptr += bytes_read;
24805           }
24806           break;
24807
24808         case DW_MACRO_start_file:
24809           {
24810             unsigned int bytes_read;
24811             int line, file;
24812
24813             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24814             mac_ptr += bytes_read;
24815             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24816             mac_ptr += bytes_read;
24817
24818             current_file = macro_start_file (cu, file, line, current_file, lh);
24819           }
24820           break;
24821
24822         case DW_MACRO_end_file:
24823           /* No data to skip by MAC_PTR.  */
24824           break;
24825
24826         case DW_MACRO_define_strp:
24827         case DW_MACRO_undef_strp:
24828         case DW_MACRO_define_sup:
24829         case DW_MACRO_undef_sup:
24830           {
24831             unsigned int bytes_read;
24832
24833             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24834             mac_ptr += bytes_read;
24835             mac_ptr += offset_size;
24836           }
24837           break;
24838
24839         case DW_MACRO_import:
24840         case DW_MACRO_import_sup:
24841           /* Note that, according to the spec, a transparent include
24842              chain cannot call DW_MACRO_start_file.  So, we can just
24843              skip this opcode.  */
24844           mac_ptr += offset_size;
24845           break;
24846
24847         case DW_MACINFO_vendor_ext:
24848           /* Only skip the data by MAC_PTR.  */
24849           if (!section_is_gnu)
24850             {
24851               unsigned int bytes_read;
24852
24853               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24854               mac_ptr += bytes_read;
24855               read_direct_string (abfd, mac_ptr, &bytes_read);
24856               mac_ptr += bytes_read;
24857             }
24858           /* FALLTHROUGH */
24859
24860         default:
24861           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24862                                          mac_ptr, mac_end, abfd, offset_size,
24863                                          section);
24864           if (mac_ptr == NULL)
24865             return;
24866           break;
24867         }
24868       DIAGNOSTIC_POP
24869     } while (macinfo_type != 0 && current_file == NULL);
24870
24871   /* Second pass: Process all entries.
24872
24873      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24874      command-line macro definitions/undefinitions.  This flag is unset when we
24875      reach the first DW_MACINFO_start_file entry.  */
24876
24877   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24878                                            htab_eq_pointer,
24879                                            NULL, xcalloc, xfree));
24880   mac_ptr = section->buffer + offset;
24881   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24882   *slot = (void *) mac_ptr;
24883   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24884                             current_file, lh, section,
24885                             section_is_gnu, 0, offset_size,
24886                             include_hash.get ());
24887 }
24888
24889 /* Check if the attribute's form is a DW_FORM_block*
24890    if so return true else false.  */
24891
24892 static int
24893 attr_form_is_block (const struct attribute *attr)
24894 {
24895   return (attr == NULL ? 0 :
24896       attr->form == DW_FORM_block1
24897       || attr->form == DW_FORM_block2
24898       || attr->form == DW_FORM_block4
24899       || attr->form == DW_FORM_block
24900       || attr->form == DW_FORM_exprloc);
24901 }
24902
24903 /* Return non-zero if ATTR's value is a section offset --- classes
24904    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24905    You may use DW_UNSND (attr) to retrieve such offsets.
24906
24907    Section 7.5.4, "Attribute Encodings", explains that no attribute
24908    may have a value that belongs to more than one of these classes; it
24909    would be ambiguous if we did, because we use the same forms for all
24910    of them.  */
24911
24912 static int
24913 attr_form_is_section_offset (const struct attribute *attr)
24914 {
24915   return (attr->form == DW_FORM_data4
24916           || attr->form == DW_FORM_data8
24917           || attr->form == DW_FORM_sec_offset);
24918 }
24919
24920 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24921    zero otherwise.  When this function returns true, you can apply
24922    dwarf2_get_attr_constant_value to it.
24923
24924    However, note that for some attributes you must check
24925    attr_form_is_section_offset before using this test.  DW_FORM_data4
24926    and DW_FORM_data8 are members of both the constant class, and of
24927    the classes that contain offsets into other debug sections
24928    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24929    that, if an attribute's can be either a constant or one of the
24930    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24931    taken as section offsets, not constants.
24932
24933    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24934    cannot handle that.  */
24935
24936 static int
24937 attr_form_is_constant (const struct attribute *attr)
24938 {
24939   switch (attr->form)
24940     {
24941     case DW_FORM_sdata:
24942     case DW_FORM_udata:
24943     case DW_FORM_data1:
24944     case DW_FORM_data2:
24945     case DW_FORM_data4:
24946     case DW_FORM_data8:
24947     case DW_FORM_implicit_const:
24948       return 1;
24949     default:
24950       return 0;
24951     }
24952 }
24953
24954
24955 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24956    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24957
24958 static int
24959 attr_form_is_ref (const struct attribute *attr)
24960 {
24961   switch (attr->form)
24962     {
24963     case DW_FORM_ref_addr:
24964     case DW_FORM_ref1:
24965     case DW_FORM_ref2:
24966     case DW_FORM_ref4:
24967     case DW_FORM_ref8:
24968     case DW_FORM_ref_udata:
24969     case DW_FORM_GNU_ref_alt:
24970       return 1;
24971     default:
24972       return 0;
24973     }
24974 }
24975
24976 /* Return the .debug_loc section to use for CU.
24977    For DWO files use .debug_loc.dwo.  */
24978
24979 static struct dwarf2_section_info *
24980 cu_debug_loc_section (struct dwarf2_cu *cu)
24981 {
24982   struct dwarf2_per_objfile *dwarf2_per_objfile
24983     = cu->per_cu->dwarf2_per_objfile;
24984
24985   if (cu->dwo_unit)
24986     {
24987       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24988       
24989       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24990     }
24991   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24992                                   : &dwarf2_per_objfile->loc);
24993 }
24994
24995 /* A helper function that fills in a dwarf2_loclist_baton.  */
24996
24997 static void
24998 fill_in_loclist_baton (struct dwarf2_cu *cu,
24999                        struct dwarf2_loclist_baton *baton,
25000                        const struct attribute *attr)
25001 {
25002   struct dwarf2_per_objfile *dwarf2_per_objfile
25003     = cu->per_cu->dwarf2_per_objfile;
25004   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25005
25006   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
25007
25008   baton->per_cu = cu->per_cu;
25009   gdb_assert (baton->per_cu);
25010   /* We don't know how long the location list is, but make sure we
25011      don't run off the edge of the section.  */
25012   baton->size = section->size - DW_UNSND (attr);
25013   baton->data = section->buffer + DW_UNSND (attr);
25014   baton->base_address = cu->base_address;
25015   baton->from_dwo = cu->dwo_unit != NULL;
25016 }
25017
25018 static void
25019 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
25020                              struct dwarf2_cu *cu, int is_block)
25021 {
25022   struct dwarf2_per_objfile *dwarf2_per_objfile
25023     = cu->per_cu->dwarf2_per_objfile;
25024   struct objfile *objfile = dwarf2_per_objfile->objfile;
25025   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
25026
25027   if (attr_form_is_section_offset (attr)
25028       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
25029          the section.  If so, fall through to the complaint in the
25030          other branch.  */
25031       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
25032     {
25033       struct dwarf2_loclist_baton *baton;
25034
25035       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
25036
25037       fill_in_loclist_baton (cu, baton, attr);
25038
25039       if (cu->base_known == 0)
25040         complaint (_("Location list used without "
25041                      "specifying the CU base address."));
25042
25043       SYMBOL_ACLASS_INDEX (sym) = (is_block
25044                                    ? dwarf2_loclist_block_index
25045                                    : dwarf2_loclist_index);
25046       SYMBOL_LOCATION_BATON (sym) = baton;
25047     }
25048   else
25049     {
25050       struct dwarf2_locexpr_baton *baton;
25051
25052       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
25053       baton->per_cu = cu->per_cu;
25054       gdb_assert (baton->per_cu);
25055
25056       if (attr_form_is_block (attr))
25057         {
25058           /* Note that we're just copying the block's data pointer
25059              here, not the actual data.  We're still pointing into the
25060              info_buffer for SYM's objfile; right now we never release
25061              that buffer, but when we do clean up properly this may
25062              need to change.  */
25063           baton->size = DW_BLOCK (attr)->size;
25064           baton->data = DW_BLOCK (attr)->data;
25065         }
25066       else
25067         {
25068           dwarf2_invalid_attrib_class_complaint ("location description",
25069                                                  SYMBOL_NATURAL_NAME (sym));
25070           baton->size = 0;
25071         }
25072
25073       SYMBOL_ACLASS_INDEX (sym) = (is_block
25074                                    ? dwarf2_locexpr_block_index
25075                                    : dwarf2_locexpr_index);
25076       SYMBOL_LOCATION_BATON (sym) = baton;
25077     }
25078 }
25079
25080 /* Return the OBJFILE associated with the compilation unit CU.  If CU
25081    came from a separate debuginfo file, then the master objfile is
25082    returned.  */
25083
25084 struct objfile *
25085 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
25086 {
25087   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25088
25089   /* Return the master objfile, so that we can report and look up the
25090      correct file containing this variable.  */
25091   if (objfile->separate_debug_objfile_backlink)
25092     objfile = objfile->separate_debug_objfile_backlink;
25093
25094   return objfile;
25095 }
25096
25097 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
25098    (CU_HEADERP is unused in such case) or prepare a temporary copy at
25099    CU_HEADERP first.  */
25100
25101 static const struct comp_unit_head *
25102 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
25103                        struct dwarf2_per_cu_data *per_cu)
25104 {
25105   const gdb_byte *info_ptr;
25106
25107   if (per_cu->cu)
25108     return &per_cu->cu->header;
25109
25110   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25111
25112   memset (cu_headerp, 0, sizeof (*cu_headerp));
25113   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25114                        rcuh_kind::COMPILE);
25115
25116   return cu_headerp;
25117 }
25118
25119 /* Return the address size given in the compilation unit header for CU.  */
25120
25121 int
25122 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25123 {
25124   struct comp_unit_head cu_header_local;
25125   const struct comp_unit_head *cu_headerp;
25126
25127   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25128
25129   return cu_headerp->addr_size;
25130 }
25131
25132 /* Return the offset size given in the compilation unit header for CU.  */
25133
25134 int
25135 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25136 {
25137   struct comp_unit_head cu_header_local;
25138   const struct comp_unit_head *cu_headerp;
25139
25140   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25141
25142   return cu_headerp->offset_size;
25143 }
25144
25145 /* See its dwarf2loc.h declaration.  */
25146
25147 int
25148 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25149 {
25150   struct comp_unit_head cu_header_local;
25151   const struct comp_unit_head *cu_headerp;
25152
25153   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25154
25155   if (cu_headerp->version == 2)
25156     return cu_headerp->addr_size;
25157   else
25158     return cu_headerp->offset_size;
25159 }
25160
25161 /* Return the text offset of the CU.  The returned offset comes from
25162    this CU's objfile.  If this objfile came from a separate debuginfo
25163    file, then the offset may be different from the corresponding
25164    offset in the parent objfile.  */
25165
25166 CORE_ADDR
25167 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25168 {
25169   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25170
25171   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25172 }
25173
25174 /* Return DWARF version number of PER_CU.  */
25175
25176 short
25177 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25178 {
25179   return per_cu->dwarf_version;
25180 }
25181
25182 /* Locate the .debug_info compilation unit from CU's objfile which contains
25183    the DIE at OFFSET.  Raises an error on failure.  */
25184
25185 static struct dwarf2_per_cu_data *
25186 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25187                                   unsigned int offset_in_dwz,
25188                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25189 {
25190   struct dwarf2_per_cu_data *this_cu;
25191   int low, high;
25192
25193   low = 0;
25194   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25195   while (high > low)
25196     {
25197       struct dwarf2_per_cu_data *mid_cu;
25198       int mid = low + (high - low) / 2;
25199
25200       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25201       if (mid_cu->is_dwz > offset_in_dwz
25202           || (mid_cu->is_dwz == offset_in_dwz
25203               && mid_cu->sect_off + mid_cu->length >= sect_off))
25204         high = mid;
25205       else
25206         low = mid + 1;
25207     }
25208   gdb_assert (low == high);
25209   this_cu = dwarf2_per_objfile->all_comp_units[low];
25210   if (this_cu->is_dwz != offset_in_dwz || this_cu->sect_off > sect_off)
25211     {
25212       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25213         error (_("Dwarf Error: could not find partial DIE containing "
25214                "offset %s [in module %s]"),
25215                sect_offset_str (sect_off),
25216                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25217
25218       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25219                   <= sect_off);
25220       return dwarf2_per_objfile->all_comp_units[low-1];
25221     }
25222   else
25223     {
25224       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25225           && sect_off >= this_cu->sect_off + this_cu->length)
25226         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25227       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25228       return this_cu;
25229     }
25230 }
25231
25232 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25233
25234 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25235   : per_cu (per_cu_),
25236     mark (false),
25237     has_loclist (false),
25238     checked_producer (false),
25239     producer_is_gxx_lt_4_6 (false),
25240     producer_is_gcc_lt_4_3 (false),
25241     producer_is_icc (false),
25242     producer_is_icc_lt_14 (false),
25243     producer_is_codewarrior (false),
25244     processing_has_namespace_info (false)
25245 {
25246   per_cu->cu = this;
25247 }
25248
25249 /* Destroy a dwarf2_cu.  */
25250
25251 dwarf2_cu::~dwarf2_cu ()
25252 {
25253   per_cu->cu = NULL;
25254 }
25255
25256 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25257
25258 static void
25259 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25260                        enum language pretend_language)
25261 {
25262   struct attribute *attr;
25263
25264   /* Set the language we're debugging.  */
25265   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25266   if (attr)
25267     set_cu_language (DW_UNSND (attr), cu);
25268   else
25269     {
25270       cu->language = pretend_language;
25271       cu->language_defn = language_def (cu->language);
25272     }
25273
25274   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25275 }
25276
25277 /* Increase the age counter on each cached compilation unit, and free
25278    any that are too old.  */
25279
25280 static void
25281 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25282 {
25283   struct dwarf2_per_cu_data *per_cu, **last_chain;
25284
25285   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25286   per_cu = dwarf2_per_objfile->read_in_chain;
25287   while (per_cu != NULL)
25288     {
25289       per_cu->cu->last_used ++;
25290       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25291         dwarf2_mark (per_cu->cu);
25292       per_cu = per_cu->cu->read_in_chain;
25293     }
25294
25295   per_cu = dwarf2_per_objfile->read_in_chain;
25296   last_chain = &dwarf2_per_objfile->read_in_chain;
25297   while (per_cu != NULL)
25298     {
25299       struct dwarf2_per_cu_data *next_cu;
25300
25301       next_cu = per_cu->cu->read_in_chain;
25302
25303       if (!per_cu->cu->mark)
25304         {
25305           delete per_cu->cu;
25306           *last_chain = next_cu;
25307         }
25308       else
25309         last_chain = &per_cu->cu->read_in_chain;
25310
25311       per_cu = next_cu;
25312     }
25313 }
25314
25315 /* Remove a single compilation unit from the cache.  */
25316
25317 static void
25318 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25319 {
25320   struct dwarf2_per_cu_data *per_cu, **last_chain;
25321   struct dwarf2_per_objfile *dwarf2_per_objfile
25322     = target_per_cu->dwarf2_per_objfile;
25323
25324   per_cu = dwarf2_per_objfile->read_in_chain;
25325   last_chain = &dwarf2_per_objfile->read_in_chain;
25326   while (per_cu != NULL)
25327     {
25328       struct dwarf2_per_cu_data *next_cu;
25329
25330       next_cu = per_cu->cu->read_in_chain;
25331
25332       if (per_cu == target_per_cu)
25333         {
25334           delete per_cu->cu;
25335           per_cu->cu = NULL;
25336           *last_chain = next_cu;
25337           break;
25338         }
25339       else
25340         last_chain = &per_cu->cu->read_in_chain;
25341
25342       per_cu = next_cu;
25343     }
25344 }
25345
25346 /* Cleanup function for the dwarf2_per_objfile data.  */
25347
25348 static void
25349 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25350 {
25351   struct dwarf2_per_objfile *dwarf2_per_objfile
25352     = static_cast<struct dwarf2_per_objfile *> (datum);
25353
25354   delete dwarf2_per_objfile;
25355 }
25356
25357 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25358    We store these in a hash table separate from the DIEs, and preserve them
25359    when the DIEs are flushed out of cache.
25360
25361    The CU "per_cu" pointer is needed because offset alone is not enough to
25362    uniquely identify the type.  A file may have multiple .debug_types sections,
25363    or the type may come from a DWO file.  Furthermore, while it's more logical
25364    to use per_cu->section+offset, with Fission the section with the data is in
25365    the DWO file but we don't know that section at the point we need it.
25366    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25367    because we can enter the lookup routine, get_die_type_at_offset, from
25368    outside this file, and thus won't necessarily have PER_CU->cu.
25369    Fortunately, PER_CU is stable for the life of the objfile.  */
25370
25371 struct dwarf2_per_cu_offset_and_type
25372 {
25373   const struct dwarf2_per_cu_data *per_cu;
25374   sect_offset sect_off;
25375   struct type *type;
25376 };
25377
25378 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25379
25380 static hashval_t
25381 per_cu_offset_and_type_hash (const void *item)
25382 {
25383   const struct dwarf2_per_cu_offset_and_type *ofs
25384     = (const struct dwarf2_per_cu_offset_and_type *) item;
25385
25386   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25387 }
25388
25389 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25390
25391 static int
25392 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25393 {
25394   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25395     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25396   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25397     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25398
25399   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25400           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25401 }
25402
25403 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25404    table if necessary.  For convenience, return TYPE.
25405
25406    The DIEs reading must have careful ordering to:
25407     * Not cause infite loops trying to read in DIEs as a prerequisite for
25408       reading current DIE.
25409     * Not trying to dereference contents of still incompletely read in types
25410       while reading in other DIEs.
25411     * Enable referencing still incompletely read in types just by a pointer to
25412       the type without accessing its fields.
25413
25414    Therefore caller should follow these rules:
25415      * Try to fetch any prerequisite types we may need to build this DIE type
25416        before building the type and calling set_die_type.
25417      * After building type call set_die_type for current DIE as soon as
25418        possible before fetching more types to complete the current type.
25419      * Make the type as complete as possible before fetching more types.  */
25420
25421 static struct type *
25422 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25423 {
25424   struct dwarf2_per_objfile *dwarf2_per_objfile
25425     = cu->per_cu->dwarf2_per_objfile;
25426   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25427   struct objfile *objfile = dwarf2_per_objfile->objfile;
25428   struct attribute *attr;
25429   struct dynamic_prop prop;
25430
25431   /* For Ada types, make sure that the gnat-specific data is always
25432      initialized (if not already set).  There are a few types where
25433      we should not be doing so, because the type-specific area is
25434      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25435      where the type-specific area is used to store the floatformat).
25436      But this is not a problem, because the gnat-specific information
25437      is actually not needed for these types.  */
25438   if (need_gnat_info (cu)
25439       && TYPE_CODE (type) != TYPE_CODE_FUNC
25440       && TYPE_CODE (type) != TYPE_CODE_FLT
25441       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25442       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25443       && TYPE_CODE (type) != TYPE_CODE_METHOD
25444       && !HAVE_GNAT_AUX_INFO (type))
25445     INIT_GNAT_SPECIFIC (type);
25446
25447   /* Read DW_AT_allocated and set in type.  */
25448   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25449   if (attr_form_is_block (attr))
25450     {
25451       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25452         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25453     }
25454   else if (attr != NULL)
25455     {
25456       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25457                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25458                  sect_offset_str (die->sect_off));
25459     }
25460
25461   /* Read DW_AT_associated and set in type.  */
25462   attr = dwarf2_attr (die, DW_AT_associated, cu);
25463   if (attr_form_is_block (attr))
25464     {
25465       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25466         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25467     }
25468   else if (attr != NULL)
25469     {
25470       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25471                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25472                  sect_offset_str (die->sect_off));
25473     }
25474
25475   /* Read DW_AT_data_location and set in type.  */
25476   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25477   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25478     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25479
25480   if (dwarf2_per_objfile->die_type_hash == NULL)
25481     {
25482       dwarf2_per_objfile->die_type_hash =
25483         htab_create_alloc_ex (127,
25484                               per_cu_offset_and_type_hash,
25485                               per_cu_offset_and_type_eq,
25486                               NULL,
25487                               &objfile->objfile_obstack,
25488                               hashtab_obstack_allocate,
25489                               dummy_obstack_deallocate);
25490     }
25491
25492   ofs.per_cu = cu->per_cu;
25493   ofs.sect_off = die->sect_off;
25494   ofs.type = type;
25495   slot = (struct dwarf2_per_cu_offset_and_type **)
25496     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25497   if (*slot)
25498     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25499                sect_offset_str (die->sect_off));
25500   *slot = XOBNEW (&objfile->objfile_obstack,
25501                   struct dwarf2_per_cu_offset_and_type);
25502   **slot = ofs;
25503   return type;
25504 }
25505
25506 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25507    or return NULL if the die does not have a saved type.  */
25508
25509 static struct type *
25510 get_die_type_at_offset (sect_offset sect_off,
25511                         struct dwarf2_per_cu_data *per_cu)
25512 {
25513   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25514   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25515
25516   if (dwarf2_per_objfile->die_type_hash == NULL)
25517     return NULL;
25518
25519   ofs.per_cu = per_cu;
25520   ofs.sect_off = sect_off;
25521   slot = ((struct dwarf2_per_cu_offset_and_type *)
25522           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25523   if (slot)
25524     return slot->type;
25525   else
25526     return NULL;
25527 }
25528
25529 /* Look up the type for DIE in CU in die_type_hash,
25530    or return NULL if DIE does not have a saved type.  */
25531
25532 static struct type *
25533 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25534 {
25535   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25536 }
25537
25538 /* Add a dependence relationship from CU to REF_PER_CU.  */
25539
25540 static void
25541 dwarf2_add_dependence (struct dwarf2_cu *cu,
25542                        struct dwarf2_per_cu_data *ref_per_cu)
25543 {
25544   void **slot;
25545
25546   if (cu->dependencies == NULL)
25547     cu->dependencies
25548       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25549                               NULL, &cu->comp_unit_obstack,
25550                               hashtab_obstack_allocate,
25551                               dummy_obstack_deallocate);
25552
25553   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25554   if (*slot == NULL)
25555     *slot = ref_per_cu;
25556 }
25557
25558 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25559    Set the mark field in every compilation unit in the
25560    cache that we must keep because we are keeping CU.  */
25561
25562 static int
25563 dwarf2_mark_helper (void **slot, void *data)
25564 {
25565   struct dwarf2_per_cu_data *per_cu;
25566
25567   per_cu = (struct dwarf2_per_cu_data *) *slot;
25568
25569   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25570      reading of the chain.  As such dependencies remain valid it is not much
25571      useful to track and undo them during QUIT cleanups.  */
25572   if (per_cu->cu == NULL)
25573     return 1;
25574
25575   if (per_cu->cu->mark)
25576     return 1;
25577   per_cu->cu->mark = true;
25578
25579   if (per_cu->cu->dependencies != NULL)
25580     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25581
25582   return 1;
25583 }
25584
25585 /* Set the mark field in CU and in every other compilation unit in the
25586    cache that we must keep because we are keeping CU.  */
25587
25588 static void
25589 dwarf2_mark (struct dwarf2_cu *cu)
25590 {
25591   if (cu->mark)
25592     return;
25593   cu->mark = true;
25594   if (cu->dependencies != NULL)
25595     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25596 }
25597
25598 static void
25599 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25600 {
25601   while (per_cu)
25602     {
25603       per_cu->cu->mark = false;
25604       per_cu = per_cu->cu->read_in_chain;
25605     }
25606 }
25607
25608 /* Trivial hash function for partial_die_info: the hash value of a DIE
25609    is its offset in .debug_info for this objfile.  */
25610
25611 static hashval_t
25612 partial_die_hash (const void *item)
25613 {
25614   const struct partial_die_info *part_die
25615     = (const struct partial_die_info *) item;
25616
25617   return to_underlying (part_die->sect_off);
25618 }
25619
25620 /* Trivial comparison function for partial_die_info structures: two DIEs
25621    are equal if they have the same offset.  */
25622
25623 static int
25624 partial_die_eq (const void *item_lhs, const void *item_rhs)
25625 {
25626   const struct partial_die_info *part_die_lhs
25627     = (const struct partial_die_info *) item_lhs;
25628   const struct partial_die_info *part_die_rhs
25629     = (const struct partial_die_info *) item_rhs;
25630
25631   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25632 }
25633
25634 struct cmd_list_element *set_dwarf_cmdlist;
25635 struct cmd_list_element *show_dwarf_cmdlist;
25636
25637 static void
25638 set_dwarf_cmd (const char *args, int from_tty)
25639 {
25640   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25641              gdb_stdout);
25642 }
25643
25644 static void
25645 show_dwarf_cmd (const char *args, int from_tty)
25646 {
25647   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25648 }
25649
25650 int dwarf_always_disassemble;
25651
25652 static void
25653 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25654                                struct cmd_list_element *c, const char *value)
25655 {
25656   fprintf_filtered (file,
25657                     _("Whether to always disassemble "
25658                       "DWARF expressions is %s.\n"),
25659                     value);
25660 }
25661
25662 static void
25663 show_check_physname (struct ui_file *file, int from_tty,
25664                      struct cmd_list_element *c, const char *value)
25665 {
25666   fprintf_filtered (file,
25667                     _("Whether to check \"physname\" is %s.\n"),
25668                     value);
25669 }
25670
25671 void
25672 _initialize_dwarf2_read (void)
25673 {
25674   dwarf2_objfile_data_key
25675     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25676
25677   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25678 Set DWARF specific variables.\n\
25679 Configure DWARF variables such as the cache size"),
25680                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25681                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25682
25683   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25684 Show DWARF specific variables\n\
25685 Show DWARF variables such as the cache size"),
25686                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25687                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25688
25689   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25690                             &dwarf_max_cache_age, _("\
25691 Set the upper bound on the age of cached DWARF compilation units."), _("\
25692 Show the upper bound on the age of cached DWARF compilation units."), _("\
25693 A higher limit means that cached compilation units will be stored\n\
25694 in memory longer, and more total memory will be used.  Zero disables\n\
25695 caching, which can slow down startup."),
25696                             NULL,
25697                             show_dwarf_max_cache_age,
25698                             &set_dwarf_cmdlist,
25699                             &show_dwarf_cmdlist);
25700
25701   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25702                            &dwarf_always_disassemble, _("\
25703 Set whether `info address' always disassembles DWARF expressions."), _("\
25704 Show whether `info address' always disassembles DWARF expressions."), _("\
25705 When enabled, DWARF expressions are always printed in an assembly-like\n\
25706 syntax.  When disabled, expressions will be printed in a more\n\
25707 conversational style, when possible."),
25708                            NULL,
25709                            show_dwarf_always_disassemble,
25710                            &set_dwarf_cmdlist,
25711                            &show_dwarf_cmdlist);
25712
25713   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25714 Set debugging of the DWARF reader."), _("\
25715 Show debugging of the DWARF reader."), _("\
25716 When enabled (non-zero), debugging messages are printed during DWARF\n\
25717 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25718 information.  A value greater than 1 provides more verbose information."),
25719                             NULL,
25720                             NULL,
25721                             &setdebuglist, &showdebuglist);
25722
25723   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25724 Set debugging of the DWARF DIE reader."), _("\
25725 Show debugging of the DWARF DIE reader."), _("\
25726 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25727 The value is the maximum depth to print."),
25728                              NULL,
25729                              NULL,
25730                              &setdebuglist, &showdebuglist);
25731
25732   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25733 Set debugging of the dwarf line reader."), _("\
25734 Show debugging of the dwarf line reader."), _("\
25735 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25736 A value of 1 (one) provides basic information.\n\
25737 A value greater than 1 provides more verbose information."),
25738                              NULL,
25739                              NULL,
25740                              &setdebuglist, &showdebuglist);
25741
25742   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25743 Set cross-checking of \"physname\" code against demangler."), _("\
25744 Show cross-checking of \"physname\" code against demangler."), _("\
25745 When enabled, GDB's internal \"physname\" code is checked against\n\
25746 the demangler."),
25747                            NULL, show_check_physname,
25748                            &setdebuglist, &showdebuglist);
25749
25750   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25751                            no_class, &use_deprecated_index_sections, _("\
25752 Set whether to use deprecated gdb_index sections."), _("\
25753 Show whether to use deprecated gdb_index sections."), _("\
25754 When enabled, deprecated .gdb_index sections are used anyway.\n\
25755 Normally they are ignored either because of a missing feature or\n\
25756 performance issue.\n\
25757 Warning: This option must be enabled before gdb reads the file."),
25758                            NULL,
25759                            NULL,
25760                            &setlist, &showlist);
25761
25762   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25763                                                         &dwarf2_locexpr_funcs);
25764   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25765                                                         &dwarf2_loclist_funcs);
25766
25767   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25768                                         &dwarf2_block_frame_base_locexpr_funcs);
25769   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25770                                         &dwarf2_block_frame_base_loclist_funcs);
25771
25772 #if GDB_SELF_TEST
25773   selftests::register_test ("dw2_expand_symtabs_matching",
25774                             selftests::dw2_expand_symtabs_matching::run_test);
25775 #endif
25776 }