d66dfeaf2d2cbfeb1d795bd2f0568b7b33e544ea
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2018 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 "bcache.h"
50 #include "dwarf2expr.h"
51 #include "dwarf2loc.h"
52 #include "cp-support.h"
53 #include "hashtab.h"
54 #include "command.h"
55 #include "gdbcmd.h"
56 #include "block.h"
57 #include "addrmap.h"
58 #include "typeprint.h"
59 #include "psympriv.h"
60 #include <sys/stat.h>
61 #include "completer.h"
62 #include "vec.h"
63 #include "c-lang.h"
64 #include "go-lang.h"
65 #include "valprint.h"
66 #include "gdbcore.h" /* for gnutarget */
67 #include "gdb/gdb-index.h"
68 #include <ctype.h>
69 #include "gdb_bfd.h"
70 #include "f-lang.h"
71 #include "source.h"
72 #include "filestuff.h"
73 #include "build-id.h"
74 #include "namespace.h"
75 #include "common/gdb_unlinker.h"
76 #include "common/function-view.h"
77 #include "common/gdb_optional.h"
78 #include "common/underlying.h"
79 #include "common/byte-vector.h"
80 #include "common/hash_enum.h"
81 #include "filename-seen-cache.h"
82 #include "producer.h"
83 #include <fcntl.h>
84 #include <sys/types.h>
85 #include <algorithm>
86 #include <unordered_set>
87 #include <unordered_map>
88 #include "selftest.h"
89 #include <cmath>
90 #include <set>
91 #include <forward_list>
92 #include "rust-lang.h"
93 #include "common/pathstuff.h"
94
95 /* When == 1, print basic high level tracing messages.
96    When > 1, be more verbose.
97    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
98 static unsigned int dwarf_read_debug = 0;
99
100 /* When non-zero, dump DIEs after they are read in.  */
101 static unsigned int dwarf_die_debug = 0;
102
103 /* When non-zero, dump line number entries as they are read in.  */
104 static unsigned int dwarf_line_debug = 0;
105
106 /* When non-zero, cross-check physname against demangler.  */
107 static int check_physname = 0;
108
109 /* When non-zero, do not reject deprecated .gdb_index sections.  */
110 static int use_deprecated_index_sections = 0;
111
112 static const struct objfile_data *dwarf2_objfile_data_key;
113
114 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
115
116 static int dwarf2_locexpr_index;
117 static int dwarf2_loclist_index;
118 static int dwarf2_locexpr_block_index;
119 static int dwarf2_loclist_block_index;
120
121 /* An index into a (C++) symbol name component in a symbol name as
122    recorded in the mapped_index's symbol table.  For each C++ symbol
123    in the symbol table, we record one entry for the start of each
124    component in the symbol in a table of name components, and then
125    sort the table, in order to be able to binary search symbol names,
126    ignoring leading namespaces, both completion and regular look up.
127    For example, for symbol "A::B::C", we'll have an entry that points
128    to "A::B::C", another that points to "B::C", and another for "C".
129    Note that function symbols in GDB index have no parameter
130    information, just the function/method names.  You can convert a
131    name_component to a "const char *" using the
132    'mapped_index::symbol_name_at(offset_type)' method.  */
133
134 struct name_component
135 {
136   /* Offset in the symbol name where the component starts.  Stored as
137      a (32-bit) offset instead of a pointer to save memory and improve
138      locality on 64-bit architectures.  */
139   offset_type name_offset;
140
141   /* The symbol's index in the symbol and constant pool tables of a
142      mapped_index.  */
143   offset_type idx;
144 };
145
146 /* Base class containing bits shared by both .gdb_index and
147    .debug_name indexes.  */
148
149 struct mapped_index_base
150 {
151   mapped_index_base () = default;
152   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
153
154   /* The name_component table (a sorted vector).  See name_component's
155      description above.  */
156   std::vector<name_component> name_components;
157
158   /* How NAME_COMPONENTS is sorted.  */
159   enum case_sensitivity name_components_casing;
160
161   /* Return the number of names in the symbol table.  */
162   virtual size_t symbol_name_count () const = 0;
163
164   /* Get the name of the symbol at IDX in the symbol table.  */
165   virtual const char *symbol_name_at (offset_type idx) const = 0;
166
167   /* Return whether the name at IDX in the symbol table should be
168      ignored.  */
169   virtual bool symbol_name_slot_invalid (offset_type idx) const
170   {
171     return false;
172   }
173
174   /* Build the symbol name component sorted vector, if we haven't
175      yet.  */
176   void build_name_components ();
177
178   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
179      possible matches for LN_NO_PARAMS in the name component
180      vector.  */
181   std::pair<std::vector<name_component>::const_iterator,
182             std::vector<name_component>::const_iterator>
183     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
184
185   /* Prevent deleting/destroying via a base class pointer.  */
186 protected:
187   ~mapped_index_base() = default;
188 };
189
190 /* A description of the mapped index.  The file format is described in
191    a comment by the code that writes the index.  */
192 struct mapped_index final : public mapped_index_base
193 {
194   /* A slot/bucket in the symbol table hash.  */
195   struct symbol_table_slot
196   {
197     const offset_type name;
198     const offset_type vec;
199   };
200
201   /* Index data format version.  */
202   int version = 0;
203
204   /* The address table data.  */
205   gdb::array_view<const gdb_byte> address_table;
206
207   /* The symbol table, implemented as a hash table.  */
208   gdb::array_view<symbol_table_slot> symbol_table;
209
210   /* A pointer to the constant pool.  */
211   const char *constant_pool = nullptr;
212
213   bool symbol_name_slot_invalid (offset_type idx) const override
214   {
215     const auto &bucket = this->symbol_table[idx];
216     return bucket.name == 0 && bucket.vec;
217   }
218
219   /* Convenience method to get at the name of the symbol at IDX in the
220      symbol table.  */
221   const char *symbol_name_at (offset_type idx) const override
222   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
223
224   size_t symbol_name_count () const override
225   { return this->symbol_table.size (); }
226 };
227
228 /* A description of the mapped .debug_names.
229    Uninitialized map has CU_COUNT 0.  */
230 struct mapped_debug_names final : public mapped_index_base
231 {
232   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
233   : dwarf2_per_objfile (dwarf2_per_objfile_)
234   {}
235
236   struct dwarf2_per_objfile *dwarf2_per_objfile;
237   bfd_endian dwarf5_byte_order;
238   bool dwarf5_is_dwarf64;
239   bool augmentation_is_gdb;
240   uint8_t offset_size;
241   uint32_t cu_count = 0;
242   uint32_t tu_count, bucket_count, name_count;
243   const gdb_byte *cu_table_reordered, *tu_table_reordered;
244   const uint32_t *bucket_table_reordered, *hash_table_reordered;
245   const gdb_byte *name_table_string_offs_reordered;
246   const gdb_byte *name_table_entry_offs_reordered;
247   const gdb_byte *entry_pool;
248
249   struct index_val
250   {
251     ULONGEST dwarf_tag;
252     struct attr
253     {
254       /* Attribute name DW_IDX_*.  */
255       ULONGEST dw_idx;
256
257       /* Attribute form DW_FORM_*.  */
258       ULONGEST form;
259
260       /* Value if FORM is DW_FORM_implicit_const.  */
261       LONGEST implicit_const;
262     };
263     std::vector<attr> attr_vec;
264   };
265
266   std::unordered_map<ULONGEST, index_val> abbrev_map;
267
268   const char *namei_to_name (uint32_t namei) const;
269
270   /* Implementation of the mapped_index_base virtual interface, for
271      the name_components cache.  */
272
273   const char *symbol_name_at (offset_type idx) const override
274   { return namei_to_name (idx); }
275
276   size_t symbol_name_count () const override
277   { return this->name_count; }
278 };
279
280 /* See dwarf2read.h.  */
281
282 dwarf2_per_objfile *
283 get_dwarf2_per_objfile (struct objfile *objfile)
284 {
285   return ((struct dwarf2_per_objfile *)
286           objfile_data (objfile, dwarf2_objfile_data_key));
287 }
288
289 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
290
291 void
292 set_dwarf2_per_objfile (struct objfile *objfile,
293                         struct dwarf2_per_objfile *dwarf2_per_objfile)
294 {
295   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
296   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
297 }
298
299 /* Default names of the debugging sections.  */
300
301 /* Note that if the debugging section has been compressed, it might
302    have a name like .zdebug_info.  */
303
304 static const struct dwarf2_debug_sections dwarf2_elf_names =
305 {
306   { ".debug_info", ".zdebug_info" },
307   { ".debug_abbrev", ".zdebug_abbrev" },
308   { ".debug_line", ".zdebug_line" },
309   { ".debug_loc", ".zdebug_loc" },
310   { ".debug_loclists", ".zdebug_loclists" },
311   { ".debug_macinfo", ".zdebug_macinfo" },
312   { ".debug_macro", ".zdebug_macro" },
313   { ".debug_str", ".zdebug_str" },
314   { ".debug_line_str", ".zdebug_line_str" },
315   { ".debug_ranges", ".zdebug_ranges" },
316   { ".debug_rnglists", ".zdebug_rnglists" },
317   { ".debug_types", ".zdebug_types" },
318   { ".debug_addr", ".zdebug_addr" },
319   { ".debug_frame", ".zdebug_frame" },
320   { ".eh_frame", NULL },
321   { ".gdb_index", ".zgdb_index" },
322   { ".debug_names", ".zdebug_names" },
323   { ".debug_aranges", ".zdebug_aranges" },
324   23
325 };
326
327 /* List of DWO/DWP sections.  */
328
329 static const struct dwop_section_names
330 {
331   struct dwarf2_section_names abbrev_dwo;
332   struct dwarf2_section_names info_dwo;
333   struct dwarf2_section_names line_dwo;
334   struct dwarf2_section_names loc_dwo;
335   struct dwarf2_section_names loclists_dwo;
336   struct dwarf2_section_names macinfo_dwo;
337   struct dwarf2_section_names macro_dwo;
338   struct dwarf2_section_names str_dwo;
339   struct dwarf2_section_names str_offsets_dwo;
340   struct dwarf2_section_names types_dwo;
341   struct dwarf2_section_names cu_index;
342   struct dwarf2_section_names tu_index;
343 }
344 dwop_section_names =
345 {
346   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
347   { ".debug_info.dwo", ".zdebug_info.dwo" },
348   { ".debug_line.dwo", ".zdebug_line.dwo" },
349   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
350   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
351   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
352   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
353   { ".debug_str.dwo", ".zdebug_str.dwo" },
354   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
355   { ".debug_types.dwo", ".zdebug_types.dwo" },
356   { ".debug_cu_index", ".zdebug_cu_index" },
357   { ".debug_tu_index", ".zdebug_tu_index" },
358 };
359
360 /* local data types */
361
362 /* The data in a compilation unit header, after target2host
363    translation, looks like this.  */
364 struct comp_unit_head
365 {
366   unsigned int length;
367   short version;
368   unsigned char addr_size;
369   unsigned char signed_addr_p;
370   sect_offset abbrev_sect_off;
371
372   /* Size of file offsets; either 4 or 8.  */
373   unsigned int offset_size;
374
375   /* Size of the length field; either 4 or 12.  */
376   unsigned int initial_length_size;
377
378   enum dwarf_unit_type unit_type;
379
380   /* Offset to the first byte of this compilation unit header in the
381      .debug_info section, for resolving relative reference dies.  */
382   sect_offset sect_off;
383
384   /* Offset to first die in this cu from the start of the cu.
385      This will be the first byte following the compilation unit header.  */
386   cu_offset first_die_cu_offset;
387
388   /* 64-bit signature of this type unit - it is valid only for
389      UNIT_TYPE DW_UT_type.  */
390   ULONGEST signature;
391
392   /* For types, offset in the type's DIE of the type defined by this TU.  */
393   cu_offset type_cu_offset_in_tu;
394 };
395
396 /* Type used for delaying computation of method physnames.
397    See comments for compute_delayed_physnames.  */
398 struct delayed_method_info
399 {
400   /* The type to which the method is attached, i.e., its parent class.  */
401   struct type *type;
402
403   /* The index of the method in the type's function fieldlists.  */
404   int fnfield_index;
405
406   /* The index of the method in the fieldlist.  */
407   int index;
408
409   /* The name of the DIE.  */
410   const char *name;
411
412   /*  The DIE associated with this method.  */
413   struct die_info *die;
414 };
415
416 /* Internal state when decoding a particular compilation unit.  */
417 struct dwarf2_cu
418 {
419   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
420   ~dwarf2_cu ();
421
422   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
423
424   /* The header of the compilation unit.  */
425   struct comp_unit_head header {};
426
427   /* Base address of this compilation unit.  */
428   CORE_ADDR base_address = 0;
429
430   /* Non-zero if base_address has been set.  */
431   int base_known = 0;
432
433   /* The language we are debugging.  */
434   enum language language = language_unknown;
435   const struct language_defn *language_defn = nullptr;
436
437   const char *producer = nullptr;
438
439   /* The symtab builder for this CU.  This is only non-NULL when full
440      symbols are being read.  */
441   std::unique_ptr<buildsym_compunit> builder;
442
443   /* The generic symbol table building routines have separate lists for
444      file scope symbols and all all other scopes (local scopes).  So
445      we need to select the right one to pass to add_symbol_to_list().
446      We do it by keeping a pointer to the correct list in list_in_scope.
447
448      FIXME: The original dwarf code just treated the file scope as the
449      first local scope, and all other local scopes as nested local
450      scopes, and worked fine.  Check to see if we really need to
451      distinguish these in buildsym.c.  */
452   struct pending **list_in_scope = nullptr;
453
454   /* Hash table holding all the loaded partial DIEs
455      with partial_die->offset.SECT_OFF as hash.  */
456   htab_t partial_dies = nullptr;
457
458   /* Storage for things with the same lifetime as this read-in compilation
459      unit, including partial DIEs.  */
460   auto_obstack comp_unit_obstack;
461
462   /* When multiple dwarf2_cu structures are living in memory, this field
463      chains them all together, so that they can be released efficiently.
464      We will probably also want a generation counter so that most-recently-used
465      compilation units are cached...  */
466   struct dwarf2_per_cu_data *read_in_chain = nullptr;
467
468   /* Backlink to our per_cu entry.  */
469   struct dwarf2_per_cu_data *per_cu;
470
471   /* How many compilation units ago was this CU last referenced?  */
472   int last_used = 0;
473
474   /* A hash table of DIE cu_offset for following references with
475      die_info->offset.sect_off as hash.  */
476   htab_t die_hash = nullptr;
477
478   /* Full DIEs if read in.  */
479   struct die_info *dies = nullptr;
480
481   /* A set of pointers to dwarf2_per_cu_data objects for compilation
482      units referenced by this one.  Only set during full symbol processing;
483      partial symbol tables do not have dependencies.  */
484   htab_t dependencies = nullptr;
485
486   /* Header data from the line table, during full symbol processing.  */
487   struct line_header *line_header = nullptr;
488   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
489      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
490      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
491      to the line header as long as this DIE is being processed.  See
492      process_die_scope.  */
493   die_info *line_header_die_owner = nullptr;
494
495   /* A list of methods which need to have physnames computed
496      after all type information has been read.  */
497   std::vector<delayed_method_info> method_list;
498
499   /* To be copied to symtab->call_site_htab.  */
500   htab_t call_site_htab = nullptr;
501
502   /* Non-NULL if this CU came from a DWO file.
503      There is an invariant here that is important to remember:
504      Except for attributes copied from the top level DIE in the "main"
505      (or "stub") file in preparation for reading the DWO file
506      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
507      Either there isn't a DWO file (in which case this is NULL and the point
508      is moot), or there is and either we're not going to read it (in which
509      case this is NULL) or there is and we are reading it (in which case this
510      is non-NULL).  */
511   struct dwo_unit *dwo_unit = nullptr;
512
513   /* The DW_AT_addr_base attribute if present, zero otherwise
514      (zero is a valid value though).
515      Note this value comes from the Fission stub CU/TU's DIE.  */
516   ULONGEST addr_base = 0;
517
518   /* The DW_AT_ranges_base attribute if present, zero otherwise
519      (zero is a valid value though).
520      Note this value comes from the Fission stub CU/TU's DIE.
521      Also note that the value is zero in the non-DWO case so this value can
522      be used without needing to know whether DWO files are in use or not.
523      N.B. This does not apply to DW_AT_ranges appearing in
524      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
525      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
526      DW_AT_ranges_base *would* have to be applied, and we'd have to care
527      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
528   ULONGEST ranges_base = 0;
529
530   /* When reading debug info generated by older versions of rustc, we
531      have to rewrite some union types to be struct types with a
532      variant part.  This rewriting must be done after the CU is fully
533      read in, because otherwise at the point of rewriting some struct
534      type might not have been fully processed.  So, we keep a list of
535      all such types here and process them after expansion.  */
536   std::vector<struct type *> rust_unions;
537
538   /* Mark used when releasing cached dies.  */
539   unsigned int mark : 1;
540
541   /* This CU references .debug_loc.  See the symtab->locations_valid field.
542      This test is imperfect as there may exist optimized debug code not using
543      any location list and still facing inlining issues if handled as
544      unoptimized code.  For a future better test see GCC PR other/32998.  */
545   unsigned int has_loclist : 1;
546
547   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
548      if all the producer_is_* fields are valid.  This information is cached
549      because profiling CU expansion showed excessive time spent in
550      producer_is_gxx_lt_4_6.  */
551   unsigned int checked_producer : 1;
552   unsigned int producer_is_gxx_lt_4_6 : 1;
553   unsigned int producer_is_gcc_lt_4_3 : 1;
554   unsigned int producer_is_icc_lt_14 : 1;
555
556   /* When set, the file that we're processing is known to have
557      debugging info for C++ namespaces.  GCC 3.3.x did not produce
558      this information, but later versions do.  */
559
560   unsigned int processing_has_namespace_info : 1;
561
562   struct partial_die_info *find_partial_die (sect_offset sect_off);
563 };
564
565 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
566    This includes type_unit_group and quick_file_names.  */
567
568 struct stmt_list_hash
569 {
570   /* The DWO unit this table is from or NULL if there is none.  */
571   struct dwo_unit *dwo_unit;
572
573   /* Offset in .debug_line or .debug_line.dwo.  */
574   sect_offset line_sect_off;
575 };
576
577 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
578    an object of this type.  */
579
580 struct type_unit_group
581 {
582   /* dwarf2read.c's main "handle" on a TU symtab.
583      To simplify things we create an artificial CU that "includes" all the
584      type units using this stmt_list so that the rest of the code still has
585      a "per_cu" handle on the symtab.
586      This PER_CU is recognized by having no section.  */
587 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
588   struct dwarf2_per_cu_data per_cu;
589
590   /* The TUs that share this DW_AT_stmt_list entry.
591      This is added to while parsing type units to build partial symtabs,
592      and is deleted afterwards and not used again.  */
593   VEC (sig_type_ptr) *tus;
594
595   /* The compunit symtab.
596      Type units in a group needn't all be defined in the same source file,
597      so we create an essentially anonymous symtab as the compunit symtab.  */
598   struct compunit_symtab *compunit_symtab;
599
600   /* The data used to construct the hash key.  */
601   struct stmt_list_hash hash;
602
603   /* The number of symtabs from the line header.
604      The value here must match line_header.num_file_names.  */
605   unsigned int num_symtabs;
606
607   /* The symbol tables for this TU (obtained from the files listed in
608      DW_AT_stmt_list).
609      WARNING: The order of entries here must match the order of entries
610      in the line header.  After the first TU using this type_unit_group, the
611      line header for the subsequent TUs is recreated from this.  This is done
612      because we need to use the same symtabs for each TU using the same
613      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
614      there's no guarantee the line header doesn't have duplicate entries.  */
615   struct symtab **symtabs;
616 };
617
618 /* These sections are what may appear in a (real or virtual) DWO file.  */
619
620 struct dwo_sections
621 {
622   struct dwarf2_section_info abbrev;
623   struct dwarf2_section_info line;
624   struct dwarf2_section_info loc;
625   struct dwarf2_section_info loclists;
626   struct dwarf2_section_info macinfo;
627   struct dwarf2_section_info macro;
628   struct dwarf2_section_info str;
629   struct dwarf2_section_info str_offsets;
630   /* In the case of a virtual DWO file, these two are unused.  */
631   struct dwarf2_section_info info;
632   VEC (dwarf2_section_info_def) *types;
633 };
634
635 /* CUs/TUs in DWP/DWO files.  */
636
637 struct dwo_unit
638 {
639   /* Backlink to the containing struct dwo_file.  */
640   struct dwo_file *dwo_file;
641
642   /* The "id" that distinguishes this CU/TU.
643      .debug_info calls this "dwo_id", .debug_types calls this "signature".
644      Since signatures came first, we stick with it for consistency.  */
645   ULONGEST signature;
646
647   /* The section this CU/TU lives in, in the DWO file.  */
648   struct dwarf2_section_info *section;
649
650   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
651   sect_offset sect_off;
652   unsigned int length;
653
654   /* For types, offset in the type's DIE of the type defined by this TU.  */
655   cu_offset type_offset_in_tu;
656 };
657
658 /* include/dwarf2.h defines the DWP section codes.
659    It defines a max value but it doesn't define a min value, which we
660    use for error checking, so provide one.  */
661
662 enum dwp_v2_section_ids
663 {
664   DW_SECT_MIN = 1
665 };
666
667 /* Data for one DWO file.
668
669    This includes virtual DWO files (a virtual DWO file is a DWO file as it
670    appears in a DWP file).  DWP files don't really have DWO files per se -
671    comdat folding of types "loses" the DWO file they came from, and from
672    a high level view DWP files appear to contain a mass of random types.
673    However, to maintain consistency with the non-DWP case we pretend DWP
674    files contain virtual DWO files, and we assign each TU with one virtual
675    DWO file (generally based on the line and abbrev section offsets -
676    a heuristic that seems to work in practice).  */
677
678 struct dwo_file
679 {
680   /* The DW_AT_GNU_dwo_name attribute.
681      For virtual DWO files the name is constructed from the section offsets
682      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
683      from related CU+TUs.  */
684   const char *dwo_name;
685
686   /* The DW_AT_comp_dir attribute.  */
687   const char *comp_dir;
688
689   /* The bfd, when the file is open.  Otherwise this is NULL.
690      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
691   bfd *dbfd;
692
693   /* The sections that make up this DWO file.
694      Remember that for virtual DWO files in DWP V2, these are virtual
695      sections (for lack of a better name).  */
696   struct dwo_sections sections;
697
698   /* The CUs in the file.
699      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
700      an extension to handle LLVM's Link Time Optimization output (where
701      multiple source files may be compiled into a single object/dwo pair). */
702   htab_t cus;
703
704   /* Table of TUs in the file.
705      Each element is a struct dwo_unit.  */
706   htab_t tus;
707 };
708
709 /* These sections are what may appear in a DWP file.  */
710
711 struct dwp_sections
712 {
713   /* These are used by both DWP version 1 and 2.  */
714   struct dwarf2_section_info str;
715   struct dwarf2_section_info cu_index;
716   struct dwarf2_section_info tu_index;
717
718   /* These are only used by DWP version 2 files.
719      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
720      sections are referenced by section number, and are not recorded here.
721      In DWP version 2 there is at most one copy of all these sections, each
722      section being (effectively) comprised of the concatenation of all of the
723      individual sections that exist in the version 1 format.
724      To keep the code simple we treat each of these concatenated pieces as a
725      section itself (a virtual section?).  */
726   struct dwarf2_section_info abbrev;
727   struct dwarf2_section_info info;
728   struct dwarf2_section_info line;
729   struct dwarf2_section_info loc;
730   struct dwarf2_section_info macinfo;
731   struct dwarf2_section_info macro;
732   struct dwarf2_section_info str_offsets;
733   struct dwarf2_section_info types;
734 };
735
736 /* These sections are what may appear in a virtual DWO file in DWP version 1.
737    A virtual DWO file is a DWO file as it appears in a DWP file.  */
738
739 struct virtual_v1_dwo_sections
740 {
741   struct dwarf2_section_info abbrev;
742   struct dwarf2_section_info line;
743   struct dwarf2_section_info loc;
744   struct dwarf2_section_info macinfo;
745   struct dwarf2_section_info macro;
746   struct dwarf2_section_info str_offsets;
747   /* Each DWP hash table entry records one CU or one TU.
748      That is recorded here, and copied to dwo_unit.section.  */
749   struct dwarf2_section_info info_or_types;
750 };
751
752 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
753    In version 2, the sections of the DWO files are concatenated together
754    and stored in one section of that name.  Thus each ELF section contains
755    several "virtual" sections.  */
756
757 struct virtual_v2_dwo_sections
758 {
759   bfd_size_type abbrev_offset;
760   bfd_size_type abbrev_size;
761
762   bfd_size_type line_offset;
763   bfd_size_type line_size;
764
765   bfd_size_type loc_offset;
766   bfd_size_type loc_size;
767
768   bfd_size_type macinfo_offset;
769   bfd_size_type macinfo_size;
770
771   bfd_size_type macro_offset;
772   bfd_size_type macro_size;
773
774   bfd_size_type str_offsets_offset;
775   bfd_size_type str_offsets_size;
776
777   /* Each DWP hash table entry records one CU or one TU.
778      That is recorded here, and copied to dwo_unit.section.  */
779   bfd_size_type info_or_types_offset;
780   bfd_size_type info_or_types_size;
781 };
782
783 /* Contents of DWP hash tables.  */
784
785 struct dwp_hash_table
786 {
787   uint32_t version, nr_columns;
788   uint32_t nr_units, nr_slots;
789   const gdb_byte *hash_table, *unit_table;
790   union
791   {
792     struct
793     {
794       const gdb_byte *indices;
795     } v1;
796     struct
797     {
798       /* This is indexed by column number and gives the id of the section
799          in that column.  */
800 #define MAX_NR_V2_DWO_SECTIONS \
801   (1 /* .debug_info or .debug_types */ \
802    + 1 /* .debug_abbrev */ \
803    + 1 /* .debug_line */ \
804    + 1 /* .debug_loc */ \
805    + 1 /* .debug_str_offsets */ \
806    + 1 /* .debug_macro or .debug_macinfo */)
807       int section_ids[MAX_NR_V2_DWO_SECTIONS];
808       const gdb_byte *offsets;
809       const gdb_byte *sizes;
810     } v2;
811   } section_pool;
812 };
813
814 /* Data for one DWP file.  */
815
816 struct dwp_file
817 {
818   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
819     : name (name_),
820       dbfd (std::move (abfd))
821   {
822   }
823
824   /* Name of the file.  */
825   const char *name;
826
827   /* File format version.  */
828   int version = 0;
829
830   /* The bfd.  */
831   gdb_bfd_ref_ptr dbfd;
832
833   /* Section info for this file.  */
834   struct dwp_sections sections {};
835
836   /* Table of CUs in the file.  */
837   const struct dwp_hash_table *cus = nullptr;
838
839   /* Table of TUs in the file.  */
840   const struct dwp_hash_table *tus = nullptr;
841
842   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
843   htab_t loaded_cus {};
844   htab_t loaded_tus {};
845
846   /* Table to map ELF section numbers to their sections.
847      This is only needed for the DWP V1 file format.  */
848   unsigned int num_sections = 0;
849   asection **elf_sections = nullptr;
850 };
851
852 /* This represents a '.dwz' file.  */
853
854 struct dwz_file
855 {
856   dwz_file (gdb_bfd_ref_ptr &&bfd)
857     : dwz_bfd (std::move (bfd))
858   {
859   }
860
861   /* A dwz file can only contain a few sections.  */
862   struct dwarf2_section_info abbrev {};
863   struct dwarf2_section_info info {};
864   struct dwarf2_section_info str {};
865   struct dwarf2_section_info line {};
866   struct dwarf2_section_info macro {};
867   struct dwarf2_section_info gdb_index {};
868   struct dwarf2_section_info debug_names {};
869
870   /* The dwz's BFD.  */
871   gdb_bfd_ref_ptr dwz_bfd;
872
873   /* If we loaded the index from an external file, this contains the
874      resources associated to the open file, memory mapping, etc.  */
875   std::unique_ptr<index_cache_resource> index_cache_res;
876 };
877
878 /* Struct used to pass misc. parameters to read_die_and_children, et
879    al.  which are used for both .debug_info and .debug_types dies.
880    All parameters here are unchanging for the life of the call.  This
881    struct exists to abstract away the constant parameters of die reading.  */
882
883 struct die_reader_specs
884 {
885   /* The bfd of die_section.  */
886   bfd* abfd;
887
888   /* The CU of the DIE we are parsing.  */
889   struct dwarf2_cu *cu;
890
891   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
892   struct dwo_file *dwo_file;
893
894   /* The section the die comes from.
895      This is either .debug_info or .debug_types, or the .dwo variants.  */
896   struct dwarf2_section_info *die_section;
897
898   /* die_section->buffer.  */
899   const gdb_byte *buffer;
900
901   /* The end of the buffer.  */
902   const gdb_byte *buffer_end;
903
904   /* The value of the DW_AT_comp_dir attribute.  */
905   const char *comp_dir;
906
907   /* The abbreviation table to use when reading the DIEs.  */
908   struct abbrev_table *abbrev_table;
909 };
910
911 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
912 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
913                                       const gdb_byte *info_ptr,
914                                       struct die_info *comp_unit_die,
915                                       int has_children,
916                                       void *data);
917
918 /* A 1-based directory index.  This is a strong typedef to prevent
919    accidentally using a directory index as a 0-based index into an
920    array/vector.  */
921 enum class dir_index : unsigned int {};
922
923 /* Likewise, a 1-based file name index.  */
924 enum class file_name_index : unsigned int {};
925
926 struct file_entry
927 {
928   file_entry () = default;
929
930   file_entry (const char *name_, dir_index d_index_,
931               unsigned int mod_time_, unsigned int length_)
932     : name (name_),
933       d_index (d_index_),
934       mod_time (mod_time_),
935       length (length_)
936   {}
937
938   /* Return the include directory at D_INDEX stored in LH.  Returns
939      NULL if D_INDEX is out of bounds.  */
940   const char *include_dir (const line_header *lh) const;
941
942   /* The file name.  Note this is an observing pointer.  The memory is
943      owned by debug_line_buffer.  */
944   const char *name {};
945
946   /* The directory index (1-based).  */
947   dir_index d_index {};
948
949   unsigned int mod_time {};
950
951   unsigned int length {};
952
953   /* True if referenced by the Line Number Program.  */
954   bool included_p {};
955
956   /* The associated symbol table, if any.  */
957   struct symtab *symtab {};
958 };
959
960 /* The line number information for a compilation unit (found in the
961    .debug_line section) begins with a "statement program header",
962    which contains the following information.  */
963 struct line_header
964 {
965   line_header ()
966     : offset_in_dwz {}
967   {}
968
969   /* Add an entry to the include directory table.  */
970   void add_include_dir (const char *include_dir);
971
972   /* Add an entry to the file name table.  */
973   void add_file_name (const char *name, dir_index d_index,
974                       unsigned int mod_time, unsigned int length);
975
976   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
977      is out of bounds.  */
978   const char *include_dir_at (dir_index index) const
979   {
980     /* Convert directory index number (1-based) to vector index
981        (0-based).  */
982     size_t vec_index = to_underlying (index) - 1;
983
984     if (vec_index >= include_dirs.size ())
985       return NULL;
986     return include_dirs[vec_index];
987   }
988
989   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
990      is out of bounds.  */
991   file_entry *file_name_at (file_name_index index)
992   {
993     /* Convert file name index number (1-based) to vector index
994        (0-based).  */
995     size_t vec_index = to_underlying (index) - 1;
996
997     if (vec_index >= file_names.size ())
998       return NULL;
999     return &file_names[vec_index];
1000   }
1001
1002   /* Const version of the above.  */
1003   const file_entry *file_name_at (unsigned int index) const
1004   {
1005     if (index >= file_names.size ())
1006       return NULL;
1007     return &file_names[index];
1008   }
1009
1010   /* Offset of line number information in .debug_line section.  */
1011   sect_offset sect_off {};
1012
1013   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1014   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1015
1016   unsigned int total_length {};
1017   unsigned short version {};
1018   unsigned int header_length {};
1019   unsigned char minimum_instruction_length {};
1020   unsigned char maximum_ops_per_instruction {};
1021   unsigned char default_is_stmt {};
1022   int line_base {};
1023   unsigned char line_range {};
1024   unsigned char opcode_base {};
1025
1026   /* standard_opcode_lengths[i] is the number of operands for the
1027      standard opcode whose value is i.  This means that
1028      standard_opcode_lengths[0] is unused, and the last meaningful
1029      element is standard_opcode_lengths[opcode_base - 1].  */
1030   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1031
1032   /* The include_directories table.  Note these are observing
1033      pointers.  The memory is owned by debug_line_buffer.  */
1034   std::vector<const char *> include_dirs;
1035
1036   /* The file_names table.  */
1037   std::vector<file_entry> file_names;
1038
1039   /* The start and end of the statement program following this
1040      header.  These point into dwarf2_per_objfile->line_buffer.  */
1041   const gdb_byte *statement_program_start {}, *statement_program_end {};
1042 };
1043
1044 typedef std::unique_ptr<line_header> line_header_up;
1045
1046 const char *
1047 file_entry::include_dir (const line_header *lh) const
1048 {
1049   return lh->include_dir_at (d_index);
1050 }
1051
1052 /* When we construct a partial symbol table entry we only
1053    need this much information.  */
1054 struct partial_die_info : public allocate_on_obstack
1055   {
1056     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1057
1058     /* Disable assign but still keep copy ctor, which is needed
1059        load_partial_dies.   */
1060     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1061
1062     /* Adjust the partial die before generating a symbol for it.  This
1063        function may set the is_external flag or change the DIE's
1064        name.  */
1065     void fixup (struct dwarf2_cu *cu);
1066
1067     /* Read a minimal amount of information into the minimal die
1068        structure.  */
1069     const gdb_byte *read (const struct die_reader_specs *reader,
1070                           const struct abbrev_info &abbrev,
1071                           const gdb_byte *info_ptr);
1072
1073     /* Offset of this DIE.  */
1074     const sect_offset sect_off;
1075
1076     /* DWARF-2 tag for this DIE.  */
1077     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1078
1079     /* Assorted flags describing the data found in this DIE.  */
1080     const unsigned int has_children : 1;
1081
1082     unsigned int is_external : 1;
1083     unsigned int is_declaration : 1;
1084     unsigned int has_type : 1;
1085     unsigned int has_specification : 1;
1086     unsigned int has_pc_info : 1;
1087     unsigned int may_be_inlined : 1;
1088
1089     /* This DIE has been marked DW_AT_main_subprogram.  */
1090     unsigned int main_subprogram : 1;
1091
1092     /* Flag set if the SCOPE field of this structure has been
1093        computed.  */
1094     unsigned int scope_set : 1;
1095
1096     /* Flag set if the DIE has a byte_size attribute.  */
1097     unsigned int has_byte_size : 1;
1098
1099     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1100     unsigned int has_const_value : 1;
1101
1102     /* Flag set if any of the DIE's children are template arguments.  */
1103     unsigned int has_template_arguments : 1;
1104
1105     /* Flag set if fixup has been called on this die.  */
1106     unsigned int fixup_called : 1;
1107
1108     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1109     unsigned int is_dwz : 1;
1110
1111     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1112     unsigned int spec_is_dwz : 1;
1113
1114     /* The name of this DIE.  Normally the value of DW_AT_name, but
1115        sometimes a default name for unnamed DIEs.  */
1116     const char *name = nullptr;
1117
1118     /* The linkage name, if present.  */
1119     const char *linkage_name = nullptr;
1120
1121     /* The scope to prepend to our children.  This is generally
1122        allocated on the comp_unit_obstack, so will disappear
1123        when this compilation unit leaves the cache.  */
1124     const char *scope = nullptr;
1125
1126     /* Some data associated with the partial DIE.  The tag determines
1127        which field is live.  */
1128     union
1129     {
1130       /* The location description associated with this DIE, if any.  */
1131       struct dwarf_block *locdesc;
1132       /* The offset of an import, for DW_TAG_imported_unit.  */
1133       sect_offset sect_off;
1134     } d {};
1135
1136     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1137     CORE_ADDR lowpc = 0;
1138     CORE_ADDR highpc = 0;
1139
1140     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1141        DW_AT_sibling, if any.  */
1142     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1143        could return DW_AT_sibling values to its caller load_partial_dies.  */
1144     const gdb_byte *sibling = nullptr;
1145
1146     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1147        DW_AT_specification (or DW_AT_abstract_origin or
1148        DW_AT_extension).  */
1149     sect_offset spec_offset {};
1150
1151     /* Pointers to this DIE's parent, first child, and next sibling,
1152        if any.  */
1153     struct partial_die_info *die_parent = nullptr;
1154     struct partial_die_info *die_child = nullptr;
1155     struct partial_die_info *die_sibling = nullptr;
1156
1157     friend struct partial_die_info *
1158     dwarf2_cu::find_partial_die (sect_offset sect_off);
1159
1160   private:
1161     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1162     partial_die_info (sect_offset sect_off)
1163       : partial_die_info (sect_off, DW_TAG_padding, 0)
1164     {
1165     }
1166
1167     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1168                       int has_children_)
1169       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1170     {
1171       is_external = 0;
1172       is_declaration = 0;
1173       has_type = 0;
1174       has_specification = 0;
1175       has_pc_info = 0;
1176       may_be_inlined = 0;
1177       main_subprogram = 0;
1178       scope_set = 0;
1179       has_byte_size = 0;
1180       has_const_value = 0;
1181       has_template_arguments = 0;
1182       fixup_called = 0;
1183       is_dwz = 0;
1184       spec_is_dwz = 0;
1185     }
1186   };
1187
1188 /* This data structure holds the information of an abbrev.  */
1189 struct abbrev_info
1190   {
1191     unsigned int number;        /* number identifying abbrev */
1192     enum dwarf_tag tag;         /* dwarf tag */
1193     unsigned short has_children;                /* boolean */
1194     unsigned short num_attrs;   /* number of attributes */
1195     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1196     struct abbrev_info *next;   /* next in chain */
1197   };
1198
1199 struct attr_abbrev
1200   {
1201     ENUM_BITFIELD(dwarf_attribute) name : 16;
1202     ENUM_BITFIELD(dwarf_form) form : 16;
1203
1204     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1205     LONGEST implicit_const;
1206   };
1207
1208 /* Size of abbrev_table.abbrev_hash_table.  */
1209 #define ABBREV_HASH_SIZE 121
1210
1211 /* Top level data structure to contain an abbreviation table.  */
1212
1213 struct abbrev_table
1214 {
1215   explicit abbrev_table (sect_offset off)
1216     : sect_off (off)
1217   {
1218     m_abbrevs =
1219       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1220     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1221   }
1222
1223   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1224
1225   /* Allocate space for a struct abbrev_info object in
1226      ABBREV_TABLE.  */
1227   struct abbrev_info *alloc_abbrev ();
1228
1229   /* Add an abbreviation to the table.  */
1230   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1231
1232   /* Look up an abbrev in the table.
1233      Returns NULL if the abbrev is not found.  */
1234
1235   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1236
1237
1238   /* Where the abbrev table came from.
1239      This is used as a sanity check when the table is used.  */
1240   const sect_offset sect_off;
1241
1242   /* Storage for the abbrev table.  */
1243   auto_obstack abbrev_obstack;
1244
1245 private:
1246
1247   /* Hash table of abbrevs.
1248      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1249      It could be statically allocated, but the previous code didn't so we
1250      don't either.  */
1251   struct abbrev_info **m_abbrevs;
1252 };
1253
1254 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1255
1256 /* Attributes have a name and a value.  */
1257 struct attribute
1258   {
1259     ENUM_BITFIELD(dwarf_attribute) name : 16;
1260     ENUM_BITFIELD(dwarf_form) form : 15;
1261
1262     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1263        field should be in u.str (existing only for DW_STRING) but it is kept
1264        here for better struct attribute alignment.  */
1265     unsigned int string_is_canonical : 1;
1266
1267     union
1268       {
1269         const char *str;
1270         struct dwarf_block *blk;
1271         ULONGEST unsnd;
1272         LONGEST snd;
1273         CORE_ADDR addr;
1274         ULONGEST signature;
1275       }
1276     u;
1277   };
1278
1279 /* This data structure holds a complete die structure.  */
1280 struct die_info
1281   {
1282     /* DWARF-2 tag for this DIE.  */
1283     ENUM_BITFIELD(dwarf_tag) tag : 16;
1284
1285     /* Number of attributes */
1286     unsigned char num_attrs;
1287
1288     /* True if we're presently building the full type name for the
1289        type derived from this DIE.  */
1290     unsigned char building_fullname : 1;
1291
1292     /* True if this die is in process.  PR 16581.  */
1293     unsigned char in_process : 1;
1294
1295     /* Abbrev number */
1296     unsigned int abbrev;
1297
1298     /* Offset in .debug_info or .debug_types section.  */
1299     sect_offset sect_off;
1300
1301     /* The dies in a compilation unit form an n-ary tree.  PARENT
1302        points to this die's parent; CHILD points to the first child of
1303        this node; and all the children of a given node are chained
1304        together via their SIBLING fields.  */
1305     struct die_info *child;     /* Its first child, if any.  */
1306     struct die_info *sibling;   /* Its next sibling, if any.  */
1307     struct die_info *parent;    /* Its parent, if any.  */
1308
1309     /* An array of attributes, with NUM_ATTRS elements.  There may be
1310        zero, but it's not common and zero-sized arrays are not
1311        sufficiently portable C.  */
1312     struct attribute attrs[1];
1313   };
1314
1315 /* Get at parts of an attribute structure.  */
1316
1317 #define DW_STRING(attr)    ((attr)->u.str)
1318 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1319 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1320 #define DW_BLOCK(attr)     ((attr)->u.blk)
1321 #define DW_SND(attr)       ((attr)->u.snd)
1322 #define DW_ADDR(attr)      ((attr)->u.addr)
1323 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1324
1325 /* Blocks are a bunch of untyped bytes.  */
1326 struct dwarf_block
1327   {
1328     size_t size;
1329
1330     /* Valid only if SIZE is not zero.  */
1331     const gdb_byte *data;
1332   };
1333
1334 #ifndef ATTR_ALLOC_CHUNK
1335 #define ATTR_ALLOC_CHUNK 4
1336 #endif
1337
1338 /* Allocate fields for structs, unions and enums in this size.  */
1339 #ifndef DW_FIELD_ALLOC_CHUNK
1340 #define DW_FIELD_ALLOC_CHUNK 4
1341 #endif
1342
1343 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1344    but this would require a corresponding change in unpack_field_as_long
1345    and friends.  */
1346 static int bits_per_byte = 8;
1347
1348 /* When reading a variant or variant part, we track a bit more
1349    information about the field, and store it in an object of this
1350    type.  */
1351
1352 struct variant_field
1353 {
1354   /* If we see a DW_TAG_variant, then this will be the discriminant
1355      value.  */
1356   ULONGEST discriminant_value;
1357   /* If we see a DW_TAG_variant, then this will be set if this is the
1358      default branch.  */
1359   bool default_branch;
1360   /* While reading a DW_TAG_variant_part, this will be set if this
1361      field is the discriminant.  */
1362   bool is_discriminant;
1363 };
1364
1365 struct nextfield
1366 {
1367   int accessibility = 0;
1368   int virtuality = 0;
1369   /* Extra information to describe a variant or variant part.  */
1370   struct variant_field variant {};
1371   struct field field {};
1372 };
1373
1374 struct fnfieldlist
1375 {
1376   const char *name = nullptr;
1377   std::vector<struct fn_field> fnfields;
1378 };
1379
1380 /* The routines that read and process dies for a C struct or C++ class
1381    pass lists of data member fields and lists of member function fields
1382    in an instance of a field_info structure, as defined below.  */
1383 struct field_info
1384   {
1385     /* List of data member and baseclasses fields.  */
1386     std::vector<struct nextfield> fields;
1387     std::vector<struct nextfield> baseclasses;
1388
1389     /* Number of fields (including baseclasses).  */
1390     int nfields = 0;
1391
1392     /* Set if the accesibility of one of the fields is not public.  */
1393     int non_public_fields = 0;
1394
1395     /* Member function fieldlist array, contains name of possibly overloaded
1396        member function, number of overloaded member functions and a pointer
1397        to the head of the member function field chain.  */
1398     std::vector<struct fnfieldlist> fnfieldlists;
1399
1400     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1401        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1402     std::vector<struct decl_field> typedef_field_list;
1403
1404     /* Nested types defined by this class and the number of elements in this
1405        list.  */
1406     std::vector<struct decl_field> nested_types_list;
1407   };
1408
1409 /* One item on the queue of compilation units to read in full symbols
1410    for.  */
1411 struct dwarf2_queue_item
1412 {
1413   struct dwarf2_per_cu_data *per_cu;
1414   enum language pretend_language;
1415   struct dwarf2_queue_item *next;
1416 };
1417
1418 /* The current queue.  */
1419 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1420
1421 /* Loaded secondary compilation units are kept in memory until they
1422    have not been referenced for the processing of this many
1423    compilation units.  Set this to zero to disable caching.  Cache
1424    sizes of up to at least twenty will improve startup time for
1425    typical inter-CU-reference binaries, at an obvious memory cost.  */
1426 static int dwarf_max_cache_age = 5;
1427 static void
1428 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1429                           struct cmd_list_element *c, const char *value)
1430 {
1431   fprintf_filtered (file, _("The upper bound on the age of cached "
1432                             "DWARF compilation units is %s.\n"),
1433                     value);
1434 }
1435 \f
1436 /* local function prototypes */
1437
1438 static const char *get_section_name (const struct dwarf2_section_info *);
1439
1440 static const char *get_section_file_name (const struct dwarf2_section_info *);
1441
1442 static void dwarf2_find_base_address (struct die_info *die,
1443                                       struct dwarf2_cu *cu);
1444
1445 static struct partial_symtab *create_partial_symtab
1446   (struct dwarf2_per_cu_data *per_cu, const char *name);
1447
1448 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1449                                         const gdb_byte *info_ptr,
1450                                         struct die_info *type_unit_die,
1451                                         int has_children, void *data);
1452
1453 static void dwarf2_build_psymtabs_hard
1454   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1455
1456 static void scan_partial_symbols (struct partial_die_info *,
1457                                   CORE_ADDR *, CORE_ADDR *,
1458                                   int, struct dwarf2_cu *);
1459
1460 static void add_partial_symbol (struct partial_die_info *,
1461                                 struct dwarf2_cu *);
1462
1463 static void add_partial_namespace (struct partial_die_info *pdi,
1464                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1465                                    int set_addrmap, struct dwarf2_cu *cu);
1466
1467 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1468                                 CORE_ADDR *highpc, int set_addrmap,
1469                                 struct dwarf2_cu *cu);
1470
1471 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1472                                      struct dwarf2_cu *cu);
1473
1474 static void add_partial_subprogram (struct partial_die_info *pdi,
1475                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1476                                     int need_pc, struct dwarf2_cu *cu);
1477
1478 static void dwarf2_read_symtab (struct partial_symtab *,
1479                                 struct objfile *);
1480
1481 static void psymtab_to_symtab_1 (struct partial_symtab *);
1482
1483 static abbrev_table_up abbrev_table_read_table
1484   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1485    sect_offset);
1486
1487 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1488
1489 static struct partial_die_info *load_partial_dies
1490   (const struct die_reader_specs *, const gdb_byte *, int);
1491
1492 static struct partial_die_info *find_partial_die (sect_offset, int,
1493                                                   struct dwarf2_cu *);
1494
1495 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1496                                        struct attribute *, struct attr_abbrev *,
1497                                        const gdb_byte *);
1498
1499 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1500
1501 static int read_1_signed_byte (bfd *, const gdb_byte *);
1502
1503 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1504
1505 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1506
1507 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1508
1509 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1510                                unsigned int *);
1511
1512 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1513
1514 static LONGEST read_checked_initial_length_and_offset
1515   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1516    unsigned int *, unsigned int *);
1517
1518 static LONGEST read_offset (bfd *, const gdb_byte *,
1519                             const struct comp_unit_head *,
1520                             unsigned int *);
1521
1522 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1523
1524 static sect_offset read_abbrev_offset
1525   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1526    struct dwarf2_section_info *, sect_offset);
1527
1528 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1529
1530 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1531
1532 static const char *read_indirect_string
1533   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1534    const struct comp_unit_head *, unsigned int *);
1535
1536 static const char *read_indirect_line_string
1537   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1538    const struct comp_unit_head *, unsigned int *);
1539
1540 static const char *read_indirect_string_at_offset
1541   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1542    LONGEST str_offset);
1543
1544 static const char *read_indirect_string_from_dwz
1545   (struct objfile *objfile, struct dwz_file *, LONGEST);
1546
1547 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1548
1549 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1550                                               const gdb_byte *,
1551                                               unsigned int *);
1552
1553 static const char *read_str_index (const struct die_reader_specs *reader,
1554                                    ULONGEST str_index);
1555
1556 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1557
1558 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1559                                       struct dwarf2_cu *);
1560
1561 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1562                                                 unsigned int);
1563
1564 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1565                                        struct dwarf2_cu *cu);
1566
1567 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1568                                struct dwarf2_cu *cu);
1569
1570 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1571
1572 static struct die_info *die_specification (struct die_info *die,
1573                                            struct dwarf2_cu **);
1574
1575 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1576                                                 struct dwarf2_cu *cu);
1577
1578 static void dwarf_decode_lines (struct line_header *, const char *,
1579                                 struct dwarf2_cu *, struct partial_symtab *,
1580                                 CORE_ADDR, int decode_mapping);
1581
1582 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1583                                   const char *);
1584
1585 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1586                                                     const char *, const char *,
1587                                                     CORE_ADDR);
1588
1589 static struct symbol *new_symbol (struct die_info *, struct type *,
1590                                   struct dwarf2_cu *, struct symbol * = NULL);
1591
1592 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1593                                 struct dwarf2_cu *);
1594
1595 static void dwarf2_const_value_attr (const struct attribute *attr,
1596                                      struct type *type,
1597                                      const char *name,
1598                                      struct obstack *obstack,
1599                                      struct dwarf2_cu *cu, LONGEST *value,
1600                                      const gdb_byte **bytes,
1601                                      struct dwarf2_locexpr_baton **baton);
1602
1603 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1604
1605 static int need_gnat_info (struct dwarf2_cu *);
1606
1607 static struct type *die_descriptive_type (struct die_info *,
1608                                           struct dwarf2_cu *);
1609
1610 static void set_descriptive_type (struct type *, struct die_info *,
1611                                   struct dwarf2_cu *);
1612
1613 static struct type *die_containing_type (struct die_info *,
1614                                          struct dwarf2_cu *);
1615
1616 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1617                                      struct dwarf2_cu *);
1618
1619 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1620
1621 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1622
1623 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1624
1625 static char *typename_concat (struct obstack *obs, const char *prefix,
1626                               const char *suffix, int physname,
1627                               struct dwarf2_cu *cu);
1628
1629 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1630
1631 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1632
1633 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1634
1635 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1636
1637 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1638
1639 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1640
1641 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1642                                struct dwarf2_cu *, struct partial_symtab *);
1643
1644 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1645    values.  Keep the items ordered with increasing constraints compliance.  */
1646 enum pc_bounds_kind
1647 {
1648   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1649   PC_BOUNDS_NOT_PRESENT,
1650
1651   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1652      were present but they do not form a valid range of PC addresses.  */
1653   PC_BOUNDS_INVALID,
1654
1655   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1656   PC_BOUNDS_RANGES,
1657
1658   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1659   PC_BOUNDS_HIGH_LOW,
1660 };
1661
1662 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1663                                                  CORE_ADDR *, CORE_ADDR *,
1664                                                  struct dwarf2_cu *,
1665                                                  struct partial_symtab *);
1666
1667 static void get_scope_pc_bounds (struct die_info *,
1668                                  CORE_ADDR *, CORE_ADDR *,
1669                                  struct dwarf2_cu *);
1670
1671 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1672                                         CORE_ADDR, struct dwarf2_cu *);
1673
1674 static void dwarf2_add_field (struct field_info *, struct die_info *,
1675                               struct dwarf2_cu *);
1676
1677 static void dwarf2_attach_fields_to_type (struct field_info *,
1678                                           struct type *, struct dwarf2_cu *);
1679
1680 static void dwarf2_add_member_fn (struct field_info *,
1681                                   struct die_info *, struct type *,
1682                                   struct dwarf2_cu *);
1683
1684 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1685                                              struct type *,
1686                                              struct dwarf2_cu *);
1687
1688 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1689
1690 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1691
1692 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1693
1694 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1695
1696 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1697
1698 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1699
1700 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1701
1702 static struct type *read_module_type (struct die_info *die,
1703                                       struct dwarf2_cu *cu);
1704
1705 static const char *namespace_name (struct die_info *die,
1706                                    int *is_anonymous, struct dwarf2_cu *);
1707
1708 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1709
1710 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1711
1712 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1713                                                        struct dwarf2_cu *);
1714
1715 static struct die_info *read_die_and_siblings_1
1716   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1717    struct die_info *);
1718
1719 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1720                                                const gdb_byte *info_ptr,
1721                                                const gdb_byte **new_info_ptr,
1722                                                struct die_info *parent);
1723
1724 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1725                                         struct die_info **, const gdb_byte *,
1726                                         int *, int);
1727
1728 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1729                                       struct die_info **, const gdb_byte *,
1730                                       int *);
1731
1732 static void process_die (struct die_info *, struct dwarf2_cu *);
1733
1734 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1735                                              struct obstack *);
1736
1737 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1738
1739 static const char *dwarf2_full_name (const char *name,
1740                                      struct die_info *die,
1741                                      struct dwarf2_cu *cu);
1742
1743 static const char *dwarf2_physname (const char *name, struct die_info *die,
1744                                     struct dwarf2_cu *cu);
1745
1746 static struct die_info *dwarf2_extension (struct die_info *die,
1747                                           struct dwarf2_cu **);
1748
1749 static const char *dwarf_tag_name (unsigned int);
1750
1751 static const char *dwarf_attr_name (unsigned int);
1752
1753 static const char *dwarf_form_name (unsigned int);
1754
1755 static const char *dwarf_bool_name (unsigned int);
1756
1757 static const char *dwarf_type_encoding_name (unsigned int);
1758
1759 static struct die_info *sibling_die (struct die_info *);
1760
1761 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1762
1763 static void dump_die_for_error (struct die_info *);
1764
1765 static void dump_die_1 (struct ui_file *, int level, int max_level,
1766                         struct die_info *);
1767
1768 /*static*/ void dump_die (struct die_info *, int max_level);
1769
1770 static void store_in_ref_table (struct die_info *,
1771                                 struct dwarf2_cu *);
1772
1773 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1774
1775 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1776
1777 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1778                                                const struct attribute *,
1779                                                struct dwarf2_cu **);
1780
1781 static struct die_info *follow_die_ref (struct die_info *,
1782                                         const struct attribute *,
1783                                         struct dwarf2_cu **);
1784
1785 static struct die_info *follow_die_sig (struct die_info *,
1786                                         const struct attribute *,
1787                                         struct dwarf2_cu **);
1788
1789 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1790                                          struct dwarf2_cu *);
1791
1792 static struct type *get_DW_AT_signature_type (struct die_info *,
1793                                               const struct attribute *,
1794                                               struct dwarf2_cu *);
1795
1796 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1797
1798 static void read_signatured_type (struct signatured_type *);
1799
1800 static int attr_to_dynamic_prop (const struct attribute *attr,
1801                                  struct die_info *die, struct dwarf2_cu *cu,
1802                                  struct dynamic_prop *prop);
1803
1804 /* memory allocation interface */
1805
1806 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1807
1808 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1809
1810 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1811
1812 static int attr_form_is_block (const struct attribute *);
1813
1814 static int attr_form_is_section_offset (const struct attribute *);
1815
1816 static int attr_form_is_constant (const struct attribute *);
1817
1818 static int attr_form_is_ref (const struct attribute *);
1819
1820 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1821                                    struct dwarf2_loclist_baton *baton,
1822                                    const struct attribute *attr);
1823
1824 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1825                                          struct symbol *sym,
1826                                          struct dwarf2_cu *cu,
1827                                          int is_block);
1828
1829 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1830                                      const gdb_byte *info_ptr,
1831                                      struct abbrev_info *abbrev);
1832
1833 static hashval_t partial_die_hash (const void *item);
1834
1835 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1836
1837 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1838   (sect_offset sect_off, unsigned int offset_in_dwz,
1839    struct dwarf2_per_objfile *dwarf2_per_objfile);
1840
1841 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1842                                    struct die_info *comp_unit_die,
1843                                    enum language pretend_language);
1844
1845 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1846
1847 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1848
1849 static struct type *set_die_type (struct die_info *, struct type *,
1850                                   struct dwarf2_cu *);
1851
1852 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1853
1854 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1855
1856 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1857                                  enum language);
1858
1859 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1860                                     enum language);
1861
1862 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1863                                     enum language);
1864
1865 static void dwarf2_add_dependence (struct dwarf2_cu *,
1866                                    struct dwarf2_per_cu_data *);
1867
1868 static void dwarf2_mark (struct dwarf2_cu *);
1869
1870 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1871
1872 static struct type *get_die_type_at_offset (sect_offset,
1873                                             struct dwarf2_per_cu_data *);
1874
1875 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1876
1877 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1878                              enum language pretend_language);
1879
1880 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1881
1882 /* Class, the destructor of which frees all allocated queue entries.  This
1883    will only have work to do if an error was thrown while processing the
1884    dwarf.  If no error was thrown then the queue entries should have all
1885    been processed, and freed, as we went along.  */
1886
1887 class dwarf2_queue_guard
1888 {
1889 public:
1890   dwarf2_queue_guard () = default;
1891
1892   /* Free any entries remaining on the queue.  There should only be
1893      entries left if we hit an error while processing the dwarf.  */
1894   ~dwarf2_queue_guard ()
1895   {
1896     struct dwarf2_queue_item *item, *last;
1897
1898     item = dwarf2_queue;
1899     while (item)
1900       {
1901         /* Anything still marked queued is likely to be in an
1902            inconsistent state, so discard it.  */
1903         if (item->per_cu->queued)
1904           {
1905             if (item->per_cu->cu != NULL)
1906               free_one_cached_comp_unit (item->per_cu);
1907             item->per_cu->queued = 0;
1908           }
1909
1910         last = item;
1911         item = item->next;
1912         xfree (last);
1913       }
1914
1915     dwarf2_queue = dwarf2_queue_tail = NULL;
1916   }
1917 };
1918
1919 /* The return type of find_file_and_directory.  Note, the enclosed
1920    string pointers are only valid while this object is valid.  */
1921
1922 struct file_and_directory
1923 {
1924   /* The filename.  This is never NULL.  */
1925   const char *name;
1926
1927   /* The compilation directory.  NULL if not known.  If we needed to
1928      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1929      points directly to the DW_AT_comp_dir string attribute owned by
1930      the obstack that owns the DIE.  */
1931   const char *comp_dir;
1932
1933   /* If we needed to build a new string for comp_dir, this is what
1934      owns the storage.  */
1935   std::string comp_dir_storage;
1936 };
1937
1938 static file_and_directory find_file_and_directory (struct die_info *die,
1939                                                    struct dwarf2_cu *cu);
1940
1941 static char *file_full_name (int file, struct line_header *lh,
1942                              const char *comp_dir);
1943
1944 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1945 enum class rcuh_kind { COMPILE, TYPE };
1946
1947 static const gdb_byte *read_and_check_comp_unit_head
1948   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1949    struct comp_unit_head *header,
1950    struct dwarf2_section_info *section,
1951    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1952    rcuh_kind section_kind);
1953
1954 static void init_cutu_and_read_dies
1955   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1956    int use_existing_cu, int keep, bool skip_partial,
1957    die_reader_func_ftype *die_reader_func, void *data);
1958
1959 static void init_cutu_and_read_dies_simple
1960   (struct dwarf2_per_cu_data *this_cu,
1961    die_reader_func_ftype *die_reader_func, void *data);
1962
1963 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1964
1965 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1966
1967 static struct dwo_unit *lookup_dwo_unit_in_dwp
1968   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1969    struct dwp_file *dwp_file, const char *comp_dir,
1970    ULONGEST signature, int is_debug_types);
1971
1972 static struct dwp_file *get_dwp_file
1973   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1974
1975 static struct dwo_unit *lookup_dwo_comp_unit
1976   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1977
1978 static struct dwo_unit *lookup_dwo_type_unit
1979   (struct signatured_type *, const char *, const char *);
1980
1981 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1982
1983 static void free_dwo_file (struct dwo_file *);
1984
1985 /* A unique_ptr helper to free a dwo_file.  */
1986
1987 struct dwo_file_deleter
1988 {
1989   void operator() (struct dwo_file *df) const
1990   {
1991     free_dwo_file (df);
1992   }
1993 };
1994
1995 /* A unique pointer to a dwo_file.  */
1996
1997 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1998
1999 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2000
2001 static void check_producer (struct dwarf2_cu *cu);
2002
2003 static void free_line_header_voidp (void *arg);
2004 \f
2005 /* Various complaints about symbol reading that don't abort the process.  */
2006
2007 static void
2008 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2009 {
2010   complaint (_("statement list doesn't fit in .debug_line section"));
2011 }
2012
2013 static void
2014 dwarf2_debug_line_missing_file_complaint (void)
2015 {
2016   complaint (_(".debug_line section has line data without a file"));
2017 }
2018
2019 static void
2020 dwarf2_debug_line_missing_end_sequence_complaint (void)
2021 {
2022   complaint (_(".debug_line section has line "
2023                "program sequence without an end"));
2024 }
2025
2026 static void
2027 dwarf2_complex_location_expr_complaint (void)
2028 {
2029   complaint (_("location expression too complex"));
2030 }
2031
2032 static void
2033 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2034                                               int arg3)
2035 {
2036   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2037              arg1, arg2, arg3);
2038 }
2039
2040 static void
2041 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2042 {
2043   complaint (_("debug info runs off end of %s section"
2044                " [in module %s]"),
2045              get_section_name (section),
2046              get_section_file_name (section));
2047 }
2048
2049 static void
2050 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2051 {
2052   complaint (_("macro debug info contains a "
2053                "malformed macro definition:\n`%s'"),
2054              arg1);
2055 }
2056
2057 static void
2058 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2059 {
2060   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2061              arg1, arg2);
2062 }
2063
2064 /* Hash function for line_header_hash.  */
2065
2066 static hashval_t
2067 line_header_hash (const struct line_header *ofs)
2068 {
2069   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2070 }
2071
2072 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2073
2074 static hashval_t
2075 line_header_hash_voidp (const void *item)
2076 {
2077   const struct line_header *ofs = (const struct line_header *) item;
2078
2079   return line_header_hash (ofs);
2080 }
2081
2082 /* Equality function for line_header_hash.  */
2083
2084 static int
2085 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2086 {
2087   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2088   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2089
2090   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2091           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2092 }
2093
2094 \f
2095
2096 /* Read the given attribute value as an address, taking the attribute's
2097    form into account.  */
2098
2099 static CORE_ADDR
2100 attr_value_as_address (struct attribute *attr)
2101 {
2102   CORE_ADDR addr;
2103
2104   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2105     {
2106       /* Aside from a few clearly defined exceptions, attributes that
2107          contain an address must always be in DW_FORM_addr form.
2108          Unfortunately, some compilers happen to be violating this
2109          requirement by encoding addresses using other forms, such
2110          as DW_FORM_data4 for example.  For those broken compilers,
2111          we try to do our best, without any guarantee of success,
2112          to interpret the address correctly.  It would also be nice
2113          to generate a complaint, but that would require us to maintain
2114          a list of legitimate cases where a non-address form is allowed,
2115          as well as update callers to pass in at least the CU's DWARF
2116          version.  This is more overhead than what we're willing to
2117          expand for a pretty rare case.  */
2118       addr = DW_UNSND (attr);
2119     }
2120   else
2121     addr = DW_ADDR (attr);
2122
2123   return addr;
2124 }
2125
2126 /* See declaration.  */
2127
2128 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2129                                         const dwarf2_debug_sections *names)
2130   : objfile (objfile_)
2131 {
2132   if (names == NULL)
2133     names = &dwarf2_elf_names;
2134
2135   bfd *obfd = objfile->obfd;
2136
2137   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2138     locate_sections (obfd, sec, *names);
2139 }
2140
2141 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2142
2143 dwarf2_per_objfile::~dwarf2_per_objfile ()
2144 {
2145   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2146   free_cached_comp_units ();
2147
2148   if (quick_file_names_table)
2149     htab_delete (quick_file_names_table);
2150
2151   if (line_header_hash)
2152     htab_delete (line_header_hash);
2153
2154   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2155     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2156
2157   for (signatured_type *sig_type : all_type_units)
2158     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2159
2160   VEC_free (dwarf2_section_info_def, types);
2161
2162   if (dwo_files != NULL)
2163     free_dwo_files (dwo_files, objfile);
2164
2165   /* Everything else should be on the objfile obstack.  */
2166 }
2167
2168 /* See declaration.  */
2169
2170 void
2171 dwarf2_per_objfile::free_cached_comp_units ()
2172 {
2173   dwarf2_per_cu_data *per_cu = read_in_chain;
2174   dwarf2_per_cu_data **last_chain = &read_in_chain;
2175   while (per_cu != NULL)
2176     {
2177       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2178
2179       delete per_cu->cu;
2180       *last_chain = next_cu;
2181       per_cu = next_cu;
2182     }
2183 }
2184
2185 /* A helper class that calls free_cached_comp_units on
2186    destruction.  */
2187
2188 class free_cached_comp_units
2189 {
2190 public:
2191
2192   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2193     : m_per_objfile (per_objfile)
2194   {
2195   }
2196
2197   ~free_cached_comp_units ()
2198   {
2199     m_per_objfile->free_cached_comp_units ();
2200   }
2201
2202   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2203
2204 private:
2205
2206   dwarf2_per_objfile *m_per_objfile;
2207 };
2208
2209 /* Try to locate the sections we need for DWARF 2 debugging
2210    information and return true if we have enough to do something.
2211    NAMES points to the dwarf2 section names, or is NULL if the standard
2212    ELF names are used.  */
2213
2214 int
2215 dwarf2_has_info (struct objfile *objfile,
2216                  const struct dwarf2_debug_sections *names)
2217 {
2218   if (objfile->flags & OBJF_READNEVER)
2219     return 0;
2220
2221   struct dwarf2_per_objfile *dwarf2_per_objfile
2222     = get_dwarf2_per_objfile (objfile);
2223
2224   if (dwarf2_per_objfile == NULL)
2225     {
2226       /* Initialize per-objfile state.  */
2227       dwarf2_per_objfile
2228         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2229                                                                      names);
2230       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2231     }
2232   return (!dwarf2_per_objfile->info.is_virtual
2233           && dwarf2_per_objfile->info.s.section != NULL
2234           && !dwarf2_per_objfile->abbrev.is_virtual
2235           && dwarf2_per_objfile->abbrev.s.section != NULL);
2236 }
2237
2238 /* Return the containing section of virtual section SECTION.  */
2239
2240 static struct dwarf2_section_info *
2241 get_containing_section (const struct dwarf2_section_info *section)
2242 {
2243   gdb_assert (section->is_virtual);
2244   return section->s.containing_section;
2245 }
2246
2247 /* Return the bfd owner of SECTION.  */
2248
2249 static struct bfd *
2250 get_section_bfd_owner (const struct dwarf2_section_info *section)
2251 {
2252   if (section->is_virtual)
2253     {
2254       section = get_containing_section (section);
2255       gdb_assert (!section->is_virtual);
2256     }
2257   return section->s.section->owner;
2258 }
2259
2260 /* Return the bfd section of SECTION.
2261    Returns NULL if the section is not present.  */
2262
2263 static asection *
2264 get_section_bfd_section (const struct dwarf2_section_info *section)
2265 {
2266   if (section->is_virtual)
2267     {
2268       section = get_containing_section (section);
2269       gdb_assert (!section->is_virtual);
2270     }
2271   return section->s.section;
2272 }
2273
2274 /* Return the name of SECTION.  */
2275
2276 static const char *
2277 get_section_name (const struct dwarf2_section_info *section)
2278 {
2279   asection *sectp = get_section_bfd_section (section);
2280
2281   gdb_assert (sectp != NULL);
2282   return bfd_section_name (get_section_bfd_owner (section), sectp);
2283 }
2284
2285 /* Return the name of the file SECTION is in.  */
2286
2287 static const char *
2288 get_section_file_name (const struct dwarf2_section_info *section)
2289 {
2290   bfd *abfd = get_section_bfd_owner (section);
2291
2292   return bfd_get_filename (abfd);
2293 }
2294
2295 /* Return the id of SECTION.
2296    Returns 0 if SECTION doesn't exist.  */
2297
2298 static int
2299 get_section_id (const struct dwarf2_section_info *section)
2300 {
2301   asection *sectp = get_section_bfd_section (section);
2302
2303   if (sectp == NULL)
2304     return 0;
2305   return sectp->id;
2306 }
2307
2308 /* Return the flags of SECTION.
2309    SECTION (or containing section if this is a virtual section) must exist.  */
2310
2311 static int
2312 get_section_flags (const struct dwarf2_section_info *section)
2313 {
2314   asection *sectp = get_section_bfd_section (section);
2315
2316   gdb_assert (sectp != NULL);
2317   return bfd_get_section_flags (sectp->owner, sectp);
2318 }
2319
2320 /* When loading sections, we look either for uncompressed section or for
2321    compressed section names.  */
2322
2323 static int
2324 section_is_p (const char *section_name,
2325               const struct dwarf2_section_names *names)
2326 {
2327   if (names->normal != NULL
2328       && strcmp (section_name, names->normal) == 0)
2329     return 1;
2330   if (names->compressed != NULL
2331       && strcmp (section_name, names->compressed) == 0)
2332     return 1;
2333   return 0;
2334 }
2335
2336 /* See declaration.  */
2337
2338 void
2339 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2340                                      const dwarf2_debug_sections &names)
2341 {
2342   flagword aflag = bfd_get_section_flags (abfd, sectp);
2343
2344   if ((aflag & SEC_HAS_CONTENTS) == 0)
2345     {
2346     }
2347   else if (section_is_p (sectp->name, &names.info))
2348     {
2349       this->info.s.section = sectp;
2350       this->info.size = bfd_get_section_size (sectp);
2351     }
2352   else if (section_is_p (sectp->name, &names.abbrev))
2353     {
2354       this->abbrev.s.section = sectp;
2355       this->abbrev.size = bfd_get_section_size (sectp);
2356     }
2357   else if (section_is_p (sectp->name, &names.line))
2358     {
2359       this->line.s.section = sectp;
2360       this->line.size = bfd_get_section_size (sectp);
2361     }
2362   else if (section_is_p (sectp->name, &names.loc))
2363     {
2364       this->loc.s.section = sectp;
2365       this->loc.size = bfd_get_section_size (sectp);
2366     }
2367   else if (section_is_p (sectp->name, &names.loclists))
2368     {
2369       this->loclists.s.section = sectp;
2370       this->loclists.size = bfd_get_section_size (sectp);
2371     }
2372   else if (section_is_p (sectp->name, &names.macinfo))
2373     {
2374       this->macinfo.s.section = sectp;
2375       this->macinfo.size = bfd_get_section_size (sectp);
2376     }
2377   else if (section_is_p (sectp->name, &names.macro))
2378     {
2379       this->macro.s.section = sectp;
2380       this->macro.size = bfd_get_section_size (sectp);
2381     }
2382   else if (section_is_p (sectp->name, &names.str))
2383     {
2384       this->str.s.section = sectp;
2385       this->str.size = bfd_get_section_size (sectp);
2386     }
2387   else if (section_is_p (sectp->name, &names.line_str))
2388     {
2389       this->line_str.s.section = sectp;
2390       this->line_str.size = bfd_get_section_size (sectp);
2391     }
2392   else if (section_is_p (sectp->name, &names.addr))
2393     {
2394       this->addr.s.section = sectp;
2395       this->addr.size = bfd_get_section_size (sectp);
2396     }
2397   else if (section_is_p (sectp->name, &names.frame))
2398     {
2399       this->frame.s.section = sectp;
2400       this->frame.size = bfd_get_section_size (sectp);
2401     }
2402   else if (section_is_p (sectp->name, &names.eh_frame))
2403     {
2404       this->eh_frame.s.section = sectp;
2405       this->eh_frame.size = bfd_get_section_size (sectp);
2406     }
2407   else if (section_is_p (sectp->name, &names.ranges))
2408     {
2409       this->ranges.s.section = sectp;
2410       this->ranges.size = bfd_get_section_size (sectp);
2411     }
2412   else if (section_is_p (sectp->name, &names.rnglists))
2413     {
2414       this->rnglists.s.section = sectp;
2415       this->rnglists.size = bfd_get_section_size (sectp);
2416     }
2417   else if (section_is_p (sectp->name, &names.types))
2418     {
2419       struct dwarf2_section_info type_section;
2420
2421       memset (&type_section, 0, sizeof (type_section));
2422       type_section.s.section = sectp;
2423       type_section.size = bfd_get_section_size (sectp);
2424
2425       VEC_safe_push (dwarf2_section_info_def, this->types,
2426                      &type_section);
2427     }
2428   else if (section_is_p (sectp->name, &names.gdb_index))
2429     {
2430       this->gdb_index.s.section = sectp;
2431       this->gdb_index.size = bfd_get_section_size (sectp);
2432     }
2433   else if (section_is_p (sectp->name, &names.debug_names))
2434     {
2435       this->debug_names.s.section = sectp;
2436       this->debug_names.size = bfd_get_section_size (sectp);
2437     }
2438   else if (section_is_p (sectp->name, &names.debug_aranges))
2439     {
2440       this->debug_aranges.s.section = sectp;
2441       this->debug_aranges.size = bfd_get_section_size (sectp);
2442     }
2443
2444   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2445       && bfd_section_vma (abfd, sectp) == 0)
2446     this->has_section_at_zero = true;
2447 }
2448
2449 /* A helper function that decides whether a section is empty,
2450    or not present.  */
2451
2452 static int
2453 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2454 {
2455   if (section->is_virtual)
2456     return section->size == 0;
2457   return section->s.section == NULL || section->size == 0;
2458 }
2459
2460 /* See dwarf2read.h.  */
2461
2462 void
2463 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2464 {
2465   asection *sectp;
2466   bfd *abfd;
2467   gdb_byte *buf, *retbuf;
2468
2469   if (info->readin)
2470     return;
2471   info->buffer = NULL;
2472   info->readin = 1;
2473
2474   if (dwarf2_section_empty_p (info))
2475     return;
2476
2477   sectp = get_section_bfd_section (info);
2478
2479   /* If this is a virtual section we need to read in the real one first.  */
2480   if (info->is_virtual)
2481     {
2482       struct dwarf2_section_info *containing_section =
2483         get_containing_section (info);
2484
2485       gdb_assert (sectp != NULL);
2486       if ((sectp->flags & SEC_RELOC) != 0)
2487         {
2488           error (_("Dwarf Error: DWP format V2 with relocations is not"
2489                    " supported in section %s [in module %s]"),
2490                  get_section_name (info), get_section_file_name (info));
2491         }
2492       dwarf2_read_section (objfile, containing_section);
2493       /* Other code should have already caught virtual sections that don't
2494          fit.  */
2495       gdb_assert (info->virtual_offset + info->size
2496                   <= containing_section->size);
2497       /* If the real section is empty or there was a problem reading the
2498          section we shouldn't get here.  */
2499       gdb_assert (containing_section->buffer != NULL);
2500       info->buffer = containing_section->buffer + info->virtual_offset;
2501       return;
2502     }
2503
2504   /* If the section has relocations, we must read it ourselves.
2505      Otherwise we attach it to the BFD.  */
2506   if ((sectp->flags & SEC_RELOC) == 0)
2507     {
2508       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2509       return;
2510     }
2511
2512   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2513   info->buffer = buf;
2514
2515   /* When debugging .o files, we may need to apply relocations; see
2516      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2517      We never compress sections in .o files, so we only need to
2518      try this when the section is not compressed.  */
2519   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2520   if (retbuf != NULL)
2521     {
2522       info->buffer = retbuf;
2523       return;
2524     }
2525
2526   abfd = get_section_bfd_owner (info);
2527   gdb_assert (abfd != NULL);
2528
2529   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2530       || bfd_bread (buf, info->size, abfd) != info->size)
2531     {
2532       error (_("Dwarf Error: Can't read DWARF data"
2533                " in section %s [in module %s]"),
2534              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2535     }
2536 }
2537
2538 /* A helper function that returns the size of a section in a safe way.
2539    If you are positive that the section has been read before using the
2540    size, then it is safe to refer to the dwarf2_section_info object's
2541    "size" field directly.  In other cases, you must call this
2542    function, because for compressed sections the size field is not set
2543    correctly until the section has been read.  */
2544
2545 static bfd_size_type
2546 dwarf2_section_size (struct objfile *objfile,
2547                      struct dwarf2_section_info *info)
2548 {
2549   if (!info->readin)
2550     dwarf2_read_section (objfile, info);
2551   return info->size;
2552 }
2553
2554 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2555    SECTION_NAME.  */
2556
2557 void
2558 dwarf2_get_section_info (struct objfile *objfile,
2559                          enum dwarf2_section_enum sect,
2560                          asection **sectp, const gdb_byte **bufp,
2561                          bfd_size_type *sizep)
2562 {
2563   struct dwarf2_per_objfile *data
2564     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2565                                                   dwarf2_objfile_data_key);
2566   struct dwarf2_section_info *info;
2567
2568   /* We may see an objfile without any DWARF, in which case we just
2569      return nothing.  */
2570   if (data == NULL)
2571     {
2572       *sectp = NULL;
2573       *bufp = NULL;
2574       *sizep = 0;
2575       return;
2576     }
2577   switch (sect)
2578     {
2579     case DWARF2_DEBUG_FRAME:
2580       info = &data->frame;
2581       break;
2582     case DWARF2_EH_FRAME:
2583       info = &data->eh_frame;
2584       break;
2585     default:
2586       gdb_assert_not_reached ("unexpected section");
2587     }
2588
2589   dwarf2_read_section (objfile, info);
2590
2591   *sectp = get_section_bfd_section (info);
2592   *bufp = info->buffer;
2593   *sizep = info->size;
2594 }
2595
2596 /* A helper function to find the sections for a .dwz file.  */
2597
2598 static void
2599 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2600 {
2601   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2602
2603   /* Note that we only support the standard ELF names, because .dwz
2604      is ELF-only (at the time of writing).  */
2605   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2606     {
2607       dwz_file->abbrev.s.section = sectp;
2608       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2609     }
2610   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2611     {
2612       dwz_file->info.s.section = sectp;
2613       dwz_file->info.size = bfd_get_section_size (sectp);
2614     }
2615   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2616     {
2617       dwz_file->str.s.section = sectp;
2618       dwz_file->str.size = bfd_get_section_size (sectp);
2619     }
2620   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2621     {
2622       dwz_file->line.s.section = sectp;
2623       dwz_file->line.size = bfd_get_section_size (sectp);
2624     }
2625   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2626     {
2627       dwz_file->macro.s.section = sectp;
2628       dwz_file->macro.size = bfd_get_section_size (sectp);
2629     }
2630   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2631     {
2632       dwz_file->gdb_index.s.section = sectp;
2633       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2634     }
2635   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2636     {
2637       dwz_file->debug_names.s.section = sectp;
2638       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2639     }
2640 }
2641
2642 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2643    there is no .gnu_debugaltlink section in the file.  Error if there
2644    is such a section but the file cannot be found.  */
2645
2646 static struct dwz_file *
2647 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2648 {
2649   const char *filename;
2650   bfd_size_type buildid_len_arg;
2651   size_t buildid_len;
2652   bfd_byte *buildid;
2653
2654   if (dwarf2_per_objfile->dwz_file != NULL)
2655     return dwarf2_per_objfile->dwz_file.get ();
2656
2657   bfd_set_error (bfd_error_no_error);
2658   gdb::unique_xmalloc_ptr<char> data
2659     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2660                                   &buildid_len_arg, &buildid));
2661   if (data == NULL)
2662     {
2663       if (bfd_get_error () == bfd_error_no_error)
2664         return NULL;
2665       error (_("could not read '.gnu_debugaltlink' section: %s"),
2666              bfd_errmsg (bfd_get_error ()));
2667     }
2668
2669   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2670
2671   buildid_len = (size_t) buildid_len_arg;
2672
2673   filename = data.get ();
2674
2675   std::string abs_storage;
2676   if (!IS_ABSOLUTE_PATH (filename))
2677     {
2678       gdb::unique_xmalloc_ptr<char> abs
2679         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2680
2681       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2682       filename = abs_storage.c_str ();
2683     }
2684
2685   /* First try the file name given in the section.  If that doesn't
2686      work, try to use the build-id instead.  */
2687   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2688   if (dwz_bfd != NULL)
2689     {
2690       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2691         dwz_bfd.release ();
2692     }
2693
2694   if (dwz_bfd == NULL)
2695     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2696
2697   if (dwz_bfd == NULL)
2698     error (_("could not find '.gnu_debugaltlink' file for %s"),
2699            objfile_name (dwarf2_per_objfile->objfile));
2700
2701   std::unique_ptr<struct dwz_file> result
2702     (new struct dwz_file (std::move (dwz_bfd)));
2703
2704   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2705                          result.get ());
2706
2707   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2708                             result->dwz_bfd.get ());
2709   dwarf2_per_objfile->dwz_file = std::move (result);
2710   return dwarf2_per_objfile->dwz_file.get ();
2711 }
2712 \f
2713 /* DWARF quick_symbols_functions support.  */
2714
2715 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2716    unique line tables, so we maintain a separate table of all .debug_line
2717    derived entries to support the sharing.
2718    All the quick functions need is the list of file names.  We discard the
2719    line_header when we're done and don't need to record it here.  */
2720 struct quick_file_names
2721 {
2722   /* The data used to construct the hash key.  */
2723   struct stmt_list_hash hash;
2724
2725   /* The number of entries in file_names, real_names.  */
2726   unsigned int num_file_names;
2727
2728   /* The file names from the line table, after being run through
2729      file_full_name.  */
2730   const char **file_names;
2731
2732   /* The file names from the line table after being run through
2733      gdb_realpath.  These are computed lazily.  */
2734   const char **real_names;
2735 };
2736
2737 /* When using the index (and thus not using psymtabs), each CU has an
2738    object of this type.  This is used to hold information needed by
2739    the various "quick" methods.  */
2740 struct dwarf2_per_cu_quick_data
2741 {
2742   /* The file table.  This can be NULL if there was no file table
2743      or it's currently not read in.
2744      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2745   struct quick_file_names *file_names;
2746
2747   /* The corresponding symbol table.  This is NULL if symbols for this
2748      CU have not yet been read.  */
2749   struct compunit_symtab *compunit_symtab;
2750
2751   /* A temporary mark bit used when iterating over all CUs in
2752      expand_symtabs_matching.  */
2753   unsigned int mark : 1;
2754
2755   /* True if we've tried to read the file table and found there isn't one.
2756      There will be no point in trying to read it again next time.  */
2757   unsigned int no_file_data : 1;
2758 };
2759
2760 /* Utility hash function for a stmt_list_hash.  */
2761
2762 static hashval_t
2763 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2764 {
2765   hashval_t v = 0;
2766
2767   if (stmt_list_hash->dwo_unit != NULL)
2768     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2769   v += to_underlying (stmt_list_hash->line_sect_off);
2770   return v;
2771 }
2772
2773 /* Utility equality function for a stmt_list_hash.  */
2774
2775 static int
2776 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2777                     const struct stmt_list_hash *rhs)
2778 {
2779   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2780     return 0;
2781   if (lhs->dwo_unit != NULL
2782       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2783     return 0;
2784
2785   return lhs->line_sect_off == rhs->line_sect_off;
2786 }
2787
2788 /* Hash function for a quick_file_names.  */
2789
2790 static hashval_t
2791 hash_file_name_entry (const void *e)
2792 {
2793   const struct quick_file_names *file_data
2794     = (const struct quick_file_names *) e;
2795
2796   return hash_stmt_list_entry (&file_data->hash);
2797 }
2798
2799 /* Equality function for a quick_file_names.  */
2800
2801 static int
2802 eq_file_name_entry (const void *a, const void *b)
2803 {
2804   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2805   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2806
2807   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2808 }
2809
2810 /* Delete function for a quick_file_names.  */
2811
2812 static void
2813 delete_file_name_entry (void *e)
2814 {
2815   struct quick_file_names *file_data = (struct quick_file_names *) e;
2816   int i;
2817
2818   for (i = 0; i < file_data->num_file_names; ++i)
2819     {
2820       xfree ((void*) file_data->file_names[i]);
2821       if (file_data->real_names)
2822         xfree ((void*) file_data->real_names[i]);
2823     }
2824
2825   /* The space for the struct itself lives on objfile_obstack,
2826      so we don't free it here.  */
2827 }
2828
2829 /* Create a quick_file_names hash table.  */
2830
2831 static htab_t
2832 create_quick_file_names_table (unsigned int nr_initial_entries)
2833 {
2834   return htab_create_alloc (nr_initial_entries,
2835                             hash_file_name_entry, eq_file_name_entry,
2836                             delete_file_name_entry, xcalloc, xfree);
2837 }
2838
2839 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2840    have to be created afterwards.  You should call age_cached_comp_units after
2841    processing PER_CU->CU.  dw2_setup must have been already called.  */
2842
2843 static void
2844 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2845 {
2846   if (per_cu->is_debug_types)
2847     load_full_type_unit (per_cu);
2848   else
2849     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2850
2851   if (per_cu->cu == NULL)
2852     return;  /* Dummy CU.  */
2853
2854   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2855 }
2856
2857 /* Read in the symbols for PER_CU.  */
2858
2859 static void
2860 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2861 {
2862   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2863
2864   /* Skip type_unit_groups, reading the type units they contain
2865      is handled elsewhere.  */
2866   if (IS_TYPE_UNIT_GROUP (per_cu))
2867     return;
2868
2869   /* The destructor of dwarf2_queue_guard frees any entries left on
2870      the queue.  After this point we're guaranteed to leave this function
2871      with the dwarf queue empty.  */
2872   dwarf2_queue_guard q_guard;
2873
2874   if (dwarf2_per_objfile->using_index
2875       ? per_cu->v.quick->compunit_symtab == NULL
2876       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2877     {
2878       queue_comp_unit (per_cu, language_minimal);
2879       load_cu (per_cu, skip_partial);
2880
2881       /* If we just loaded a CU from a DWO, and we're working with an index
2882          that may badly handle TUs, load all the TUs in that DWO as well.
2883          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2884       if (!per_cu->is_debug_types
2885           && per_cu->cu != NULL
2886           && per_cu->cu->dwo_unit != NULL
2887           && dwarf2_per_objfile->index_table != NULL
2888           && dwarf2_per_objfile->index_table->version <= 7
2889           /* DWP files aren't supported yet.  */
2890           && get_dwp_file (dwarf2_per_objfile) == NULL)
2891         queue_and_load_all_dwo_tus (per_cu);
2892     }
2893
2894   process_queue (dwarf2_per_objfile);
2895
2896   /* Age the cache, releasing compilation units that have not
2897      been used recently.  */
2898   age_cached_comp_units (dwarf2_per_objfile);
2899 }
2900
2901 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2902    the objfile from which this CU came.  Returns the resulting symbol
2903    table.  */
2904
2905 static struct compunit_symtab *
2906 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2907 {
2908   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2909
2910   gdb_assert (dwarf2_per_objfile->using_index);
2911   if (!per_cu->v.quick->compunit_symtab)
2912     {
2913       free_cached_comp_units freer (dwarf2_per_objfile);
2914       scoped_restore decrementer = increment_reading_symtab ();
2915       dw2_do_instantiate_symtab (per_cu, skip_partial);
2916       process_cu_includes (dwarf2_per_objfile);
2917     }
2918
2919   return per_cu->v.quick->compunit_symtab;
2920 }
2921
2922 /* See declaration.  */
2923
2924 dwarf2_per_cu_data *
2925 dwarf2_per_objfile::get_cutu (int index)
2926 {
2927   if (index >= this->all_comp_units.size ())
2928     {
2929       index -= this->all_comp_units.size ();
2930       gdb_assert (index < this->all_type_units.size ());
2931       return &this->all_type_units[index]->per_cu;
2932     }
2933
2934   return this->all_comp_units[index];
2935 }
2936
2937 /* See declaration.  */
2938
2939 dwarf2_per_cu_data *
2940 dwarf2_per_objfile::get_cu (int index)
2941 {
2942   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2943
2944   return this->all_comp_units[index];
2945 }
2946
2947 /* See declaration.  */
2948
2949 signatured_type *
2950 dwarf2_per_objfile::get_tu (int index)
2951 {
2952   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2953
2954   return this->all_type_units[index];
2955 }
2956
2957 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2958    objfile_obstack, and constructed with the specified field
2959    values.  */
2960
2961 static dwarf2_per_cu_data *
2962 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2963                           struct dwarf2_section_info *section,
2964                           int is_dwz,
2965                           sect_offset sect_off, ULONGEST length)
2966 {
2967   struct objfile *objfile = dwarf2_per_objfile->objfile;
2968   dwarf2_per_cu_data *the_cu
2969     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970                      struct dwarf2_per_cu_data);
2971   the_cu->sect_off = sect_off;
2972   the_cu->length = length;
2973   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2974   the_cu->section = section;
2975   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2976                                    struct dwarf2_per_cu_quick_data);
2977   the_cu->is_dwz = is_dwz;
2978   return the_cu;
2979 }
2980
2981 /* A helper for create_cus_from_index that handles a given list of
2982    CUs.  */
2983
2984 static void
2985 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2986                             const gdb_byte *cu_list, offset_type n_elements,
2987                             struct dwarf2_section_info *section,
2988                             int is_dwz)
2989 {
2990   for (offset_type i = 0; i < n_elements; i += 2)
2991     {
2992       gdb_static_assert (sizeof (ULONGEST) >= 8);
2993
2994       sect_offset sect_off
2995         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2996       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2997       cu_list += 2 * 8;
2998
2999       dwarf2_per_cu_data *per_cu
3000         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3001                                      sect_off, length);
3002       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3003     }
3004 }
3005
3006 /* Read the CU list from the mapped index, and use it to create all
3007    the CU objects for this objfile.  */
3008
3009 static void
3010 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3011                        const gdb_byte *cu_list, offset_type cu_list_elements,
3012                        const gdb_byte *dwz_list, offset_type dwz_elements)
3013 {
3014   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3015   dwarf2_per_objfile->all_comp_units.reserve
3016     ((cu_list_elements + dwz_elements) / 2);
3017
3018   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3019                               &dwarf2_per_objfile->info, 0);
3020
3021   if (dwz_elements == 0)
3022     return;
3023
3024   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3025   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3026                               &dwz->info, 1);
3027 }
3028
3029 /* Create the signatured type hash table from the index.  */
3030
3031 static void
3032 create_signatured_type_table_from_index
3033   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3034    struct dwarf2_section_info *section,
3035    const gdb_byte *bytes,
3036    offset_type elements)
3037 {
3038   struct objfile *objfile = dwarf2_per_objfile->objfile;
3039
3040   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3041   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3042
3043   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3044
3045   for (offset_type i = 0; i < elements; i += 3)
3046     {
3047       struct signatured_type *sig_type;
3048       ULONGEST signature;
3049       void **slot;
3050       cu_offset type_offset_in_tu;
3051
3052       gdb_static_assert (sizeof (ULONGEST) >= 8);
3053       sect_offset sect_off
3054         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3055       type_offset_in_tu
3056         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3057                                                 BFD_ENDIAN_LITTLE);
3058       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3059       bytes += 3 * 8;
3060
3061       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3062                                  struct signatured_type);
3063       sig_type->signature = signature;
3064       sig_type->type_offset_in_tu = type_offset_in_tu;
3065       sig_type->per_cu.is_debug_types = 1;
3066       sig_type->per_cu.section = section;
3067       sig_type->per_cu.sect_off = sect_off;
3068       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3069       sig_type->per_cu.v.quick
3070         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3071                           struct dwarf2_per_cu_quick_data);
3072
3073       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3074       *slot = sig_type;
3075
3076       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3077     }
3078
3079   dwarf2_per_objfile->signatured_types = sig_types_hash;
3080 }
3081
3082 /* Create the signatured type hash table from .debug_names.  */
3083
3084 static void
3085 create_signatured_type_table_from_debug_names
3086   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3087    const mapped_debug_names &map,
3088    struct dwarf2_section_info *section,
3089    struct dwarf2_section_info *abbrev_section)
3090 {
3091   struct objfile *objfile = dwarf2_per_objfile->objfile;
3092
3093   dwarf2_read_section (objfile, section);
3094   dwarf2_read_section (objfile, abbrev_section);
3095
3096   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3097   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3098
3099   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3100
3101   for (uint32_t i = 0; i < map.tu_count; ++i)
3102     {
3103       struct signatured_type *sig_type;
3104       void **slot;
3105
3106       sect_offset sect_off
3107         = (sect_offset) (extract_unsigned_integer
3108                          (map.tu_table_reordered + i * map.offset_size,
3109                           map.offset_size,
3110                           map.dwarf5_byte_order));
3111
3112       comp_unit_head cu_header;
3113       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3114                                      abbrev_section,
3115                                      section->buffer + to_underlying (sect_off),
3116                                      rcuh_kind::TYPE);
3117
3118       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3119                                  struct signatured_type);
3120       sig_type->signature = cu_header.signature;
3121       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3122       sig_type->per_cu.is_debug_types = 1;
3123       sig_type->per_cu.section = section;
3124       sig_type->per_cu.sect_off = sect_off;
3125       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3126       sig_type->per_cu.v.quick
3127         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3128                           struct dwarf2_per_cu_quick_data);
3129
3130       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3131       *slot = sig_type;
3132
3133       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3134     }
3135
3136   dwarf2_per_objfile->signatured_types = sig_types_hash;
3137 }
3138
3139 /* Read the address map data from the mapped index, and use it to
3140    populate the objfile's psymtabs_addrmap.  */
3141
3142 static void
3143 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3144                            struct mapped_index *index)
3145 {
3146   struct objfile *objfile = dwarf2_per_objfile->objfile;
3147   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3148   const gdb_byte *iter, *end;
3149   struct addrmap *mutable_map;
3150   CORE_ADDR baseaddr;
3151
3152   auto_obstack temp_obstack;
3153
3154   mutable_map = addrmap_create_mutable (&temp_obstack);
3155
3156   iter = index->address_table.data ();
3157   end = iter + index->address_table.size ();
3158
3159   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3160
3161   while (iter < end)
3162     {
3163       ULONGEST hi, lo, cu_index;
3164       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3165       iter += 8;
3166       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3167       iter += 8;
3168       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3169       iter += 4;
3170
3171       if (lo > hi)
3172         {
3173           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3174                      hex_string (lo), hex_string (hi));
3175           continue;
3176         }
3177
3178       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3179         {
3180           complaint (_(".gdb_index address table has invalid CU number %u"),
3181                      (unsigned) cu_index);
3182           continue;
3183         }
3184
3185       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3186       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3187       addrmap_set_empty (mutable_map, lo, hi - 1,
3188                          dwarf2_per_objfile->get_cu (cu_index));
3189     }
3190
3191   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3192                                                     &objfile->objfile_obstack);
3193 }
3194
3195 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3196    populate the objfile's psymtabs_addrmap.  */
3197
3198 static void
3199 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3200                              struct dwarf2_section_info *section)
3201 {
3202   struct objfile *objfile = dwarf2_per_objfile->objfile;
3203   bfd *abfd = objfile->obfd;
3204   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3205   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3206                                        SECT_OFF_TEXT (objfile));
3207
3208   auto_obstack temp_obstack;
3209   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3210
3211   std::unordered_map<sect_offset,
3212                      dwarf2_per_cu_data *,
3213                      gdb::hash_enum<sect_offset>>
3214     debug_info_offset_to_per_cu;
3215   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3216     {
3217       const auto insertpair
3218         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3219       if (!insertpair.second)
3220         {
3221           warning (_("Section .debug_aranges in %s has duplicate "
3222                      "debug_info_offset %s, ignoring .debug_aranges."),
3223                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3224           return;
3225         }
3226     }
3227
3228   dwarf2_read_section (objfile, section);
3229
3230   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3231
3232   const gdb_byte *addr = section->buffer;
3233
3234   while (addr < section->buffer + section->size)
3235     {
3236       const gdb_byte *const entry_addr = addr;
3237       unsigned int bytes_read;
3238
3239       const LONGEST entry_length = read_initial_length (abfd, addr,
3240                                                         &bytes_read);
3241       addr += bytes_read;
3242
3243       const gdb_byte *const entry_end = addr + entry_length;
3244       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3245       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3246       if (addr + entry_length > section->buffer + section->size)
3247         {
3248           warning (_("Section .debug_aranges in %s entry at offset %zu "
3249                      "length %s exceeds section length %s, "
3250                      "ignoring .debug_aranges."),
3251                    objfile_name (objfile), entry_addr - section->buffer,
3252                    plongest (bytes_read + entry_length),
3253                    pulongest (section->size));
3254           return;
3255         }
3256
3257       /* The version number.  */
3258       const uint16_t version = read_2_bytes (abfd, addr);
3259       addr += 2;
3260       if (version != 2)
3261         {
3262           warning (_("Section .debug_aranges in %s entry at offset %zu "
3263                      "has unsupported version %d, ignoring .debug_aranges."),
3264                    objfile_name (objfile), entry_addr - section->buffer,
3265                    version);
3266           return;
3267         }
3268
3269       const uint64_t debug_info_offset
3270         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3271       addr += offset_size;
3272       const auto per_cu_it
3273         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3274       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3275         {
3276           warning (_("Section .debug_aranges in %s entry at offset %zu "
3277                      "debug_info_offset %s does not exists, "
3278                      "ignoring .debug_aranges."),
3279                    objfile_name (objfile), entry_addr - section->buffer,
3280                    pulongest (debug_info_offset));
3281           return;
3282         }
3283       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3284
3285       const uint8_t address_size = *addr++;
3286       if (address_size < 1 || address_size > 8)
3287         {
3288           warning (_("Section .debug_aranges in %s entry at offset %zu "
3289                      "address_size %u is invalid, ignoring .debug_aranges."),
3290                    objfile_name (objfile), entry_addr - section->buffer,
3291                    address_size);
3292           return;
3293         }
3294
3295       const uint8_t segment_selector_size = *addr++;
3296       if (segment_selector_size != 0)
3297         {
3298           warning (_("Section .debug_aranges in %s entry at offset %zu "
3299                      "segment_selector_size %u is not supported, "
3300                      "ignoring .debug_aranges."),
3301                    objfile_name (objfile), entry_addr - section->buffer,
3302                    segment_selector_size);
3303           return;
3304         }
3305
3306       /* Must pad to an alignment boundary that is twice the address
3307          size.  It is undocumented by the DWARF standard but GCC does
3308          use it.  */
3309       for (size_t padding = ((-(addr - section->buffer))
3310                              & (2 * address_size - 1));
3311            padding > 0; padding--)
3312         if (*addr++ != 0)
3313           {
3314             warning (_("Section .debug_aranges in %s entry at offset %zu "
3315                        "padding is not zero, ignoring .debug_aranges."),
3316                      objfile_name (objfile), entry_addr - section->buffer);
3317             return;
3318           }
3319
3320       for (;;)
3321         {
3322           if (addr + 2 * address_size > entry_end)
3323             {
3324               warning (_("Section .debug_aranges in %s entry at offset %zu "
3325                          "address list is not properly terminated, "
3326                          "ignoring .debug_aranges."),
3327                        objfile_name (objfile), entry_addr - section->buffer);
3328               return;
3329             }
3330           ULONGEST start = extract_unsigned_integer (addr, address_size,
3331                                                      dwarf5_byte_order);
3332           addr += address_size;
3333           ULONGEST length = extract_unsigned_integer (addr, address_size,
3334                                                       dwarf5_byte_order);
3335           addr += address_size;
3336           if (start == 0 && length == 0)
3337             break;
3338           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3339             {
3340               /* Symbol was eliminated due to a COMDAT group.  */
3341               continue;
3342             }
3343           ULONGEST end = start + length;
3344           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3345                    - baseaddr);
3346           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3347                  - baseaddr);
3348           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3349         }
3350     }
3351
3352   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3353                                                     &objfile->objfile_obstack);
3354 }
3355
3356 /* Find a slot in the mapped index INDEX for the object named NAME.
3357    If NAME is found, set *VEC_OUT to point to the CU vector in the
3358    constant pool and return true.  If NAME cannot be found, return
3359    false.  */
3360
3361 static bool
3362 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3363                           offset_type **vec_out)
3364 {
3365   offset_type hash;
3366   offset_type slot, step;
3367   int (*cmp) (const char *, const char *);
3368
3369   gdb::unique_xmalloc_ptr<char> without_params;
3370   if (current_language->la_language == language_cplus
3371       || current_language->la_language == language_fortran
3372       || current_language->la_language == language_d)
3373     {
3374       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3375          not contain any.  */
3376
3377       if (strchr (name, '(') != NULL)
3378         {
3379           without_params = cp_remove_params (name);
3380
3381           if (without_params != NULL)
3382             name = without_params.get ();
3383         }
3384     }
3385
3386   /* Index version 4 did not support case insensitive searches.  But the
3387      indices for case insensitive languages are built in lowercase, therefore
3388      simulate our NAME being searched is also lowercased.  */
3389   hash = mapped_index_string_hash ((index->version == 4
3390                                     && case_sensitivity == case_sensitive_off
3391                                     ? 5 : index->version),
3392                                    name);
3393
3394   slot = hash & (index->symbol_table.size () - 1);
3395   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3396   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3397
3398   for (;;)
3399     {
3400       const char *str;
3401
3402       const auto &bucket = index->symbol_table[slot];
3403       if (bucket.name == 0 && bucket.vec == 0)
3404         return false;
3405
3406       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3407       if (!cmp (name, str))
3408         {
3409           *vec_out = (offset_type *) (index->constant_pool
3410                                       + MAYBE_SWAP (bucket.vec));
3411           return true;
3412         }
3413
3414       slot = (slot + step) & (index->symbol_table.size () - 1);
3415     }
3416 }
3417
3418 /* A helper function that reads the .gdb_index from BUFFER and fills
3419    in MAP.  FILENAME is the name of the file containing the data;
3420    it is used for error reporting.  DEPRECATED_OK is true if it is
3421    ok to use deprecated sections.
3422
3423    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3424    out parameters that are filled in with information about the CU and
3425    TU lists in the section.
3426
3427    Returns true if all went well, false otherwise.  */
3428
3429 static bool
3430 read_gdb_index_from_buffer (struct objfile *objfile,
3431                             const char *filename,
3432                             bool deprecated_ok,
3433                             gdb::array_view<const gdb_byte> buffer,
3434                             struct mapped_index *map,
3435                             const gdb_byte **cu_list,
3436                             offset_type *cu_list_elements,
3437                             const gdb_byte **types_list,
3438                             offset_type *types_list_elements)
3439 {
3440   const gdb_byte *addr = &buffer[0];
3441
3442   /* Version check.  */
3443   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3444   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3445      causes the index to behave very poorly for certain requests.  Version 3
3446      contained incomplete addrmap.  So, it seems better to just ignore such
3447      indices.  */
3448   if (version < 4)
3449     {
3450       static int warning_printed = 0;
3451       if (!warning_printed)
3452         {
3453           warning (_("Skipping obsolete .gdb_index section in %s."),
3454                    filename);
3455           warning_printed = 1;
3456         }
3457       return 0;
3458     }
3459   /* Index version 4 uses a different hash function than index version
3460      5 and later.
3461
3462      Versions earlier than 6 did not emit psymbols for inlined
3463      functions.  Using these files will cause GDB not to be able to
3464      set breakpoints on inlined functions by name, so we ignore these
3465      indices unless the user has done
3466      "set use-deprecated-index-sections on".  */
3467   if (version < 6 && !deprecated_ok)
3468     {
3469       static int warning_printed = 0;
3470       if (!warning_printed)
3471         {
3472           warning (_("\
3473 Skipping deprecated .gdb_index section in %s.\n\
3474 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3475 to use the section anyway."),
3476                    filename);
3477           warning_printed = 1;
3478         }
3479       return 0;
3480     }
3481   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3482      of the TU (for symbols coming from TUs),
3483      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3484      Plus gold-generated indices can have duplicate entries for global symbols,
3485      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3486      These are just performance bugs, and we can't distinguish gdb-generated
3487      indices from gold-generated ones, so issue no warning here.  */
3488
3489   /* Indexes with higher version than the one supported by GDB may be no
3490      longer backward compatible.  */
3491   if (version > 8)
3492     return 0;
3493
3494   map->version = version;
3495
3496   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3497
3498   int i = 0;
3499   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3500   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3501                        / 8);
3502   ++i;
3503
3504   *types_list = addr + MAYBE_SWAP (metadata[i]);
3505   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3506                            - MAYBE_SWAP (metadata[i]))
3507                           / 8);
3508   ++i;
3509
3510   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3511   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3512   map->address_table
3513     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3514   ++i;
3515
3516   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3517   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3518   map->symbol_table
3519     = gdb::array_view<mapped_index::symbol_table_slot>
3520        ((mapped_index::symbol_table_slot *) symbol_table,
3521         (mapped_index::symbol_table_slot *) symbol_table_end);
3522
3523   ++i;
3524   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3525
3526   return 1;
3527 }
3528
3529 /* Callback types for dwarf2_read_gdb_index.  */
3530
3531 typedef gdb::function_view
3532     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3533     get_gdb_index_contents_ftype;
3534 typedef gdb::function_view
3535     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3536     get_gdb_index_contents_dwz_ftype;
3537
3538 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3539    elements of all the CUs and return 1.  Otherwise, return 0.  */
3540
3541 static int
3542 dwarf2_read_gdb_index
3543   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3544    get_gdb_index_contents_ftype get_gdb_index_contents,
3545    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3546 {
3547   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3548   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3549   struct dwz_file *dwz;
3550   struct objfile *objfile = dwarf2_per_objfile->objfile;
3551
3552   gdb::array_view<const gdb_byte> main_index_contents
3553     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3554
3555   if (main_index_contents.empty ())
3556     return 0;
3557
3558   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3559   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3560                                    use_deprecated_index_sections,
3561                                    main_index_contents, map.get (), &cu_list,
3562                                    &cu_list_elements, &types_list,
3563                                    &types_list_elements))
3564     return 0;
3565
3566   /* Don't use the index if it's empty.  */
3567   if (map->symbol_table.empty ())
3568     return 0;
3569
3570   /* If there is a .dwz file, read it so we can get its CU list as
3571      well.  */
3572   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3573   if (dwz != NULL)
3574     {
3575       struct mapped_index dwz_map;
3576       const gdb_byte *dwz_types_ignore;
3577       offset_type dwz_types_elements_ignore;
3578
3579       gdb::array_view<const gdb_byte> dwz_index_content
3580         = get_gdb_index_contents_dwz (objfile, dwz);
3581
3582       if (dwz_index_content.empty ())
3583         return 0;
3584
3585       if (!read_gdb_index_from_buffer (objfile,
3586                                        bfd_get_filename (dwz->dwz_bfd), 1,
3587                                        dwz_index_content, &dwz_map,
3588                                        &dwz_list, &dwz_list_elements,
3589                                        &dwz_types_ignore,
3590                                        &dwz_types_elements_ignore))
3591         {
3592           warning (_("could not read '.gdb_index' section from %s; skipping"),
3593                    bfd_get_filename (dwz->dwz_bfd));
3594           return 0;
3595         }
3596     }
3597
3598   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3599                          dwz_list, dwz_list_elements);
3600
3601   if (types_list_elements)
3602     {
3603       struct dwarf2_section_info *section;
3604
3605       /* We can only handle a single .debug_types when we have an
3606          index.  */
3607       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3608         return 0;
3609
3610       section = VEC_index (dwarf2_section_info_def,
3611                            dwarf2_per_objfile->types, 0);
3612
3613       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3614                                                types_list, types_list_elements);
3615     }
3616
3617   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3618
3619   dwarf2_per_objfile->index_table = std::move (map);
3620   dwarf2_per_objfile->using_index = 1;
3621   dwarf2_per_objfile->quick_file_names_table =
3622     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3623
3624   return 1;
3625 }
3626
3627 /* die_reader_func for dw2_get_file_names.  */
3628
3629 static void
3630 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3631                            const gdb_byte *info_ptr,
3632                            struct die_info *comp_unit_die,
3633                            int has_children,
3634                            void *data)
3635 {
3636   struct dwarf2_cu *cu = reader->cu;
3637   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3638   struct dwarf2_per_objfile *dwarf2_per_objfile
3639     = cu->per_cu->dwarf2_per_objfile;
3640   struct objfile *objfile = dwarf2_per_objfile->objfile;
3641   struct dwarf2_per_cu_data *lh_cu;
3642   struct attribute *attr;
3643   int i;
3644   void **slot;
3645   struct quick_file_names *qfn;
3646
3647   gdb_assert (! this_cu->is_debug_types);
3648
3649   /* Our callers never want to match partial units -- instead they
3650      will match the enclosing full CU.  */
3651   if (comp_unit_die->tag == DW_TAG_partial_unit)
3652     {
3653       this_cu->v.quick->no_file_data = 1;
3654       return;
3655     }
3656
3657   lh_cu = this_cu;
3658   slot = NULL;
3659
3660   line_header_up lh;
3661   sect_offset line_offset {};
3662
3663   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3664   if (attr)
3665     {
3666       struct quick_file_names find_entry;
3667
3668       line_offset = (sect_offset) DW_UNSND (attr);
3669
3670       /* We may have already read in this line header (TU line header sharing).
3671          If we have we're done.  */
3672       find_entry.hash.dwo_unit = cu->dwo_unit;
3673       find_entry.hash.line_sect_off = line_offset;
3674       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3675                              &find_entry, INSERT);
3676       if (*slot != NULL)
3677         {
3678           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3679           return;
3680         }
3681
3682       lh = dwarf_decode_line_header (line_offset, cu);
3683     }
3684   if (lh == NULL)
3685     {
3686       lh_cu->v.quick->no_file_data = 1;
3687       return;
3688     }
3689
3690   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3691   qfn->hash.dwo_unit = cu->dwo_unit;
3692   qfn->hash.line_sect_off = line_offset;
3693   gdb_assert (slot != NULL);
3694   *slot = qfn;
3695
3696   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3697
3698   qfn->num_file_names = lh->file_names.size ();
3699   qfn->file_names =
3700     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3701   for (i = 0; i < lh->file_names.size (); ++i)
3702     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3703   qfn->real_names = NULL;
3704
3705   lh_cu->v.quick->file_names = qfn;
3706 }
3707
3708 /* A helper for the "quick" functions which attempts to read the line
3709    table for THIS_CU.  */
3710
3711 static struct quick_file_names *
3712 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3713 {
3714   /* This should never be called for TUs.  */
3715   gdb_assert (! this_cu->is_debug_types);
3716   /* Nor type unit groups.  */
3717   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3718
3719   if (this_cu->v.quick->file_names != NULL)
3720     return this_cu->v.quick->file_names;
3721   /* If we know there is no line data, no point in looking again.  */
3722   if (this_cu->v.quick->no_file_data)
3723     return NULL;
3724
3725   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3726
3727   if (this_cu->v.quick->no_file_data)
3728     return NULL;
3729   return this_cu->v.quick->file_names;
3730 }
3731
3732 /* A helper for the "quick" functions which computes and caches the
3733    real path for a given file name from the line table.  */
3734
3735 static const char *
3736 dw2_get_real_path (struct objfile *objfile,
3737                    struct quick_file_names *qfn, int index)
3738 {
3739   if (qfn->real_names == NULL)
3740     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3741                                       qfn->num_file_names, const char *);
3742
3743   if (qfn->real_names[index] == NULL)
3744     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3745
3746   return qfn->real_names[index];
3747 }
3748
3749 static struct symtab *
3750 dw2_find_last_source_symtab (struct objfile *objfile)
3751 {
3752   struct dwarf2_per_objfile *dwarf2_per_objfile
3753     = get_dwarf2_per_objfile (objfile);
3754   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3755   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3756
3757   if (cust == NULL)
3758     return NULL;
3759
3760   return compunit_primary_filetab (cust);
3761 }
3762
3763 /* Traversal function for dw2_forget_cached_source_info.  */
3764
3765 static int
3766 dw2_free_cached_file_names (void **slot, void *info)
3767 {
3768   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3769
3770   if (file_data->real_names)
3771     {
3772       int i;
3773
3774       for (i = 0; i < file_data->num_file_names; ++i)
3775         {
3776           xfree ((void*) file_data->real_names[i]);
3777           file_data->real_names[i] = NULL;
3778         }
3779     }
3780
3781   return 1;
3782 }
3783
3784 static void
3785 dw2_forget_cached_source_info (struct objfile *objfile)
3786 {
3787   struct dwarf2_per_objfile *dwarf2_per_objfile
3788     = get_dwarf2_per_objfile (objfile);
3789
3790   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3791                           dw2_free_cached_file_names, NULL);
3792 }
3793
3794 /* Helper function for dw2_map_symtabs_matching_filename that expands
3795    the symtabs and calls the iterator.  */
3796
3797 static int
3798 dw2_map_expand_apply (struct objfile *objfile,
3799                       struct dwarf2_per_cu_data *per_cu,
3800                       const char *name, const char *real_path,
3801                       gdb::function_view<bool (symtab *)> callback)
3802 {
3803   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3804
3805   /* Don't visit already-expanded CUs.  */
3806   if (per_cu->v.quick->compunit_symtab)
3807     return 0;
3808
3809   /* This may expand more than one symtab, and we want to iterate over
3810      all of them.  */
3811   dw2_instantiate_symtab (per_cu, false);
3812
3813   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3814                                     last_made, callback);
3815 }
3816
3817 /* Implementation of the map_symtabs_matching_filename method.  */
3818
3819 static bool
3820 dw2_map_symtabs_matching_filename
3821   (struct objfile *objfile, const char *name, const char *real_path,
3822    gdb::function_view<bool (symtab *)> callback)
3823 {
3824   const char *name_basename = lbasename (name);
3825   struct dwarf2_per_objfile *dwarf2_per_objfile
3826     = get_dwarf2_per_objfile (objfile);
3827
3828   /* The rule is CUs specify all the files, including those used by
3829      any TU, so there's no need to scan TUs here.  */
3830
3831   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3832     {
3833       /* We only need to look at symtabs not already expanded.  */
3834       if (per_cu->v.quick->compunit_symtab)
3835         continue;
3836
3837       quick_file_names *file_data = dw2_get_file_names (per_cu);
3838       if (file_data == NULL)
3839         continue;
3840
3841       for (int j = 0; j < file_data->num_file_names; ++j)
3842         {
3843           const char *this_name = file_data->file_names[j];
3844           const char *this_real_name;
3845
3846           if (compare_filenames_for_search (this_name, name))
3847             {
3848               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3849                                         callback))
3850                 return true;
3851               continue;
3852             }
3853
3854           /* Before we invoke realpath, which can get expensive when many
3855              files are involved, do a quick comparison of the basenames.  */
3856           if (! basenames_may_differ
3857               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3858             continue;
3859
3860           this_real_name = dw2_get_real_path (objfile, file_data, j);
3861           if (compare_filenames_for_search (this_real_name, name))
3862             {
3863               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3864                                         callback))
3865                 return true;
3866               continue;
3867             }
3868
3869           if (real_path != NULL)
3870             {
3871               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3872               gdb_assert (IS_ABSOLUTE_PATH (name));
3873               if (this_real_name != NULL
3874                   && FILENAME_CMP (real_path, this_real_name) == 0)
3875                 {
3876                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3877                                             callback))
3878                     return true;
3879                   continue;
3880                 }
3881             }
3882         }
3883     }
3884
3885   return false;
3886 }
3887
3888 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3889
3890 struct dw2_symtab_iterator
3891 {
3892   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3893   struct dwarf2_per_objfile *dwarf2_per_objfile;
3894   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3895   int want_specific_block;
3896   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3897      Unused if !WANT_SPECIFIC_BLOCK.  */
3898   int block_index;
3899   /* The kind of symbol we're looking for.  */
3900   domain_enum domain;
3901   /* The list of CUs from the index entry of the symbol,
3902      or NULL if not found.  */
3903   offset_type *vec;
3904   /* The next element in VEC to look at.  */
3905   int next;
3906   /* The number of elements in VEC, or zero if there is no match.  */
3907   int length;
3908   /* Have we seen a global version of the symbol?
3909      If so we can ignore all further global instances.
3910      This is to work around gold/15646, inefficient gold-generated
3911      indices.  */
3912   int global_seen;
3913 };
3914
3915 /* Initialize the index symtab iterator ITER.
3916    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3917    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3918
3919 static void
3920 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3921                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3922                       int want_specific_block,
3923                       int block_index,
3924                       domain_enum domain,
3925                       const char *name)
3926 {
3927   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3928   iter->want_specific_block = want_specific_block;
3929   iter->block_index = block_index;
3930   iter->domain = domain;
3931   iter->next = 0;
3932   iter->global_seen = 0;
3933
3934   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3935
3936   /* index is NULL if OBJF_READNOW.  */
3937   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3938     iter->length = MAYBE_SWAP (*iter->vec);
3939   else
3940     {
3941       iter->vec = NULL;
3942       iter->length = 0;
3943     }
3944 }
3945
3946 /* Return the next matching CU or NULL if there are no more.  */
3947
3948 static struct dwarf2_per_cu_data *
3949 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3950 {
3951   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3952
3953   for ( ; iter->next < iter->length; ++iter->next)
3954     {
3955       offset_type cu_index_and_attrs =
3956         MAYBE_SWAP (iter->vec[iter->next + 1]);
3957       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3958       int want_static = iter->block_index != GLOBAL_BLOCK;
3959       /* This value is only valid for index versions >= 7.  */
3960       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3961       gdb_index_symbol_kind symbol_kind =
3962         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3963       /* Only check the symbol attributes if they're present.
3964          Indices prior to version 7 don't record them,
3965          and indices >= 7 may elide them for certain symbols
3966          (gold does this).  */
3967       int attrs_valid =
3968         (dwarf2_per_objfile->index_table->version >= 7
3969          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3970
3971       /* Don't crash on bad data.  */
3972       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3973                        + dwarf2_per_objfile->all_type_units.size ()))
3974         {
3975           complaint (_(".gdb_index entry has bad CU index"
3976                        " [in module %s]"),
3977                      objfile_name (dwarf2_per_objfile->objfile));
3978           continue;
3979         }
3980
3981       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3982
3983       /* Skip if already read in.  */
3984       if (per_cu->v.quick->compunit_symtab)
3985         continue;
3986
3987       /* Check static vs global.  */
3988       if (attrs_valid)
3989         {
3990           if (iter->want_specific_block
3991               && want_static != is_static)
3992             continue;
3993           /* Work around gold/15646.  */
3994           if (!is_static && iter->global_seen)
3995             continue;
3996           if (!is_static)
3997             iter->global_seen = 1;
3998         }
3999
4000       /* Only check the symbol's kind if it has one.  */
4001       if (attrs_valid)
4002         {
4003           switch (iter->domain)
4004             {
4005             case VAR_DOMAIN:
4006               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4007                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4008                   /* Some types are also in VAR_DOMAIN.  */
4009                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4010                 continue;
4011               break;
4012             case STRUCT_DOMAIN:
4013               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4014                 continue;
4015               break;
4016             case LABEL_DOMAIN:
4017               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4018                 continue;
4019               break;
4020             default:
4021               break;
4022             }
4023         }
4024
4025       ++iter->next;
4026       return per_cu;
4027     }
4028
4029   return NULL;
4030 }
4031
4032 static struct compunit_symtab *
4033 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4034                    const char *name, domain_enum domain)
4035 {
4036   struct compunit_symtab *stab_best = NULL;
4037   struct dwarf2_per_objfile *dwarf2_per_objfile
4038     = get_dwarf2_per_objfile (objfile);
4039
4040   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4041
4042   struct dw2_symtab_iterator iter;
4043   struct dwarf2_per_cu_data *per_cu;
4044
4045   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4046
4047   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4048     {
4049       struct symbol *sym, *with_opaque = NULL;
4050       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4051       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4052       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4053
4054       sym = block_find_symbol (block, name, domain,
4055                                block_find_non_opaque_type_preferred,
4056                                &with_opaque);
4057
4058       /* Some caution must be observed with overloaded functions
4059          and methods, since the index will not contain any overload
4060          information (but NAME might contain it).  */
4061
4062       if (sym != NULL
4063           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4064         return stab;
4065       if (with_opaque != NULL
4066           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4067         stab_best = stab;
4068
4069       /* Keep looking through other CUs.  */
4070     }
4071
4072   return stab_best;
4073 }
4074
4075 static void
4076 dw2_print_stats (struct objfile *objfile)
4077 {
4078   struct dwarf2_per_objfile *dwarf2_per_objfile
4079     = get_dwarf2_per_objfile (objfile);
4080   int total = (dwarf2_per_objfile->all_comp_units.size ()
4081                + dwarf2_per_objfile->all_type_units.size ());
4082   int count = 0;
4083
4084   for (int i = 0; i < total; ++i)
4085     {
4086       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4087
4088       if (!per_cu->v.quick->compunit_symtab)
4089         ++count;
4090     }
4091   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4092   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4093 }
4094
4095 /* This dumps minimal information about the index.
4096    It is called via "mt print objfiles".
4097    One use is to verify .gdb_index has been loaded by the
4098    gdb.dwarf2/gdb-index.exp testcase.  */
4099
4100 static void
4101 dw2_dump (struct objfile *objfile)
4102 {
4103   struct dwarf2_per_objfile *dwarf2_per_objfile
4104     = get_dwarf2_per_objfile (objfile);
4105
4106   gdb_assert (dwarf2_per_objfile->using_index);
4107   printf_filtered (".gdb_index:");
4108   if (dwarf2_per_objfile->index_table != NULL)
4109     {
4110       printf_filtered (" version %d\n",
4111                        dwarf2_per_objfile->index_table->version);
4112     }
4113   else
4114     printf_filtered (" faked for \"readnow\"\n");
4115   printf_filtered ("\n");
4116 }
4117
4118 static void
4119 dw2_expand_symtabs_for_function (struct objfile *objfile,
4120                                  const char *func_name)
4121 {
4122   struct dwarf2_per_objfile *dwarf2_per_objfile
4123     = get_dwarf2_per_objfile (objfile);
4124
4125   struct dw2_symtab_iterator iter;
4126   struct dwarf2_per_cu_data *per_cu;
4127
4128   /* Note: It doesn't matter what we pass for block_index here.  */
4129   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4130                         func_name);
4131
4132   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4133     dw2_instantiate_symtab (per_cu, false);
4134
4135 }
4136
4137 static void
4138 dw2_expand_all_symtabs (struct objfile *objfile)
4139 {
4140   struct dwarf2_per_objfile *dwarf2_per_objfile
4141     = get_dwarf2_per_objfile (objfile);
4142   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4143                      + dwarf2_per_objfile->all_type_units.size ());
4144
4145   for (int i = 0; i < total_units; ++i)
4146     {
4147       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4148
4149       /* We don't want to directly expand a partial CU, because if we
4150          read it with the wrong language, then assertion failures can
4151          be triggered later on.  See PR symtab/23010.  So, tell
4152          dw2_instantiate_symtab to skip partial CUs -- any important
4153          partial CU will be read via DW_TAG_imported_unit anyway.  */
4154       dw2_instantiate_symtab (per_cu, true);
4155     }
4156 }
4157
4158 static void
4159 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4160                                   const char *fullname)
4161 {
4162   struct dwarf2_per_objfile *dwarf2_per_objfile
4163     = get_dwarf2_per_objfile (objfile);
4164
4165   /* We don't need to consider type units here.
4166      This is only called for examining code, e.g. expand_line_sal.
4167      There can be an order of magnitude (or more) more type units
4168      than comp units, and we avoid them if we can.  */
4169
4170   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4171     {
4172       /* We only need to look at symtabs not already expanded.  */
4173       if (per_cu->v.quick->compunit_symtab)
4174         continue;
4175
4176       quick_file_names *file_data = dw2_get_file_names (per_cu);
4177       if (file_data == NULL)
4178         continue;
4179
4180       for (int j = 0; j < file_data->num_file_names; ++j)
4181         {
4182           const char *this_fullname = file_data->file_names[j];
4183
4184           if (filename_cmp (this_fullname, fullname) == 0)
4185             {
4186               dw2_instantiate_symtab (per_cu, false);
4187               break;
4188             }
4189         }
4190     }
4191 }
4192
4193 static void
4194 dw2_map_matching_symbols (struct objfile *objfile,
4195                           const char * name, domain_enum domain,
4196                           int global,
4197                           int (*callback) (struct block *,
4198                                            struct symbol *, void *),
4199                           void *data, symbol_name_match_type match,
4200                           symbol_compare_ftype *ordered_compare)
4201 {
4202   /* Currently unimplemented; used for Ada.  The function can be called if the
4203      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4204      does not look for non-Ada symbols this function should just return.  */
4205 }
4206
4207 /* Symbol name matcher for .gdb_index names.
4208
4209    Symbol names in .gdb_index have a few particularities:
4210
4211    - There's no indication of which is the language of each symbol.
4212
4213      Since each language has its own symbol name matching algorithm,
4214      and we don't know which language is the right one, we must match
4215      each symbol against all languages.  This would be a potential
4216      performance problem if it were not mitigated by the
4217      mapped_index::name_components lookup table, which significantly
4218      reduces the number of times we need to call into this matcher,
4219      making it a non-issue.
4220
4221    - Symbol names in the index have no overload (parameter)
4222      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4223      appear as "foo" in the index, for example.
4224
4225      This means that the lookup names passed to the symbol name
4226      matcher functions must have no parameter information either
4227      because (e.g.) symbol search name "foo" does not match
4228      lookup-name "foo(int)" [while swapping search name for lookup
4229      name would match].
4230 */
4231 class gdb_index_symbol_name_matcher
4232 {
4233 public:
4234   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4235   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4236
4237   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4238      Returns true if any matcher matches.  */
4239   bool matches (const char *symbol_name);
4240
4241 private:
4242   /* A reference to the lookup name we're matching against.  */
4243   const lookup_name_info &m_lookup_name;
4244
4245   /* A vector holding all the different symbol name matchers, for all
4246      languages.  */
4247   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4248 };
4249
4250 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4251   (const lookup_name_info &lookup_name)
4252     : m_lookup_name (lookup_name)
4253 {
4254   /* Prepare the vector of comparison functions upfront, to avoid
4255      doing the same work for each symbol.  Care is taken to avoid
4256      matching with the same matcher more than once if/when multiple
4257      languages use the same matcher function.  */
4258   auto &matchers = m_symbol_name_matcher_funcs;
4259   matchers.reserve (nr_languages);
4260
4261   matchers.push_back (default_symbol_name_matcher);
4262
4263   for (int i = 0; i < nr_languages; i++)
4264     {
4265       const language_defn *lang = language_def ((enum language) i);
4266       symbol_name_matcher_ftype *name_matcher
4267         = get_symbol_name_matcher (lang, m_lookup_name);
4268
4269       /* Don't insert the same comparison routine more than once.
4270          Note that we do this linear walk instead of a seemingly
4271          cheaper sorted insert, or use a std::set or something like
4272          that, because relative order of function addresses is not
4273          stable.  This is not a problem in practice because the number
4274          of supported languages is low, and the cost here is tiny
4275          compared to the number of searches we'll do afterwards using
4276          this object.  */
4277       if (name_matcher != default_symbol_name_matcher
4278           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4279               == matchers.end ()))
4280         matchers.push_back (name_matcher);
4281     }
4282 }
4283
4284 bool
4285 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4286 {
4287   for (auto matches_name : m_symbol_name_matcher_funcs)
4288     if (matches_name (symbol_name, m_lookup_name, NULL))
4289       return true;
4290
4291   return false;
4292 }
4293
4294 /* Starting from a search name, return the string that finds the upper
4295    bound of all strings that start with SEARCH_NAME in a sorted name
4296    list.  Returns the empty string to indicate that the upper bound is
4297    the end of the list.  */
4298
4299 static std::string
4300 make_sort_after_prefix_name (const char *search_name)
4301 {
4302   /* When looking to complete "func", we find the upper bound of all
4303      symbols that start with "func" by looking for where we'd insert
4304      the closest string that would follow "func" in lexicographical
4305      order.  Usually, that's "func"-with-last-character-incremented,
4306      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4307      will be UTF-8 multi-byte sequences, but we can't be certain.
4308      Especially mind the 0xff character, which is a valid character in
4309      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4310      rule out compilers allowing it in identifiers.  Note that
4311      conveniently, strcmp/strcasecmp are specified to compare
4312      characters interpreted as unsigned char.  So what we do is treat
4313      the whole string as a base 256 number composed of a sequence of
4314      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4315      to 0, and carries 1 to the following more-significant position.
4316      If the very first character in SEARCH_NAME ends up incremented
4317      and carries/overflows, then the upper bound is the end of the
4318      list.  The string after the empty string is also the empty
4319      string.
4320
4321      Some examples of this operation:
4322
4323        SEARCH_NAME  => "+1" RESULT
4324
4325        "abc"              => "abd"
4326        "ab\xff"           => "ac"
4327        "\xff" "a" "\xff"  => "\xff" "b"
4328        "\xff"             => ""
4329        "\xff\xff"         => ""
4330        ""                 => ""
4331
4332      Then, with these symbols for example:
4333
4334       func
4335       func1
4336       fund
4337
4338      completing "func" looks for symbols between "func" and
4339      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4340      which finds "func" and "func1", but not "fund".
4341
4342      And with:
4343
4344       funcÿ     (Latin1 'ÿ' [0xff])
4345       funcÿ1
4346       fund
4347
4348      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4349      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4350
4351      And with:
4352
4353       ÿÿ        (Latin1 'ÿ' [0xff])
4354       ÿÿ1
4355
4356      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4357      the end of the list.
4358   */
4359   std::string after = search_name;
4360   while (!after.empty () && (unsigned char) after.back () == 0xff)
4361     after.pop_back ();
4362   if (!after.empty ())
4363     after.back () = (unsigned char) after.back () + 1;
4364   return after;
4365 }
4366
4367 /* See declaration.  */
4368
4369 std::pair<std::vector<name_component>::const_iterator,
4370           std::vector<name_component>::const_iterator>
4371 mapped_index_base::find_name_components_bounds
4372   (const lookup_name_info &lookup_name_without_params) const
4373 {
4374   auto *name_cmp
4375     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4376
4377   const char *cplus
4378     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4379
4380   /* Comparison function object for lower_bound that matches against a
4381      given symbol name.  */
4382   auto lookup_compare_lower = [&] (const name_component &elem,
4383                                    const char *name)
4384     {
4385       const char *elem_qualified = this->symbol_name_at (elem.idx);
4386       const char *elem_name = elem_qualified + elem.name_offset;
4387       return name_cmp (elem_name, name) < 0;
4388     };
4389
4390   /* Comparison function object for upper_bound that matches against a
4391      given symbol name.  */
4392   auto lookup_compare_upper = [&] (const char *name,
4393                                    const name_component &elem)
4394     {
4395       const char *elem_qualified = this->symbol_name_at (elem.idx);
4396       const char *elem_name = elem_qualified + elem.name_offset;
4397       return name_cmp (name, elem_name) < 0;
4398     };
4399
4400   auto begin = this->name_components.begin ();
4401   auto end = this->name_components.end ();
4402
4403   /* Find the lower bound.  */
4404   auto lower = [&] ()
4405     {
4406       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4407         return begin;
4408       else
4409         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4410     } ();
4411
4412   /* Find the upper bound.  */
4413   auto upper = [&] ()
4414     {
4415       if (lookup_name_without_params.completion_mode ())
4416         {
4417           /* In completion mode, we want UPPER to point past all
4418              symbols names that have the same prefix.  I.e., with
4419              these symbols, and completing "func":
4420
4421               function        << lower bound
4422               function1
4423               other_function  << upper bound
4424
4425              We find the upper bound by looking for the insertion
4426              point of "func"-with-last-character-incremented,
4427              i.e. "fund".  */
4428           std::string after = make_sort_after_prefix_name (cplus);
4429           if (after.empty ())
4430             return end;
4431           return std::lower_bound (lower, end, after.c_str (),
4432                                    lookup_compare_lower);
4433         }
4434       else
4435         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4436     } ();
4437
4438   return {lower, upper};
4439 }
4440
4441 /* See declaration.  */
4442
4443 void
4444 mapped_index_base::build_name_components ()
4445 {
4446   if (!this->name_components.empty ())
4447     return;
4448
4449   this->name_components_casing = case_sensitivity;
4450   auto *name_cmp
4451     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4452
4453   /* The code below only knows how to break apart components of C++
4454      symbol names (and other languages that use '::' as
4455      namespace/module separator).  If we add support for wild matching
4456      to some language that uses some other operator (E.g., Ada, Go and
4457      D use '.'), then we'll need to try splitting the symbol name
4458      according to that language too.  Note that Ada does support wild
4459      matching, but doesn't currently support .gdb_index.  */
4460   auto count = this->symbol_name_count ();
4461   for (offset_type idx = 0; idx < count; idx++)
4462     {
4463       if (this->symbol_name_slot_invalid (idx))
4464         continue;
4465
4466       const char *name = this->symbol_name_at (idx);
4467
4468       /* Add each name component to the name component table.  */
4469       unsigned int previous_len = 0;
4470       for (unsigned int current_len = cp_find_first_component (name);
4471            name[current_len] != '\0';
4472            current_len += cp_find_first_component (name + current_len))
4473         {
4474           gdb_assert (name[current_len] == ':');
4475           this->name_components.push_back ({previous_len, idx});
4476           /* Skip the '::'.  */
4477           current_len += 2;
4478           previous_len = current_len;
4479         }
4480       this->name_components.push_back ({previous_len, idx});
4481     }
4482
4483   /* Sort name_components elements by name.  */
4484   auto name_comp_compare = [&] (const name_component &left,
4485                                 const name_component &right)
4486     {
4487       const char *left_qualified = this->symbol_name_at (left.idx);
4488       const char *right_qualified = this->symbol_name_at (right.idx);
4489
4490       const char *left_name = left_qualified + left.name_offset;
4491       const char *right_name = right_qualified + right.name_offset;
4492
4493       return name_cmp (left_name, right_name) < 0;
4494     };
4495
4496   std::sort (this->name_components.begin (),
4497              this->name_components.end (),
4498              name_comp_compare);
4499 }
4500
4501 /* Helper for dw2_expand_symtabs_matching that works with a
4502    mapped_index_base instead of the containing objfile.  This is split
4503    to a separate function in order to be able to unit test the
4504    name_components matching using a mock mapped_index_base.  For each
4505    symbol name that matches, calls MATCH_CALLBACK, passing it the
4506    symbol's index in the mapped_index_base symbol table.  */
4507
4508 static void
4509 dw2_expand_symtabs_matching_symbol
4510   (mapped_index_base &index,
4511    const lookup_name_info &lookup_name_in,
4512    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4513    enum search_domain kind,
4514    gdb::function_view<void (offset_type)> match_callback)
4515 {
4516   lookup_name_info lookup_name_without_params
4517     = lookup_name_in.make_ignore_params ();
4518   gdb_index_symbol_name_matcher lookup_name_matcher
4519     (lookup_name_without_params);
4520
4521   /* Build the symbol name component sorted vector, if we haven't
4522      yet.  */
4523   index.build_name_components ();
4524
4525   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4526
4527   /* Now for each symbol name in range, check to see if we have a name
4528      match, and if so, call the MATCH_CALLBACK callback.  */
4529
4530   /* The same symbol may appear more than once in the range though.
4531      E.g., if we're looking for symbols that complete "w", and we have
4532      a symbol named "w1::w2", we'll find the two name components for
4533      that same symbol in the range.  To be sure we only call the
4534      callback once per symbol, we first collect the symbol name
4535      indexes that matched in a temporary vector and ignore
4536      duplicates.  */
4537   std::vector<offset_type> matches;
4538   matches.reserve (std::distance (bounds.first, bounds.second));
4539
4540   for (; bounds.first != bounds.second; ++bounds.first)
4541     {
4542       const char *qualified = index.symbol_name_at (bounds.first->idx);
4543
4544       if (!lookup_name_matcher.matches (qualified)
4545           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4546         continue;
4547
4548       matches.push_back (bounds.first->idx);
4549     }
4550
4551   std::sort (matches.begin (), matches.end ());
4552
4553   /* Finally call the callback, once per match.  */
4554   ULONGEST prev = -1;
4555   for (offset_type idx : matches)
4556     {
4557       if (prev != idx)
4558         {
4559           match_callback (idx);
4560           prev = idx;
4561         }
4562     }
4563
4564   /* Above we use a type wider than idx's for 'prev', since 0 and
4565      (offset_type)-1 are both possible values.  */
4566   static_assert (sizeof (prev) > sizeof (offset_type), "");
4567 }
4568
4569 #if GDB_SELF_TEST
4570
4571 namespace selftests { namespace dw2_expand_symtabs_matching {
4572
4573 /* A mock .gdb_index/.debug_names-like name index table, enough to
4574    exercise dw2_expand_symtabs_matching_symbol, which works with the
4575    mapped_index_base interface.  Builds an index from the symbol list
4576    passed as parameter to the constructor.  */
4577 class mock_mapped_index : public mapped_index_base
4578 {
4579 public:
4580   mock_mapped_index (gdb::array_view<const char *> symbols)
4581     : m_symbol_table (symbols)
4582   {}
4583
4584   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4585
4586   /* Return the number of names in the symbol table.  */
4587   size_t symbol_name_count () const override
4588   {
4589     return m_symbol_table.size ();
4590   }
4591
4592   /* Get the name of the symbol at IDX in the symbol table.  */
4593   const char *symbol_name_at (offset_type idx) const override
4594   {
4595     return m_symbol_table[idx];
4596   }
4597
4598 private:
4599   gdb::array_view<const char *> m_symbol_table;
4600 };
4601
4602 /* Convenience function that converts a NULL pointer to a "<null>"
4603    string, to pass to print routines.  */
4604
4605 static const char *
4606 string_or_null (const char *str)
4607 {
4608   return str != NULL ? str : "<null>";
4609 }
4610
4611 /* Check if a lookup_name_info built from
4612    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4613    index.  EXPECTED_LIST is the list of expected matches, in expected
4614    matching order.  If no match expected, then an empty list is
4615    specified.  Returns true on success.  On failure prints a warning
4616    indicating the file:line that failed, and returns false.  */
4617
4618 static bool
4619 check_match (const char *file, int line,
4620              mock_mapped_index &mock_index,
4621              const char *name, symbol_name_match_type match_type,
4622              bool completion_mode,
4623              std::initializer_list<const char *> expected_list)
4624 {
4625   lookup_name_info lookup_name (name, match_type, completion_mode);
4626
4627   bool matched = true;
4628
4629   auto mismatch = [&] (const char *expected_str,
4630                        const char *got)
4631   {
4632     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4633                "expected=\"%s\", got=\"%s\"\n"),
4634              file, line,
4635              (match_type == symbol_name_match_type::FULL
4636               ? "FULL" : "WILD"),
4637              name, string_or_null (expected_str), string_or_null (got));
4638     matched = false;
4639   };
4640
4641   auto expected_it = expected_list.begin ();
4642   auto expected_end = expected_list.end ();
4643
4644   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4645                                       NULL, ALL_DOMAIN,
4646                                       [&] (offset_type idx)
4647   {
4648     const char *matched_name = mock_index.symbol_name_at (idx);
4649     const char *expected_str
4650       = expected_it == expected_end ? NULL : *expected_it++;
4651
4652     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4653       mismatch (expected_str, matched_name);
4654   });
4655
4656   const char *expected_str
4657   = expected_it == expected_end ? NULL : *expected_it++;
4658   if (expected_str != NULL)
4659     mismatch (expected_str, NULL);
4660
4661   return matched;
4662 }
4663
4664 /* The symbols added to the mock mapped_index for testing (in
4665    canonical form).  */
4666 static const char *test_symbols[] = {
4667   "function",
4668   "std::bar",
4669   "std::zfunction",
4670   "std::zfunction2",
4671   "w1::w2",
4672   "ns::foo<char*>",
4673   "ns::foo<int>",
4674   "ns::foo<long>",
4675   "ns2::tmpl<int>::foo2",
4676   "(anonymous namespace)::A::B::C",
4677
4678   /* These are used to check that the increment-last-char in the
4679      matching algorithm for completion doesn't match "t1_fund" when
4680      completing "t1_func".  */
4681   "t1_func",
4682   "t1_func1",
4683   "t1_fund",
4684   "t1_fund1",
4685
4686   /* A UTF-8 name with multi-byte sequences to make sure that
4687      cp-name-parser understands this as a single identifier ("função"
4688      is "function" in PT).  */
4689   u8"u8função",
4690
4691   /* \377 (0xff) is Latin1 'ÿ'.  */
4692   "yfunc\377",
4693
4694   /* \377 (0xff) is Latin1 'ÿ'.  */
4695   "\377",
4696   "\377\377123",
4697
4698   /* A name with all sorts of complications.  Starts with "z" to make
4699      it easier for the completion tests below.  */
4700 #define Z_SYM_NAME \
4701   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4702     "::tuple<(anonymous namespace)::ui*, " \
4703     "std::default_delete<(anonymous namespace)::ui>, void>"
4704
4705   Z_SYM_NAME
4706 };
4707
4708 /* Returns true if the mapped_index_base::find_name_component_bounds
4709    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4710    in completion mode.  */
4711
4712 static bool
4713 check_find_bounds_finds (mapped_index_base &index,
4714                          const char *search_name,
4715                          gdb::array_view<const char *> expected_syms)
4716 {
4717   lookup_name_info lookup_name (search_name,
4718                                 symbol_name_match_type::FULL, true);
4719
4720   auto bounds = index.find_name_components_bounds (lookup_name);
4721
4722   size_t distance = std::distance (bounds.first, bounds.second);
4723   if (distance != expected_syms.size ())
4724     return false;
4725
4726   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4727     {
4728       auto nc_elem = bounds.first + exp_elem;
4729       const char *qualified = index.symbol_name_at (nc_elem->idx);
4730       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4731         return false;
4732     }
4733
4734   return true;
4735 }
4736
4737 /* Test the lower-level mapped_index::find_name_component_bounds
4738    method.  */
4739
4740 static void
4741 test_mapped_index_find_name_component_bounds ()
4742 {
4743   mock_mapped_index mock_index (test_symbols);
4744
4745   mock_index.build_name_components ();
4746
4747   /* Test the lower-level mapped_index::find_name_component_bounds
4748      method in completion mode.  */
4749   {
4750     static const char *expected_syms[] = {
4751       "t1_func",
4752       "t1_func1",
4753     };
4754
4755     SELF_CHECK (check_find_bounds_finds (mock_index,
4756                                          "t1_func", expected_syms));
4757   }
4758
4759   /* Check that the increment-last-char in the name matching algorithm
4760      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4761   {
4762     static const char *expected_syms1[] = {
4763       "\377",
4764       "\377\377123",
4765     };
4766     SELF_CHECK (check_find_bounds_finds (mock_index,
4767                                          "\377", expected_syms1));
4768
4769     static const char *expected_syms2[] = {
4770       "\377\377123",
4771     };
4772     SELF_CHECK (check_find_bounds_finds (mock_index,
4773                                          "\377\377", expected_syms2));
4774   }
4775 }
4776
4777 /* Test dw2_expand_symtabs_matching_symbol.  */
4778
4779 static void
4780 test_dw2_expand_symtabs_matching_symbol ()
4781 {
4782   mock_mapped_index mock_index (test_symbols);
4783
4784   /* We let all tests run until the end even if some fails, for debug
4785      convenience.  */
4786   bool any_mismatch = false;
4787
4788   /* Create the expected symbols list (an initializer_list).  Needed
4789      because lists have commas, and we need to pass them to CHECK,
4790      which is a macro.  */
4791 #define EXPECT(...) { __VA_ARGS__ }
4792
4793   /* Wrapper for check_match that passes down the current
4794      __FILE__/__LINE__.  */
4795 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4796   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4797                                 mock_index,                             \
4798                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4799                                 EXPECTED_LIST)
4800
4801   /* Identity checks.  */
4802   for (const char *sym : test_symbols)
4803     {
4804       /* Should be able to match all existing symbols.  */
4805       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4806                    EXPECT (sym));
4807
4808       /* Should be able to match all existing symbols with
4809          parameters.  */
4810       std::string with_params = std::string (sym) + "(int)";
4811       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4812                    EXPECT (sym));
4813
4814       /* Should be able to match all existing symbols with
4815          parameters and qualifiers.  */
4816       with_params = std::string (sym) + " ( int ) const";
4817       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4818                    EXPECT (sym));
4819
4820       /* This should really find sym, but cp-name-parser.y doesn't
4821          know about lvalue/rvalue qualifiers yet.  */
4822       with_params = std::string (sym) + " ( int ) &&";
4823       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4824                    {});
4825     }
4826
4827   /* Check that the name matching algorithm for completion doesn't get
4828      confused with Latin1 'ÿ' / 0xff.  */
4829   {
4830     static const char str[] = "\377";
4831     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4832                  EXPECT ("\377", "\377\377123"));
4833   }
4834
4835   /* Check that the increment-last-char in the matching algorithm for
4836      completion doesn't match "t1_fund" when completing "t1_func".  */
4837   {
4838     static const char str[] = "t1_func";
4839     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4840                  EXPECT ("t1_func", "t1_func1"));
4841   }
4842
4843   /* Check that completion mode works at each prefix of the expected
4844      symbol name.  */
4845   {
4846     static const char str[] = "function(int)";
4847     size_t len = strlen (str);
4848     std::string lookup;
4849
4850     for (size_t i = 1; i < len; i++)
4851       {
4852         lookup.assign (str, i);
4853         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4854                      EXPECT ("function"));
4855       }
4856   }
4857
4858   /* While "w" is a prefix of both components, the match function
4859      should still only be called once.  */
4860   {
4861     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4862                  EXPECT ("w1::w2"));
4863     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4864                  EXPECT ("w1::w2"));
4865   }
4866
4867   /* Same, with a "complicated" symbol.  */
4868   {
4869     static const char str[] = Z_SYM_NAME;
4870     size_t len = strlen (str);
4871     std::string lookup;
4872
4873     for (size_t i = 1; i < len; i++)
4874       {
4875         lookup.assign (str, i);
4876         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4877                      EXPECT (Z_SYM_NAME));
4878       }
4879   }
4880
4881   /* In FULL mode, an incomplete symbol doesn't match.  */
4882   {
4883     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4884                  {});
4885   }
4886
4887   /* A complete symbol with parameters matches any overload, since the
4888      index has no overload info.  */
4889   {
4890     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4891                  EXPECT ("std::zfunction", "std::zfunction2"));
4892     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4893                  EXPECT ("std::zfunction", "std::zfunction2"));
4894     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4895                  EXPECT ("std::zfunction", "std::zfunction2"));
4896   }
4897
4898   /* Check that whitespace is ignored appropriately.  A symbol with a
4899      template argument list. */
4900   {
4901     static const char expected[] = "ns::foo<int>";
4902     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4903                  EXPECT (expected));
4904     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4905                  EXPECT (expected));
4906   }
4907
4908   /* Check that whitespace is ignored appropriately.  A symbol with a
4909      template argument list that includes a pointer.  */
4910   {
4911     static const char expected[] = "ns::foo<char*>";
4912     /* Try both completion and non-completion modes.  */
4913     static const bool completion_mode[2] = {false, true};
4914     for (size_t i = 0; i < 2; i++)
4915       {
4916         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4917                      completion_mode[i], EXPECT (expected));
4918         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4919                      completion_mode[i], EXPECT (expected));
4920
4921         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4922                      completion_mode[i], EXPECT (expected));
4923         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4924                      completion_mode[i], EXPECT (expected));
4925       }
4926   }
4927
4928   {
4929     /* Check method qualifiers are ignored.  */
4930     static const char expected[] = "ns::foo<char*>";
4931     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4932                  symbol_name_match_type::FULL, true, EXPECT (expected));
4933     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4934                  symbol_name_match_type::FULL, true, EXPECT (expected));
4935     CHECK_MATCH ("foo < char * >  ( int ) const",
4936                  symbol_name_match_type::WILD, true, EXPECT (expected));
4937     CHECK_MATCH ("foo < char * >  ( int ) &&",
4938                  symbol_name_match_type::WILD, true, EXPECT (expected));
4939   }
4940
4941   /* Test lookup names that don't match anything.  */
4942   {
4943     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4944                  {});
4945
4946     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4947                  {});
4948   }
4949
4950   /* Some wild matching tests, exercising "(anonymous namespace)",
4951      which should not be confused with a parameter list.  */
4952   {
4953     static const char *syms[] = {
4954       "A::B::C",
4955       "B::C",
4956       "C",
4957       "A :: B :: C ( int )",
4958       "B :: C ( int )",
4959       "C ( int )",
4960     };
4961
4962     for (const char *s : syms)
4963       {
4964         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4965                      EXPECT ("(anonymous namespace)::A::B::C"));
4966       }
4967   }
4968
4969   {
4970     static const char expected[] = "ns2::tmpl<int>::foo2";
4971     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4972                  EXPECT (expected));
4973     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4974                  EXPECT (expected));
4975   }
4976
4977   SELF_CHECK (!any_mismatch);
4978
4979 #undef EXPECT
4980 #undef CHECK_MATCH
4981 }
4982
4983 static void
4984 run_test ()
4985 {
4986   test_mapped_index_find_name_component_bounds ();
4987   test_dw2_expand_symtabs_matching_symbol ();
4988 }
4989
4990 }} // namespace selftests::dw2_expand_symtabs_matching
4991
4992 #endif /* GDB_SELF_TEST */
4993
4994 /* If FILE_MATCHER is NULL or if PER_CU has
4995    dwarf2_per_cu_quick_data::MARK set (see
4996    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4997    EXPANSION_NOTIFY on it.  */
4998
4999 static void
5000 dw2_expand_symtabs_matching_one
5001   (struct dwarf2_per_cu_data *per_cu,
5002    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5003    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5004 {
5005   if (file_matcher == NULL || per_cu->v.quick->mark)
5006     {
5007       bool symtab_was_null
5008         = (per_cu->v.quick->compunit_symtab == NULL);
5009
5010       dw2_instantiate_symtab (per_cu, false);
5011
5012       if (expansion_notify != NULL
5013           && symtab_was_null
5014           && per_cu->v.quick->compunit_symtab != NULL)
5015         expansion_notify (per_cu->v.quick->compunit_symtab);
5016     }
5017 }
5018
5019 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5020    matched, to expand corresponding CUs that were marked.  IDX is the
5021    index of the symbol name that matched.  */
5022
5023 static void
5024 dw2_expand_marked_cus
5025   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5026    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5027    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5028    search_domain kind)
5029 {
5030   offset_type *vec, vec_len, vec_idx;
5031   bool global_seen = false;
5032   mapped_index &index = *dwarf2_per_objfile->index_table;
5033
5034   vec = (offset_type *) (index.constant_pool
5035                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5036   vec_len = MAYBE_SWAP (vec[0]);
5037   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5038     {
5039       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5040       /* This value is only valid for index versions >= 7.  */
5041       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5042       gdb_index_symbol_kind symbol_kind =
5043         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5044       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5045       /* Only check the symbol attributes if they're present.
5046          Indices prior to version 7 don't record them,
5047          and indices >= 7 may elide them for certain symbols
5048          (gold does this).  */
5049       int attrs_valid =
5050         (index.version >= 7
5051          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5052
5053       /* Work around gold/15646.  */
5054       if (attrs_valid)
5055         {
5056           if (!is_static && global_seen)
5057             continue;
5058           if (!is_static)
5059             global_seen = true;
5060         }
5061
5062       /* Only check the symbol's kind if it has one.  */
5063       if (attrs_valid)
5064         {
5065           switch (kind)
5066             {
5067             case VARIABLES_DOMAIN:
5068               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5069                 continue;
5070               break;
5071             case FUNCTIONS_DOMAIN:
5072               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5073                 continue;
5074               break;
5075             case TYPES_DOMAIN:
5076               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5077                 continue;
5078               break;
5079             default:
5080               break;
5081             }
5082         }
5083
5084       /* Don't crash on bad data.  */
5085       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5086                        + dwarf2_per_objfile->all_type_units.size ()))
5087         {
5088           complaint (_(".gdb_index entry has bad CU index"
5089                        " [in module %s]"),
5090                        objfile_name (dwarf2_per_objfile->objfile));
5091           continue;
5092         }
5093
5094       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5095       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5096                                        expansion_notify);
5097     }
5098 }
5099
5100 /* If FILE_MATCHER is non-NULL, set all the
5101    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5102    that match FILE_MATCHER.  */
5103
5104 static void
5105 dw_expand_symtabs_matching_file_matcher
5106   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5107    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5108 {
5109   if (file_matcher == NULL)
5110     return;
5111
5112   objfile *const objfile = dwarf2_per_objfile->objfile;
5113
5114   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5115                                             htab_eq_pointer,
5116                                             NULL, xcalloc, xfree));
5117   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5118                                                 htab_eq_pointer,
5119                                                 NULL, xcalloc, xfree));
5120
5121   /* The rule is CUs specify all the files, including those used by
5122      any TU, so there's no need to scan TUs here.  */
5123
5124   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5125     {
5126       QUIT;
5127
5128       per_cu->v.quick->mark = 0;
5129
5130       /* We only need to look at symtabs not already expanded.  */
5131       if (per_cu->v.quick->compunit_symtab)
5132         continue;
5133
5134       quick_file_names *file_data = dw2_get_file_names (per_cu);
5135       if (file_data == NULL)
5136         continue;
5137
5138       if (htab_find (visited_not_found.get (), file_data) != NULL)
5139         continue;
5140       else if (htab_find (visited_found.get (), file_data) != NULL)
5141         {
5142           per_cu->v.quick->mark = 1;
5143           continue;
5144         }
5145
5146       for (int j = 0; j < file_data->num_file_names; ++j)
5147         {
5148           const char *this_real_name;
5149
5150           if (file_matcher (file_data->file_names[j], false))
5151             {
5152               per_cu->v.quick->mark = 1;
5153               break;
5154             }
5155
5156           /* Before we invoke realpath, which can get expensive when many
5157              files are involved, do a quick comparison of the basenames.  */
5158           if (!basenames_may_differ
5159               && !file_matcher (lbasename (file_data->file_names[j]),
5160                                 true))
5161             continue;
5162
5163           this_real_name = dw2_get_real_path (objfile, file_data, j);
5164           if (file_matcher (this_real_name, false))
5165             {
5166               per_cu->v.quick->mark = 1;
5167               break;
5168             }
5169         }
5170
5171       void **slot = htab_find_slot (per_cu->v.quick->mark
5172                                     ? visited_found.get ()
5173                                     : visited_not_found.get (),
5174                                     file_data, INSERT);
5175       *slot = file_data;
5176     }
5177 }
5178
5179 static void
5180 dw2_expand_symtabs_matching
5181   (struct objfile *objfile,
5182    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5183    const lookup_name_info &lookup_name,
5184    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5185    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5186    enum search_domain kind)
5187 {
5188   struct dwarf2_per_objfile *dwarf2_per_objfile
5189     = get_dwarf2_per_objfile (objfile);
5190
5191   /* index_table is NULL if OBJF_READNOW.  */
5192   if (!dwarf2_per_objfile->index_table)
5193     return;
5194
5195   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5196
5197   mapped_index &index = *dwarf2_per_objfile->index_table;
5198
5199   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5200                                       symbol_matcher,
5201                                       kind, [&] (offset_type idx)
5202     {
5203       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5204                              expansion_notify, kind);
5205     });
5206 }
5207
5208 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5209    symtab.  */
5210
5211 static struct compunit_symtab *
5212 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5213                                           CORE_ADDR pc)
5214 {
5215   int i;
5216
5217   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5218       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5219     return cust;
5220
5221   if (cust->includes == NULL)
5222     return NULL;
5223
5224   for (i = 0; cust->includes[i]; ++i)
5225     {
5226       struct compunit_symtab *s = cust->includes[i];
5227
5228       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5229       if (s != NULL)
5230         return s;
5231     }
5232
5233   return NULL;
5234 }
5235
5236 static struct compunit_symtab *
5237 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5238                                   struct bound_minimal_symbol msymbol,
5239                                   CORE_ADDR pc,
5240                                   struct obj_section *section,
5241                                   int warn_if_readin)
5242 {
5243   struct dwarf2_per_cu_data *data;
5244   struct compunit_symtab *result;
5245
5246   if (!objfile->psymtabs_addrmap)
5247     return NULL;
5248
5249   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5250                                  SECT_OFF_TEXT (objfile));
5251   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5252                                                      pc - baseaddr);
5253   if (!data)
5254     return NULL;
5255
5256   if (warn_if_readin && data->v.quick->compunit_symtab)
5257     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5258              paddress (get_objfile_arch (objfile), pc));
5259
5260   result
5261     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5262                                                                         false),
5263                                                 pc);
5264   gdb_assert (result != NULL);
5265   return result;
5266 }
5267
5268 static void
5269 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5270                           void *data, int need_fullname)
5271 {
5272   struct dwarf2_per_objfile *dwarf2_per_objfile
5273     = get_dwarf2_per_objfile (objfile);
5274
5275   if (!dwarf2_per_objfile->filenames_cache)
5276     {
5277       dwarf2_per_objfile->filenames_cache.emplace ();
5278
5279       htab_up visited (htab_create_alloc (10,
5280                                           htab_hash_pointer, htab_eq_pointer,
5281                                           NULL, xcalloc, xfree));
5282
5283       /* The rule is CUs specify all the files, including those used
5284          by any TU, so there's no need to scan TUs here.  We can
5285          ignore file names coming from already-expanded CUs.  */
5286
5287       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5288         {
5289           if (per_cu->v.quick->compunit_symtab)
5290             {
5291               void **slot = htab_find_slot (visited.get (),
5292                                             per_cu->v.quick->file_names,
5293                                             INSERT);
5294
5295               *slot = per_cu->v.quick->file_names;
5296             }
5297         }
5298
5299       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5300         {
5301           /* We only need to look at symtabs not already expanded.  */
5302           if (per_cu->v.quick->compunit_symtab)
5303             continue;
5304
5305           quick_file_names *file_data = dw2_get_file_names (per_cu);
5306           if (file_data == NULL)
5307             continue;
5308
5309           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5310           if (*slot)
5311             {
5312               /* Already visited.  */
5313               continue;
5314             }
5315           *slot = file_data;
5316
5317           for (int j = 0; j < file_data->num_file_names; ++j)
5318             {
5319               const char *filename = file_data->file_names[j];
5320               dwarf2_per_objfile->filenames_cache->seen (filename);
5321             }
5322         }
5323     }
5324
5325   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5326     {
5327       gdb::unique_xmalloc_ptr<char> this_real_name;
5328
5329       if (need_fullname)
5330         this_real_name = gdb_realpath (filename);
5331       (*fun) (filename, this_real_name.get (), data);
5332     });
5333 }
5334
5335 static int
5336 dw2_has_symbols (struct objfile *objfile)
5337 {
5338   return 1;
5339 }
5340
5341 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5342 {
5343   dw2_has_symbols,
5344   dw2_find_last_source_symtab,
5345   dw2_forget_cached_source_info,
5346   dw2_map_symtabs_matching_filename,
5347   dw2_lookup_symbol,
5348   dw2_print_stats,
5349   dw2_dump,
5350   dw2_expand_symtabs_for_function,
5351   dw2_expand_all_symtabs,
5352   dw2_expand_symtabs_with_fullname,
5353   dw2_map_matching_symbols,
5354   dw2_expand_symtabs_matching,
5355   dw2_find_pc_sect_compunit_symtab,
5356   NULL,
5357   dw2_map_symbol_filenames
5358 };
5359
5360 /* DWARF-5 debug_names reader.  */
5361
5362 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5363 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5364
5365 /* A helper function that reads the .debug_names section in SECTION
5366    and fills in MAP.  FILENAME is the name of the file containing the
5367    section; it is used for error reporting.
5368
5369    Returns true if all went well, false otherwise.  */
5370
5371 static bool
5372 read_debug_names_from_section (struct objfile *objfile,
5373                                const char *filename,
5374                                struct dwarf2_section_info *section,
5375                                mapped_debug_names &map)
5376 {
5377   if (dwarf2_section_empty_p (section))
5378     return false;
5379
5380   /* Older elfutils strip versions could keep the section in the main
5381      executable while splitting it for the separate debug info file.  */
5382   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5383     return false;
5384
5385   dwarf2_read_section (objfile, section);
5386
5387   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5388
5389   const gdb_byte *addr = section->buffer;
5390
5391   bfd *const abfd = get_section_bfd_owner (section);
5392
5393   unsigned int bytes_read;
5394   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5395   addr += bytes_read;
5396
5397   map.dwarf5_is_dwarf64 = bytes_read != 4;
5398   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5399   if (bytes_read + length != section->size)
5400     {
5401       /* There may be multiple per-CU indices.  */
5402       warning (_("Section .debug_names in %s length %s does not match "
5403                  "section length %s, ignoring .debug_names."),
5404                filename, plongest (bytes_read + length),
5405                pulongest (section->size));
5406       return false;
5407     }
5408
5409   /* The version number.  */
5410   uint16_t version = read_2_bytes (abfd, addr);
5411   addr += 2;
5412   if (version != 5)
5413     {
5414       warning (_("Section .debug_names in %s has unsupported version %d, "
5415                  "ignoring .debug_names."),
5416                filename, version);
5417       return false;
5418     }
5419
5420   /* Padding.  */
5421   uint16_t padding = read_2_bytes (abfd, addr);
5422   addr += 2;
5423   if (padding != 0)
5424     {
5425       warning (_("Section .debug_names in %s has unsupported padding %d, "
5426                  "ignoring .debug_names."),
5427                filename, padding);
5428       return false;
5429     }
5430
5431   /* comp_unit_count - The number of CUs in the CU list.  */
5432   map.cu_count = read_4_bytes (abfd, addr);
5433   addr += 4;
5434
5435   /* local_type_unit_count - The number of TUs in the local TU
5436      list.  */
5437   map.tu_count = read_4_bytes (abfd, addr);
5438   addr += 4;
5439
5440   /* foreign_type_unit_count - The number of TUs in the foreign TU
5441      list.  */
5442   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5443   addr += 4;
5444   if (foreign_tu_count != 0)
5445     {
5446       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5447                  "ignoring .debug_names."),
5448                filename, static_cast<unsigned long> (foreign_tu_count));
5449       return false;
5450     }
5451
5452   /* bucket_count - The number of hash buckets in the hash lookup
5453      table.  */
5454   map.bucket_count = read_4_bytes (abfd, addr);
5455   addr += 4;
5456
5457   /* name_count - The number of unique names in the index.  */
5458   map.name_count = read_4_bytes (abfd, addr);
5459   addr += 4;
5460
5461   /* abbrev_table_size - The size in bytes of the abbreviations
5462      table.  */
5463   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5464   addr += 4;
5465
5466   /* augmentation_string_size - The size in bytes of the augmentation
5467      string.  This value is rounded up to a multiple of 4.  */
5468   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5469   addr += 4;
5470   map.augmentation_is_gdb = ((augmentation_string_size
5471                               == sizeof (dwarf5_augmentation))
5472                              && memcmp (addr, dwarf5_augmentation,
5473                                         sizeof (dwarf5_augmentation)) == 0);
5474   augmentation_string_size += (-augmentation_string_size) & 3;
5475   addr += augmentation_string_size;
5476
5477   /* List of CUs */
5478   map.cu_table_reordered = addr;
5479   addr += map.cu_count * map.offset_size;
5480
5481   /* List of Local TUs */
5482   map.tu_table_reordered = addr;
5483   addr += map.tu_count * map.offset_size;
5484
5485   /* Hash Lookup Table */
5486   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5487   addr += map.bucket_count * 4;
5488   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5489   addr += map.name_count * 4;
5490
5491   /* Name Table */
5492   map.name_table_string_offs_reordered = addr;
5493   addr += map.name_count * map.offset_size;
5494   map.name_table_entry_offs_reordered = addr;
5495   addr += map.name_count * map.offset_size;
5496
5497   const gdb_byte *abbrev_table_start = addr;
5498   for (;;)
5499     {
5500       unsigned int bytes_read;
5501       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5502       addr += bytes_read;
5503       if (index_num == 0)
5504         break;
5505
5506       const auto insertpair
5507         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5508       if (!insertpair.second)
5509         {
5510           warning (_("Section .debug_names in %s has duplicate index %s, "
5511                      "ignoring .debug_names."),
5512                    filename, pulongest (index_num));
5513           return false;
5514         }
5515       mapped_debug_names::index_val &indexval = insertpair.first->second;
5516       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5517       addr += bytes_read;
5518
5519       for (;;)
5520         {
5521           mapped_debug_names::index_val::attr attr;
5522           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5523           addr += bytes_read;
5524           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5525           addr += bytes_read;
5526           if (attr.form == DW_FORM_implicit_const)
5527             {
5528               attr.implicit_const = read_signed_leb128 (abfd, addr,
5529                                                         &bytes_read);
5530               addr += bytes_read;
5531             }
5532           if (attr.dw_idx == 0 && attr.form == 0)
5533             break;
5534           indexval.attr_vec.push_back (std::move (attr));
5535         }
5536     }
5537   if (addr != abbrev_table_start + abbrev_table_size)
5538     {
5539       warning (_("Section .debug_names in %s has abbreviation_table "
5540                  "of size %zu vs. written as %u, ignoring .debug_names."),
5541                filename, addr - abbrev_table_start, abbrev_table_size);
5542       return false;
5543     }
5544   map.entry_pool = addr;
5545
5546   return true;
5547 }
5548
5549 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5550    list.  */
5551
5552 static void
5553 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5554                                   const mapped_debug_names &map,
5555                                   dwarf2_section_info &section,
5556                                   bool is_dwz)
5557 {
5558   sect_offset sect_off_prev;
5559   for (uint32_t i = 0; i <= map.cu_count; ++i)
5560     {
5561       sect_offset sect_off_next;
5562       if (i < map.cu_count)
5563         {
5564           sect_off_next
5565             = (sect_offset) (extract_unsigned_integer
5566                              (map.cu_table_reordered + i * map.offset_size,
5567                               map.offset_size,
5568                               map.dwarf5_byte_order));
5569         }
5570       else
5571         sect_off_next = (sect_offset) section.size;
5572       if (i >= 1)
5573         {
5574           const ULONGEST length = sect_off_next - sect_off_prev;
5575           dwarf2_per_cu_data *per_cu
5576             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5577                                          sect_off_prev, length);
5578           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5579         }
5580       sect_off_prev = sect_off_next;
5581     }
5582 }
5583
5584 /* Read the CU list from the mapped index, and use it to create all
5585    the CU objects for this dwarf2_per_objfile.  */
5586
5587 static void
5588 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5589                              const mapped_debug_names &map,
5590                              const mapped_debug_names &dwz_map)
5591 {
5592   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5593   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5594
5595   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5596                                     dwarf2_per_objfile->info,
5597                                     false /* is_dwz */);
5598
5599   if (dwz_map.cu_count == 0)
5600     return;
5601
5602   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5603   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5604                                     true /* is_dwz */);
5605 }
5606
5607 /* Read .debug_names.  If everything went ok, initialize the "quick"
5608    elements of all the CUs and return true.  Otherwise, return false.  */
5609
5610 static bool
5611 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5612 {
5613   std::unique_ptr<mapped_debug_names> map
5614     (new mapped_debug_names (dwarf2_per_objfile));
5615   mapped_debug_names dwz_map (dwarf2_per_objfile);
5616   struct objfile *objfile = dwarf2_per_objfile->objfile;
5617
5618   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5619                                       &dwarf2_per_objfile->debug_names,
5620                                       *map))
5621     return false;
5622
5623   /* Don't use the index if it's empty.  */
5624   if (map->name_count == 0)
5625     return false;
5626
5627   /* If there is a .dwz file, read it so we can get its CU list as
5628      well.  */
5629   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5630   if (dwz != NULL)
5631     {
5632       if (!read_debug_names_from_section (objfile,
5633                                           bfd_get_filename (dwz->dwz_bfd),
5634                                           &dwz->debug_names, dwz_map))
5635         {
5636           warning (_("could not read '.debug_names' section from %s; skipping"),
5637                    bfd_get_filename (dwz->dwz_bfd));
5638           return false;
5639         }
5640     }
5641
5642   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5643
5644   if (map->tu_count != 0)
5645     {
5646       /* We can only handle a single .debug_types when we have an
5647          index.  */
5648       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5649         return false;
5650
5651       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5652                                                 dwarf2_per_objfile->types, 0);
5653
5654       create_signatured_type_table_from_debug_names
5655         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5656     }
5657
5658   create_addrmap_from_aranges (dwarf2_per_objfile,
5659                                &dwarf2_per_objfile->debug_aranges);
5660
5661   dwarf2_per_objfile->debug_names_table = std::move (map);
5662   dwarf2_per_objfile->using_index = 1;
5663   dwarf2_per_objfile->quick_file_names_table =
5664     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5665
5666   return true;
5667 }
5668
5669 /* Type used to manage iterating over all CUs looking for a symbol for
5670    .debug_names.  */
5671
5672 class dw2_debug_names_iterator
5673 {
5674 public:
5675   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5676      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5677   dw2_debug_names_iterator (const mapped_debug_names &map,
5678                             bool want_specific_block,
5679                             block_enum block_index, domain_enum domain,
5680                             const char *name)
5681     : m_map (map), m_want_specific_block (want_specific_block),
5682       m_block_index (block_index), m_domain (domain),
5683       m_addr (find_vec_in_debug_names (map, name))
5684   {}
5685
5686   dw2_debug_names_iterator (const mapped_debug_names &map,
5687                             search_domain search, uint32_t namei)
5688     : m_map (map),
5689       m_search (search),
5690       m_addr (find_vec_in_debug_names (map, namei))
5691   {}
5692
5693   /* Return the next matching CU or NULL if there are no more.  */
5694   dwarf2_per_cu_data *next ();
5695
5696 private:
5697   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5698                                                   const char *name);
5699   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5700                                                   uint32_t namei);
5701
5702   /* The internalized form of .debug_names.  */
5703   const mapped_debug_names &m_map;
5704
5705   /* If true, only look for symbols that match BLOCK_INDEX.  */
5706   const bool m_want_specific_block = false;
5707
5708   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5709      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5710      value.  */
5711   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5712
5713   /* The kind of symbol we're looking for.  */
5714   const domain_enum m_domain = UNDEF_DOMAIN;
5715   const search_domain m_search = ALL_DOMAIN;
5716
5717   /* The list of CUs from the index entry of the symbol, or NULL if
5718      not found.  */
5719   const gdb_byte *m_addr;
5720 };
5721
5722 const char *
5723 mapped_debug_names::namei_to_name (uint32_t namei) const
5724 {
5725   const ULONGEST namei_string_offs
5726     = extract_unsigned_integer ((name_table_string_offs_reordered
5727                                  + namei * offset_size),
5728                                 offset_size,
5729                                 dwarf5_byte_order);
5730   return read_indirect_string_at_offset
5731     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5732 }
5733
5734 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5735    found, return pointer to its pool data.  If NAME cannot be found,
5736    return NULL.  */
5737
5738 const gdb_byte *
5739 dw2_debug_names_iterator::find_vec_in_debug_names
5740   (const mapped_debug_names &map, const char *name)
5741 {
5742   int (*cmp) (const char *, const char *);
5743
5744   if (current_language->la_language == language_cplus
5745       || current_language->la_language == language_fortran
5746       || current_language->la_language == language_d)
5747     {
5748       /* NAME is already canonical.  Drop any qualifiers as
5749          .debug_names does not contain any.  */
5750
5751       if (strchr (name, '(') != NULL)
5752         {
5753           gdb::unique_xmalloc_ptr<char> without_params
5754             = cp_remove_params (name);
5755
5756           if (without_params != NULL)
5757             {
5758               name = without_params.get();
5759             }
5760         }
5761     }
5762
5763   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5764
5765   const uint32_t full_hash = dwarf5_djb_hash (name);
5766   uint32_t namei
5767     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5768                                 (map.bucket_table_reordered
5769                                  + (full_hash % map.bucket_count)), 4,
5770                                 map.dwarf5_byte_order);
5771   if (namei == 0)
5772     return NULL;
5773   --namei;
5774   if (namei >= map.name_count)
5775     {
5776       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5777                    "[in module %s]"),
5778                  namei, map.name_count,
5779                  objfile_name (map.dwarf2_per_objfile->objfile));
5780       return NULL;
5781     }
5782
5783   for (;;)
5784     {
5785       const uint32_t namei_full_hash
5786         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5787                                     (map.hash_table_reordered + namei), 4,
5788                                     map.dwarf5_byte_order);
5789       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5790         return NULL;
5791
5792       if (full_hash == namei_full_hash)
5793         {
5794           const char *const namei_string = map.namei_to_name (namei);
5795
5796 #if 0 /* An expensive sanity check.  */
5797           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5798             {
5799               complaint (_("Wrong .debug_names hash for string at index %u "
5800                            "[in module %s]"),
5801                          namei, objfile_name (dwarf2_per_objfile->objfile));
5802               return NULL;
5803             }
5804 #endif
5805
5806           if (cmp (namei_string, name) == 0)
5807             {
5808               const ULONGEST namei_entry_offs
5809                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5810                                              + namei * map.offset_size),
5811                                             map.offset_size, map.dwarf5_byte_order);
5812               return map.entry_pool + namei_entry_offs;
5813             }
5814         }
5815
5816       ++namei;
5817       if (namei >= map.name_count)
5818         return NULL;
5819     }
5820 }
5821
5822 const gdb_byte *
5823 dw2_debug_names_iterator::find_vec_in_debug_names
5824   (const mapped_debug_names &map, uint32_t namei)
5825 {
5826   if (namei >= map.name_count)
5827     {
5828       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5829                    "[in module %s]"),
5830                  namei, map.name_count,
5831                  objfile_name (map.dwarf2_per_objfile->objfile));
5832       return NULL;
5833     }
5834
5835   const ULONGEST namei_entry_offs
5836     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5837                                  + namei * map.offset_size),
5838                                 map.offset_size, map.dwarf5_byte_order);
5839   return map.entry_pool + namei_entry_offs;
5840 }
5841
5842 /* See dw2_debug_names_iterator.  */
5843
5844 dwarf2_per_cu_data *
5845 dw2_debug_names_iterator::next ()
5846 {
5847   if (m_addr == NULL)
5848     return NULL;
5849
5850   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5851   struct objfile *objfile = dwarf2_per_objfile->objfile;
5852   bfd *const abfd = objfile->obfd;
5853
5854  again:
5855
5856   unsigned int bytes_read;
5857   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5858   m_addr += bytes_read;
5859   if (abbrev == 0)
5860     return NULL;
5861
5862   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5863   if (indexval_it == m_map.abbrev_map.cend ())
5864     {
5865       complaint (_("Wrong .debug_names undefined abbrev code %s "
5866                    "[in module %s]"),
5867                  pulongest (abbrev), objfile_name (objfile));
5868       return NULL;
5869     }
5870   const mapped_debug_names::index_val &indexval = indexval_it->second;
5871   bool have_is_static = false;
5872   bool is_static;
5873   dwarf2_per_cu_data *per_cu = NULL;
5874   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5875     {
5876       ULONGEST ull;
5877       switch (attr.form)
5878         {
5879         case DW_FORM_implicit_const:
5880           ull = attr.implicit_const;
5881           break;
5882         case DW_FORM_flag_present:
5883           ull = 1;
5884           break;
5885         case DW_FORM_udata:
5886           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5887           m_addr += bytes_read;
5888           break;
5889         default:
5890           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5891                      dwarf_form_name (attr.form),
5892                      objfile_name (objfile));
5893           return NULL;
5894         }
5895       switch (attr.dw_idx)
5896         {
5897         case DW_IDX_compile_unit:
5898           /* Don't crash on bad data.  */
5899           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5900             {
5901               complaint (_(".debug_names entry has bad CU index %s"
5902                            " [in module %s]"),
5903                          pulongest (ull),
5904                          objfile_name (dwarf2_per_objfile->objfile));
5905               continue;
5906             }
5907           per_cu = dwarf2_per_objfile->get_cutu (ull);
5908           break;
5909         case DW_IDX_type_unit:
5910           /* Don't crash on bad data.  */
5911           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5912             {
5913               complaint (_(".debug_names entry has bad TU index %s"
5914                            " [in module %s]"),
5915                          pulongest (ull),
5916                          objfile_name (dwarf2_per_objfile->objfile));
5917               continue;
5918             }
5919           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5920           break;
5921         case DW_IDX_GNU_internal:
5922           if (!m_map.augmentation_is_gdb)
5923             break;
5924           have_is_static = true;
5925           is_static = true;
5926           break;
5927         case DW_IDX_GNU_external:
5928           if (!m_map.augmentation_is_gdb)
5929             break;
5930           have_is_static = true;
5931           is_static = false;
5932           break;
5933         }
5934     }
5935
5936   /* Skip if already read in.  */
5937   if (per_cu->v.quick->compunit_symtab)
5938     goto again;
5939
5940   /* Check static vs global.  */
5941   if (have_is_static)
5942     {
5943       const bool want_static = m_block_index != GLOBAL_BLOCK;
5944       if (m_want_specific_block && want_static != is_static)
5945         goto again;
5946     }
5947
5948   /* Match dw2_symtab_iter_next, symbol_kind
5949      and debug_names::psymbol_tag.  */
5950   switch (m_domain)
5951     {
5952     case VAR_DOMAIN:
5953       switch (indexval.dwarf_tag)
5954         {
5955         case DW_TAG_variable:
5956         case DW_TAG_subprogram:
5957         /* Some types are also in VAR_DOMAIN.  */
5958         case DW_TAG_typedef:
5959         case DW_TAG_structure_type:
5960           break;
5961         default:
5962           goto again;
5963         }
5964       break;
5965     case STRUCT_DOMAIN:
5966       switch (indexval.dwarf_tag)
5967         {
5968         case DW_TAG_typedef:
5969         case DW_TAG_structure_type:
5970           break;
5971         default:
5972           goto again;
5973         }
5974       break;
5975     case LABEL_DOMAIN:
5976       switch (indexval.dwarf_tag)
5977         {
5978         case 0:
5979         case DW_TAG_variable:
5980           break;
5981         default:
5982           goto again;
5983         }
5984       break;
5985     default:
5986       break;
5987     }
5988
5989   /* Match dw2_expand_symtabs_matching, symbol_kind and
5990      debug_names::psymbol_tag.  */
5991   switch (m_search)
5992     {
5993     case VARIABLES_DOMAIN:
5994       switch (indexval.dwarf_tag)
5995         {
5996         case DW_TAG_variable:
5997           break;
5998         default:
5999           goto again;
6000         }
6001       break;
6002     case FUNCTIONS_DOMAIN:
6003       switch (indexval.dwarf_tag)
6004         {
6005         case DW_TAG_subprogram:
6006           break;
6007         default:
6008           goto again;
6009         }
6010       break;
6011     case TYPES_DOMAIN:
6012       switch (indexval.dwarf_tag)
6013         {
6014         case DW_TAG_typedef:
6015         case DW_TAG_structure_type:
6016           break;
6017         default:
6018           goto again;
6019         }
6020       break;
6021     default:
6022       break;
6023     }
6024
6025   return per_cu;
6026 }
6027
6028 static struct compunit_symtab *
6029 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6030                                const char *name, domain_enum domain)
6031 {
6032   const block_enum block_index = static_cast<block_enum> (block_index_int);
6033   struct dwarf2_per_objfile *dwarf2_per_objfile
6034     = get_dwarf2_per_objfile (objfile);
6035
6036   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6037   if (!mapp)
6038     {
6039       /* index is NULL if OBJF_READNOW.  */
6040       return NULL;
6041     }
6042   const auto &map = *mapp;
6043
6044   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6045                                  block_index, domain, name);
6046
6047   struct compunit_symtab *stab_best = NULL;
6048   struct dwarf2_per_cu_data *per_cu;
6049   while ((per_cu = iter.next ()) != NULL)
6050     {
6051       struct symbol *sym, *with_opaque = NULL;
6052       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6053       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6054       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6055
6056       sym = block_find_symbol (block, name, domain,
6057                                block_find_non_opaque_type_preferred,
6058                                &with_opaque);
6059
6060       /* Some caution must be observed with overloaded functions and
6061          methods, since the index will not contain any overload
6062          information (but NAME might contain it).  */
6063
6064       if (sym != NULL
6065           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6066         return stab;
6067       if (with_opaque != NULL
6068           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6069         stab_best = stab;
6070
6071       /* Keep looking through other CUs.  */
6072     }
6073
6074   return stab_best;
6075 }
6076
6077 /* This dumps minimal information about .debug_names.  It is called
6078    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6079    uses this to verify that .debug_names has been loaded.  */
6080
6081 static void
6082 dw2_debug_names_dump (struct objfile *objfile)
6083 {
6084   struct dwarf2_per_objfile *dwarf2_per_objfile
6085     = get_dwarf2_per_objfile (objfile);
6086
6087   gdb_assert (dwarf2_per_objfile->using_index);
6088   printf_filtered (".debug_names:");
6089   if (dwarf2_per_objfile->debug_names_table)
6090     printf_filtered (" exists\n");
6091   else
6092     printf_filtered (" faked for \"readnow\"\n");
6093   printf_filtered ("\n");
6094 }
6095
6096 static void
6097 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6098                                              const char *func_name)
6099 {
6100   struct dwarf2_per_objfile *dwarf2_per_objfile
6101     = get_dwarf2_per_objfile (objfile);
6102
6103   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6104   if (dwarf2_per_objfile->debug_names_table)
6105     {
6106       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6107
6108       /* Note: It doesn't matter what we pass for block_index here.  */
6109       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6110                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6111
6112       struct dwarf2_per_cu_data *per_cu;
6113       while ((per_cu = iter.next ()) != NULL)
6114         dw2_instantiate_symtab (per_cu, false);
6115     }
6116 }
6117
6118 static void
6119 dw2_debug_names_expand_symtabs_matching
6120   (struct objfile *objfile,
6121    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6122    const lookup_name_info &lookup_name,
6123    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6124    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6125    enum search_domain kind)
6126 {
6127   struct dwarf2_per_objfile *dwarf2_per_objfile
6128     = get_dwarf2_per_objfile (objfile);
6129
6130   /* debug_names_table is NULL if OBJF_READNOW.  */
6131   if (!dwarf2_per_objfile->debug_names_table)
6132     return;
6133
6134   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6135
6136   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6137
6138   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6139                                       symbol_matcher,
6140                                       kind, [&] (offset_type namei)
6141     {
6142       /* The name was matched, now expand corresponding CUs that were
6143          marked.  */
6144       dw2_debug_names_iterator iter (map, kind, namei);
6145
6146       struct dwarf2_per_cu_data *per_cu;
6147       while ((per_cu = iter.next ()) != NULL)
6148         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6149                                          expansion_notify);
6150     });
6151 }
6152
6153 const struct quick_symbol_functions dwarf2_debug_names_functions =
6154 {
6155   dw2_has_symbols,
6156   dw2_find_last_source_symtab,
6157   dw2_forget_cached_source_info,
6158   dw2_map_symtabs_matching_filename,
6159   dw2_debug_names_lookup_symbol,
6160   dw2_print_stats,
6161   dw2_debug_names_dump,
6162   dw2_debug_names_expand_symtabs_for_function,
6163   dw2_expand_all_symtabs,
6164   dw2_expand_symtabs_with_fullname,
6165   dw2_map_matching_symbols,
6166   dw2_debug_names_expand_symtabs_matching,
6167   dw2_find_pc_sect_compunit_symtab,
6168   NULL,
6169   dw2_map_symbol_filenames
6170 };
6171
6172 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6173    to either a dwarf2_per_objfile or dwz_file object.  */
6174
6175 template <typename T>
6176 static gdb::array_view<const gdb_byte>
6177 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6178 {
6179   dwarf2_section_info *section = &section_owner->gdb_index;
6180
6181   if (dwarf2_section_empty_p (section))
6182     return {};
6183
6184   /* Older elfutils strip versions could keep the section in the main
6185      executable while splitting it for the separate debug info file.  */
6186   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6187     return {};
6188
6189   dwarf2_read_section (obj, section);
6190
6191   return {section->buffer, section->size};
6192 }
6193
6194 /* Lookup the index cache for the contents of the index associated to
6195    DWARF2_OBJ.  */
6196
6197 static gdb::array_view<const gdb_byte>
6198 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6199 {
6200   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6201   if (build_id == nullptr)
6202     return {};
6203
6204   return global_index_cache.lookup_gdb_index (build_id,
6205                                               &dwarf2_obj->index_cache_res);
6206 }
6207
6208 /* Same as the above, but for DWZ.  */
6209
6210 static gdb::array_view<const gdb_byte>
6211 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6212 {
6213   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6214   if (build_id == nullptr)
6215     return {};
6216
6217   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6218 }
6219
6220 /* See symfile.h.  */
6221
6222 bool
6223 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6224 {
6225   struct dwarf2_per_objfile *dwarf2_per_objfile
6226     = get_dwarf2_per_objfile (objfile);
6227
6228   /* If we're about to read full symbols, don't bother with the
6229      indices.  In this case we also don't care if some other debug
6230      format is making psymtabs, because they are all about to be
6231      expanded anyway.  */
6232   if ((objfile->flags & OBJF_READNOW))
6233     {
6234       dwarf2_per_objfile->using_index = 1;
6235       create_all_comp_units (dwarf2_per_objfile);
6236       create_all_type_units (dwarf2_per_objfile);
6237       dwarf2_per_objfile->quick_file_names_table
6238         = create_quick_file_names_table
6239             (dwarf2_per_objfile->all_comp_units.size ());
6240
6241       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6242                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6243         {
6244           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6245
6246           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6247                                             struct dwarf2_per_cu_quick_data);
6248         }
6249
6250       /* Return 1 so that gdb sees the "quick" functions.  However,
6251          these functions will be no-ops because we will have expanded
6252          all symtabs.  */
6253       *index_kind = dw_index_kind::GDB_INDEX;
6254       return true;
6255     }
6256
6257   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6258     {
6259       *index_kind = dw_index_kind::DEBUG_NAMES;
6260       return true;
6261     }
6262
6263   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6264                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6265                              get_gdb_index_contents_from_section<dwz_file>))
6266     {
6267       *index_kind = dw_index_kind::GDB_INDEX;
6268       return true;
6269     }
6270
6271   /* ... otherwise, try to find the index in the index cache.  */
6272   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6273                              get_gdb_index_contents_from_cache,
6274                              get_gdb_index_contents_from_cache_dwz))
6275     {
6276       global_index_cache.hit ();
6277       *index_kind = dw_index_kind::GDB_INDEX;
6278       return true;
6279     }
6280
6281   global_index_cache.miss ();
6282   return false;
6283 }
6284
6285 \f
6286
6287 /* Build a partial symbol table.  */
6288
6289 void
6290 dwarf2_build_psymtabs (struct objfile *objfile)
6291 {
6292   struct dwarf2_per_objfile *dwarf2_per_objfile
6293     = get_dwarf2_per_objfile (objfile);
6294
6295   if (objfile->global_psymbols.capacity () == 0
6296       && objfile->static_psymbols.capacity () == 0)
6297     init_psymbol_list (objfile, 1024);
6298
6299   TRY
6300     {
6301       /* This isn't really ideal: all the data we allocate on the
6302          objfile's obstack is still uselessly kept around.  However,
6303          freeing it seems unsafe.  */
6304       psymtab_discarder psymtabs (objfile);
6305       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6306       psymtabs.keep ();
6307
6308       /* (maybe) store an index in the cache.  */
6309       global_index_cache.store (dwarf2_per_objfile);
6310     }
6311   CATCH (except, RETURN_MASK_ERROR)
6312     {
6313       exception_print (gdb_stderr, except);
6314     }
6315   END_CATCH
6316 }
6317
6318 /* Return the total length of the CU described by HEADER.  */
6319
6320 static unsigned int
6321 get_cu_length (const struct comp_unit_head *header)
6322 {
6323   return header->initial_length_size + header->length;
6324 }
6325
6326 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6327
6328 static inline bool
6329 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6330 {
6331   sect_offset bottom = cu_header->sect_off;
6332   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6333
6334   return sect_off >= bottom && sect_off < top;
6335 }
6336
6337 /* Find the base address of the compilation unit for range lists and
6338    location lists.  It will normally be specified by DW_AT_low_pc.
6339    In DWARF-3 draft 4, the base address could be overridden by
6340    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6341    compilation units with discontinuous ranges.  */
6342
6343 static void
6344 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6345 {
6346   struct attribute *attr;
6347
6348   cu->base_known = 0;
6349   cu->base_address = 0;
6350
6351   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6352   if (attr)
6353     {
6354       cu->base_address = attr_value_as_address (attr);
6355       cu->base_known = 1;
6356     }
6357   else
6358     {
6359       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6360       if (attr)
6361         {
6362           cu->base_address = attr_value_as_address (attr);
6363           cu->base_known = 1;
6364         }
6365     }
6366 }
6367
6368 /* Read in the comp unit header information from the debug_info at info_ptr.
6369    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6370    NOTE: This leaves members offset, first_die_offset to be filled in
6371    by the caller.  */
6372
6373 static const gdb_byte *
6374 read_comp_unit_head (struct comp_unit_head *cu_header,
6375                      const gdb_byte *info_ptr,
6376                      struct dwarf2_section_info *section,
6377                      rcuh_kind section_kind)
6378 {
6379   int signed_addr;
6380   unsigned int bytes_read;
6381   const char *filename = get_section_file_name (section);
6382   bfd *abfd = get_section_bfd_owner (section);
6383
6384   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6385   cu_header->initial_length_size = bytes_read;
6386   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6387   info_ptr += bytes_read;
6388   cu_header->version = read_2_bytes (abfd, info_ptr);
6389   if (cu_header->version < 2 || cu_header->version > 5)
6390     error (_("Dwarf Error: wrong version in compilation unit header "
6391            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6392            cu_header->version, filename);
6393   info_ptr += 2;
6394   if (cu_header->version < 5)
6395     switch (section_kind)
6396       {
6397       case rcuh_kind::COMPILE:
6398         cu_header->unit_type = DW_UT_compile;
6399         break;
6400       case rcuh_kind::TYPE:
6401         cu_header->unit_type = DW_UT_type;
6402         break;
6403       default:
6404         internal_error (__FILE__, __LINE__,
6405                         _("read_comp_unit_head: invalid section_kind"));
6406       }
6407   else
6408     {
6409       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6410                                                  (read_1_byte (abfd, info_ptr));
6411       info_ptr += 1;
6412       switch (cu_header->unit_type)
6413         {
6414         case DW_UT_compile:
6415           if (section_kind != rcuh_kind::COMPILE)
6416             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6417                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6418                    filename);
6419           break;
6420         case DW_UT_type:
6421           section_kind = rcuh_kind::TYPE;
6422           break;
6423         default:
6424           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6425                  "(is %d, should be %d or %d) [in module %s]"),
6426                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6427         }
6428
6429       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6430       info_ptr += 1;
6431     }
6432   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6433                                                           cu_header,
6434                                                           &bytes_read);
6435   info_ptr += bytes_read;
6436   if (cu_header->version < 5)
6437     {
6438       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6439       info_ptr += 1;
6440     }
6441   signed_addr = bfd_get_sign_extend_vma (abfd);
6442   if (signed_addr < 0)
6443     internal_error (__FILE__, __LINE__,
6444                     _("read_comp_unit_head: dwarf from non elf file"));
6445   cu_header->signed_addr_p = signed_addr;
6446
6447   if (section_kind == rcuh_kind::TYPE)
6448     {
6449       LONGEST type_offset;
6450
6451       cu_header->signature = read_8_bytes (abfd, info_ptr);
6452       info_ptr += 8;
6453
6454       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6455       info_ptr += bytes_read;
6456       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6457       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6458         error (_("Dwarf Error: Too big type_offset in compilation unit "
6459                "header (is %s) [in module %s]"), plongest (type_offset),
6460                filename);
6461     }
6462
6463   return info_ptr;
6464 }
6465
6466 /* Helper function that returns the proper abbrev section for
6467    THIS_CU.  */
6468
6469 static struct dwarf2_section_info *
6470 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6471 {
6472   struct dwarf2_section_info *abbrev;
6473   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6474
6475   if (this_cu->is_dwz)
6476     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6477   else
6478     abbrev = &dwarf2_per_objfile->abbrev;
6479
6480   return abbrev;
6481 }
6482
6483 /* Subroutine of read_and_check_comp_unit_head and
6484    read_and_check_type_unit_head to simplify them.
6485    Perform various error checking on the header.  */
6486
6487 static void
6488 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6489                             struct comp_unit_head *header,
6490                             struct dwarf2_section_info *section,
6491                             struct dwarf2_section_info *abbrev_section)
6492 {
6493   const char *filename = get_section_file_name (section);
6494
6495   if (to_underlying (header->abbrev_sect_off)
6496       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6497     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6498            "(offset %s + 6) [in module %s]"),
6499            sect_offset_str (header->abbrev_sect_off),
6500            sect_offset_str (header->sect_off),
6501            filename);
6502
6503   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6504      avoid potential 32-bit overflow.  */
6505   if (((ULONGEST) header->sect_off + get_cu_length (header))
6506       > section->size)
6507     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6508            "(offset %s + 0) [in module %s]"),
6509            header->length, sect_offset_str (header->sect_off),
6510            filename);
6511 }
6512
6513 /* Read in a CU/TU header and perform some basic error checking.
6514    The contents of the header are stored in HEADER.
6515    The result is a pointer to the start of the first DIE.  */
6516
6517 static const gdb_byte *
6518 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6519                                struct comp_unit_head *header,
6520                                struct dwarf2_section_info *section,
6521                                struct dwarf2_section_info *abbrev_section,
6522                                const gdb_byte *info_ptr,
6523                                rcuh_kind section_kind)
6524 {
6525   const gdb_byte *beg_of_comp_unit = info_ptr;
6526
6527   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6528
6529   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6530
6531   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6532
6533   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6534                               abbrev_section);
6535
6536   return info_ptr;
6537 }
6538
6539 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6540
6541 static sect_offset
6542 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6543                     struct dwarf2_section_info *section,
6544                     sect_offset sect_off)
6545 {
6546   bfd *abfd = get_section_bfd_owner (section);
6547   const gdb_byte *info_ptr;
6548   unsigned int initial_length_size, offset_size;
6549   uint16_t version;
6550
6551   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6552   info_ptr = section->buffer + to_underlying (sect_off);
6553   read_initial_length (abfd, info_ptr, &initial_length_size);
6554   offset_size = initial_length_size == 4 ? 4 : 8;
6555   info_ptr += initial_length_size;
6556
6557   version = read_2_bytes (abfd, info_ptr);
6558   info_ptr += 2;
6559   if (version >= 5)
6560     {
6561       /* Skip unit type and address size.  */
6562       info_ptr += 2;
6563     }
6564
6565   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6566 }
6567
6568 /* Allocate a new partial symtab for file named NAME and mark this new
6569    partial symtab as being an include of PST.  */
6570
6571 static void
6572 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6573                                struct objfile *objfile)
6574 {
6575   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6576
6577   if (!IS_ABSOLUTE_PATH (subpst->filename))
6578     {
6579       /* It shares objfile->objfile_obstack.  */
6580       subpst->dirname = pst->dirname;
6581     }
6582
6583   subpst->dependencies
6584     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6585   subpst->dependencies[0] = pst;
6586   subpst->number_of_dependencies = 1;
6587
6588   subpst->globals_offset = 0;
6589   subpst->n_global_syms = 0;
6590   subpst->statics_offset = 0;
6591   subpst->n_static_syms = 0;
6592   subpst->compunit_symtab = NULL;
6593   subpst->read_symtab = pst->read_symtab;
6594   subpst->readin = 0;
6595
6596   /* No private part is necessary for include psymtabs.  This property
6597      can be used to differentiate between such include psymtabs and
6598      the regular ones.  */
6599   subpst->read_symtab_private = NULL;
6600 }
6601
6602 /* Read the Line Number Program data and extract the list of files
6603    included by the source file represented by PST.  Build an include
6604    partial symtab for each of these included files.  */
6605
6606 static void
6607 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6608                                struct die_info *die,
6609                                struct partial_symtab *pst)
6610 {
6611   line_header_up lh;
6612   struct attribute *attr;
6613
6614   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6615   if (attr)
6616     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6617   if (lh == NULL)
6618     return;  /* No linetable, so no includes.  */
6619
6620   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6621      that we pass in the raw text_low here; that is ok because we're
6622      only decoding the line table to make include partial symtabs, and
6623      so the addresses aren't really used.  */
6624   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6625                       pst->raw_text_low (), 1);
6626 }
6627
6628 static hashval_t
6629 hash_signatured_type (const void *item)
6630 {
6631   const struct signatured_type *sig_type
6632     = (const struct signatured_type *) item;
6633
6634   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6635   return sig_type->signature;
6636 }
6637
6638 static int
6639 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6640 {
6641   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6642   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6643
6644   return lhs->signature == rhs->signature;
6645 }
6646
6647 /* Allocate a hash table for signatured types.  */
6648
6649 static htab_t
6650 allocate_signatured_type_table (struct objfile *objfile)
6651 {
6652   return htab_create_alloc_ex (41,
6653                                hash_signatured_type,
6654                                eq_signatured_type,
6655                                NULL,
6656                                &objfile->objfile_obstack,
6657                                hashtab_obstack_allocate,
6658                                dummy_obstack_deallocate);
6659 }
6660
6661 /* A helper function to add a signatured type CU to a table.  */
6662
6663 static int
6664 add_signatured_type_cu_to_table (void **slot, void *datum)
6665 {
6666   struct signatured_type *sigt = (struct signatured_type *) *slot;
6667   std::vector<signatured_type *> *all_type_units
6668     = (std::vector<signatured_type *> *) datum;
6669
6670   all_type_units->push_back (sigt);
6671
6672   return 1;
6673 }
6674
6675 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6676    and fill them into TYPES_HTAB.  It will process only type units,
6677    therefore DW_UT_type.  */
6678
6679 static void
6680 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6681                               struct dwo_file *dwo_file,
6682                               dwarf2_section_info *section, htab_t &types_htab,
6683                               rcuh_kind section_kind)
6684 {
6685   struct objfile *objfile = dwarf2_per_objfile->objfile;
6686   struct dwarf2_section_info *abbrev_section;
6687   bfd *abfd;
6688   const gdb_byte *info_ptr, *end_ptr;
6689
6690   abbrev_section = (dwo_file != NULL
6691                     ? &dwo_file->sections.abbrev
6692                     : &dwarf2_per_objfile->abbrev);
6693
6694   if (dwarf_read_debug)
6695     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6696                         get_section_name (section),
6697                         get_section_file_name (abbrev_section));
6698
6699   dwarf2_read_section (objfile, section);
6700   info_ptr = section->buffer;
6701
6702   if (info_ptr == NULL)
6703     return;
6704
6705   /* We can't set abfd until now because the section may be empty or
6706      not present, in which case the bfd is unknown.  */
6707   abfd = get_section_bfd_owner (section);
6708
6709   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6710      because we don't need to read any dies: the signature is in the
6711      header.  */
6712
6713   end_ptr = info_ptr + section->size;
6714   while (info_ptr < end_ptr)
6715     {
6716       struct signatured_type *sig_type;
6717       struct dwo_unit *dwo_tu;
6718       void **slot;
6719       const gdb_byte *ptr = info_ptr;
6720       struct comp_unit_head header;
6721       unsigned int length;
6722
6723       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6724
6725       /* Initialize it due to a false compiler warning.  */
6726       header.signature = -1;
6727       header.type_cu_offset_in_tu = (cu_offset) -1;
6728
6729       /* We need to read the type's signature in order to build the hash
6730          table, but we don't need anything else just yet.  */
6731
6732       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6733                                            abbrev_section, ptr, section_kind);
6734
6735       length = get_cu_length (&header);
6736
6737       /* Skip dummy type units.  */
6738       if (ptr >= info_ptr + length
6739           || peek_abbrev_code (abfd, ptr) == 0
6740           || header.unit_type != DW_UT_type)
6741         {
6742           info_ptr += length;
6743           continue;
6744         }
6745
6746       if (types_htab == NULL)
6747         {
6748           if (dwo_file)
6749             types_htab = allocate_dwo_unit_table (objfile);
6750           else
6751             types_htab = allocate_signatured_type_table (objfile);
6752         }
6753
6754       if (dwo_file)
6755         {
6756           sig_type = NULL;
6757           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6758                                    struct dwo_unit);
6759           dwo_tu->dwo_file = dwo_file;
6760           dwo_tu->signature = header.signature;
6761           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6762           dwo_tu->section = section;
6763           dwo_tu->sect_off = sect_off;
6764           dwo_tu->length = length;
6765         }
6766       else
6767         {
6768           /* N.B.: type_offset is not usable if this type uses a DWO file.
6769              The real type_offset is in the DWO file.  */
6770           dwo_tu = NULL;
6771           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6772                                      struct signatured_type);
6773           sig_type->signature = header.signature;
6774           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6775           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6776           sig_type->per_cu.is_debug_types = 1;
6777           sig_type->per_cu.section = section;
6778           sig_type->per_cu.sect_off = sect_off;
6779           sig_type->per_cu.length = length;
6780         }
6781
6782       slot = htab_find_slot (types_htab,
6783                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6784                              INSERT);
6785       gdb_assert (slot != NULL);
6786       if (*slot != NULL)
6787         {
6788           sect_offset dup_sect_off;
6789
6790           if (dwo_file)
6791             {
6792               const struct dwo_unit *dup_tu
6793                 = (const struct dwo_unit *) *slot;
6794
6795               dup_sect_off = dup_tu->sect_off;
6796             }
6797           else
6798             {
6799               const struct signatured_type *dup_tu
6800                 = (const struct signatured_type *) *slot;
6801
6802               dup_sect_off = dup_tu->per_cu.sect_off;
6803             }
6804
6805           complaint (_("debug type entry at offset %s is duplicate to"
6806                        " the entry at offset %s, signature %s"),
6807                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6808                      hex_string (header.signature));
6809         }
6810       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6811
6812       if (dwarf_read_debug > 1)
6813         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6814                             sect_offset_str (sect_off),
6815                             hex_string (header.signature));
6816
6817       info_ptr += length;
6818     }
6819 }
6820
6821 /* Create the hash table of all entries in the .debug_types
6822    (or .debug_types.dwo) section(s).
6823    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6824    otherwise it is NULL.
6825
6826    The result is a pointer to the hash table or NULL if there are no types.
6827
6828    Note: This function processes DWO files only, not DWP files.  */
6829
6830 static void
6831 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6832                                struct dwo_file *dwo_file,
6833                                VEC (dwarf2_section_info_def) *types,
6834                                htab_t &types_htab)
6835 {
6836   int ix;
6837   struct dwarf2_section_info *section;
6838
6839   if (VEC_empty (dwarf2_section_info_def, types))
6840     return;
6841
6842   for (ix = 0;
6843        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6844        ++ix)
6845     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6846                                   types_htab, rcuh_kind::TYPE);
6847 }
6848
6849 /* Create the hash table of all entries in the .debug_types section,
6850    and initialize all_type_units.
6851    The result is zero if there is an error (e.g. missing .debug_types section),
6852    otherwise non-zero.  */
6853
6854 static int
6855 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6856 {
6857   htab_t types_htab = NULL;
6858
6859   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6860                                 &dwarf2_per_objfile->info, types_htab,
6861                                 rcuh_kind::COMPILE);
6862   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6863                                  dwarf2_per_objfile->types, types_htab);
6864   if (types_htab == NULL)
6865     {
6866       dwarf2_per_objfile->signatured_types = NULL;
6867       return 0;
6868     }
6869
6870   dwarf2_per_objfile->signatured_types = types_htab;
6871
6872   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6873   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6874
6875   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6876                           &dwarf2_per_objfile->all_type_units);
6877
6878   return 1;
6879 }
6880
6881 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6882    If SLOT is non-NULL, it is the entry to use in the hash table.
6883    Otherwise we find one.  */
6884
6885 static struct signatured_type *
6886 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6887                void **slot)
6888 {
6889   struct objfile *objfile = dwarf2_per_objfile->objfile;
6890
6891   if (dwarf2_per_objfile->all_type_units.size ()
6892       == dwarf2_per_objfile->all_type_units.capacity ())
6893     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6894
6895   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6896                                               struct signatured_type);
6897
6898   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6899   sig_type->signature = sig;
6900   sig_type->per_cu.is_debug_types = 1;
6901   if (dwarf2_per_objfile->using_index)
6902     {
6903       sig_type->per_cu.v.quick =
6904         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6905                         struct dwarf2_per_cu_quick_data);
6906     }
6907
6908   if (slot == NULL)
6909     {
6910       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6911                              sig_type, INSERT);
6912     }
6913   gdb_assert (*slot == NULL);
6914   *slot = sig_type;
6915   /* The rest of sig_type must be filled in by the caller.  */
6916   return sig_type;
6917 }
6918
6919 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6920    Fill in SIG_ENTRY with DWO_ENTRY.  */
6921
6922 static void
6923 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6924                                   struct signatured_type *sig_entry,
6925                                   struct dwo_unit *dwo_entry)
6926 {
6927   /* Make sure we're not clobbering something we don't expect to.  */
6928   gdb_assert (! sig_entry->per_cu.queued);
6929   gdb_assert (sig_entry->per_cu.cu == NULL);
6930   if (dwarf2_per_objfile->using_index)
6931     {
6932       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6933       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6934     }
6935   else
6936       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6937   gdb_assert (sig_entry->signature == dwo_entry->signature);
6938   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6939   gdb_assert (sig_entry->type_unit_group == NULL);
6940   gdb_assert (sig_entry->dwo_unit == NULL);
6941
6942   sig_entry->per_cu.section = dwo_entry->section;
6943   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6944   sig_entry->per_cu.length = dwo_entry->length;
6945   sig_entry->per_cu.reading_dwo_directly = 1;
6946   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6947   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6948   sig_entry->dwo_unit = dwo_entry;
6949 }
6950
6951 /* Subroutine of lookup_signatured_type.
6952    If we haven't read the TU yet, create the signatured_type data structure
6953    for a TU to be read in directly from a DWO file, bypassing the stub.
6954    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6955    using .gdb_index, then when reading a CU we want to stay in the DWO file
6956    containing that CU.  Otherwise we could end up reading several other DWO
6957    files (due to comdat folding) to process the transitive closure of all the
6958    mentioned TUs, and that can be slow.  The current DWO file will have every
6959    type signature that it needs.
6960    We only do this for .gdb_index because in the psymtab case we already have
6961    to read all the DWOs to build the type unit groups.  */
6962
6963 static struct signatured_type *
6964 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6965 {
6966   struct dwarf2_per_objfile *dwarf2_per_objfile
6967     = cu->per_cu->dwarf2_per_objfile;
6968   struct objfile *objfile = dwarf2_per_objfile->objfile;
6969   struct dwo_file *dwo_file;
6970   struct dwo_unit find_dwo_entry, *dwo_entry;
6971   struct signatured_type find_sig_entry, *sig_entry;
6972   void **slot;
6973
6974   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6975
6976   /* If TU skeletons have been removed then we may not have read in any
6977      TUs yet.  */
6978   if (dwarf2_per_objfile->signatured_types == NULL)
6979     {
6980       dwarf2_per_objfile->signatured_types
6981         = allocate_signatured_type_table (objfile);
6982     }
6983
6984   /* We only ever need to read in one copy of a signatured type.
6985      Use the global signatured_types array to do our own comdat-folding
6986      of types.  If this is the first time we're reading this TU, and
6987      the TU has an entry in .gdb_index, replace the recorded data from
6988      .gdb_index with this TU.  */
6989
6990   find_sig_entry.signature = sig;
6991   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6992                          &find_sig_entry, INSERT);
6993   sig_entry = (struct signatured_type *) *slot;
6994
6995   /* We can get here with the TU already read, *or* in the process of being
6996      read.  Don't reassign the global entry to point to this DWO if that's
6997      the case.  Also note that if the TU is already being read, it may not
6998      have come from a DWO, the program may be a mix of Fission-compiled
6999      code and non-Fission-compiled code.  */
7000
7001   /* Have we already tried to read this TU?
7002      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7003      needn't exist in the global table yet).  */
7004   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7005     return sig_entry;
7006
7007   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7008      dwo_unit of the TU itself.  */
7009   dwo_file = cu->dwo_unit->dwo_file;
7010
7011   /* Ok, this is the first time we're reading this TU.  */
7012   if (dwo_file->tus == NULL)
7013     return NULL;
7014   find_dwo_entry.signature = sig;
7015   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7016   if (dwo_entry == NULL)
7017     return NULL;
7018
7019   /* If the global table doesn't have an entry for this TU, add one.  */
7020   if (sig_entry == NULL)
7021     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7022
7023   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7024   sig_entry->per_cu.tu_read = 1;
7025   return sig_entry;
7026 }
7027
7028 /* Subroutine of lookup_signatured_type.
7029    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7030    then try the DWP file.  If the TU stub (skeleton) has been removed then
7031    it won't be in .gdb_index.  */
7032
7033 static struct signatured_type *
7034 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7035 {
7036   struct dwarf2_per_objfile *dwarf2_per_objfile
7037     = cu->per_cu->dwarf2_per_objfile;
7038   struct objfile *objfile = dwarf2_per_objfile->objfile;
7039   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7040   struct dwo_unit *dwo_entry;
7041   struct signatured_type find_sig_entry, *sig_entry;
7042   void **slot;
7043
7044   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7045   gdb_assert (dwp_file != NULL);
7046
7047   /* If TU skeletons have been removed then we may not have read in any
7048      TUs yet.  */
7049   if (dwarf2_per_objfile->signatured_types == NULL)
7050     {
7051       dwarf2_per_objfile->signatured_types
7052         = allocate_signatured_type_table (objfile);
7053     }
7054
7055   find_sig_entry.signature = sig;
7056   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7057                          &find_sig_entry, INSERT);
7058   sig_entry = (struct signatured_type *) *slot;
7059
7060   /* Have we already tried to read this TU?
7061      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7062      needn't exist in the global table yet).  */
7063   if (sig_entry != NULL)
7064     return sig_entry;
7065
7066   if (dwp_file->tus == NULL)
7067     return NULL;
7068   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7069                                       sig, 1 /* is_debug_types */);
7070   if (dwo_entry == NULL)
7071     return NULL;
7072
7073   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7074   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7075
7076   return sig_entry;
7077 }
7078
7079 /* Lookup a signature based type for DW_FORM_ref_sig8.
7080    Returns NULL if signature SIG is not present in the table.
7081    It is up to the caller to complain about this.  */
7082
7083 static struct signatured_type *
7084 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7085 {
7086   struct dwarf2_per_objfile *dwarf2_per_objfile
7087     = cu->per_cu->dwarf2_per_objfile;
7088
7089   if (cu->dwo_unit
7090       && dwarf2_per_objfile->using_index)
7091     {
7092       /* We're in a DWO/DWP file, and we're using .gdb_index.
7093          These cases require special processing.  */
7094       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7095         return lookup_dwo_signatured_type (cu, sig);
7096       else
7097         return lookup_dwp_signatured_type (cu, sig);
7098     }
7099   else
7100     {
7101       struct signatured_type find_entry, *entry;
7102
7103       if (dwarf2_per_objfile->signatured_types == NULL)
7104         return NULL;
7105       find_entry.signature = sig;
7106       entry = ((struct signatured_type *)
7107                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7108       return entry;
7109     }
7110 }
7111 \f
7112 /* Low level DIE reading support.  */
7113
7114 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7115
7116 static void
7117 init_cu_die_reader (struct die_reader_specs *reader,
7118                     struct dwarf2_cu *cu,
7119                     struct dwarf2_section_info *section,
7120                     struct dwo_file *dwo_file,
7121                     struct abbrev_table *abbrev_table)
7122 {
7123   gdb_assert (section->readin && section->buffer != NULL);
7124   reader->abfd = get_section_bfd_owner (section);
7125   reader->cu = cu;
7126   reader->dwo_file = dwo_file;
7127   reader->die_section = section;
7128   reader->buffer = section->buffer;
7129   reader->buffer_end = section->buffer + section->size;
7130   reader->comp_dir = NULL;
7131   reader->abbrev_table = abbrev_table;
7132 }
7133
7134 /* Subroutine of init_cutu_and_read_dies to simplify it.
7135    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7136    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7137    already.
7138
7139    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7140    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7141    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7142    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7143    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7144    STUB_COMP_DIR may be non-NULL.
7145    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7146    are filled in with the info of the DIE from the DWO file.
7147    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7148    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7149    kept around for at least as long as *RESULT_READER.
7150
7151    The result is non-zero if a valid (non-dummy) DIE was found.  */
7152
7153 static int
7154 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7155                         struct dwo_unit *dwo_unit,
7156                         struct die_info *stub_comp_unit_die,
7157                         const char *stub_comp_dir,
7158                         struct die_reader_specs *result_reader,
7159                         const gdb_byte **result_info_ptr,
7160                         struct die_info **result_comp_unit_die,
7161                         int *result_has_children,
7162                         abbrev_table_up *result_dwo_abbrev_table)
7163 {
7164   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7165   struct objfile *objfile = dwarf2_per_objfile->objfile;
7166   struct dwarf2_cu *cu = this_cu->cu;
7167   bfd *abfd;
7168   const gdb_byte *begin_info_ptr, *info_ptr;
7169   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7170   int i,num_extra_attrs;
7171   struct dwarf2_section_info *dwo_abbrev_section;
7172   struct attribute *attr;
7173   struct die_info *comp_unit_die;
7174
7175   /* At most one of these may be provided.  */
7176   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7177
7178   /* These attributes aren't processed until later:
7179      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7180      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7181      referenced later.  However, these attributes are found in the stub
7182      which we won't have later.  In order to not impose this complication
7183      on the rest of the code, we read them here and copy them to the
7184      DWO CU/TU die.  */
7185
7186   stmt_list = NULL;
7187   low_pc = NULL;
7188   high_pc = NULL;
7189   ranges = NULL;
7190   comp_dir = NULL;
7191
7192   if (stub_comp_unit_die != NULL)
7193     {
7194       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7195          DWO file.  */
7196       if (! this_cu->is_debug_types)
7197         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7198       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7199       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7200       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7201       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7202
7203       /* There should be a DW_AT_addr_base attribute here (if needed).
7204          We need the value before we can process DW_FORM_GNU_addr_index.  */
7205       cu->addr_base = 0;
7206       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7207       if (attr)
7208         cu->addr_base = DW_UNSND (attr);
7209
7210       /* There should be a DW_AT_ranges_base attribute here (if needed).
7211          We need the value before we can process DW_AT_ranges.  */
7212       cu->ranges_base = 0;
7213       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7214       if (attr)
7215         cu->ranges_base = DW_UNSND (attr);
7216     }
7217   else if (stub_comp_dir != NULL)
7218     {
7219       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7220       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7221       comp_dir->name = DW_AT_comp_dir;
7222       comp_dir->form = DW_FORM_string;
7223       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7224       DW_STRING (comp_dir) = stub_comp_dir;
7225     }
7226
7227   /* Set up for reading the DWO CU/TU.  */
7228   cu->dwo_unit = dwo_unit;
7229   dwarf2_section_info *section = dwo_unit->section;
7230   dwarf2_read_section (objfile, section);
7231   abfd = get_section_bfd_owner (section);
7232   begin_info_ptr = info_ptr = (section->buffer
7233                                + to_underlying (dwo_unit->sect_off));
7234   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7235
7236   if (this_cu->is_debug_types)
7237     {
7238       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7239
7240       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7241                                                 &cu->header, section,
7242                                                 dwo_abbrev_section,
7243                                                 info_ptr, rcuh_kind::TYPE);
7244       /* This is not an assert because it can be caused by bad debug info.  */
7245       if (sig_type->signature != cu->header.signature)
7246         {
7247           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7248                    " TU at offset %s [in module %s]"),
7249                  hex_string (sig_type->signature),
7250                  hex_string (cu->header.signature),
7251                  sect_offset_str (dwo_unit->sect_off),
7252                  bfd_get_filename (abfd));
7253         }
7254       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7255       /* For DWOs coming from DWP files, we don't know the CU length
7256          nor the type's offset in the TU until now.  */
7257       dwo_unit->length = get_cu_length (&cu->header);
7258       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7259
7260       /* Establish the type offset that can be used to lookup the type.
7261          For DWO files, we don't know it until now.  */
7262       sig_type->type_offset_in_section
7263         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7264     }
7265   else
7266     {
7267       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7268                                                 &cu->header, section,
7269                                                 dwo_abbrev_section,
7270                                                 info_ptr, rcuh_kind::COMPILE);
7271       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7272       /* For DWOs coming from DWP files, we don't know the CU length
7273          until now.  */
7274       dwo_unit->length = get_cu_length (&cu->header);
7275     }
7276
7277   *result_dwo_abbrev_table
7278     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7279                                cu->header.abbrev_sect_off);
7280   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7281                       result_dwo_abbrev_table->get ());
7282
7283   /* Read in the die, but leave space to copy over the attributes
7284      from the stub.  This has the benefit of simplifying the rest of
7285      the code - all the work to maintain the illusion of a single
7286      DW_TAG_{compile,type}_unit DIE is done here.  */
7287   num_extra_attrs = ((stmt_list != NULL)
7288                      + (low_pc != NULL)
7289                      + (high_pc != NULL)
7290                      + (ranges != NULL)
7291                      + (comp_dir != NULL));
7292   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7293                               result_has_children, num_extra_attrs);
7294
7295   /* Copy over the attributes from the stub to the DIE we just read in.  */
7296   comp_unit_die = *result_comp_unit_die;
7297   i = comp_unit_die->num_attrs;
7298   if (stmt_list != NULL)
7299     comp_unit_die->attrs[i++] = *stmt_list;
7300   if (low_pc != NULL)
7301     comp_unit_die->attrs[i++] = *low_pc;
7302   if (high_pc != NULL)
7303     comp_unit_die->attrs[i++] = *high_pc;
7304   if (ranges != NULL)
7305     comp_unit_die->attrs[i++] = *ranges;
7306   if (comp_dir != NULL)
7307     comp_unit_die->attrs[i++] = *comp_dir;
7308   comp_unit_die->num_attrs += num_extra_attrs;
7309
7310   if (dwarf_die_debug)
7311     {
7312       fprintf_unfiltered (gdb_stdlog,
7313                           "Read die from %s@0x%x of %s:\n",
7314                           get_section_name (section),
7315                           (unsigned) (begin_info_ptr - section->buffer),
7316                           bfd_get_filename (abfd));
7317       dump_die (comp_unit_die, dwarf_die_debug);
7318     }
7319
7320   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7321      TUs by skipping the stub and going directly to the entry in the DWO file.
7322      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7323      to get it via circuitous means.  Blech.  */
7324   if (comp_dir != NULL)
7325     result_reader->comp_dir = DW_STRING (comp_dir);
7326
7327   /* Skip dummy compilation units.  */
7328   if (info_ptr >= begin_info_ptr + dwo_unit->length
7329       || peek_abbrev_code (abfd, info_ptr) == 0)
7330     return 0;
7331
7332   *result_info_ptr = info_ptr;
7333   return 1;
7334 }
7335
7336 /* Subroutine of init_cutu_and_read_dies to simplify it.
7337    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7338    Returns NULL if the specified DWO unit cannot be found.  */
7339
7340 static struct dwo_unit *
7341 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7342                  struct die_info *comp_unit_die)
7343 {
7344   struct dwarf2_cu *cu = this_cu->cu;
7345   ULONGEST signature;
7346   struct dwo_unit *dwo_unit;
7347   const char *comp_dir, *dwo_name;
7348
7349   gdb_assert (cu != NULL);
7350
7351   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7352   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7353   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7354
7355   if (this_cu->is_debug_types)
7356     {
7357       struct signatured_type *sig_type;
7358
7359       /* Since this_cu is the first member of struct signatured_type,
7360          we can go from a pointer to one to a pointer to the other.  */
7361       sig_type = (struct signatured_type *) this_cu;
7362       signature = sig_type->signature;
7363       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7364     }
7365   else
7366     {
7367       struct attribute *attr;
7368
7369       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7370       if (! attr)
7371         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7372                  " [in module %s]"),
7373                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7374       signature = DW_UNSND (attr);
7375       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7376                                        signature);
7377     }
7378
7379   return dwo_unit;
7380 }
7381
7382 /* Subroutine of init_cutu_and_read_dies to simplify it.
7383    See it for a description of the parameters.
7384    Read a TU directly from a DWO file, bypassing the stub.  */
7385
7386 static void
7387 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7388                            int use_existing_cu, int keep,
7389                            die_reader_func_ftype *die_reader_func,
7390                            void *data)
7391 {
7392   std::unique_ptr<dwarf2_cu> new_cu;
7393   struct signatured_type *sig_type;
7394   struct die_reader_specs reader;
7395   const gdb_byte *info_ptr;
7396   struct die_info *comp_unit_die;
7397   int has_children;
7398   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7399
7400   /* Verify we can do the following downcast, and that we have the
7401      data we need.  */
7402   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7403   sig_type = (struct signatured_type *) this_cu;
7404   gdb_assert (sig_type->dwo_unit != NULL);
7405
7406   if (use_existing_cu && this_cu->cu != NULL)
7407     {
7408       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7409       /* There's no need to do the rereading_dwo_cu handling that
7410          init_cutu_and_read_dies does since we don't read the stub.  */
7411     }
7412   else
7413     {
7414       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7415       gdb_assert (this_cu->cu == NULL);
7416       new_cu.reset (new dwarf2_cu (this_cu));
7417     }
7418
7419   /* A future optimization, if needed, would be to use an existing
7420      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7421      could share abbrev tables.  */
7422
7423   /* The abbreviation table used by READER, this must live at least as long as
7424      READER.  */
7425   abbrev_table_up dwo_abbrev_table;
7426
7427   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7428                               NULL /* stub_comp_unit_die */,
7429                               sig_type->dwo_unit->dwo_file->comp_dir,
7430                               &reader, &info_ptr,
7431                               &comp_unit_die, &has_children,
7432                               &dwo_abbrev_table) == 0)
7433     {
7434       /* Dummy die.  */
7435       return;
7436     }
7437
7438   /* All the "real" work is done here.  */
7439   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7440
7441   /* This duplicates the code in init_cutu_and_read_dies,
7442      but the alternative is making the latter more complex.
7443      This function is only for the special case of using DWO files directly:
7444      no point in overly complicating the general case just to handle this.  */
7445   if (new_cu != NULL && keep)
7446     {
7447       /* Link this CU into read_in_chain.  */
7448       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7449       dwarf2_per_objfile->read_in_chain = this_cu;
7450       /* The chain owns it now.  */
7451       new_cu.release ();
7452     }
7453 }
7454
7455 /* Initialize a CU (or TU) and read its DIEs.
7456    If the CU defers to a DWO file, read the DWO file as well.
7457
7458    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7459    Otherwise the table specified in the comp unit header is read in and used.
7460    This is an optimization for when we already have the abbrev table.
7461
7462    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7463    Otherwise, a new CU is allocated with xmalloc.
7464
7465    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7466    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7467
7468    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7469    linker) then DIE_READER_FUNC will not get called.  */
7470
7471 static void
7472 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7473                          struct abbrev_table *abbrev_table,
7474                          int use_existing_cu, int keep,
7475                          bool skip_partial,
7476                          die_reader_func_ftype *die_reader_func,
7477                          void *data)
7478 {
7479   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7480   struct objfile *objfile = dwarf2_per_objfile->objfile;
7481   struct dwarf2_section_info *section = this_cu->section;
7482   bfd *abfd = get_section_bfd_owner (section);
7483   struct dwarf2_cu *cu;
7484   const gdb_byte *begin_info_ptr, *info_ptr;
7485   struct die_reader_specs reader;
7486   struct die_info *comp_unit_die;
7487   int has_children;
7488   struct attribute *attr;
7489   struct signatured_type *sig_type = NULL;
7490   struct dwarf2_section_info *abbrev_section;
7491   /* Non-zero if CU currently points to a DWO file and we need to
7492      reread it.  When this happens we need to reread the skeleton die
7493      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7494   int rereading_dwo_cu = 0;
7495
7496   if (dwarf_die_debug)
7497     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7498                         this_cu->is_debug_types ? "type" : "comp",
7499                         sect_offset_str (this_cu->sect_off));
7500
7501   if (use_existing_cu)
7502     gdb_assert (keep);
7503
7504   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7505      file (instead of going through the stub), short-circuit all of this.  */
7506   if (this_cu->reading_dwo_directly)
7507     {
7508       /* Narrow down the scope of possibilities to have to understand.  */
7509       gdb_assert (this_cu->is_debug_types);
7510       gdb_assert (abbrev_table == NULL);
7511       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7512                                  die_reader_func, data);
7513       return;
7514     }
7515
7516   /* This is cheap if the section is already read in.  */
7517   dwarf2_read_section (objfile, section);
7518
7519   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7520
7521   abbrev_section = get_abbrev_section_for_cu (this_cu);
7522
7523   std::unique_ptr<dwarf2_cu> new_cu;
7524   if (use_existing_cu && this_cu->cu != NULL)
7525     {
7526       cu = this_cu->cu;
7527       /* If this CU is from a DWO file we need to start over, we need to
7528          refetch the attributes from the skeleton CU.
7529          This could be optimized by retrieving those attributes from when we
7530          were here the first time: the previous comp_unit_die was stored in
7531          comp_unit_obstack.  But there's no data yet that we need this
7532          optimization.  */
7533       if (cu->dwo_unit != NULL)
7534         rereading_dwo_cu = 1;
7535     }
7536   else
7537     {
7538       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7539       gdb_assert (this_cu->cu == NULL);
7540       new_cu.reset (new dwarf2_cu (this_cu));
7541       cu = new_cu.get ();
7542     }
7543
7544   /* Get the header.  */
7545   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7546     {
7547       /* We already have the header, there's no need to read it in again.  */
7548       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7549     }
7550   else
7551     {
7552       if (this_cu->is_debug_types)
7553         {
7554           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7555                                                     &cu->header, section,
7556                                                     abbrev_section, info_ptr,
7557                                                     rcuh_kind::TYPE);
7558
7559           /* Since per_cu is the first member of struct signatured_type,
7560              we can go from a pointer to one to a pointer to the other.  */
7561           sig_type = (struct signatured_type *) this_cu;
7562           gdb_assert (sig_type->signature == cu->header.signature);
7563           gdb_assert (sig_type->type_offset_in_tu
7564                       == cu->header.type_cu_offset_in_tu);
7565           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7566
7567           /* LENGTH has not been set yet for type units if we're
7568              using .gdb_index.  */
7569           this_cu->length = get_cu_length (&cu->header);
7570
7571           /* Establish the type offset that can be used to lookup the type.  */
7572           sig_type->type_offset_in_section =
7573             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7574
7575           this_cu->dwarf_version = cu->header.version;
7576         }
7577       else
7578         {
7579           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7580                                                     &cu->header, section,
7581                                                     abbrev_section,
7582                                                     info_ptr,
7583                                                     rcuh_kind::COMPILE);
7584
7585           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7586           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7587           this_cu->dwarf_version = cu->header.version;
7588         }
7589     }
7590
7591   /* Skip dummy compilation units.  */
7592   if (info_ptr >= begin_info_ptr + this_cu->length
7593       || peek_abbrev_code (abfd, info_ptr) == 0)
7594     return;
7595
7596   /* If we don't have them yet, read the abbrevs for this compilation unit.
7597      And if we need to read them now, make sure they're freed when we're
7598      done (own the table through ABBREV_TABLE_HOLDER).  */
7599   abbrev_table_up abbrev_table_holder;
7600   if (abbrev_table != NULL)
7601     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7602   else
7603     {
7604       abbrev_table_holder
7605         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7606                                    cu->header.abbrev_sect_off);
7607       abbrev_table = abbrev_table_holder.get ();
7608     }
7609
7610   /* Read the top level CU/TU die.  */
7611   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7612   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7613
7614   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7615     return;
7616
7617   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7618      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7619      table from the DWO file and pass the ownership over to us.  It will be
7620      referenced from READER, so we must make sure to free it after we're done
7621      with READER.
7622
7623      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7624      DWO CU, that this test will fail (the attribute will not be present).  */
7625   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7626   abbrev_table_up dwo_abbrev_table;
7627   if (attr)
7628     {
7629       struct dwo_unit *dwo_unit;
7630       struct die_info *dwo_comp_unit_die;
7631
7632       if (has_children)
7633         {
7634           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7635                        " has children (offset %s) [in module %s]"),
7636                      sect_offset_str (this_cu->sect_off),
7637                      bfd_get_filename (abfd));
7638         }
7639       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7640       if (dwo_unit != NULL)
7641         {
7642           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7643                                       comp_unit_die, NULL,
7644                                       &reader, &info_ptr,
7645                                       &dwo_comp_unit_die, &has_children,
7646                                       &dwo_abbrev_table) == 0)
7647             {
7648               /* Dummy die.  */
7649               return;
7650             }
7651           comp_unit_die = dwo_comp_unit_die;
7652         }
7653       else
7654         {
7655           /* Yikes, we couldn't find the rest of the DIE, we only have
7656              the stub.  A complaint has already been logged.  There's
7657              not much more we can do except pass on the stub DIE to
7658              die_reader_func.  We don't want to throw an error on bad
7659              debug info.  */
7660         }
7661     }
7662
7663   /* All of the above is setup for this call.  Yikes.  */
7664   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7665
7666   /* Done, clean up.  */
7667   if (new_cu != NULL && keep)
7668     {
7669       /* Link this CU into read_in_chain.  */
7670       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7671       dwarf2_per_objfile->read_in_chain = this_cu;
7672       /* The chain owns it now.  */
7673       new_cu.release ();
7674     }
7675 }
7676
7677 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7678    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7679    to have already done the lookup to find the DWO file).
7680
7681    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7682    THIS_CU->is_debug_types, but nothing else.
7683
7684    We fill in THIS_CU->length.
7685
7686    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7687    linker) then DIE_READER_FUNC will not get called.
7688
7689    THIS_CU->cu is always freed when done.
7690    This is done in order to not leave THIS_CU->cu in a state where we have
7691    to care whether it refers to the "main" CU or the DWO CU.  */
7692
7693 static void
7694 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7695                                    struct dwo_file *dwo_file,
7696                                    die_reader_func_ftype *die_reader_func,
7697                                    void *data)
7698 {
7699   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7700   struct objfile *objfile = dwarf2_per_objfile->objfile;
7701   struct dwarf2_section_info *section = this_cu->section;
7702   bfd *abfd = get_section_bfd_owner (section);
7703   struct dwarf2_section_info *abbrev_section;
7704   const gdb_byte *begin_info_ptr, *info_ptr;
7705   struct die_reader_specs reader;
7706   struct die_info *comp_unit_die;
7707   int has_children;
7708
7709   if (dwarf_die_debug)
7710     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7711                         this_cu->is_debug_types ? "type" : "comp",
7712                         sect_offset_str (this_cu->sect_off));
7713
7714   gdb_assert (this_cu->cu == NULL);
7715
7716   abbrev_section = (dwo_file != NULL
7717                     ? &dwo_file->sections.abbrev
7718                     : get_abbrev_section_for_cu (this_cu));
7719
7720   /* This is cheap if the section is already read in.  */
7721   dwarf2_read_section (objfile, section);
7722
7723   struct dwarf2_cu cu (this_cu);
7724
7725   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7726   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7727                                             &cu.header, section,
7728                                             abbrev_section, info_ptr,
7729                                             (this_cu->is_debug_types
7730                                              ? rcuh_kind::TYPE
7731                                              : rcuh_kind::COMPILE));
7732
7733   this_cu->length = get_cu_length (&cu.header);
7734
7735   /* Skip dummy compilation units.  */
7736   if (info_ptr >= begin_info_ptr + this_cu->length
7737       || peek_abbrev_code (abfd, info_ptr) == 0)
7738     return;
7739
7740   abbrev_table_up abbrev_table
7741     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7742                                cu.header.abbrev_sect_off);
7743
7744   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7745   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7746
7747   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7748 }
7749
7750 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7751    does not lookup the specified DWO file.
7752    This cannot be used to read DWO files.
7753
7754    THIS_CU->cu is always freed when done.
7755    This is done in order to not leave THIS_CU->cu in a state where we have
7756    to care whether it refers to the "main" CU or the DWO CU.
7757    We can revisit this if the data shows there's a performance issue.  */
7758
7759 static void
7760 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7761                                 die_reader_func_ftype *die_reader_func,
7762                                 void *data)
7763 {
7764   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7765 }
7766 \f
7767 /* Type Unit Groups.
7768
7769    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7770    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7771    so that all types coming from the same compilation (.o file) are grouped
7772    together.  A future step could be to put the types in the same symtab as
7773    the CU the types ultimately came from.  */
7774
7775 static hashval_t
7776 hash_type_unit_group (const void *item)
7777 {
7778   const struct type_unit_group *tu_group
7779     = (const struct type_unit_group *) item;
7780
7781   return hash_stmt_list_entry (&tu_group->hash);
7782 }
7783
7784 static int
7785 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7786 {
7787   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7788   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7789
7790   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7791 }
7792
7793 /* Allocate a hash table for type unit groups.  */
7794
7795 static htab_t
7796 allocate_type_unit_groups_table (struct objfile *objfile)
7797 {
7798   return htab_create_alloc_ex (3,
7799                                hash_type_unit_group,
7800                                eq_type_unit_group,
7801                                NULL,
7802                                &objfile->objfile_obstack,
7803                                hashtab_obstack_allocate,
7804                                dummy_obstack_deallocate);
7805 }
7806
7807 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7808    partial symtabs.  We combine several TUs per psymtab to not let the size
7809    of any one psymtab grow too big.  */
7810 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7811 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7812
7813 /* Helper routine for get_type_unit_group.
7814    Create the type_unit_group object used to hold one or more TUs.  */
7815
7816 static struct type_unit_group *
7817 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7818 {
7819   struct dwarf2_per_objfile *dwarf2_per_objfile
7820     = cu->per_cu->dwarf2_per_objfile;
7821   struct objfile *objfile = dwarf2_per_objfile->objfile;
7822   struct dwarf2_per_cu_data *per_cu;
7823   struct type_unit_group *tu_group;
7824
7825   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7826                              struct type_unit_group);
7827   per_cu = &tu_group->per_cu;
7828   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7829
7830   if (dwarf2_per_objfile->using_index)
7831     {
7832       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7833                                         struct dwarf2_per_cu_quick_data);
7834     }
7835   else
7836     {
7837       unsigned int line_offset = to_underlying (line_offset_struct);
7838       struct partial_symtab *pst;
7839       std::string name;
7840
7841       /* Give the symtab a useful name for debug purposes.  */
7842       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7843         name = string_printf ("<type_units_%d>",
7844                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7845       else
7846         name = string_printf ("<type_units_at_0x%x>", line_offset);
7847
7848       pst = create_partial_symtab (per_cu, name.c_str ());
7849       pst->anonymous = 1;
7850     }
7851
7852   tu_group->hash.dwo_unit = cu->dwo_unit;
7853   tu_group->hash.line_sect_off = line_offset_struct;
7854
7855   return tu_group;
7856 }
7857
7858 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7859    STMT_LIST is a DW_AT_stmt_list attribute.  */
7860
7861 static struct type_unit_group *
7862 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7863 {
7864   struct dwarf2_per_objfile *dwarf2_per_objfile
7865     = cu->per_cu->dwarf2_per_objfile;
7866   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7867   struct type_unit_group *tu_group;
7868   void **slot;
7869   unsigned int line_offset;
7870   struct type_unit_group type_unit_group_for_lookup;
7871
7872   if (dwarf2_per_objfile->type_unit_groups == NULL)
7873     {
7874       dwarf2_per_objfile->type_unit_groups =
7875         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7876     }
7877
7878   /* Do we need to create a new group, or can we use an existing one?  */
7879
7880   if (stmt_list)
7881     {
7882       line_offset = DW_UNSND (stmt_list);
7883       ++tu_stats->nr_symtab_sharers;
7884     }
7885   else
7886     {
7887       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7888          We can do various things here like create one group per TU or
7889          spread them over multiple groups to split up the expansion work.
7890          To avoid worst case scenarios (too many groups or too large groups)
7891          we, umm, group them in bunches.  */
7892       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7893                      | (tu_stats->nr_stmt_less_type_units
7894                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7895       ++tu_stats->nr_stmt_less_type_units;
7896     }
7897
7898   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7899   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7900   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7901                          &type_unit_group_for_lookup, INSERT);
7902   if (*slot != NULL)
7903     {
7904       tu_group = (struct type_unit_group *) *slot;
7905       gdb_assert (tu_group != NULL);
7906     }
7907   else
7908     {
7909       sect_offset line_offset_struct = (sect_offset) line_offset;
7910       tu_group = create_type_unit_group (cu, line_offset_struct);
7911       *slot = tu_group;
7912       ++tu_stats->nr_symtabs;
7913     }
7914
7915   return tu_group;
7916 }
7917 \f
7918 /* Partial symbol tables.  */
7919
7920 /* Create a psymtab named NAME and assign it to PER_CU.
7921
7922    The caller must fill in the following details:
7923    dirname, textlow, texthigh.  */
7924
7925 static struct partial_symtab *
7926 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7927 {
7928   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7929   struct partial_symtab *pst;
7930
7931   pst = start_psymtab_common (objfile, name, 0,
7932                               objfile->global_psymbols,
7933                               objfile->static_psymbols);
7934
7935   pst->psymtabs_addrmap_supported = 1;
7936
7937   /* This is the glue that links PST into GDB's symbol API.  */
7938   pst->read_symtab_private = per_cu;
7939   pst->read_symtab = dwarf2_read_symtab;
7940   per_cu->v.psymtab = pst;
7941
7942   return pst;
7943 }
7944
7945 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7946    type.  */
7947
7948 struct process_psymtab_comp_unit_data
7949 {
7950   /* True if we are reading a DW_TAG_partial_unit.  */
7951
7952   int want_partial_unit;
7953
7954   /* The "pretend" language that is used if the CU doesn't declare a
7955      language.  */
7956
7957   enum language pretend_language;
7958 };
7959
7960 /* die_reader_func for process_psymtab_comp_unit.  */
7961
7962 static void
7963 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7964                                   const gdb_byte *info_ptr,
7965                                   struct die_info *comp_unit_die,
7966                                   int has_children,
7967                                   void *data)
7968 {
7969   struct dwarf2_cu *cu = reader->cu;
7970   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7971   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7972   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7973   CORE_ADDR baseaddr;
7974   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7975   struct partial_symtab *pst;
7976   enum pc_bounds_kind cu_bounds_kind;
7977   const char *filename;
7978   struct process_psymtab_comp_unit_data *info
7979     = (struct process_psymtab_comp_unit_data *) data;
7980
7981   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7982     return;
7983
7984   gdb_assert (! per_cu->is_debug_types);
7985
7986   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7987
7988   /* Allocate a new partial symbol table structure.  */
7989   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7990   if (filename == NULL)
7991     filename = "";
7992
7993   pst = create_partial_symtab (per_cu, filename);
7994
7995   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7996   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7997
7998   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7999
8000   dwarf2_find_base_address (comp_unit_die, cu);
8001
8002   /* Possibly set the default values of LOWPC and HIGHPC from
8003      `DW_AT_ranges'.  */
8004   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8005                                          &best_highpc, cu, pst);
8006   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8007     {
8008       CORE_ADDR low
8009         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8010            - baseaddr);
8011       CORE_ADDR high
8012         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8013            - baseaddr - 1);
8014       /* Store the contiguous range if it is not empty; it can be
8015          empty for CUs with no code.  */
8016       addrmap_set_empty (objfile->psymtabs_addrmap, low, high, pst);
8017     }
8018
8019   /* Check if comp unit has_children.
8020      If so, read the rest of the partial symbols from this comp unit.
8021      If not, there's no more debug_info for this comp unit.  */
8022   if (has_children)
8023     {
8024       struct partial_die_info *first_die;
8025       CORE_ADDR lowpc, highpc;
8026
8027       lowpc = ((CORE_ADDR) -1);
8028       highpc = ((CORE_ADDR) 0);
8029
8030       first_die = load_partial_dies (reader, info_ptr, 1);
8031
8032       scan_partial_symbols (first_die, &lowpc, &highpc,
8033                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8034
8035       /* If we didn't find a lowpc, set it to highpc to avoid
8036          complaints from `maint check'.  */
8037       if (lowpc == ((CORE_ADDR) -1))
8038         lowpc = highpc;
8039
8040       /* If the compilation unit didn't have an explicit address range,
8041          then use the information extracted from its child dies.  */
8042       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8043         {
8044           best_lowpc = lowpc;
8045           best_highpc = highpc;
8046         }
8047     }
8048   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8049                                                  best_lowpc + baseaddr)
8050                      - baseaddr);
8051   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8052                                                   best_highpc + baseaddr)
8053                       - baseaddr);
8054
8055   end_psymtab_common (objfile, pst);
8056
8057   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8058     {
8059       int i;
8060       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8061       struct dwarf2_per_cu_data *iter;
8062
8063       /* Fill in 'dependencies' here; we fill in 'users' in a
8064          post-pass.  */
8065       pst->number_of_dependencies = len;
8066       pst->dependencies =
8067         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8068       for (i = 0;
8069            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8070                         i, iter);
8071            ++i)
8072         pst->dependencies[i] = iter->v.psymtab;
8073
8074       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8075     }
8076
8077   /* Get the list of files included in the current compilation unit,
8078      and build a psymtab for each of them.  */
8079   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8080
8081   if (dwarf_read_debug)
8082     {
8083       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8084
8085       fprintf_unfiltered (gdb_stdlog,
8086                           "Psymtab for %s unit @%s: %s - %s"
8087                           ", %d global, %d static syms\n",
8088                           per_cu->is_debug_types ? "type" : "comp",
8089                           sect_offset_str (per_cu->sect_off),
8090                           paddress (gdbarch, pst->text_low (objfile)),
8091                           paddress (gdbarch, pst->text_high (objfile)),
8092                           pst->n_global_syms, pst->n_static_syms);
8093     }
8094 }
8095
8096 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8097    Process compilation unit THIS_CU for a psymtab.  */
8098
8099 static void
8100 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8101                            int want_partial_unit,
8102                            enum language pretend_language)
8103 {
8104   /* If this compilation unit was already read in, free the
8105      cached copy in order to read it in again.  This is
8106      necessary because we skipped some symbols when we first
8107      read in the compilation unit (see load_partial_dies).
8108      This problem could be avoided, but the benefit is unclear.  */
8109   if (this_cu->cu != NULL)
8110     free_one_cached_comp_unit (this_cu);
8111
8112   if (this_cu->is_debug_types)
8113     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8114                              build_type_psymtabs_reader, NULL);
8115   else
8116     {
8117       process_psymtab_comp_unit_data info;
8118       info.want_partial_unit = want_partial_unit;
8119       info.pretend_language = pretend_language;
8120       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8121                                process_psymtab_comp_unit_reader, &info);
8122     }
8123
8124   /* Age out any secondary CUs.  */
8125   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8126 }
8127
8128 /* Reader function for build_type_psymtabs.  */
8129
8130 static void
8131 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8132                             const gdb_byte *info_ptr,
8133                             struct die_info *type_unit_die,
8134                             int has_children,
8135                             void *data)
8136 {
8137   struct dwarf2_per_objfile *dwarf2_per_objfile
8138     = reader->cu->per_cu->dwarf2_per_objfile;
8139   struct objfile *objfile = dwarf2_per_objfile->objfile;
8140   struct dwarf2_cu *cu = reader->cu;
8141   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8142   struct signatured_type *sig_type;
8143   struct type_unit_group *tu_group;
8144   struct attribute *attr;
8145   struct partial_die_info *first_die;
8146   CORE_ADDR lowpc, highpc;
8147   struct partial_symtab *pst;
8148
8149   gdb_assert (data == NULL);
8150   gdb_assert (per_cu->is_debug_types);
8151   sig_type = (struct signatured_type *) per_cu;
8152
8153   if (! has_children)
8154     return;
8155
8156   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8157   tu_group = get_type_unit_group (cu, attr);
8158
8159   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8160
8161   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8162   pst = create_partial_symtab (per_cu, "");
8163   pst->anonymous = 1;
8164
8165   first_die = load_partial_dies (reader, info_ptr, 1);
8166
8167   lowpc = (CORE_ADDR) -1;
8168   highpc = (CORE_ADDR) 0;
8169   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8170
8171   end_psymtab_common (objfile, pst);
8172 }
8173
8174 /* Struct used to sort TUs by their abbreviation table offset.  */
8175
8176 struct tu_abbrev_offset
8177 {
8178   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8179   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8180   {}
8181
8182   signatured_type *sig_type;
8183   sect_offset abbrev_offset;
8184 };
8185
8186 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8187
8188 static bool
8189 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8190                           const struct tu_abbrev_offset &b)
8191 {
8192   return a.abbrev_offset < b.abbrev_offset;
8193 }
8194
8195 /* Efficiently read all the type units.
8196    This does the bulk of the work for build_type_psymtabs.
8197
8198    The efficiency is because we sort TUs by the abbrev table they use and
8199    only read each abbrev table once.  In one program there are 200K TUs
8200    sharing 8K abbrev tables.
8201
8202    The main purpose of this function is to support building the
8203    dwarf2_per_objfile->type_unit_groups table.
8204    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8205    can collapse the search space by grouping them by stmt_list.
8206    The savings can be significant, in the same program from above the 200K TUs
8207    share 8K stmt_list tables.
8208
8209    FUNC is expected to call get_type_unit_group, which will create the
8210    struct type_unit_group if necessary and add it to
8211    dwarf2_per_objfile->type_unit_groups.  */
8212
8213 static void
8214 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8215 {
8216   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8217   abbrev_table_up abbrev_table;
8218   sect_offset abbrev_offset;
8219
8220   /* It's up to the caller to not call us multiple times.  */
8221   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8222
8223   if (dwarf2_per_objfile->all_type_units.empty ())
8224     return;
8225
8226   /* TUs typically share abbrev tables, and there can be way more TUs than
8227      abbrev tables.  Sort by abbrev table to reduce the number of times we
8228      read each abbrev table in.
8229      Alternatives are to punt or to maintain a cache of abbrev tables.
8230      This is simpler and efficient enough for now.
8231
8232      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8233      symtab to use).  Typically TUs with the same abbrev offset have the same
8234      stmt_list value too so in practice this should work well.
8235
8236      The basic algorithm here is:
8237
8238       sort TUs by abbrev table
8239       for each TU with same abbrev table:
8240         read abbrev table if first user
8241         read TU top level DIE
8242           [IWBN if DWO skeletons had DW_AT_stmt_list]
8243         call FUNC  */
8244
8245   if (dwarf_read_debug)
8246     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8247
8248   /* Sort in a separate table to maintain the order of all_type_units
8249      for .gdb_index: TU indices directly index all_type_units.  */
8250   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8251   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8252
8253   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8254     sorted_by_abbrev.emplace_back
8255       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8256                                      sig_type->per_cu.section,
8257                                      sig_type->per_cu.sect_off));
8258
8259   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8260              sort_tu_by_abbrev_offset);
8261
8262   abbrev_offset = (sect_offset) ~(unsigned) 0;
8263
8264   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8265     {
8266       /* Switch to the next abbrev table if necessary.  */
8267       if (abbrev_table == NULL
8268           || tu.abbrev_offset != abbrev_offset)
8269         {
8270           abbrev_offset = tu.abbrev_offset;
8271           abbrev_table =
8272             abbrev_table_read_table (dwarf2_per_objfile,
8273                                      &dwarf2_per_objfile->abbrev,
8274                                      abbrev_offset);
8275           ++tu_stats->nr_uniq_abbrev_tables;
8276         }
8277
8278       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8279                                0, 0, false, build_type_psymtabs_reader, NULL);
8280     }
8281 }
8282
8283 /* Print collected type unit statistics.  */
8284
8285 static void
8286 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8287 {
8288   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8289
8290   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8291   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8292                       dwarf2_per_objfile->all_type_units.size ());
8293   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8294                       tu_stats->nr_uniq_abbrev_tables);
8295   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8296                       tu_stats->nr_symtabs);
8297   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8298                       tu_stats->nr_symtab_sharers);
8299   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8300                       tu_stats->nr_stmt_less_type_units);
8301   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8302                       tu_stats->nr_all_type_units_reallocs);
8303 }
8304
8305 /* Traversal function for build_type_psymtabs.  */
8306
8307 static int
8308 build_type_psymtab_dependencies (void **slot, void *info)
8309 {
8310   struct dwarf2_per_objfile *dwarf2_per_objfile
8311     = (struct dwarf2_per_objfile *) info;
8312   struct objfile *objfile = dwarf2_per_objfile->objfile;
8313   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8314   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8315   struct partial_symtab *pst = per_cu->v.psymtab;
8316   int len = VEC_length (sig_type_ptr, tu_group->tus);
8317   struct signatured_type *iter;
8318   int i;
8319
8320   gdb_assert (len > 0);
8321   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8322
8323   pst->number_of_dependencies = len;
8324   pst->dependencies =
8325     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8326   for (i = 0;
8327        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8328        ++i)
8329     {
8330       gdb_assert (iter->per_cu.is_debug_types);
8331       pst->dependencies[i] = iter->per_cu.v.psymtab;
8332       iter->type_unit_group = tu_group;
8333     }
8334
8335   VEC_free (sig_type_ptr, tu_group->tus);
8336
8337   return 1;
8338 }
8339
8340 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8341    Build partial symbol tables for the .debug_types comp-units.  */
8342
8343 static void
8344 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8345 {
8346   if (! create_all_type_units (dwarf2_per_objfile))
8347     return;
8348
8349   build_type_psymtabs_1 (dwarf2_per_objfile);
8350 }
8351
8352 /* Traversal function for process_skeletonless_type_unit.
8353    Read a TU in a DWO file and build partial symbols for it.  */
8354
8355 static int
8356 process_skeletonless_type_unit (void **slot, void *info)
8357 {
8358   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8359   struct dwarf2_per_objfile *dwarf2_per_objfile
8360     = (struct dwarf2_per_objfile *) info;
8361   struct signatured_type find_entry, *entry;
8362
8363   /* If this TU doesn't exist in the global table, add it and read it in.  */
8364
8365   if (dwarf2_per_objfile->signatured_types == NULL)
8366     {
8367       dwarf2_per_objfile->signatured_types
8368         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8369     }
8370
8371   find_entry.signature = dwo_unit->signature;
8372   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8373                          INSERT);
8374   /* If we've already seen this type there's nothing to do.  What's happening
8375      is we're doing our own version of comdat-folding here.  */
8376   if (*slot != NULL)
8377     return 1;
8378
8379   /* This does the job that create_all_type_units would have done for
8380      this TU.  */
8381   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8382   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8383   *slot = entry;
8384
8385   /* This does the job that build_type_psymtabs_1 would have done.  */
8386   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8387                            build_type_psymtabs_reader, NULL);
8388
8389   return 1;
8390 }
8391
8392 /* Traversal function for process_skeletonless_type_units.  */
8393
8394 static int
8395 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8396 {
8397   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8398
8399   if (dwo_file->tus != NULL)
8400     {
8401       htab_traverse_noresize (dwo_file->tus,
8402                               process_skeletonless_type_unit, info);
8403     }
8404
8405   return 1;
8406 }
8407
8408 /* Scan all TUs of DWO files, verifying we've processed them.
8409    This is needed in case a TU was emitted without its skeleton.
8410    Note: This can't be done until we know what all the DWO files are.  */
8411
8412 static void
8413 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8414 {
8415   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8416   if (get_dwp_file (dwarf2_per_objfile) == NULL
8417       && dwarf2_per_objfile->dwo_files != NULL)
8418     {
8419       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8420                               process_dwo_file_for_skeletonless_type_units,
8421                               dwarf2_per_objfile);
8422     }
8423 }
8424
8425 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8426
8427 static void
8428 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8429 {
8430   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8431     {
8432       struct partial_symtab *pst = per_cu->v.psymtab;
8433
8434       if (pst == NULL)
8435         continue;
8436
8437       for (int j = 0; j < pst->number_of_dependencies; ++j)
8438         {
8439           /* Set the 'user' field only if it is not already set.  */
8440           if (pst->dependencies[j]->user == NULL)
8441             pst->dependencies[j]->user = pst;
8442         }
8443     }
8444 }
8445
8446 /* Build the partial symbol table by doing a quick pass through the
8447    .debug_info and .debug_abbrev sections.  */
8448
8449 static void
8450 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8451 {
8452   struct objfile *objfile = dwarf2_per_objfile->objfile;
8453
8454   if (dwarf_read_debug)
8455     {
8456       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8457                           objfile_name (objfile));
8458     }
8459
8460   dwarf2_per_objfile->reading_partial_symbols = 1;
8461
8462   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8463
8464   /* Any cached compilation units will be linked by the per-objfile
8465      read_in_chain.  Make sure to free them when we're done.  */
8466   free_cached_comp_units freer (dwarf2_per_objfile);
8467
8468   build_type_psymtabs (dwarf2_per_objfile);
8469
8470   create_all_comp_units (dwarf2_per_objfile);
8471
8472   /* Create a temporary address map on a temporary obstack.  We later
8473      copy this to the final obstack.  */
8474   auto_obstack temp_obstack;
8475
8476   scoped_restore save_psymtabs_addrmap
8477     = make_scoped_restore (&objfile->psymtabs_addrmap,
8478                            addrmap_create_mutable (&temp_obstack));
8479
8480   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8481     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8482
8483   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8484   process_skeletonless_type_units (dwarf2_per_objfile);
8485
8486   /* Now that all TUs have been processed we can fill in the dependencies.  */
8487   if (dwarf2_per_objfile->type_unit_groups != NULL)
8488     {
8489       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8490                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8491     }
8492
8493   if (dwarf_read_debug)
8494     print_tu_stats (dwarf2_per_objfile);
8495
8496   set_partial_user (dwarf2_per_objfile);
8497
8498   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8499                                                     &objfile->objfile_obstack);
8500   /* At this point we want to keep the address map.  */
8501   save_psymtabs_addrmap.release ();
8502
8503   if (dwarf_read_debug)
8504     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8505                         objfile_name (objfile));
8506 }
8507
8508 /* die_reader_func for load_partial_comp_unit.  */
8509
8510 static void
8511 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8512                                const gdb_byte *info_ptr,
8513                                struct die_info *comp_unit_die,
8514                                int has_children,
8515                                void *data)
8516 {
8517   struct dwarf2_cu *cu = reader->cu;
8518
8519   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8520
8521   /* Check if comp unit has_children.
8522      If so, read the rest of the partial symbols from this comp unit.
8523      If not, there's no more debug_info for this comp unit.  */
8524   if (has_children)
8525     load_partial_dies (reader, info_ptr, 0);
8526 }
8527
8528 /* Load the partial DIEs for a secondary CU into memory.
8529    This is also used when rereading a primary CU with load_all_dies.  */
8530
8531 static void
8532 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8533 {
8534   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8535                            load_partial_comp_unit_reader, NULL);
8536 }
8537
8538 static void
8539 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8540                               struct dwarf2_section_info *section,
8541                               struct dwarf2_section_info *abbrev_section,
8542                               unsigned int is_dwz)
8543 {
8544   const gdb_byte *info_ptr;
8545   struct objfile *objfile = dwarf2_per_objfile->objfile;
8546
8547   if (dwarf_read_debug)
8548     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8549                         get_section_name (section),
8550                         get_section_file_name (section));
8551
8552   dwarf2_read_section (objfile, section);
8553
8554   info_ptr = section->buffer;
8555
8556   while (info_ptr < section->buffer + section->size)
8557     {
8558       struct dwarf2_per_cu_data *this_cu;
8559
8560       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8561
8562       comp_unit_head cu_header;
8563       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8564                                      abbrev_section, info_ptr,
8565                                      rcuh_kind::COMPILE);
8566
8567       /* Save the compilation unit for later lookup.  */
8568       if (cu_header.unit_type != DW_UT_type)
8569         {
8570           this_cu = XOBNEW (&objfile->objfile_obstack,
8571                             struct dwarf2_per_cu_data);
8572           memset (this_cu, 0, sizeof (*this_cu));
8573         }
8574       else
8575         {
8576           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8577                                   struct signatured_type);
8578           memset (sig_type, 0, sizeof (*sig_type));
8579           sig_type->signature = cu_header.signature;
8580           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8581           this_cu = &sig_type->per_cu;
8582         }
8583       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8584       this_cu->sect_off = sect_off;
8585       this_cu->length = cu_header.length + cu_header.initial_length_size;
8586       this_cu->is_dwz = is_dwz;
8587       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8588       this_cu->section = section;
8589
8590       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8591
8592       info_ptr = info_ptr + this_cu->length;
8593     }
8594 }
8595
8596 /* Create a list of all compilation units in OBJFILE.
8597    This is only done for -readnow and building partial symtabs.  */
8598
8599 static void
8600 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8601 {
8602   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8603   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8604                                 &dwarf2_per_objfile->abbrev, 0);
8605
8606   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8607   if (dwz != NULL)
8608     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8609                                   1);
8610 }
8611
8612 /* Process all loaded DIEs for compilation unit CU, starting at
8613    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8614    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8615    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8616    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8617
8618 static void
8619 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8620                       CORE_ADDR *highpc, int set_addrmap,
8621                       struct dwarf2_cu *cu)
8622 {
8623   struct partial_die_info *pdi;
8624
8625   /* Now, march along the PDI's, descending into ones which have
8626      interesting children but skipping the children of the other ones,
8627      until we reach the end of the compilation unit.  */
8628
8629   pdi = first_die;
8630
8631   while (pdi != NULL)
8632     {
8633       pdi->fixup (cu);
8634
8635       /* Anonymous namespaces or modules have no name but have interesting
8636          children, so we need to look at them.  Ditto for anonymous
8637          enums.  */
8638
8639       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8640           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8641           || pdi->tag == DW_TAG_imported_unit
8642           || pdi->tag == DW_TAG_inlined_subroutine)
8643         {
8644           switch (pdi->tag)
8645             {
8646             case DW_TAG_subprogram:
8647             case DW_TAG_inlined_subroutine:
8648               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8649               break;
8650             case DW_TAG_constant:
8651             case DW_TAG_variable:
8652             case DW_TAG_typedef:
8653             case DW_TAG_union_type:
8654               if (!pdi->is_declaration)
8655                 {
8656                   add_partial_symbol (pdi, cu);
8657                 }
8658               break;
8659             case DW_TAG_class_type:
8660             case DW_TAG_interface_type:
8661             case DW_TAG_structure_type:
8662               if (!pdi->is_declaration)
8663                 {
8664                   add_partial_symbol (pdi, cu);
8665                 }
8666               if ((cu->language == language_rust
8667                    || cu->language == language_cplus) && pdi->has_children)
8668                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8669                                       set_addrmap, cu);
8670               break;
8671             case DW_TAG_enumeration_type:
8672               if (!pdi->is_declaration)
8673                 add_partial_enumeration (pdi, cu);
8674               break;
8675             case DW_TAG_base_type:
8676             case DW_TAG_subrange_type:
8677               /* File scope base type definitions are added to the partial
8678                  symbol table.  */
8679               add_partial_symbol (pdi, cu);
8680               break;
8681             case DW_TAG_namespace:
8682               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8683               break;
8684             case DW_TAG_module:
8685               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8686               break;
8687             case DW_TAG_imported_unit:
8688               {
8689                 struct dwarf2_per_cu_data *per_cu;
8690
8691                 /* For now we don't handle imported units in type units.  */
8692                 if (cu->per_cu->is_debug_types)
8693                   {
8694                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8695                              " supported in type units [in module %s]"),
8696                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8697                   }
8698
8699                 per_cu = dwarf2_find_containing_comp_unit
8700                            (pdi->d.sect_off, pdi->is_dwz,
8701                             cu->per_cu->dwarf2_per_objfile);
8702
8703                 /* Go read the partial unit, if needed.  */
8704                 if (per_cu->v.psymtab == NULL)
8705                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8706
8707                 VEC_safe_push (dwarf2_per_cu_ptr,
8708                                cu->per_cu->imported_symtabs, per_cu);
8709               }
8710               break;
8711             case DW_TAG_imported_declaration:
8712               add_partial_symbol (pdi, cu);
8713               break;
8714             default:
8715               break;
8716             }
8717         }
8718
8719       /* If the die has a sibling, skip to the sibling.  */
8720
8721       pdi = pdi->die_sibling;
8722     }
8723 }
8724
8725 /* Functions used to compute the fully scoped name of a partial DIE.
8726
8727    Normally, this is simple.  For C++, the parent DIE's fully scoped
8728    name is concatenated with "::" and the partial DIE's name.
8729    Enumerators are an exception; they use the scope of their parent
8730    enumeration type, i.e. the name of the enumeration type is not
8731    prepended to the enumerator.
8732
8733    There are two complexities.  One is DW_AT_specification; in this
8734    case "parent" means the parent of the target of the specification,
8735    instead of the direct parent of the DIE.  The other is compilers
8736    which do not emit DW_TAG_namespace; in this case we try to guess
8737    the fully qualified name of structure types from their members'
8738    linkage names.  This must be done using the DIE's children rather
8739    than the children of any DW_AT_specification target.  We only need
8740    to do this for structures at the top level, i.e. if the target of
8741    any DW_AT_specification (if any; otherwise the DIE itself) does not
8742    have a parent.  */
8743
8744 /* Compute the scope prefix associated with PDI's parent, in
8745    compilation unit CU.  The result will be allocated on CU's
8746    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8747    field.  NULL is returned if no prefix is necessary.  */
8748 static const char *
8749 partial_die_parent_scope (struct partial_die_info *pdi,
8750                           struct dwarf2_cu *cu)
8751 {
8752   const char *grandparent_scope;
8753   struct partial_die_info *parent, *real_pdi;
8754
8755   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8756      then this means the parent of the specification DIE.  */
8757
8758   real_pdi = pdi;
8759   while (real_pdi->has_specification)
8760     real_pdi = find_partial_die (real_pdi->spec_offset,
8761                                  real_pdi->spec_is_dwz, cu);
8762
8763   parent = real_pdi->die_parent;
8764   if (parent == NULL)
8765     return NULL;
8766
8767   if (parent->scope_set)
8768     return parent->scope;
8769
8770   parent->fixup (cu);
8771
8772   grandparent_scope = partial_die_parent_scope (parent, cu);
8773
8774   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8775      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8776      Work around this problem here.  */
8777   if (cu->language == language_cplus
8778       && parent->tag == DW_TAG_namespace
8779       && strcmp (parent->name, "::") == 0
8780       && grandparent_scope == NULL)
8781     {
8782       parent->scope = NULL;
8783       parent->scope_set = 1;
8784       return NULL;
8785     }
8786
8787   if (pdi->tag == DW_TAG_enumerator)
8788     /* Enumerators should not get the name of the enumeration as a prefix.  */
8789     parent->scope = grandparent_scope;
8790   else if (parent->tag == DW_TAG_namespace
8791       || parent->tag == DW_TAG_module
8792       || parent->tag == DW_TAG_structure_type
8793       || parent->tag == DW_TAG_class_type
8794       || parent->tag == DW_TAG_interface_type
8795       || parent->tag == DW_TAG_union_type
8796       || parent->tag == DW_TAG_enumeration_type)
8797     {
8798       if (grandparent_scope == NULL)
8799         parent->scope = parent->name;
8800       else
8801         parent->scope = typename_concat (&cu->comp_unit_obstack,
8802                                          grandparent_scope,
8803                                          parent->name, 0, cu);
8804     }
8805   else
8806     {
8807       /* FIXME drow/2004-04-01: What should we be doing with
8808          function-local names?  For partial symbols, we should probably be
8809          ignoring them.  */
8810       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8811                  parent->tag, sect_offset_str (pdi->sect_off));
8812       parent->scope = grandparent_scope;
8813     }
8814
8815   parent->scope_set = 1;
8816   return parent->scope;
8817 }
8818
8819 /* Return the fully scoped name associated with PDI, from compilation unit
8820    CU.  The result will be allocated with malloc.  */
8821
8822 static char *
8823 partial_die_full_name (struct partial_die_info *pdi,
8824                        struct dwarf2_cu *cu)
8825 {
8826   const char *parent_scope;
8827
8828   /* If this is a template instantiation, we can not work out the
8829      template arguments from partial DIEs.  So, unfortunately, we have
8830      to go through the full DIEs.  At least any work we do building
8831      types here will be reused if full symbols are loaded later.  */
8832   if (pdi->has_template_arguments)
8833     {
8834       pdi->fixup (cu);
8835
8836       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8837         {
8838           struct die_info *die;
8839           struct attribute attr;
8840           struct dwarf2_cu *ref_cu = cu;
8841
8842           /* DW_FORM_ref_addr is using section offset.  */
8843           attr.name = (enum dwarf_attribute) 0;
8844           attr.form = DW_FORM_ref_addr;
8845           attr.u.unsnd = to_underlying (pdi->sect_off);
8846           die = follow_die_ref (NULL, &attr, &ref_cu);
8847
8848           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8849         }
8850     }
8851
8852   parent_scope = partial_die_parent_scope (pdi, cu);
8853   if (parent_scope == NULL)
8854     return NULL;
8855   else
8856     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8857 }
8858
8859 static void
8860 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8861 {
8862   struct dwarf2_per_objfile *dwarf2_per_objfile
8863     = cu->per_cu->dwarf2_per_objfile;
8864   struct objfile *objfile = dwarf2_per_objfile->objfile;
8865   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8866   CORE_ADDR addr = 0;
8867   const char *actual_name = NULL;
8868   CORE_ADDR baseaddr;
8869   char *built_actual_name;
8870
8871   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8872
8873   built_actual_name = partial_die_full_name (pdi, cu);
8874   if (built_actual_name != NULL)
8875     actual_name = built_actual_name;
8876
8877   if (actual_name == NULL)
8878     actual_name = pdi->name;
8879
8880   switch (pdi->tag)
8881     {
8882     case DW_TAG_inlined_subroutine:
8883     case DW_TAG_subprogram:
8884       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8885               - baseaddr);
8886       if (pdi->is_external || cu->language == language_ada)
8887         {
8888           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8889              of the global scope.  But in Ada, we want to be able to access
8890              nested procedures globally.  So all Ada subprograms are stored
8891              in the global scope.  */
8892           add_psymbol_to_list (actual_name, strlen (actual_name),
8893                                built_actual_name != NULL,
8894                                VAR_DOMAIN, LOC_BLOCK,
8895                                SECT_OFF_TEXT (objfile),
8896                                &objfile->global_psymbols,
8897                                addr,
8898                                cu->language, objfile);
8899         }
8900       else
8901         {
8902           add_psymbol_to_list (actual_name, strlen (actual_name),
8903                                built_actual_name != NULL,
8904                                VAR_DOMAIN, LOC_BLOCK,
8905                                SECT_OFF_TEXT (objfile),
8906                                &objfile->static_psymbols,
8907                                addr, cu->language, objfile);
8908         }
8909
8910       if (pdi->main_subprogram && actual_name != NULL)
8911         set_objfile_main_name (objfile, actual_name, cu->language);
8912       break;
8913     case DW_TAG_constant:
8914       {
8915         std::vector<partial_symbol *> *list;
8916
8917         if (pdi->is_external)
8918           list = &objfile->global_psymbols;
8919         else
8920           list = &objfile->static_psymbols;
8921         add_psymbol_to_list (actual_name, strlen (actual_name),
8922                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8923                              -1, list, 0, cu->language, objfile);
8924       }
8925       break;
8926     case DW_TAG_variable:
8927       if (pdi->d.locdesc)
8928         addr = decode_locdesc (pdi->d.locdesc, cu);
8929
8930       if (pdi->d.locdesc
8931           && addr == 0
8932           && !dwarf2_per_objfile->has_section_at_zero)
8933         {
8934           /* A global or static variable may also have been stripped
8935              out by the linker if unused, in which case its address
8936              will be nullified; do not add such variables into partial
8937              symbol table then.  */
8938         }
8939       else if (pdi->is_external)
8940         {
8941           /* Global Variable.
8942              Don't enter into the minimal symbol tables as there is
8943              a minimal symbol table entry from the ELF symbols already.
8944              Enter into partial symbol table if it has a location
8945              descriptor or a type.
8946              If the location descriptor is missing, new_symbol will create
8947              a LOC_UNRESOLVED symbol, the address of the variable will then
8948              be determined from the minimal symbol table whenever the variable
8949              is referenced.
8950              The address for the partial symbol table entry is not
8951              used by GDB, but it comes in handy for debugging partial symbol
8952              table building.  */
8953
8954           if (pdi->d.locdesc || pdi->has_type)
8955             add_psymbol_to_list (actual_name, strlen (actual_name),
8956                                  built_actual_name != NULL,
8957                                  VAR_DOMAIN, LOC_STATIC,
8958                                  SECT_OFF_TEXT (objfile),
8959                                  &objfile->global_psymbols,
8960                                  addr, cu->language, objfile);
8961         }
8962       else
8963         {
8964           int has_loc = pdi->d.locdesc != NULL;
8965
8966           /* Static Variable.  Skip symbols whose value we cannot know (those
8967              without location descriptors or constant values).  */
8968           if (!has_loc && !pdi->has_const_value)
8969             {
8970               xfree (built_actual_name);
8971               return;
8972             }
8973
8974           add_psymbol_to_list (actual_name, strlen (actual_name),
8975                                built_actual_name != NULL,
8976                                VAR_DOMAIN, LOC_STATIC,
8977                                SECT_OFF_TEXT (objfile),
8978                                &objfile->static_psymbols,
8979                                has_loc ? addr : 0,
8980                                cu->language, objfile);
8981         }
8982       break;
8983     case DW_TAG_typedef:
8984     case DW_TAG_base_type:
8985     case DW_TAG_subrange_type:
8986       add_psymbol_to_list (actual_name, strlen (actual_name),
8987                            built_actual_name != NULL,
8988                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8989                            &objfile->static_psymbols,
8990                            0, cu->language, objfile);
8991       break;
8992     case DW_TAG_imported_declaration:
8993     case DW_TAG_namespace:
8994       add_psymbol_to_list (actual_name, strlen (actual_name),
8995                            built_actual_name != NULL,
8996                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8997                            &objfile->global_psymbols,
8998                            0, cu->language, objfile);
8999       break;
9000     case DW_TAG_module:
9001       add_psymbol_to_list (actual_name, strlen (actual_name),
9002                            built_actual_name != NULL,
9003                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9004                            &objfile->global_psymbols,
9005                            0, cu->language, objfile);
9006       break;
9007     case DW_TAG_class_type:
9008     case DW_TAG_interface_type:
9009     case DW_TAG_structure_type:
9010     case DW_TAG_union_type:
9011     case DW_TAG_enumeration_type:
9012       /* Skip external references.  The DWARF standard says in the section
9013          about "Structure, Union, and Class Type Entries": "An incomplete
9014          structure, union or class type is represented by a structure,
9015          union or class entry that does not have a byte size attribute
9016          and that has a DW_AT_declaration attribute."  */
9017       if (!pdi->has_byte_size && pdi->is_declaration)
9018         {
9019           xfree (built_actual_name);
9020           return;
9021         }
9022
9023       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9024          static vs. global.  */
9025       add_psymbol_to_list (actual_name, strlen (actual_name),
9026                            built_actual_name != NULL,
9027                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9028                            cu->language == language_cplus
9029                            ? &objfile->global_psymbols
9030                            : &objfile->static_psymbols,
9031                            0, cu->language, objfile);
9032
9033       break;
9034     case DW_TAG_enumerator:
9035       add_psymbol_to_list (actual_name, strlen (actual_name),
9036                            built_actual_name != NULL,
9037                            VAR_DOMAIN, LOC_CONST, -1,
9038                            cu->language == language_cplus
9039                            ? &objfile->global_psymbols
9040                            : &objfile->static_psymbols,
9041                            0, cu->language, objfile);
9042       break;
9043     default:
9044       break;
9045     }
9046
9047   xfree (built_actual_name);
9048 }
9049
9050 /* Read a partial die corresponding to a namespace; also, add a symbol
9051    corresponding to that namespace to the symbol table.  NAMESPACE is
9052    the name of the enclosing namespace.  */
9053
9054 static void
9055 add_partial_namespace (struct partial_die_info *pdi,
9056                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9057                        int set_addrmap, struct dwarf2_cu *cu)
9058 {
9059   /* Add a symbol for the namespace.  */
9060
9061   add_partial_symbol (pdi, cu);
9062
9063   /* Now scan partial symbols in that namespace.  */
9064
9065   if (pdi->has_children)
9066     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9067 }
9068
9069 /* Read a partial die corresponding to a Fortran module.  */
9070
9071 static void
9072 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9073                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9074 {
9075   /* Add a symbol for the namespace.  */
9076
9077   add_partial_symbol (pdi, cu);
9078
9079   /* Now scan partial symbols in that module.  */
9080
9081   if (pdi->has_children)
9082     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9083 }
9084
9085 /* Read a partial die corresponding to a subprogram or an inlined
9086    subprogram and create a partial symbol for that subprogram.
9087    When the CU language allows it, this routine also defines a partial
9088    symbol for each nested subprogram that this subprogram contains.
9089    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9090    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9091
9092    PDI may also be a lexical block, in which case we simply search
9093    recursively for subprograms defined inside that lexical block.
9094    Again, this is only performed when the CU language allows this
9095    type of definitions.  */
9096
9097 static void
9098 add_partial_subprogram (struct partial_die_info *pdi,
9099                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9100                         int set_addrmap, struct dwarf2_cu *cu)
9101 {
9102   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9103     {
9104       if (pdi->has_pc_info)
9105         {
9106           if (pdi->lowpc < *lowpc)
9107             *lowpc = pdi->lowpc;
9108           if (pdi->highpc > *highpc)
9109             *highpc = pdi->highpc;
9110           if (set_addrmap)
9111             {
9112               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9113               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9114               CORE_ADDR baseaddr;
9115               CORE_ADDR highpc;
9116               CORE_ADDR lowpc;
9117
9118               baseaddr = ANOFFSET (objfile->section_offsets,
9119                                    SECT_OFF_TEXT (objfile));
9120               lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9121                                                    pdi->lowpc + baseaddr)
9122                        - baseaddr);
9123               highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9124                                                     pdi->highpc + baseaddr)
9125                         - baseaddr);
9126               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9127                                  cu->per_cu->v.psymtab);
9128             }
9129         }
9130
9131       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9132         {
9133           if (!pdi->is_declaration)
9134             /* Ignore subprogram DIEs that do not have a name, they are
9135                illegal.  Do not emit a complaint at this point, we will
9136                do so when we convert this psymtab into a symtab.  */
9137             if (pdi->name)
9138               add_partial_symbol (pdi, cu);
9139         }
9140     }
9141
9142   if (! pdi->has_children)
9143     return;
9144
9145   if (cu->language == language_ada)
9146     {
9147       pdi = pdi->die_child;
9148       while (pdi != NULL)
9149         {
9150           pdi->fixup (cu);
9151           if (pdi->tag == DW_TAG_subprogram
9152               || pdi->tag == DW_TAG_inlined_subroutine
9153               || pdi->tag == DW_TAG_lexical_block)
9154             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9155           pdi = pdi->die_sibling;
9156         }
9157     }
9158 }
9159
9160 /* Read a partial die corresponding to an enumeration type.  */
9161
9162 static void
9163 add_partial_enumeration (struct partial_die_info *enum_pdi,
9164                          struct dwarf2_cu *cu)
9165 {
9166   struct partial_die_info *pdi;
9167
9168   if (enum_pdi->name != NULL)
9169     add_partial_symbol (enum_pdi, cu);
9170
9171   pdi = enum_pdi->die_child;
9172   while (pdi)
9173     {
9174       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9175         complaint (_("malformed enumerator DIE ignored"));
9176       else
9177         add_partial_symbol (pdi, cu);
9178       pdi = pdi->die_sibling;
9179     }
9180 }
9181
9182 /* Return the initial uleb128 in the die at INFO_PTR.  */
9183
9184 static unsigned int
9185 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9186 {
9187   unsigned int bytes_read;
9188
9189   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9190 }
9191
9192 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9193    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9194
9195    Return the corresponding abbrev, or NULL if the number is zero (indicating
9196    an empty DIE).  In either case *BYTES_READ will be set to the length of
9197    the initial number.  */
9198
9199 static struct abbrev_info *
9200 peek_die_abbrev (const die_reader_specs &reader,
9201                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9202 {
9203   dwarf2_cu *cu = reader.cu;
9204   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9205   unsigned int abbrev_number
9206     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9207
9208   if (abbrev_number == 0)
9209     return NULL;
9210
9211   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9212   if (!abbrev)
9213     {
9214       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9215                " at offset %s [in module %s]"),
9216              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9217              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9218     }
9219
9220   return abbrev;
9221 }
9222
9223 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9224    Returns a pointer to the end of a series of DIEs, terminated by an empty
9225    DIE.  Any children of the skipped DIEs will also be skipped.  */
9226
9227 static const gdb_byte *
9228 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9229 {
9230   while (1)
9231     {
9232       unsigned int bytes_read;
9233       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9234
9235       if (abbrev == NULL)
9236         return info_ptr + bytes_read;
9237       else
9238         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9239     }
9240 }
9241
9242 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9243    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9244    abbrev corresponding to that skipped uleb128 should be passed in
9245    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9246    children.  */
9247
9248 static const gdb_byte *
9249 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9250               struct abbrev_info *abbrev)
9251 {
9252   unsigned int bytes_read;
9253   struct attribute attr;
9254   bfd *abfd = reader->abfd;
9255   struct dwarf2_cu *cu = reader->cu;
9256   const gdb_byte *buffer = reader->buffer;
9257   const gdb_byte *buffer_end = reader->buffer_end;
9258   unsigned int form, i;
9259
9260   for (i = 0; i < abbrev->num_attrs; i++)
9261     {
9262       /* The only abbrev we care about is DW_AT_sibling.  */
9263       if (abbrev->attrs[i].name == DW_AT_sibling)
9264         {
9265           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9266           if (attr.form == DW_FORM_ref_addr)
9267             complaint (_("ignoring absolute DW_AT_sibling"));
9268           else
9269             {
9270               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9271               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9272
9273               if (sibling_ptr < info_ptr)
9274                 complaint (_("DW_AT_sibling points backwards"));
9275               else if (sibling_ptr > reader->buffer_end)
9276                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9277               else
9278                 return sibling_ptr;
9279             }
9280         }
9281
9282       /* If it isn't DW_AT_sibling, skip this attribute.  */
9283       form = abbrev->attrs[i].form;
9284     skip_attribute:
9285       switch (form)
9286         {
9287         case DW_FORM_ref_addr:
9288           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9289              and later it is offset sized.  */
9290           if (cu->header.version == 2)
9291             info_ptr += cu->header.addr_size;
9292           else
9293             info_ptr += cu->header.offset_size;
9294           break;
9295         case DW_FORM_GNU_ref_alt:
9296           info_ptr += cu->header.offset_size;
9297           break;
9298         case DW_FORM_addr:
9299           info_ptr += cu->header.addr_size;
9300           break;
9301         case DW_FORM_data1:
9302         case DW_FORM_ref1:
9303         case DW_FORM_flag:
9304           info_ptr += 1;
9305           break;
9306         case DW_FORM_flag_present:
9307         case DW_FORM_implicit_const:
9308           break;
9309         case DW_FORM_data2:
9310         case DW_FORM_ref2:
9311           info_ptr += 2;
9312           break;
9313         case DW_FORM_data4:
9314         case DW_FORM_ref4:
9315           info_ptr += 4;
9316           break;
9317         case DW_FORM_data8:
9318         case DW_FORM_ref8:
9319         case DW_FORM_ref_sig8:
9320           info_ptr += 8;
9321           break;
9322         case DW_FORM_data16:
9323           info_ptr += 16;
9324           break;
9325         case DW_FORM_string:
9326           read_direct_string (abfd, info_ptr, &bytes_read);
9327           info_ptr += bytes_read;
9328           break;
9329         case DW_FORM_sec_offset:
9330         case DW_FORM_strp:
9331         case DW_FORM_GNU_strp_alt:
9332           info_ptr += cu->header.offset_size;
9333           break;
9334         case DW_FORM_exprloc:
9335         case DW_FORM_block:
9336           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9337           info_ptr += bytes_read;
9338           break;
9339         case DW_FORM_block1:
9340           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9341           break;
9342         case DW_FORM_block2:
9343           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9344           break;
9345         case DW_FORM_block4:
9346           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9347           break;
9348         case DW_FORM_sdata:
9349         case DW_FORM_udata:
9350         case DW_FORM_ref_udata:
9351         case DW_FORM_GNU_addr_index:
9352         case DW_FORM_GNU_str_index:
9353           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9354           break;
9355         case DW_FORM_indirect:
9356           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9357           info_ptr += bytes_read;
9358           /* We need to continue parsing from here, so just go back to
9359              the top.  */
9360           goto skip_attribute;
9361
9362         default:
9363           error (_("Dwarf Error: Cannot handle %s "
9364                    "in DWARF reader [in module %s]"),
9365                  dwarf_form_name (form),
9366                  bfd_get_filename (abfd));
9367         }
9368     }
9369
9370   if (abbrev->has_children)
9371     return skip_children (reader, info_ptr);
9372   else
9373     return info_ptr;
9374 }
9375
9376 /* Locate ORIG_PDI's sibling.
9377    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9378
9379 static const gdb_byte *
9380 locate_pdi_sibling (const struct die_reader_specs *reader,
9381                     struct partial_die_info *orig_pdi,
9382                     const gdb_byte *info_ptr)
9383 {
9384   /* Do we know the sibling already?  */
9385
9386   if (orig_pdi->sibling)
9387     return orig_pdi->sibling;
9388
9389   /* Are there any children to deal with?  */
9390
9391   if (!orig_pdi->has_children)
9392     return info_ptr;
9393
9394   /* Skip the children the long way.  */
9395
9396   return skip_children (reader, info_ptr);
9397 }
9398
9399 /* Expand this partial symbol table into a full symbol table.  SELF is
9400    not NULL.  */
9401
9402 static void
9403 dwarf2_read_symtab (struct partial_symtab *self,
9404                     struct objfile *objfile)
9405 {
9406   struct dwarf2_per_objfile *dwarf2_per_objfile
9407     = get_dwarf2_per_objfile (objfile);
9408
9409   if (self->readin)
9410     {
9411       warning (_("bug: psymtab for %s is already read in."),
9412                self->filename);
9413     }
9414   else
9415     {
9416       if (info_verbose)
9417         {
9418           printf_filtered (_("Reading in symbols for %s..."),
9419                            self->filename);
9420           gdb_flush (gdb_stdout);
9421         }
9422
9423       /* If this psymtab is constructed from a debug-only objfile, the
9424          has_section_at_zero flag will not necessarily be correct.  We
9425          can get the correct value for this flag by looking at the data
9426          associated with the (presumably stripped) associated objfile.  */
9427       if (objfile->separate_debug_objfile_backlink)
9428         {
9429           struct dwarf2_per_objfile *dpo_backlink
9430             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9431
9432           dwarf2_per_objfile->has_section_at_zero
9433             = dpo_backlink->has_section_at_zero;
9434         }
9435
9436       dwarf2_per_objfile->reading_partial_symbols = 0;
9437
9438       psymtab_to_symtab_1 (self);
9439
9440       /* Finish up the debug error message.  */
9441       if (info_verbose)
9442         printf_filtered (_("done.\n"));
9443     }
9444
9445   process_cu_includes (dwarf2_per_objfile);
9446 }
9447 \f
9448 /* Reading in full CUs.  */
9449
9450 /* Add PER_CU to the queue.  */
9451
9452 static void
9453 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9454                  enum language pretend_language)
9455 {
9456   struct dwarf2_queue_item *item;
9457
9458   per_cu->queued = 1;
9459   item = XNEW (struct dwarf2_queue_item);
9460   item->per_cu = per_cu;
9461   item->pretend_language = pretend_language;
9462   item->next = NULL;
9463
9464   if (dwarf2_queue == NULL)
9465     dwarf2_queue = item;
9466   else
9467     dwarf2_queue_tail->next = item;
9468
9469   dwarf2_queue_tail = item;
9470 }
9471
9472 /* If PER_CU is not yet queued, add it to the queue.
9473    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9474    dependency.
9475    The result is non-zero if PER_CU was queued, otherwise the result is zero
9476    meaning either PER_CU is already queued or it is already loaded.
9477
9478    N.B. There is an invariant here that if a CU is queued then it is loaded.
9479    The caller is required to load PER_CU if we return non-zero.  */
9480
9481 static int
9482 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9483                        struct dwarf2_per_cu_data *per_cu,
9484                        enum language pretend_language)
9485 {
9486   /* We may arrive here during partial symbol reading, if we need full
9487      DIEs to process an unusual case (e.g. template arguments).  Do
9488      not queue PER_CU, just tell our caller to load its DIEs.  */
9489   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9490     {
9491       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9492         return 1;
9493       return 0;
9494     }
9495
9496   /* Mark the dependence relation so that we don't flush PER_CU
9497      too early.  */
9498   if (dependent_cu != NULL)
9499     dwarf2_add_dependence (dependent_cu, per_cu);
9500
9501   /* If it's already on the queue, we have nothing to do.  */
9502   if (per_cu->queued)
9503     return 0;
9504
9505   /* If the compilation unit is already loaded, just mark it as
9506      used.  */
9507   if (per_cu->cu != NULL)
9508     {
9509       per_cu->cu->last_used = 0;
9510       return 0;
9511     }
9512
9513   /* Add it to the queue.  */
9514   queue_comp_unit (per_cu, pretend_language);
9515
9516   return 1;
9517 }
9518
9519 /* Process the queue.  */
9520
9521 static void
9522 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9523 {
9524   struct dwarf2_queue_item *item, *next_item;
9525
9526   if (dwarf_read_debug)
9527     {
9528       fprintf_unfiltered (gdb_stdlog,
9529                           "Expanding one or more symtabs of objfile %s ...\n",
9530                           objfile_name (dwarf2_per_objfile->objfile));
9531     }
9532
9533   /* The queue starts out with one item, but following a DIE reference
9534      may load a new CU, adding it to the end of the queue.  */
9535   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9536     {
9537       if ((dwarf2_per_objfile->using_index
9538            ? !item->per_cu->v.quick->compunit_symtab
9539            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9540           /* Skip dummy CUs.  */
9541           && item->per_cu->cu != NULL)
9542         {
9543           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9544           unsigned int debug_print_threshold;
9545           char buf[100];
9546
9547           if (per_cu->is_debug_types)
9548             {
9549               struct signatured_type *sig_type =
9550                 (struct signatured_type *) per_cu;
9551
9552               sprintf (buf, "TU %s at offset %s",
9553                        hex_string (sig_type->signature),
9554                        sect_offset_str (per_cu->sect_off));
9555               /* There can be 100s of TUs.
9556                  Only print them in verbose mode.  */
9557               debug_print_threshold = 2;
9558             }
9559           else
9560             {
9561               sprintf (buf, "CU at offset %s",
9562                        sect_offset_str (per_cu->sect_off));
9563               debug_print_threshold = 1;
9564             }
9565
9566           if (dwarf_read_debug >= debug_print_threshold)
9567             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9568
9569           if (per_cu->is_debug_types)
9570             process_full_type_unit (per_cu, item->pretend_language);
9571           else
9572             process_full_comp_unit (per_cu, item->pretend_language);
9573
9574           if (dwarf_read_debug >= debug_print_threshold)
9575             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9576         }
9577
9578       item->per_cu->queued = 0;
9579       next_item = item->next;
9580       xfree (item);
9581     }
9582
9583   dwarf2_queue_tail = NULL;
9584
9585   if (dwarf_read_debug)
9586     {
9587       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9588                           objfile_name (dwarf2_per_objfile->objfile));
9589     }
9590 }
9591
9592 /* Read in full symbols for PST, and anything it depends on.  */
9593
9594 static void
9595 psymtab_to_symtab_1 (struct partial_symtab *pst)
9596 {
9597   struct dwarf2_per_cu_data *per_cu;
9598   int i;
9599
9600   if (pst->readin)
9601     return;
9602
9603   for (i = 0; i < pst->number_of_dependencies; i++)
9604     if (!pst->dependencies[i]->readin
9605         && pst->dependencies[i]->user == NULL)
9606       {
9607         /* Inform about additional files that need to be read in.  */
9608         if (info_verbose)
9609           {
9610             /* FIXME: i18n: Need to make this a single string.  */
9611             fputs_filtered (" ", gdb_stdout);
9612             wrap_here ("");
9613             fputs_filtered ("and ", gdb_stdout);
9614             wrap_here ("");
9615             printf_filtered ("%s...", pst->dependencies[i]->filename);
9616             wrap_here ("");     /* Flush output.  */
9617             gdb_flush (gdb_stdout);
9618           }
9619         psymtab_to_symtab_1 (pst->dependencies[i]);
9620       }
9621
9622   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9623
9624   if (per_cu == NULL)
9625     {
9626       /* It's an include file, no symbols to read for it.
9627          Everything is in the parent symtab.  */
9628       pst->readin = 1;
9629       return;
9630     }
9631
9632   dw2_do_instantiate_symtab (per_cu, false);
9633 }
9634
9635 /* Trivial hash function for die_info: the hash value of a DIE
9636    is its offset in .debug_info for this objfile.  */
9637
9638 static hashval_t
9639 die_hash (const void *item)
9640 {
9641   const struct die_info *die = (const struct die_info *) item;
9642
9643   return to_underlying (die->sect_off);
9644 }
9645
9646 /* Trivial comparison function for die_info structures: two DIEs
9647    are equal if they have the same offset.  */
9648
9649 static int
9650 die_eq (const void *item_lhs, const void *item_rhs)
9651 {
9652   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9653   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9654
9655   return die_lhs->sect_off == die_rhs->sect_off;
9656 }
9657
9658 /* die_reader_func for load_full_comp_unit.
9659    This is identical to read_signatured_type_reader,
9660    but is kept separate for now.  */
9661
9662 static void
9663 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9664                             const gdb_byte *info_ptr,
9665                             struct die_info *comp_unit_die,
9666                             int has_children,
9667                             void *data)
9668 {
9669   struct dwarf2_cu *cu = reader->cu;
9670   enum language *language_ptr = (enum language *) data;
9671
9672   gdb_assert (cu->die_hash == NULL);
9673   cu->die_hash =
9674     htab_create_alloc_ex (cu->header.length / 12,
9675                           die_hash,
9676                           die_eq,
9677                           NULL,
9678                           &cu->comp_unit_obstack,
9679                           hashtab_obstack_allocate,
9680                           dummy_obstack_deallocate);
9681
9682   if (has_children)
9683     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9684                                                   &info_ptr, comp_unit_die);
9685   cu->dies = comp_unit_die;
9686   /* comp_unit_die is not stored in die_hash, no need.  */
9687
9688   /* We try not to read any attributes in this function, because not
9689      all CUs needed for references have been loaded yet, and symbol
9690      table processing isn't initialized.  But we have to set the CU language,
9691      or we won't be able to build types correctly.
9692      Similarly, if we do not read the producer, we can not apply
9693      producer-specific interpretation.  */
9694   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9695 }
9696
9697 /* Load the DIEs associated with PER_CU into memory.  */
9698
9699 static void
9700 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9701                      bool skip_partial,
9702                      enum language pretend_language)
9703 {
9704   gdb_assert (! this_cu->is_debug_types);
9705
9706   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9707                            load_full_comp_unit_reader, &pretend_language);
9708 }
9709
9710 /* Add a DIE to the delayed physname list.  */
9711
9712 static void
9713 add_to_method_list (struct type *type, int fnfield_index, int index,
9714                     const char *name, struct die_info *die,
9715                     struct dwarf2_cu *cu)
9716 {
9717   struct delayed_method_info mi;
9718   mi.type = type;
9719   mi.fnfield_index = fnfield_index;
9720   mi.index = index;
9721   mi.name = name;
9722   mi.die = die;
9723   cu->method_list.push_back (mi);
9724 }
9725
9726 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9727    "const" / "volatile".  If so, decrements LEN by the length of the
9728    modifier and return true.  Otherwise return false.  */
9729
9730 template<size_t N>
9731 static bool
9732 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9733 {
9734   size_t mod_len = sizeof (mod) - 1;
9735   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9736     {
9737       len -= mod_len;
9738       return true;
9739     }
9740   return false;
9741 }
9742
9743 /* Compute the physnames of any methods on the CU's method list.
9744
9745    The computation of method physnames is delayed in order to avoid the
9746    (bad) condition that one of the method's formal parameters is of an as yet
9747    incomplete type.  */
9748
9749 static void
9750 compute_delayed_physnames (struct dwarf2_cu *cu)
9751 {
9752   /* Only C++ delays computing physnames.  */
9753   if (cu->method_list.empty ())
9754     return;
9755   gdb_assert (cu->language == language_cplus);
9756
9757   for (const delayed_method_info &mi : cu->method_list)
9758     {
9759       const char *physname;
9760       struct fn_fieldlist *fn_flp
9761         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9762       physname = dwarf2_physname (mi.name, mi.die, cu);
9763       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9764         = physname ? physname : "";
9765
9766       /* Since there's no tag to indicate whether a method is a
9767          const/volatile overload, extract that information out of the
9768          demangled name.  */
9769       if (physname != NULL)
9770         {
9771           size_t len = strlen (physname);
9772
9773           while (1)
9774             {
9775               if (physname[len] == ')') /* shortcut */
9776                 break;
9777               else if (check_modifier (physname, len, " const"))
9778                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9779               else if (check_modifier (physname, len, " volatile"))
9780                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9781               else
9782                 break;
9783             }
9784         }
9785     }
9786
9787   /* The list is no longer needed.  */
9788   cu->method_list.clear ();
9789 }
9790
9791 /* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9792    the same as all other symbols in LISTHEAD.  If a new symbol is added
9793    with a different language, this function asserts.  */
9794
9795 static inline void
9796 dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9797 {
9798   /* Only assert if LISTHEAD already contains symbols of a different
9799      language (dict_create_hashed/insert_symbol_hashed requires that all
9800      symbols in this list are of the same language).  */
9801   gdb_assert ((*listhead) == NULL
9802               || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9803                   == SYMBOL_LANGUAGE (symbol)));
9804
9805   add_symbol_to_list (symbol, listhead);
9806 }
9807
9808 /* Go objects should be embedded in a DW_TAG_module DIE,
9809    and it's not clear if/how imported objects will appear.
9810    To keep Go support simple until that's worked out,
9811    go back through what we've read and create something usable.
9812    We could do this while processing each DIE, and feels kinda cleaner,
9813    but that way is more invasive.
9814    This is to, for example, allow the user to type "p var" or "b main"
9815    without having to specify the package name, and allow lookups
9816    of module.object to work in contexts that use the expression
9817    parser.  */
9818
9819 static void
9820 fixup_go_packaging (struct dwarf2_cu *cu)
9821 {
9822   char *package_name = NULL;
9823   struct pending *list;
9824   int i;
9825
9826   for (list = *cu->builder->get_global_symbols ();
9827        list != NULL;
9828        list = list->next)
9829     {
9830       for (i = 0; i < list->nsyms; ++i)
9831         {
9832           struct symbol *sym = list->symbol[i];
9833
9834           if (SYMBOL_LANGUAGE (sym) == language_go
9835               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9836             {
9837               char *this_package_name = go_symbol_package_name (sym);
9838
9839               if (this_package_name == NULL)
9840                 continue;
9841               if (package_name == NULL)
9842                 package_name = this_package_name;
9843               else
9844                 {
9845                   struct objfile *objfile
9846                     = cu->per_cu->dwarf2_per_objfile->objfile;
9847                   if (strcmp (package_name, this_package_name) != 0)
9848                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9849                                (symbol_symtab (sym) != NULL
9850                                 ? symtab_to_filename_for_display
9851                                     (symbol_symtab (sym))
9852                                 : objfile_name (objfile)),
9853                                this_package_name, package_name);
9854                   xfree (this_package_name);
9855                 }
9856             }
9857         }
9858     }
9859
9860   if (package_name != NULL)
9861     {
9862       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9863       const char *saved_package_name
9864         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9865                                         package_name,
9866                                         strlen (package_name));
9867       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9868                                      saved_package_name);
9869       struct symbol *sym;
9870
9871       sym = allocate_symbol (objfile);
9872       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9873       SYMBOL_SET_NAMES (sym, saved_package_name,
9874                         strlen (saved_package_name), 0, objfile);
9875       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9876          e.g., "main" finds the "main" module and not C's main().  */
9877       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9878       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9879       SYMBOL_TYPE (sym) = type;
9880
9881       dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
9882
9883       xfree (package_name);
9884     }
9885 }
9886
9887 /* Allocate a fully-qualified name consisting of the two parts on the
9888    obstack.  */
9889
9890 static const char *
9891 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9892 {
9893   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9894 }
9895
9896 /* A helper that allocates a struct discriminant_info to attach to a
9897    union type.  */
9898
9899 static struct discriminant_info *
9900 alloc_discriminant_info (struct type *type, int discriminant_index,
9901                          int default_index)
9902 {
9903   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9904   gdb_assert (discriminant_index == -1
9905               || (discriminant_index >= 0
9906                   && discriminant_index < TYPE_NFIELDS (type)));
9907   gdb_assert (default_index == -1
9908               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9909
9910   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9911
9912   struct discriminant_info *disc
9913     = ((struct discriminant_info *)
9914        TYPE_ZALLOC (type,
9915                     offsetof (struct discriminant_info, discriminants)
9916                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9917   disc->default_index = default_index;
9918   disc->discriminant_index = discriminant_index;
9919
9920   struct dynamic_prop prop;
9921   prop.kind = PROP_UNDEFINED;
9922   prop.data.baton = disc;
9923
9924   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9925
9926   return disc;
9927 }
9928
9929 /* Some versions of rustc emitted enums in an unusual way.
9930
9931    Ordinary enums were emitted as unions.  The first element of each
9932    structure in the union was named "RUST$ENUM$DISR".  This element
9933    held the discriminant.
9934
9935    These versions of Rust also implemented the "non-zero"
9936    optimization.  When the enum had two values, and one is empty and
9937    the other holds a pointer that cannot be zero, the pointer is used
9938    as the discriminant, with a zero value meaning the empty variant.
9939    Here, the union's first member is of the form
9940    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9941    where the fieldnos are the indices of the fields that should be
9942    traversed in order to find the field (which may be several fields deep)
9943    and the variantname is the name of the variant of the case when the
9944    field is zero.
9945
9946    This function recognizes whether TYPE is of one of these forms,
9947    and, if so, smashes it to be a variant type.  */
9948
9949 static void
9950 quirk_rust_enum (struct type *type, struct objfile *objfile)
9951 {
9952   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9953
9954   /* We don't need to deal with empty enums.  */
9955   if (TYPE_NFIELDS (type) == 0)
9956     return;
9957
9958 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9959   if (TYPE_NFIELDS (type) == 1
9960       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9961     {
9962       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9963
9964       /* Decode the field name to find the offset of the
9965          discriminant.  */
9966       ULONGEST bit_offset = 0;
9967       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9968       while (name[0] >= '0' && name[0] <= '9')
9969         {
9970           char *tail;
9971           unsigned long index = strtoul (name, &tail, 10);
9972           name = tail;
9973           if (*name != '$'
9974               || index >= TYPE_NFIELDS (field_type)
9975               || (TYPE_FIELD_LOC_KIND (field_type, index)
9976                   != FIELD_LOC_KIND_BITPOS))
9977             {
9978               complaint (_("Could not parse Rust enum encoding string \"%s\""
9979                            "[in module %s]"),
9980                          TYPE_FIELD_NAME (type, 0),
9981                          objfile_name (objfile));
9982               return;
9983             }
9984           ++name;
9985
9986           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9987           field_type = TYPE_FIELD_TYPE (field_type, index);
9988         }
9989
9990       /* Make a union to hold the variants.  */
9991       struct type *union_type = alloc_type (objfile);
9992       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9993       TYPE_NFIELDS (union_type) = 3;
9994       TYPE_FIELDS (union_type)
9995         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9996       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9997       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9998
9999       /* Put the discriminant must at index 0.  */
10000       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10001       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10002       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10003       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10004
10005       /* The order of fields doesn't really matter, so put the real
10006          field at index 1 and the data-less field at index 2.  */
10007       struct discriminant_info *disc
10008         = alloc_discriminant_info (union_type, 0, 1);
10009       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10010       TYPE_FIELD_NAME (union_type, 1)
10011         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10012       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10013         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10014                               TYPE_FIELD_NAME (union_type, 1));
10015
10016       const char *dataless_name
10017         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10018                               name);
10019       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10020                                               dataless_name);
10021       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10022       /* NAME points into the original discriminant name, which
10023          already has the correct lifetime.  */
10024       TYPE_FIELD_NAME (union_type, 2) = name;
10025       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10026       disc->discriminants[2] = 0;
10027
10028       /* Smash this type to be a structure type.  We have to do this
10029          because the type has already been recorded.  */
10030       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10031       TYPE_NFIELDS (type) = 1;
10032       TYPE_FIELDS (type)
10033         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10034
10035       /* Install the variant part.  */
10036       TYPE_FIELD_TYPE (type, 0) = union_type;
10037       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10038       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10039     }
10040   else if (TYPE_NFIELDS (type) == 1)
10041     {
10042       /* We assume that a union with a single field is a univariant
10043          enum.  */
10044       /* Smash this type to be a structure type.  We have to do this
10045          because the type has already been recorded.  */
10046       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10047
10048       /* Make a union to hold the variants.  */
10049       struct type *union_type = alloc_type (objfile);
10050       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10051       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10052       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10053       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10054       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10055
10056       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10057       const char *variant_name
10058         = rust_last_path_segment (TYPE_NAME (field_type));
10059       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10060       TYPE_NAME (field_type)
10061         = rust_fully_qualify (&objfile->objfile_obstack,
10062                               TYPE_NAME (type), variant_name);
10063
10064       /* Install the union in the outer struct type.  */
10065       TYPE_NFIELDS (type) = 1;
10066       TYPE_FIELDS (type)
10067         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10068       TYPE_FIELD_TYPE (type, 0) = union_type;
10069       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10070       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10071
10072       alloc_discriminant_info (union_type, -1, 0);
10073     }
10074   else
10075     {
10076       struct type *disr_type = nullptr;
10077       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10078         {
10079           disr_type = TYPE_FIELD_TYPE (type, i);
10080
10081           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10082             {
10083               /* All fields of a true enum will be structs.  */
10084               return;
10085             }
10086           else if (TYPE_NFIELDS (disr_type) == 0)
10087             {
10088               /* Could be data-less variant, so keep going.  */
10089               disr_type = nullptr;
10090             }
10091           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10092                            "RUST$ENUM$DISR") != 0)
10093             {
10094               /* Not a Rust enum.  */
10095               return;
10096             }
10097           else
10098             {
10099               /* Found one.  */
10100               break;
10101             }
10102         }
10103
10104       /* If we got here without a discriminant, then it's probably
10105          just a union.  */
10106       if (disr_type == nullptr)
10107         return;
10108
10109       /* Smash this type to be a structure type.  We have to do this
10110          because the type has already been recorded.  */
10111       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10112
10113       /* Make a union to hold the variants.  */
10114       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10115       struct type *union_type = alloc_type (objfile);
10116       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10117       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10118       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10119       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10120       TYPE_FIELDS (union_type)
10121         = (struct field *) TYPE_ZALLOC (union_type,
10122                                         (TYPE_NFIELDS (union_type)
10123                                          * sizeof (struct field)));
10124
10125       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10126               TYPE_NFIELDS (type) * sizeof (struct field));
10127
10128       /* Install the discriminant at index 0 in the union.  */
10129       TYPE_FIELD (union_type, 0) = *disr_field;
10130       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10131       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10132
10133       /* Install the union in the outer struct type.  */
10134       TYPE_FIELD_TYPE (type, 0) = union_type;
10135       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10136       TYPE_NFIELDS (type) = 1;
10137
10138       /* Set the size and offset of the union type.  */
10139       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10140
10141       /* We need a way to find the correct discriminant given a
10142          variant name.  For convenience we build a map here.  */
10143       struct type *enum_type = FIELD_TYPE (*disr_field);
10144       std::unordered_map<std::string, ULONGEST> discriminant_map;
10145       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10146         {
10147           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10148             {
10149               const char *name
10150                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10151               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10152             }
10153         }
10154
10155       int n_fields = TYPE_NFIELDS (union_type);
10156       struct discriminant_info *disc
10157         = alloc_discriminant_info (union_type, 0, -1);
10158       /* Skip the discriminant here.  */
10159       for (int i = 1; i < n_fields; ++i)
10160         {
10161           /* Find the final word in the name of this variant's type.
10162              That name can be used to look up the correct
10163              discriminant.  */
10164           const char *variant_name
10165             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10166                                                                   i)));
10167
10168           auto iter = discriminant_map.find (variant_name);
10169           if (iter != discriminant_map.end ())
10170             disc->discriminants[i] = iter->second;
10171
10172           /* Remove the discriminant field, if it exists.  */
10173           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10174           if (TYPE_NFIELDS (sub_type) > 0)
10175             {
10176               --TYPE_NFIELDS (sub_type);
10177               ++TYPE_FIELDS (sub_type);
10178             }
10179           TYPE_FIELD_NAME (union_type, i) = variant_name;
10180           TYPE_NAME (sub_type)
10181             = rust_fully_qualify (&objfile->objfile_obstack,
10182                                   TYPE_NAME (type), variant_name);
10183         }
10184     }
10185 }
10186
10187 /* Rewrite some Rust unions to be structures with variants parts.  */
10188
10189 static void
10190 rust_union_quirks (struct dwarf2_cu *cu)
10191 {
10192   gdb_assert (cu->language == language_rust);
10193   for (type *type_ : cu->rust_unions)
10194     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10195   /* We don't need this any more.  */
10196   cu->rust_unions.clear ();
10197 }
10198
10199 /* Return the symtab for PER_CU.  This works properly regardless of
10200    whether we're using the index or psymtabs.  */
10201
10202 static struct compunit_symtab *
10203 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10204 {
10205   return (per_cu->dwarf2_per_objfile->using_index
10206           ? per_cu->v.quick->compunit_symtab
10207           : per_cu->v.psymtab->compunit_symtab);
10208 }
10209
10210 /* A helper function for computing the list of all symbol tables
10211    included by PER_CU.  */
10212
10213 static void
10214 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10215                                 htab_t all_children, htab_t all_type_symtabs,
10216                                 struct dwarf2_per_cu_data *per_cu,
10217                                 struct compunit_symtab *immediate_parent)
10218 {
10219   void **slot;
10220   int ix;
10221   struct compunit_symtab *cust;
10222   struct dwarf2_per_cu_data *iter;
10223
10224   slot = htab_find_slot (all_children, per_cu, INSERT);
10225   if (*slot != NULL)
10226     {
10227       /* This inclusion and its children have been processed.  */
10228       return;
10229     }
10230
10231   *slot = per_cu;
10232   /* Only add a CU if it has a symbol table.  */
10233   cust = get_compunit_symtab (per_cu);
10234   if (cust != NULL)
10235     {
10236       /* If this is a type unit only add its symbol table if we haven't
10237          seen it yet (type unit per_cu's can share symtabs).  */
10238       if (per_cu->is_debug_types)
10239         {
10240           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10241           if (*slot == NULL)
10242             {
10243               *slot = cust;
10244               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10245               if (cust->user == NULL)
10246                 cust->user = immediate_parent;
10247             }
10248         }
10249       else
10250         {
10251           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10252           if (cust->user == NULL)
10253             cust->user = immediate_parent;
10254         }
10255     }
10256
10257   for (ix = 0;
10258        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10259        ++ix)
10260     {
10261       recursively_compute_inclusions (result, all_children,
10262                                       all_type_symtabs, iter, cust);
10263     }
10264 }
10265
10266 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10267    PER_CU.  */
10268
10269 static void
10270 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10271 {
10272   gdb_assert (! per_cu->is_debug_types);
10273
10274   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10275     {
10276       int ix, len;
10277       struct dwarf2_per_cu_data *per_cu_iter;
10278       struct compunit_symtab *compunit_symtab_iter;
10279       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10280       htab_t all_children, all_type_symtabs;
10281       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10282
10283       /* If we don't have a symtab, we can just skip this case.  */
10284       if (cust == NULL)
10285         return;
10286
10287       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10288                                         NULL, xcalloc, xfree);
10289       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10290                                             NULL, xcalloc, xfree);
10291
10292       for (ix = 0;
10293            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10294                         ix, per_cu_iter);
10295            ++ix)
10296         {
10297           recursively_compute_inclusions (&result_symtabs, all_children,
10298                                           all_type_symtabs, per_cu_iter,
10299                                           cust);
10300         }
10301
10302       /* Now we have a transitive closure of all the included symtabs.  */
10303       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10304       cust->includes
10305         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10306                      struct compunit_symtab *, len + 1);
10307       for (ix = 0;
10308            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10309                         compunit_symtab_iter);
10310            ++ix)
10311         cust->includes[ix] = compunit_symtab_iter;
10312       cust->includes[len] = NULL;
10313
10314       VEC_free (compunit_symtab_ptr, result_symtabs);
10315       htab_delete (all_children);
10316       htab_delete (all_type_symtabs);
10317     }
10318 }
10319
10320 /* Compute the 'includes' field for the symtabs of all the CUs we just
10321    read.  */
10322
10323 static void
10324 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10325 {
10326   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10327     {
10328       if (! iter->is_debug_types)
10329         compute_compunit_symtab_includes (iter);
10330     }
10331
10332   dwarf2_per_objfile->just_read_cus.clear ();
10333 }
10334
10335 /* Generate full symbol information for PER_CU, whose DIEs have
10336    already been loaded into memory.  */
10337
10338 static void
10339 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10340                         enum language pretend_language)
10341 {
10342   struct dwarf2_cu *cu = per_cu->cu;
10343   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10344   struct objfile *objfile = dwarf2_per_objfile->objfile;
10345   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10346   CORE_ADDR lowpc, highpc;
10347   struct compunit_symtab *cust;
10348   CORE_ADDR baseaddr;
10349   struct block *static_block;
10350   CORE_ADDR addr;
10351
10352   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10353
10354   /* Clear the list here in case something was left over.  */
10355   cu->method_list.clear ();
10356
10357   cu->language = pretend_language;
10358   cu->language_defn = language_def (cu->language);
10359
10360   /* Do line number decoding in read_file_scope () */
10361   process_die (cu->dies, cu);
10362
10363   /* For now fudge the Go package.  */
10364   if (cu->language == language_go)
10365     fixup_go_packaging (cu);
10366
10367   /* Now that we have processed all the DIEs in the CU, all the types 
10368      should be complete, and it should now be safe to compute all of the
10369      physnames.  */
10370   compute_delayed_physnames (cu);
10371
10372   if (cu->language == language_rust)
10373     rust_union_quirks (cu);
10374
10375   /* Some compilers don't define a DW_AT_high_pc attribute for the
10376      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10377      it, by scanning the DIE's below the compilation unit.  */
10378   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10379
10380   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10381   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10382
10383   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10384      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10385      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10386      addrmap to help ensure it has an accurate map of pc values belonging to
10387      this comp unit.  */
10388   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10389
10390   cust = cu->builder->end_symtab_from_static_block (static_block,
10391                                                     SECT_OFF_TEXT (objfile),
10392                                                     0);
10393
10394   if (cust != NULL)
10395     {
10396       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10397
10398       /* Set symtab language to language from DW_AT_language.  If the
10399          compilation is from a C file generated by language preprocessors, do
10400          not set the language if it was already deduced by start_subfile.  */
10401       if (!(cu->language == language_c
10402             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10403         COMPUNIT_FILETABS (cust)->language = cu->language;
10404
10405       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10406          produce DW_AT_location with location lists but it can be possibly
10407          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10408          there were bugs in prologue debug info, fixed later in GCC-4.5
10409          by "unwind info for epilogues" patch (which is not directly related).
10410
10411          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10412          needed, it would be wrong due to missing DW_AT_producer there.
10413
10414          Still one can confuse GDB by using non-standard GCC compilation
10415          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10416          */ 
10417       if (cu->has_loclist && gcc_4_minor >= 5)
10418         cust->locations_valid = 1;
10419
10420       if (gcc_4_minor >= 5)
10421         cust->epilogue_unwind_valid = 1;
10422
10423       cust->call_site_htab = cu->call_site_htab;
10424     }
10425
10426   if (dwarf2_per_objfile->using_index)
10427     per_cu->v.quick->compunit_symtab = cust;
10428   else
10429     {
10430       struct partial_symtab *pst = per_cu->v.psymtab;
10431       pst->compunit_symtab = cust;
10432       pst->readin = 1;
10433     }
10434
10435   /* Push it for inclusion processing later.  */
10436   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10437
10438   /* Not needed any more.  */
10439   cu->builder.reset ();
10440 }
10441
10442 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10443    already been loaded into memory.  */
10444
10445 static void
10446 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10447                         enum language pretend_language)
10448 {
10449   struct dwarf2_cu *cu = per_cu->cu;
10450   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10451   struct objfile *objfile = dwarf2_per_objfile->objfile;
10452   struct compunit_symtab *cust;
10453   struct signatured_type *sig_type;
10454
10455   gdb_assert (per_cu->is_debug_types);
10456   sig_type = (struct signatured_type *) per_cu;
10457
10458   /* Clear the list here in case something was left over.  */
10459   cu->method_list.clear ();
10460
10461   cu->language = pretend_language;
10462   cu->language_defn = language_def (cu->language);
10463
10464   /* The symbol tables are set up in read_type_unit_scope.  */
10465   process_die (cu->dies, cu);
10466
10467   /* For now fudge the Go package.  */
10468   if (cu->language == language_go)
10469     fixup_go_packaging (cu);
10470
10471   /* Now that we have processed all the DIEs in the CU, all the types 
10472      should be complete, and it should now be safe to compute all of the
10473      physnames.  */
10474   compute_delayed_physnames (cu);
10475
10476   if (cu->language == language_rust)
10477     rust_union_quirks (cu);
10478
10479   /* TUs share symbol tables.
10480      If this is the first TU to use this symtab, complete the construction
10481      of it with end_expandable_symtab.  Otherwise, complete the addition of
10482      this TU's symbols to the existing symtab.  */
10483   if (sig_type->type_unit_group->compunit_symtab == NULL)
10484     {
10485       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10486       sig_type->type_unit_group->compunit_symtab = cust;
10487
10488       if (cust != NULL)
10489         {
10490           /* Set symtab language to language from DW_AT_language.  If the
10491              compilation is from a C file generated by language preprocessors,
10492              do not set the language if it was already deduced by
10493              start_subfile.  */
10494           if (!(cu->language == language_c
10495                 && COMPUNIT_FILETABS (cust)->language != language_c))
10496             COMPUNIT_FILETABS (cust)->language = cu->language;
10497         }
10498     }
10499   else
10500     {
10501       cu->builder->augment_type_symtab ();
10502       cust = sig_type->type_unit_group->compunit_symtab;
10503     }
10504
10505   if (dwarf2_per_objfile->using_index)
10506     per_cu->v.quick->compunit_symtab = cust;
10507   else
10508     {
10509       struct partial_symtab *pst = per_cu->v.psymtab;
10510       pst->compunit_symtab = cust;
10511       pst->readin = 1;
10512     }
10513
10514   /* Not needed any more.  */
10515   cu->builder.reset ();
10516 }
10517
10518 /* Process an imported unit DIE.  */
10519
10520 static void
10521 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10522 {
10523   struct attribute *attr;
10524
10525   /* For now we don't handle imported units in type units.  */
10526   if (cu->per_cu->is_debug_types)
10527     {
10528       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10529                " supported in type units [in module %s]"),
10530              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10531     }
10532
10533   attr = dwarf2_attr (die, DW_AT_import, cu);
10534   if (attr != NULL)
10535     {
10536       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10537       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10538       dwarf2_per_cu_data *per_cu
10539         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10540                                             cu->per_cu->dwarf2_per_objfile);
10541
10542       /* If necessary, add it to the queue and load its DIEs.  */
10543       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10544         load_full_comp_unit (per_cu, false, cu->language);
10545
10546       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10547                      per_cu);
10548     }
10549 }
10550
10551 /* RAII object that represents a process_die scope: i.e.,
10552    starts/finishes processing a DIE.  */
10553 class process_die_scope
10554 {
10555 public:
10556   process_die_scope (die_info *die, dwarf2_cu *cu)
10557     : m_die (die), m_cu (cu)
10558   {
10559     /* We should only be processing DIEs not already in process.  */
10560     gdb_assert (!m_die->in_process);
10561     m_die->in_process = true;
10562   }
10563
10564   ~process_die_scope ()
10565   {
10566     m_die->in_process = false;
10567
10568     /* If we're done processing the DIE for the CU that owns the line
10569        header, we don't need the line header anymore.  */
10570     if (m_cu->line_header_die_owner == m_die)
10571       {
10572         delete m_cu->line_header;
10573         m_cu->line_header = NULL;
10574         m_cu->line_header_die_owner = NULL;
10575       }
10576   }
10577
10578 private:
10579   die_info *m_die;
10580   dwarf2_cu *m_cu;
10581 };
10582
10583 /* Process a die and its children.  */
10584
10585 static void
10586 process_die (struct die_info *die, struct dwarf2_cu *cu)
10587 {
10588   process_die_scope scope (die, cu);
10589
10590   switch (die->tag)
10591     {
10592     case DW_TAG_padding:
10593       break;
10594     case DW_TAG_compile_unit:
10595     case DW_TAG_partial_unit:
10596       read_file_scope (die, cu);
10597       break;
10598     case DW_TAG_type_unit:
10599       read_type_unit_scope (die, cu);
10600       break;
10601     case DW_TAG_subprogram:
10602     case DW_TAG_inlined_subroutine:
10603       read_func_scope (die, cu);
10604       break;
10605     case DW_TAG_lexical_block:
10606     case DW_TAG_try_block:
10607     case DW_TAG_catch_block:
10608       read_lexical_block_scope (die, cu);
10609       break;
10610     case DW_TAG_call_site:
10611     case DW_TAG_GNU_call_site:
10612       read_call_site_scope (die, cu);
10613       break;
10614     case DW_TAG_class_type:
10615     case DW_TAG_interface_type:
10616     case DW_TAG_structure_type:
10617     case DW_TAG_union_type:
10618       process_structure_scope (die, cu);
10619       break;
10620     case DW_TAG_enumeration_type:
10621       process_enumeration_scope (die, cu);
10622       break;
10623
10624     /* These dies have a type, but processing them does not create
10625        a symbol or recurse to process the children.  Therefore we can
10626        read them on-demand through read_type_die.  */
10627     case DW_TAG_subroutine_type:
10628     case DW_TAG_set_type:
10629     case DW_TAG_array_type:
10630     case DW_TAG_pointer_type:
10631     case DW_TAG_ptr_to_member_type:
10632     case DW_TAG_reference_type:
10633     case DW_TAG_rvalue_reference_type:
10634     case DW_TAG_string_type:
10635       break;
10636
10637     case DW_TAG_base_type:
10638     case DW_TAG_subrange_type:
10639     case DW_TAG_typedef:
10640       /* Add a typedef symbol for the type definition, if it has a
10641          DW_AT_name.  */
10642       new_symbol (die, read_type_die (die, cu), cu);
10643       break;
10644     case DW_TAG_common_block:
10645       read_common_block (die, cu);
10646       break;
10647     case DW_TAG_common_inclusion:
10648       break;
10649     case DW_TAG_namespace:
10650       cu->processing_has_namespace_info = 1;
10651       read_namespace (die, cu);
10652       break;
10653     case DW_TAG_module:
10654       cu->processing_has_namespace_info = 1;
10655       read_module (die, cu);
10656       break;
10657     case DW_TAG_imported_declaration:
10658       cu->processing_has_namespace_info = 1;
10659       if (read_namespace_alias (die, cu))
10660         break;
10661       /* The declaration is not a global namespace alias.  */
10662       /* Fall through.  */
10663     case DW_TAG_imported_module:
10664       cu->processing_has_namespace_info = 1;
10665       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10666                                  || cu->language != language_fortran))
10667         complaint (_("Tag '%s' has unexpected children"),
10668                    dwarf_tag_name (die->tag));
10669       read_import_statement (die, cu);
10670       break;
10671
10672     case DW_TAG_imported_unit:
10673       process_imported_unit_die (die, cu);
10674       break;
10675
10676     case DW_TAG_variable:
10677       read_variable (die, cu);
10678       break;
10679
10680     default:
10681       new_symbol (die, NULL, cu);
10682       break;
10683     }
10684 }
10685 \f
10686 /* DWARF name computation.  */
10687
10688 /* A helper function for dwarf2_compute_name which determines whether DIE
10689    needs to have the name of the scope prepended to the name listed in the
10690    die.  */
10691
10692 static int
10693 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10694 {
10695   struct attribute *attr;
10696
10697   switch (die->tag)
10698     {
10699     case DW_TAG_namespace:
10700     case DW_TAG_typedef:
10701     case DW_TAG_class_type:
10702     case DW_TAG_interface_type:
10703     case DW_TAG_structure_type:
10704     case DW_TAG_union_type:
10705     case DW_TAG_enumeration_type:
10706     case DW_TAG_enumerator:
10707     case DW_TAG_subprogram:
10708     case DW_TAG_inlined_subroutine:
10709     case DW_TAG_member:
10710     case DW_TAG_imported_declaration:
10711       return 1;
10712
10713     case DW_TAG_variable:
10714     case DW_TAG_constant:
10715       /* We only need to prefix "globally" visible variables.  These include
10716          any variable marked with DW_AT_external or any variable that
10717          lives in a namespace.  [Variables in anonymous namespaces
10718          require prefixing, but they are not DW_AT_external.]  */
10719
10720       if (dwarf2_attr (die, DW_AT_specification, cu))
10721         {
10722           struct dwarf2_cu *spec_cu = cu;
10723
10724           return die_needs_namespace (die_specification (die, &spec_cu),
10725                                       spec_cu);
10726         }
10727
10728       attr = dwarf2_attr (die, DW_AT_external, cu);
10729       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10730           && die->parent->tag != DW_TAG_module)
10731         return 0;
10732       /* A variable in a lexical block of some kind does not need a
10733          namespace, even though in C++ such variables may be external
10734          and have a mangled name.  */
10735       if (die->parent->tag ==  DW_TAG_lexical_block
10736           || die->parent->tag ==  DW_TAG_try_block
10737           || die->parent->tag ==  DW_TAG_catch_block
10738           || die->parent->tag == DW_TAG_subprogram)
10739         return 0;
10740       return 1;
10741
10742     default:
10743       return 0;
10744     }
10745 }
10746
10747 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10748    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10749    defined for the given DIE.  */
10750
10751 static struct attribute *
10752 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10753 {
10754   struct attribute *attr;
10755
10756   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10757   if (attr == NULL)
10758     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10759
10760   return attr;
10761 }
10762
10763 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10764    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10765    defined for the given DIE.  */
10766
10767 static const char *
10768 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10769 {
10770   const char *linkage_name;
10771
10772   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10773   if (linkage_name == NULL)
10774     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10775
10776   return linkage_name;
10777 }
10778
10779 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10780    compute the physname for the object, which include a method's:
10781    - formal parameters (C++),
10782    - receiver type (Go),
10783
10784    The term "physname" is a bit confusing.
10785    For C++, for example, it is the demangled name.
10786    For Go, for example, it's the mangled name.
10787
10788    For Ada, return the DIE's linkage name rather than the fully qualified
10789    name.  PHYSNAME is ignored..
10790
10791    The result is allocated on the objfile_obstack and canonicalized.  */
10792
10793 static const char *
10794 dwarf2_compute_name (const char *name,
10795                      struct die_info *die, struct dwarf2_cu *cu,
10796                      int physname)
10797 {
10798   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10799
10800   if (name == NULL)
10801     name = dwarf2_name (die, cu);
10802
10803   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10804      but otherwise compute it by typename_concat inside GDB.
10805      FIXME: Actually this is not really true, or at least not always true.
10806      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10807      Fortran names because there is no mangling standard.  So new_symbol
10808      will set the demangled name to the result of dwarf2_full_name, and it is
10809      the demangled name that GDB uses if it exists.  */
10810   if (cu->language == language_ada
10811       || (cu->language == language_fortran && physname))
10812     {
10813       /* For Ada unit, we prefer the linkage name over the name, as
10814          the former contains the exported name, which the user expects
10815          to be able to reference.  Ideally, we want the user to be able
10816          to reference this entity using either natural or linkage name,
10817          but we haven't started looking at this enhancement yet.  */
10818       const char *linkage_name = dw2_linkage_name (die, cu);
10819
10820       if (linkage_name != NULL)
10821         return linkage_name;
10822     }
10823
10824   /* These are the only languages we know how to qualify names in.  */
10825   if (name != NULL
10826       && (cu->language == language_cplus
10827           || cu->language == language_fortran || cu->language == language_d
10828           || cu->language == language_rust))
10829     {
10830       if (die_needs_namespace (die, cu))
10831         {
10832           const char *prefix;
10833           const char *canonical_name = NULL;
10834
10835           string_file buf;
10836
10837           prefix = determine_prefix (die, cu);
10838           if (*prefix != '\0')
10839             {
10840               char *prefixed_name = typename_concat (NULL, prefix, name,
10841                                                      physname, cu);
10842
10843               buf.puts (prefixed_name);
10844               xfree (prefixed_name);
10845             }
10846           else
10847             buf.puts (name);
10848
10849           /* Template parameters may be specified in the DIE's DW_AT_name, or
10850              as children with DW_TAG_template_type_param or
10851              DW_TAG_value_type_param.  If the latter, add them to the name
10852              here.  If the name already has template parameters, then
10853              skip this step; some versions of GCC emit both, and
10854              it is more efficient to use the pre-computed name.
10855
10856              Something to keep in mind about this process: it is very
10857              unlikely, or in some cases downright impossible, to produce
10858              something that will match the mangled name of a function.
10859              If the definition of the function has the same debug info,
10860              we should be able to match up with it anyway.  But fallbacks
10861              using the minimal symbol, for instance to find a method
10862              implemented in a stripped copy of libstdc++, will not work.
10863              If we do not have debug info for the definition, we will have to
10864              match them up some other way.
10865
10866              When we do name matching there is a related problem with function
10867              templates; two instantiated function templates are allowed to
10868              differ only by their return types, which we do not add here.  */
10869
10870           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10871             {
10872               struct attribute *attr;
10873               struct die_info *child;
10874               int first = 1;
10875
10876               die->building_fullname = 1;
10877
10878               for (child = die->child; child != NULL; child = child->sibling)
10879                 {
10880                   struct type *type;
10881                   LONGEST value;
10882                   const gdb_byte *bytes;
10883                   struct dwarf2_locexpr_baton *baton;
10884                   struct value *v;
10885
10886                   if (child->tag != DW_TAG_template_type_param
10887                       && child->tag != DW_TAG_template_value_param)
10888                     continue;
10889
10890                   if (first)
10891                     {
10892                       buf.puts ("<");
10893                       first = 0;
10894                     }
10895                   else
10896                     buf.puts (", ");
10897
10898                   attr = dwarf2_attr (child, DW_AT_type, cu);
10899                   if (attr == NULL)
10900                     {
10901                       complaint (_("template parameter missing DW_AT_type"));
10902                       buf.puts ("UNKNOWN_TYPE");
10903                       continue;
10904                     }
10905                   type = die_type (child, cu);
10906
10907                   if (child->tag == DW_TAG_template_type_param)
10908                     {
10909                       c_print_type (type, "", &buf, -1, 0, cu->language,
10910                                     &type_print_raw_options);
10911                       continue;
10912                     }
10913
10914                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10915                   if (attr == NULL)
10916                     {
10917                       complaint (_("template parameter missing "
10918                                    "DW_AT_const_value"));
10919                       buf.puts ("UNKNOWN_VALUE");
10920                       continue;
10921                     }
10922
10923                   dwarf2_const_value_attr (attr, type, name,
10924                                            &cu->comp_unit_obstack, cu,
10925                                            &value, &bytes, &baton);
10926
10927                   if (TYPE_NOSIGN (type))
10928                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10929                        changed, this can use value_print instead.  */
10930                     c_printchar (value, type, &buf);
10931                   else
10932                     {
10933                       struct value_print_options opts;
10934
10935                       if (baton != NULL)
10936                         v = dwarf2_evaluate_loc_desc (type, NULL,
10937                                                       baton->data,
10938                                                       baton->size,
10939                                                       baton->per_cu);
10940                       else if (bytes != NULL)
10941                         {
10942                           v = allocate_value (type);
10943                           memcpy (value_contents_writeable (v), bytes,
10944                                   TYPE_LENGTH (type));
10945                         }
10946                       else
10947                         v = value_from_longest (type, value);
10948
10949                       /* Specify decimal so that we do not depend on
10950                          the radix.  */
10951                       get_formatted_print_options (&opts, 'd');
10952                       opts.raw = 1;
10953                       value_print (v, &buf, &opts);
10954                       release_value (v);
10955                     }
10956                 }
10957
10958               die->building_fullname = 0;
10959
10960               if (!first)
10961                 {
10962                   /* Close the argument list, with a space if necessary
10963                      (nested templates).  */
10964                   if (!buf.empty () && buf.string ().back () == '>')
10965                     buf.puts (" >");
10966                   else
10967                     buf.puts (">");
10968                 }
10969             }
10970
10971           /* For C++ methods, append formal parameter type
10972              information, if PHYSNAME.  */
10973
10974           if (physname && die->tag == DW_TAG_subprogram
10975               && cu->language == language_cplus)
10976             {
10977               struct type *type = read_type_die (die, cu);
10978
10979               c_type_print_args (type, &buf, 1, cu->language,
10980                                  &type_print_raw_options);
10981
10982               if (cu->language == language_cplus)
10983                 {
10984                   /* Assume that an artificial first parameter is
10985                      "this", but do not crash if it is not.  RealView
10986                      marks unnamed (and thus unused) parameters as
10987                      artificial; there is no way to differentiate
10988                      the two cases.  */
10989                   if (TYPE_NFIELDS (type) > 0
10990                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10991                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10992                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10993                                                                         0))))
10994                     buf.puts (" const");
10995                 }
10996             }
10997
10998           const std::string &intermediate_name = buf.string ();
10999
11000           if (cu->language == language_cplus)
11001             canonical_name
11002               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11003                                           &objfile->per_bfd->storage_obstack);
11004
11005           /* If we only computed INTERMEDIATE_NAME, or if
11006              INTERMEDIATE_NAME is already canonical, then we need to
11007              copy it to the appropriate obstack.  */
11008           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11009             name = ((const char *)
11010                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11011                                    intermediate_name.c_str (),
11012                                    intermediate_name.length ()));
11013           else
11014             name = canonical_name;
11015         }
11016     }
11017
11018   return name;
11019 }
11020
11021 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11022    If scope qualifiers are appropriate they will be added.  The result
11023    will be allocated on the storage_obstack, or NULL if the DIE does
11024    not have a name.  NAME may either be from a previous call to
11025    dwarf2_name or NULL.
11026
11027    The output string will be canonicalized (if C++).  */
11028
11029 static const char *
11030 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11031 {
11032   return dwarf2_compute_name (name, die, cu, 0);
11033 }
11034
11035 /* Construct a physname for the given DIE in CU.  NAME may either be
11036    from a previous call to dwarf2_name or NULL.  The result will be
11037    allocated on the objfile_objstack or NULL if the DIE does not have a
11038    name.
11039
11040    The output string will be canonicalized (if C++).  */
11041
11042 static const char *
11043 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11044 {
11045   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11046   const char *retval, *mangled = NULL, *canon = NULL;
11047   int need_copy = 1;
11048
11049   /* In this case dwarf2_compute_name is just a shortcut not building anything
11050      on its own.  */
11051   if (!die_needs_namespace (die, cu))
11052     return dwarf2_compute_name (name, die, cu, 1);
11053
11054   mangled = dw2_linkage_name (die, cu);
11055
11056   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11057      See https://github.com/rust-lang/rust/issues/32925.  */
11058   if (cu->language == language_rust && mangled != NULL
11059       && strchr (mangled, '{') != NULL)
11060     mangled = NULL;
11061
11062   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11063      has computed.  */
11064   gdb::unique_xmalloc_ptr<char> demangled;
11065   if (mangled != NULL)
11066     {
11067
11068       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11069         {
11070           /* Do nothing (do not demangle the symbol name).  */
11071         }
11072       else if (cu->language == language_go)
11073         {
11074           /* This is a lie, but we already lie to the caller new_symbol.
11075              new_symbol assumes we return the mangled name.
11076              This just undoes that lie until things are cleaned up.  */
11077         }
11078       else
11079         {
11080           /* Use DMGL_RET_DROP for C++ template functions to suppress
11081              their return type.  It is easier for GDB users to search
11082              for such functions as `name(params)' than `long name(params)'.
11083              In such case the minimal symbol names do not match the full
11084              symbol names but for template functions there is never a need
11085              to look up their definition from their declaration so
11086              the only disadvantage remains the minimal symbol variant
11087              `long name(params)' does not have the proper inferior type.  */
11088           demangled.reset (gdb_demangle (mangled,
11089                                          (DMGL_PARAMS | DMGL_ANSI
11090                                           | DMGL_RET_DROP)));
11091         }
11092       if (demangled)
11093         canon = demangled.get ();
11094       else
11095         {
11096           canon = mangled;
11097           need_copy = 0;
11098         }
11099     }
11100
11101   if (canon == NULL || check_physname)
11102     {
11103       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11104
11105       if (canon != NULL && strcmp (physname, canon) != 0)
11106         {
11107           /* It may not mean a bug in GDB.  The compiler could also
11108              compute DW_AT_linkage_name incorrectly.  But in such case
11109              GDB would need to be bug-to-bug compatible.  */
11110
11111           complaint (_("Computed physname <%s> does not match demangled <%s> "
11112                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11113                      physname, canon, mangled, sect_offset_str (die->sect_off),
11114                      objfile_name (objfile));
11115
11116           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11117              is available here - over computed PHYSNAME.  It is safer
11118              against both buggy GDB and buggy compilers.  */
11119
11120           retval = canon;
11121         }
11122       else
11123         {
11124           retval = physname;
11125           need_copy = 0;
11126         }
11127     }
11128   else
11129     retval = canon;
11130
11131   if (need_copy)
11132     retval = ((const char *)
11133               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11134                              retval, strlen (retval)));
11135
11136   return retval;
11137 }
11138
11139 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11140    a new symbol for it.
11141
11142    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11143
11144 static int
11145 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11146 {
11147   struct attribute *attr;
11148
11149   /* If the die does not have a name, this is not a namespace
11150      alias.  */
11151   attr = dwarf2_attr (die, DW_AT_name, cu);
11152   if (attr != NULL)
11153     {
11154       int num;
11155       struct die_info *d = die;
11156       struct dwarf2_cu *imported_cu = cu;
11157
11158       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11159          keep inspecting DIEs until we hit the underlying import.  */
11160 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11161       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11162         {
11163           attr = dwarf2_attr (d, DW_AT_import, cu);
11164           if (attr == NULL)
11165             break;
11166
11167           d = follow_die_ref (d, attr, &imported_cu);
11168           if (d->tag != DW_TAG_imported_declaration)
11169             break;
11170         }
11171
11172       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11173         {
11174           complaint (_("DIE at %s has too many recursively imported "
11175                        "declarations"), sect_offset_str (d->sect_off));
11176           return 0;
11177         }
11178
11179       if (attr != NULL)
11180         {
11181           struct type *type;
11182           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11183
11184           type = get_die_type_at_offset (sect_off, cu->per_cu);
11185           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11186             {
11187               /* This declaration is a global namespace alias.  Add
11188                  a symbol for it whose type is the aliased namespace.  */
11189               new_symbol (die, type, cu);
11190               return 1;
11191             }
11192         }
11193     }
11194
11195   return 0;
11196 }
11197
11198 /* Return the using directives repository (global or local?) to use in the
11199    current context for CU.
11200
11201    For Ada, imported declarations can materialize renamings, which *may* be
11202    global.  However it is impossible (for now?) in DWARF to distinguish
11203    "external" imported declarations and "static" ones.  As all imported
11204    declarations seem to be static in all other languages, make them all CU-wide
11205    global only in Ada.  */
11206
11207 static struct using_direct **
11208 using_directives (struct dwarf2_cu *cu)
11209 {
11210   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11211     return cu->builder->get_global_using_directives ();
11212   else
11213     return cu->builder->get_local_using_directives ();
11214 }
11215
11216 /* Read the import statement specified by the given die and record it.  */
11217
11218 static void
11219 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11220 {
11221   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11222   struct attribute *import_attr;
11223   struct die_info *imported_die, *child_die;
11224   struct dwarf2_cu *imported_cu;
11225   const char *imported_name;
11226   const char *imported_name_prefix;
11227   const char *canonical_name;
11228   const char *import_alias;
11229   const char *imported_declaration = NULL;
11230   const char *import_prefix;
11231   std::vector<const char *> excludes;
11232
11233   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11234   if (import_attr == NULL)
11235     {
11236       complaint (_("Tag '%s' has no DW_AT_import"),
11237                  dwarf_tag_name (die->tag));
11238       return;
11239     }
11240
11241   imported_cu = cu;
11242   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11243   imported_name = dwarf2_name (imported_die, imported_cu);
11244   if (imported_name == NULL)
11245     {
11246       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11247
11248         The import in the following code:
11249         namespace A
11250           {
11251             typedef int B;
11252           }
11253
11254         int main ()
11255           {
11256             using A::B;
11257             B b;
11258             return b;
11259           }
11260
11261         ...
11262          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11263             <52>   DW_AT_decl_file   : 1
11264             <53>   DW_AT_decl_line   : 6
11265             <54>   DW_AT_import      : <0x75>
11266          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11267             <59>   DW_AT_name        : B
11268             <5b>   DW_AT_decl_file   : 1
11269             <5c>   DW_AT_decl_line   : 2
11270             <5d>   DW_AT_type        : <0x6e>
11271         ...
11272          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11273             <76>   DW_AT_byte_size   : 4
11274             <77>   DW_AT_encoding    : 5        (signed)
11275
11276         imports the wrong die ( 0x75 instead of 0x58 ).
11277         This case will be ignored until the gcc bug is fixed.  */
11278       return;
11279     }
11280
11281   /* Figure out the local name after import.  */
11282   import_alias = dwarf2_name (die, cu);
11283
11284   /* Figure out where the statement is being imported to.  */
11285   import_prefix = determine_prefix (die, cu);
11286
11287   /* Figure out what the scope of the imported die is and prepend it
11288      to the name of the imported die.  */
11289   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11290
11291   if (imported_die->tag != DW_TAG_namespace
11292       && imported_die->tag != DW_TAG_module)
11293     {
11294       imported_declaration = imported_name;
11295       canonical_name = imported_name_prefix;
11296     }
11297   else if (strlen (imported_name_prefix) > 0)
11298     canonical_name = obconcat (&objfile->objfile_obstack,
11299                                imported_name_prefix,
11300                                (cu->language == language_d ? "." : "::"),
11301                                imported_name, (char *) NULL);
11302   else
11303     canonical_name = imported_name;
11304
11305   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11306     for (child_die = die->child; child_die && child_die->tag;
11307          child_die = sibling_die (child_die))
11308       {
11309         /* DWARF-4: A Fortran use statement with a “rename list” may be
11310            represented by an imported module entry with an import attribute
11311            referring to the module and owned entries corresponding to those
11312            entities that are renamed as part of being imported.  */
11313
11314         if (child_die->tag != DW_TAG_imported_declaration)
11315           {
11316             complaint (_("child DW_TAG_imported_declaration expected "
11317                          "- DIE at %s [in module %s]"),
11318                        sect_offset_str (child_die->sect_off),
11319                        objfile_name (objfile));
11320             continue;
11321           }
11322
11323         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11324         if (import_attr == NULL)
11325           {
11326             complaint (_("Tag '%s' has no DW_AT_import"),
11327                        dwarf_tag_name (child_die->tag));
11328             continue;
11329           }
11330
11331         imported_cu = cu;
11332         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11333                                               &imported_cu);
11334         imported_name = dwarf2_name (imported_die, imported_cu);
11335         if (imported_name == NULL)
11336           {
11337             complaint (_("child DW_TAG_imported_declaration has unknown "
11338                          "imported name - DIE at %s [in module %s]"),
11339                        sect_offset_str (child_die->sect_off),
11340                        objfile_name (objfile));
11341             continue;
11342           }
11343
11344         excludes.push_back (imported_name);
11345
11346         process_die (child_die, cu);
11347       }
11348
11349   add_using_directive (using_directives (cu),
11350                        import_prefix,
11351                        canonical_name,
11352                        import_alias,
11353                        imported_declaration,
11354                        excludes,
11355                        0,
11356                        &objfile->objfile_obstack);
11357 }
11358
11359 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11360    types, but gives them a size of zero.  Starting with version 14,
11361    ICC is compatible with GCC.  */
11362
11363 static int
11364 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11365 {
11366   if (!cu->checked_producer)
11367     check_producer (cu);
11368
11369   return cu->producer_is_icc_lt_14;
11370 }
11371
11372 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11373    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11374    this, it was first present in GCC release 4.3.0.  */
11375
11376 static int
11377 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11378 {
11379   if (!cu->checked_producer)
11380     check_producer (cu);
11381
11382   return cu->producer_is_gcc_lt_4_3;
11383 }
11384
11385 static file_and_directory
11386 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11387 {
11388   file_and_directory res;
11389
11390   /* Find the filename.  Do not use dwarf2_name here, since the filename
11391      is not a source language identifier.  */
11392   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11393   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11394
11395   if (res.comp_dir == NULL
11396       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11397       && IS_ABSOLUTE_PATH (res.name))
11398     {
11399       res.comp_dir_storage = ldirname (res.name);
11400       if (!res.comp_dir_storage.empty ())
11401         res.comp_dir = res.comp_dir_storage.c_str ();
11402     }
11403   if (res.comp_dir != NULL)
11404     {
11405       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11406          directory, get rid of it.  */
11407       const char *cp = strchr (res.comp_dir, ':');
11408
11409       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11410         res.comp_dir = cp + 1;
11411     }
11412
11413   if (res.name == NULL)
11414     res.name = "<unknown>";
11415
11416   return res;
11417 }
11418
11419 /* Handle DW_AT_stmt_list for a compilation unit.
11420    DIE is the DW_TAG_compile_unit die for CU.
11421    COMP_DIR is the compilation directory.  LOWPC is passed to
11422    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11423
11424 static void
11425 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11426                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11427 {
11428   struct dwarf2_per_objfile *dwarf2_per_objfile
11429     = cu->per_cu->dwarf2_per_objfile;
11430   struct objfile *objfile = dwarf2_per_objfile->objfile;
11431   struct attribute *attr;
11432   struct line_header line_header_local;
11433   hashval_t line_header_local_hash;
11434   void **slot;
11435   int decode_mapping;
11436
11437   gdb_assert (! cu->per_cu->is_debug_types);
11438
11439   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11440   if (attr == NULL)
11441     return;
11442
11443   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11444
11445   /* The line header hash table is only created if needed (it exists to
11446      prevent redundant reading of the line table for partial_units).
11447      If we're given a partial_unit, we'll need it.  If we're given a
11448      compile_unit, then use the line header hash table if it's already
11449      created, but don't create one just yet.  */
11450
11451   if (dwarf2_per_objfile->line_header_hash == NULL
11452       && die->tag == DW_TAG_partial_unit)
11453     {
11454       dwarf2_per_objfile->line_header_hash
11455         = htab_create_alloc_ex (127, line_header_hash_voidp,
11456                                 line_header_eq_voidp,
11457                                 free_line_header_voidp,
11458                                 &objfile->objfile_obstack,
11459                                 hashtab_obstack_allocate,
11460                                 dummy_obstack_deallocate);
11461     }
11462
11463   line_header_local.sect_off = line_offset;
11464   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11465   line_header_local_hash = line_header_hash (&line_header_local);
11466   if (dwarf2_per_objfile->line_header_hash != NULL)
11467     {
11468       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11469                                        &line_header_local,
11470                                        line_header_local_hash, NO_INSERT);
11471
11472       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11473          is not present in *SLOT (since if there is something in *SLOT then
11474          it will be for a partial_unit).  */
11475       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11476         {
11477           gdb_assert (*slot != NULL);
11478           cu->line_header = (struct line_header *) *slot;
11479           return;
11480         }
11481     }
11482
11483   /* dwarf_decode_line_header does not yet provide sufficient information.
11484      We always have to call also dwarf_decode_lines for it.  */
11485   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11486   if (lh == NULL)
11487     return;
11488
11489   cu->line_header = lh.release ();
11490   cu->line_header_die_owner = die;
11491
11492   if (dwarf2_per_objfile->line_header_hash == NULL)
11493     slot = NULL;
11494   else
11495     {
11496       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11497                                        &line_header_local,
11498                                        line_header_local_hash, INSERT);
11499       gdb_assert (slot != NULL);
11500     }
11501   if (slot != NULL && *slot == NULL)
11502     {
11503       /* This newly decoded line number information unit will be owned
11504          by line_header_hash hash table.  */
11505       *slot = cu->line_header;
11506       cu->line_header_die_owner = NULL;
11507     }
11508   else
11509     {
11510       /* We cannot free any current entry in (*slot) as that struct line_header
11511          may be already used by multiple CUs.  Create only temporary decoded
11512          line_header for this CU - it may happen at most once for each line
11513          number information unit.  And if we're not using line_header_hash
11514          then this is what we want as well.  */
11515       gdb_assert (die->tag != DW_TAG_partial_unit);
11516     }
11517   decode_mapping = (die->tag != DW_TAG_partial_unit);
11518   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11519                       decode_mapping);
11520
11521 }
11522
11523 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11524
11525 static void
11526 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11527 {
11528   struct dwarf2_per_objfile *dwarf2_per_objfile
11529     = cu->per_cu->dwarf2_per_objfile;
11530   struct objfile *objfile = dwarf2_per_objfile->objfile;
11531   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11532   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11533   CORE_ADDR highpc = ((CORE_ADDR) 0);
11534   struct attribute *attr;
11535   struct die_info *child_die;
11536   CORE_ADDR baseaddr;
11537
11538   prepare_one_comp_unit (cu, die, cu->language);
11539   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11540
11541   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11542
11543   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11544      from finish_block.  */
11545   if (lowpc == ((CORE_ADDR) -1))
11546     lowpc = highpc;
11547   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11548
11549   file_and_directory fnd = find_file_and_directory (die, cu);
11550
11551   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11552      standardised yet.  As a workaround for the language detection we fall
11553      back to the DW_AT_producer string.  */
11554   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11555     cu->language = language_opencl;
11556
11557   /* Similar hack for Go.  */
11558   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11559     set_cu_language (DW_LANG_Go, cu);
11560
11561   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11562
11563   /* Decode line number information if present.  We do this before
11564      processing child DIEs, so that the line header table is available
11565      for DW_AT_decl_file.  */
11566   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11567
11568   /* Process all dies in compilation unit.  */
11569   if (die->child != NULL)
11570     {
11571       child_die = die->child;
11572       while (child_die && child_die->tag)
11573         {
11574           process_die (child_die, cu);
11575           child_die = sibling_die (child_die);
11576         }
11577     }
11578
11579   /* Decode macro information, if present.  Dwarf 2 macro information
11580      refers to information in the line number info statement program
11581      header, so we can only read it if we've read the header
11582      successfully.  */
11583   attr = dwarf2_attr (die, DW_AT_macros, cu);
11584   if (attr == NULL)
11585     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11586   if (attr && cu->line_header)
11587     {
11588       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11589         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11590
11591       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11592     }
11593   else
11594     {
11595       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11596       if (attr && cu->line_header)
11597         {
11598           unsigned int macro_offset = DW_UNSND (attr);
11599
11600           dwarf_decode_macros (cu, macro_offset, 0);
11601         }
11602     }
11603 }
11604
11605 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11606    Create the set of symtabs used by this TU, or if this TU is sharing
11607    symtabs with another TU and the symtabs have already been created
11608    then restore those symtabs in the line header.
11609    We don't need the pc/line-number mapping for type units.  */
11610
11611 static void
11612 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11613 {
11614   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11615   struct type_unit_group *tu_group;
11616   int first_time;
11617   struct attribute *attr;
11618   unsigned int i;
11619   struct signatured_type *sig_type;
11620
11621   gdb_assert (per_cu->is_debug_types);
11622   sig_type = (struct signatured_type *) per_cu;
11623
11624   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11625
11626   /* If we're using .gdb_index (includes -readnow) then
11627      per_cu->type_unit_group may not have been set up yet.  */
11628   if (sig_type->type_unit_group == NULL)
11629     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11630   tu_group = sig_type->type_unit_group;
11631
11632   /* If we've already processed this stmt_list there's no real need to
11633      do it again, we could fake it and just recreate the part we need
11634      (file name,index -> symtab mapping).  If data shows this optimization
11635      is useful we can do it then.  */
11636   first_time = tu_group->compunit_symtab == NULL;
11637
11638   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11639      debug info.  */
11640   line_header_up lh;
11641   if (attr != NULL)
11642     {
11643       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11644       lh = dwarf_decode_line_header (line_offset, cu);
11645     }
11646   if (lh == NULL)
11647     {
11648       if (first_time)
11649         dwarf2_start_symtab (cu, "", NULL, 0);
11650       else
11651         {
11652           gdb_assert (tu_group->symtabs == NULL);
11653           gdb_assert (cu->builder == nullptr);
11654           struct compunit_symtab *cust = tu_group->compunit_symtab;
11655           cu->builder.reset (new struct buildsym_compunit
11656                              (COMPUNIT_OBJFILE (cust), "",
11657                               COMPUNIT_DIRNAME (cust),
11658                               compunit_language (cust),
11659                               0, cust));
11660         }
11661       return;
11662     }
11663
11664   cu->line_header = lh.release ();
11665   cu->line_header_die_owner = die;
11666
11667   if (first_time)
11668     {
11669       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11670
11671       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11672          still initializing it, and our caller (a few levels up)
11673          process_full_type_unit still needs to know if this is the first
11674          time.  */
11675
11676       tu_group->num_symtabs = cu->line_header->file_names.size ();
11677       tu_group->symtabs = XNEWVEC (struct symtab *,
11678                                    cu->line_header->file_names.size ());
11679
11680       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11681         {
11682           file_entry &fe = cu->line_header->file_names[i];
11683
11684           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11685
11686           if (cu->builder->get_current_subfile ()->symtab == NULL)
11687             {
11688               /* NOTE: start_subfile will recognize when it's been
11689                  passed a file it has already seen.  So we can't
11690                  assume there's a simple mapping from
11691                  cu->line_header->file_names to subfiles, plus
11692                  cu->line_header->file_names may contain dups.  */
11693               cu->builder->get_current_subfile ()->symtab
11694                 = allocate_symtab (cust,
11695                                    cu->builder->get_current_subfile ()->name);
11696             }
11697
11698           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11699           tu_group->symtabs[i] = fe.symtab;
11700         }
11701     }
11702   else
11703     {
11704       gdb_assert (cu->builder == nullptr);
11705       struct compunit_symtab *cust = tu_group->compunit_symtab;
11706       cu->builder.reset (new struct buildsym_compunit
11707                          (COMPUNIT_OBJFILE (cust), "",
11708                           COMPUNIT_DIRNAME (cust),
11709                           compunit_language (cust),
11710                           0, cust));
11711
11712       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11713         {
11714           file_entry &fe = cu->line_header->file_names[i];
11715
11716           fe.symtab = tu_group->symtabs[i];
11717         }
11718     }
11719
11720   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11721      so they don't have a "real" (so to speak) symtab anyway.
11722      There is later code that will assign the main symtab to all symbols
11723      that don't have one.  We need to handle the case of a symbol with a
11724      missing symtab (DW_AT_decl_file) anyway.  */
11725 }
11726
11727 /* Process DW_TAG_type_unit.
11728    For TUs we want to skip the first top level sibling if it's not the
11729    actual type being defined by this TU.  In this case the first top
11730    level sibling is there to provide context only.  */
11731
11732 static void
11733 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11734 {
11735   struct die_info *child_die;
11736
11737   prepare_one_comp_unit (cu, die, language_minimal);
11738
11739   /* Initialize (or reinitialize) the machinery for building symtabs.
11740      We do this before processing child DIEs, so that the line header table
11741      is available for DW_AT_decl_file.  */
11742   setup_type_unit_groups (die, cu);
11743
11744   if (die->child != NULL)
11745     {
11746       child_die = die->child;
11747       while (child_die && child_die->tag)
11748         {
11749           process_die (child_die, cu);
11750           child_die = sibling_die (child_die);
11751         }
11752     }
11753 }
11754 \f
11755 /* DWO/DWP files.
11756
11757    http://gcc.gnu.org/wiki/DebugFission
11758    http://gcc.gnu.org/wiki/DebugFissionDWP
11759
11760    To simplify handling of both DWO files ("object" files with the DWARF info)
11761    and DWP files (a file with the DWOs packaged up into one file), we treat
11762    DWP files as having a collection of virtual DWO files.  */
11763
11764 static hashval_t
11765 hash_dwo_file (const void *item)
11766 {
11767   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11768   hashval_t hash;
11769
11770   hash = htab_hash_string (dwo_file->dwo_name);
11771   if (dwo_file->comp_dir != NULL)
11772     hash += htab_hash_string (dwo_file->comp_dir);
11773   return hash;
11774 }
11775
11776 static int
11777 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11778 {
11779   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11780   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11781
11782   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11783     return 0;
11784   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11785     return lhs->comp_dir == rhs->comp_dir;
11786   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11787 }
11788
11789 /* Allocate a hash table for DWO files.  */
11790
11791 static htab_t
11792 allocate_dwo_file_hash_table (struct objfile *objfile)
11793 {
11794   return htab_create_alloc_ex (41,
11795                                hash_dwo_file,
11796                                eq_dwo_file,
11797                                NULL,
11798                                &objfile->objfile_obstack,
11799                                hashtab_obstack_allocate,
11800                                dummy_obstack_deallocate);
11801 }
11802
11803 /* Lookup DWO file DWO_NAME.  */
11804
11805 static void **
11806 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11807                       const char *dwo_name,
11808                       const char *comp_dir)
11809 {
11810   struct dwo_file find_entry;
11811   void **slot;
11812
11813   if (dwarf2_per_objfile->dwo_files == NULL)
11814     dwarf2_per_objfile->dwo_files
11815       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11816
11817   memset (&find_entry, 0, sizeof (find_entry));
11818   find_entry.dwo_name = dwo_name;
11819   find_entry.comp_dir = comp_dir;
11820   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11821
11822   return slot;
11823 }
11824
11825 static hashval_t
11826 hash_dwo_unit (const void *item)
11827 {
11828   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11829
11830   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11831   return dwo_unit->signature;
11832 }
11833
11834 static int
11835 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11836 {
11837   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11838   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11839
11840   /* The signature is assumed to be unique within the DWO file.
11841      So while object file CU dwo_id's always have the value zero,
11842      that's OK, assuming each object file DWO file has only one CU,
11843      and that's the rule for now.  */
11844   return lhs->signature == rhs->signature;
11845 }
11846
11847 /* Allocate a hash table for DWO CUs,TUs.
11848    There is one of these tables for each of CUs,TUs for each DWO file.  */
11849
11850 static htab_t
11851 allocate_dwo_unit_table (struct objfile *objfile)
11852 {
11853   /* Start out with a pretty small number.
11854      Generally DWO files contain only one CU and maybe some TUs.  */
11855   return htab_create_alloc_ex (3,
11856                                hash_dwo_unit,
11857                                eq_dwo_unit,
11858                                NULL,
11859                                &objfile->objfile_obstack,
11860                                hashtab_obstack_allocate,
11861                                dummy_obstack_deallocate);
11862 }
11863
11864 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11865
11866 struct create_dwo_cu_data
11867 {
11868   struct dwo_file *dwo_file;
11869   struct dwo_unit dwo_unit;
11870 };
11871
11872 /* die_reader_func for create_dwo_cu.  */
11873
11874 static void
11875 create_dwo_cu_reader (const struct die_reader_specs *reader,
11876                       const gdb_byte *info_ptr,
11877                       struct die_info *comp_unit_die,
11878                       int has_children,
11879                       void *datap)
11880 {
11881   struct dwarf2_cu *cu = reader->cu;
11882   sect_offset sect_off = cu->per_cu->sect_off;
11883   struct dwarf2_section_info *section = cu->per_cu->section;
11884   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11885   struct dwo_file *dwo_file = data->dwo_file;
11886   struct dwo_unit *dwo_unit = &data->dwo_unit;
11887   struct attribute *attr;
11888
11889   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11890   if (attr == NULL)
11891     {
11892       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11893                    " its dwo_id [in module %s]"),
11894                  sect_offset_str (sect_off), dwo_file->dwo_name);
11895       return;
11896     }
11897
11898   dwo_unit->dwo_file = dwo_file;
11899   dwo_unit->signature = DW_UNSND (attr);
11900   dwo_unit->section = section;
11901   dwo_unit->sect_off = sect_off;
11902   dwo_unit->length = cu->per_cu->length;
11903
11904   if (dwarf_read_debug)
11905     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11906                         sect_offset_str (sect_off),
11907                         hex_string (dwo_unit->signature));
11908 }
11909
11910 /* Create the dwo_units for the CUs in a DWO_FILE.
11911    Note: This function processes DWO files only, not DWP files.  */
11912
11913 static void
11914 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11915                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11916                        htab_t &cus_htab)
11917 {
11918   struct objfile *objfile = dwarf2_per_objfile->objfile;
11919   const gdb_byte *info_ptr, *end_ptr;
11920
11921   dwarf2_read_section (objfile, &section);
11922   info_ptr = section.buffer;
11923
11924   if (info_ptr == NULL)
11925     return;
11926
11927   if (dwarf_read_debug)
11928     {
11929       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11930                           get_section_name (&section),
11931                           get_section_file_name (&section));
11932     }
11933
11934   end_ptr = info_ptr + section.size;
11935   while (info_ptr < end_ptr)
11936     {
11937       struct dwarf2_per_cu_data per_cu;
11938       struct create_dwo_cu_data create_dwo_cu_data;
11939       struct dwo_unit *dwo_unit;
11940       void **slot;
11941       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11942
11943       memset (&create_dwo_cu_data.dwo_unit, 0,
11944               sizeof (create_dwo_cu_data.dwo_unit));
11945       memset (&per_cu, 0, sizeof (per_cu));
11946       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11947       per_cu.is_debug_types = 0;
11948       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11949       per_cu.section = &section;
11950       create_dwo_cu_data.dwo_file = &dwo_file;
11951
11952       init_cutu_and_read_dies_no_follow (
11953           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11954       info_ptr += per_cu.length;
11955
11956       // If the unit could not be parsed, skip it.
11957       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11958         continue;
11959
11960       if (cus_htab == NULL)
11961         cus_htab = allocate_dwo_unit_table (objfile);
11962
11963       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11964       *dwo_unit = create_dwo_cu_data.dwo_unit;
11965       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11966       gdb_assert (slot != NULL);
11967       if (*slot != NULL)
11968         {
11969           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11970           sect_offset dup_sect_off = dup_cu->sect_off;
11971
11972           complaint (_("debug cu entry at offset %s is duplicate to"
11973                        " the entry at offset %s, signature %s"),
11974                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11975                      hex_string (dwo_unit->signature));
11976         }
11977       *slot = (void *)dwo_unit;
11978     }
11979 }
11980
11981 /* DWP file .debug_{cu,tu}_index section format:
11982    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11983
11984    DWP Version 1:
11985
11986    Both index sections have the same format, and serve to map a 64-bit
11987    signature to a set of section numbers.  Each section begins with a header,
11988    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11989    indexes, and a pool of 32-bit section numbers.  The index sections will be
11990    aligned at 8-byte boundaries in the file.
11991
11992    The index section header consists of:
11993
11994     V, 32 bit version number
11995     -, 32 bits unused
11996     N, 32 bit number of compilation units or type units in the index
11997     M, 32 bit number of slots in the hash table
11998
11999    Numbers are recorded using the byte order of the application binary.
12000
12001    The hash table begins at offset 16 in the section, and consists of an array
12002    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12003    order of the application binary).  Unused slots in the hash table are 0.
12004    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12005
12006    The parallel table begins immediately after the hash table
12007    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12008    array of 32-bit indexes (using the byte order of the application binary),
12009    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12010    table contains a 32-bit index into the pool of section numbers.  For unused
12011    hash table slots, the corresponding entry in the parallel table will be 0.
12012
12013    The pool of section numbers begins immediately following the hash table
12014    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12015    section numbers consists of an array of 32-bit words (using the byte order
12016    of the application binary).  Each item in the array is indexed starting
12017    from 0.  The hash table entry provides the index of the first section
12018    number in the set.  Additional section numbers in the set follow, and the
12019    set is terminated by a 0 entry (section number 0 is not used in ELF).
12020
12021    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12022    section must be the first entry in the set, and the .debug_abbrev.dwo must
12023    be the second entry. Other members of the set may follow in any order.
12024
12025    ---
12026
12027    DWP Version 2:
12028
12029    DWP Version 2 combines all the .debug_info, etc. sections into one,
12030    and the entries in the index tables are now offsets into these sections.
12031    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12032    section.
12033
12034    Index Section Contents:
12035     Header
12036     Hash Table of Signatures   dwp_hash_table.hash_table
12037     Parallel Table of Indices  dwp_hash_table.unit_table
12038     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12039     Table of Section Sizes     dwp_hash_table.v2.sizes
12040
12041    The index section header consists of:
12042
12043     V, 32 bit version number
12044     L, 32 bit number of columns in the table of section offsets
12045     N, 32 bit number of compilation units or type units in the index
12046     M, 32 bit number of slots in the hash table
12047
12048    Numbers are recorded using the byte order of the application binary.
12049
12050    The hash table has the same format as version 1.
12051    The parallel table of indices has the same format as version 1,
12052    except that the entries are origin-1 indices into the table of sections
12053    offsets and the table of section sizes.
12054
12055    The table of offsets begins immediately following the parallel table
12056    (at offset 16 + 12 * M from the beginning of the section).  The table is
12057    a two-dimensional array of 32-bit words (using the byte order of the
12058    application binary), with L columns and N+1 rows, in row-major order.
12059    Each row in the array is indexed starting from 0.  The first row provides
12060    a key to the remaining rows: each column in this row provides an identifier
12061    for a debug section, and the offsets in the same column of subsequent rows
12062    refer to that section.  The section identifiers are:
12063
12064     DW_SECT_INFO         1  .debug_info.dwo
12065     DW_SECT_TYPES        2  .debug_types.dwo
12066     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12067     DW_SECT_LINE         4  .debug_line.dwo
12068     DW_SECT_LOC          5  .debug_loc.dwo
12069     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12070     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12071     DW_SECT_MACRO        8  .debug_macro.dwo
12072
12073    The offsets provided by the CU and TU index sections are the base offsets
12074    for the contributions made by each CU or TU to the corresponding section
12075    in the package file.  Each CU and TU header contains an abbrev_offset
12076    field, used to find the abbreviations table for that CU or TU within the
12077    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12078    be interpreted as relative to the base offset given in the index section.
12079    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12080    should be interpreted as relative to the base offset for .debug_line.dwo,
12081    and offsets into other debug sections obtained from DWARF attributes should
12082    also be interpreted as relative to the corresponding base offset.
12083
12084    The table of sizes begins immediately following the table of offsets.
12085    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12086    with L columns and N rows, in row-major order.  Each row in the array is
12087    indexed starting from 1 (row 0 is shared by the two tables).
12088
12089    ---
12090
12091    Hash table lookup is handled the same in version 1 and 2:
12092
12093    We assume that N and M will not exceed 2^32 - 1.
12094    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12095
12096    Given a 64-bit compilation unit signature or a type signature S, an entry
12097    in the hash table is located as follows:
12098
12099    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12100       the low-order k bits all set to 1.
12101
12102    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12103
12104    3) If the hash table entry at index H matches the signature, use that
12105       entry.  If the hash table entry at index H is unused (all zeroes),
12106       terminate the search: the signature is not present in the table.
12107
12108    4) Let H = (H + H') modulo M. Repeat at Step 3.
12109
12110    Because M > N and H' and M are relatively prime, the search is guaranteed
12111    to stop at an unused slot or find the match.  */
12112
12113 /* Create a hash table to map DWO IDs to their CU/TU entry in
12114    .debug_{info,types}.dwo in DWP_FILE.
12115    Returns NULL if there isn't one.
12116    Note: This function processes DWP files only, not DWO files.  */
12117
12118 static struct dwp_hash_table *
12119 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12120                        struct dwp_file *dwp_file, int is_debug_types)
12121 {
12122   struct objfile *objfile = dwarf2_per_objfile->objfile;
12123   bfd *dbfd = dwp_file->dbfd.get ();
12124   const gdb_byte *index_ptr, *index_end;
12125   struct dwarf2_section_info *index;
12126   uint32_t version, nr_columns, nr_units, nr_slots;
12127   struct dwp_hash_table *htab;
12128
12129   if (is_debug_types)
12130     index = &dwp_file->sections.tu_index;
12131   else
12132     index = &dwp_file->sections.cu_index;
12133
12134   if (dwarf2_section_empty_p (index))
12135     return NULL;
12136   dwarf2_read_section (objfile, index);
12137
12138   index_ptr = index->buffer;
12139   index_end = index_ptr + index->size;
12140
12141   version = read_4_bytes (dbfd, index_ptr);
12142   index_ptr += 4;
12143   if (version == 2)
12144     nr_columns = read_4_bytes (dbfd, index_ptr);
12145   else
12146     nr_columns = 0;
12147   index_ptr += 4;
12148   nr_units = read_4_bytes (dbfd, index_ptr);
12149   index_ptr += 4;
12150   nr_slots = read_4_bytes (dbfd, index_ptr);
12151   index_ptr += 4;
12152
12153   if (version != 1 && version != 2)
12154     {
12155       error (_("Dwarf Error: unsupported DWP file version (%s)"
12156                " [in module %s]"),
12157              pulongest (version), dwp_file->name);
12158     }
12159   if (nr_slots != (nr_slots & -nr_slots))
12160     {
12161       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12162                " is not power of 2 [in module %s]"),
12163              pulongest (nr_slots), dwp_file->name);
12164     }
12165
12166   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12167   htab->version = version;
12168   htab->nr_columns = nr_columns;
12169   htab->nr_units = nr_units;
12170   htab->nr_slots = nr_slots;
12171   htab->hash_table = index_ptr;
12172   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12173
12174   /* Exit early if the table is empty.  */
12175   if (nr_slots == 0 || nr_units == 0
12176       || (version == 2 && nr_columns == 0))
12177     {
12178       /* All must be zero.  */
12179       if (nr_slots != 0 || nr_units != 0
12180           || (version == 2 && nr_columns != 0))
12181         {
12182           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12183                        " all zero [in modules %s]"),
12184                      dwp_file->name);
12185         }
12186       return htab;
12187     }
12188
12189   if (version == 1)
12190     {
12191       htab->section_pool.v1.indices =
12192         htab->unit_table + sizeof (uint32_t) * nr_slots;
12193       /* It's harder to decide whether the section is too small in v1.
12194          V1 is deprecated anyway so we punt.  */
12195     }
12196   else
12197     {
12198       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12199       int *ids = htab->section_pool.v2.section_ids;
12200       /* Reverse map for error checking.  */
12201       int ids_seen[DW_SECT_MAX + 1];
12202       int i;
12203
12204       if (nr_columns < 2)
12205         {
12206           error (_("Dwarf Error: bad DWP hash table, too few columns"
12207                    " in section table [in module %s]"),
12208                  dwp_file->name);
12209         }
12210       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12211         {
12212           error (_("Dwarf Error: bad DWP hash table, too many columns"
12213                    " in section table [in module %s]"),
12214                  dwp_file->name);
12215         }
12216       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12217       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12218       for (i = 0; i < nr_columns; ++i)
12219         {
12220           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12221
12222           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12223             {
12224               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12225                        " in section table [in module %s]"),
12226                      id, dwp_file->name);
12227             }
12228           if (ids_seen[id] != -1)
12229             {
12230               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12231                        " id %d in section table [in module %s]"),
12232                      id, dwp_file->name);
12233             }
12234           ids_seen[id] = i;
12235           ids[i] = id;
12236         }
12237       /* Must have exactly one info or types section.  */
12238       if (((ids_seen[DW_SECT_INFO] != -1)
12239            + (ids_seen[DW_SECT_TYPES] != -1))
12240           != 1)
12241         {
12242           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12243                    " DWO info/types section [in module %s]"),
12244                  dwp_file->name);
12245         }
12246       /* Must have an abbrev section.  */
12247       if (ids_seen[DW_SECT_ABBREV] == -1)
12248         {
12249           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12250                    " section [in module %s]"),
12251                  dwp_file->name);
12252         }
12253       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12254       htab->section_pool.v2.sizes =
12255         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12256                                          * nr_units * nr_columns);
12257       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12258                                           * nr_units * nr_columns))
12259           > index_end)
12260         {
12261           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12262                    " [in module %s]"),
12263                  dwp_file->name);
12264         }
12265     }
12266
12267   return htab;
12268 }
12269
12270 /* Update SECTIONS with the data from SECTP.
12271
12272    This function is like the other "locate" section routines that are
12273    passed to bfd_map_over_sections, but in this context the sections to
12274    read comes from the DWP V1 hash table, not the full ELF section table.
12275
12276    The result is non-zero for success, or zero if an error was found.  */
12277
12278 static int
12279 locate_v1_virtual_dwo_sections (asection *sectp,
12280                                 struct virtual_v1_dwo_sections *sections)
12281 {
12282   const struct dwop_section_names *names = &dwop_section_names;
12283
12284   if (section_is_p (sectp->name, &names->abbrev_dwo))
12285     {
12286       /* There can be only one.  */
12287       if (sections->abbrev.s.section != NULL)
12288         return 0;
12289       sections->abbrev.s.section = sectp;
12290       sections->abbrev.size = bfd_get_section_size (sectp);
12291     }
12292   else if (section_is_p (sectp->name, &names->info_dwo)
12293            || section_is_p (sectp->name, &names->types_dwo))
12294     {
12295       /* There can be only one.  */
12296       if (sections->info_or_types.s.section != NULL)
12297         return 0;
12298       sections->info_or_types.s.section = sectp;
12299       sections->info_or_types.size = bfd_get_section_size (sectp);
12300     }
12301   else if (section_is_p (sectp->name, &names->line_dwo))
12302     {
12303       /* There can be only one.  */
12304       if (sections->line.s.section != NULL)
12305         return 0;
12306       sections->line.s.section = sectp;
12307       sections->line.size = bfd_get_section_size (sectp);
12308     }
12309   else if (section_is_p (sectp->name, &names->loc_dwo))
12310     {
12311       /* There can be only one.  */
12312       if (sections->loc.s.section != NULL)
12313         return 0;
12314       sections->loc.s.section = sectp;
12315       sections->loc.size = bfd_get_section_size (sectp);
12316     }
12317   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12318     {
12319       /* There can be only one.  */
12320       if (sections->macinfo.s.section != NULL)
12321         return 0;
12322       sections->macinfo.s.section = sectp;
12323       sections->macinfo.size = bfd_get_section_size (sectp);
12324     }
12325   else if (section_is_p (sectp->name, &names->macro_dwo))
12326     {
12327       /* There can be only one.  */
12328       if (sections->macro.s.section != NULL)
12329         return 0;
12330       sections->macro.s.section = sectp;
12331       sections->macro.size = bfd_get_section_size (sectp);
12332     }
12333   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12334     {
12335       /* There can be only one.  */
12336       if (sections->str_offsets.s.section != NULL)
12337         return 0;
12338       sections->str_offsets.s.section = sectp;
12339       sections->str_offsets.size = bfd_get_section_size (sectp);
12340     }
12341   else
12342     {
12343       /* No other kind of section is valid.  */
12344       return 0;
12345     }
12346
12347   return 1;
12348 }
12349
12350 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12351    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12352    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12353    This is for DWP version 1 files.  */
12354
12355 static struct dwo_unit *
12356 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12357                            struct dwp_file *dwp_file,
12358                            uint32_t unit_index,
12359                            const char *comp_dir,
12360                            ULONGEST signature, int is_debug_types)
12361 {
12362   struct objfile *objfile = dwarf2_per_objfile->objfile;
12363   const struct dwp_hash_table *dwp_htab =
12364     is_debug_types ? dwp_file->tus : dwp_file->cus;
12365   bfd *dbfd = dwp_file->dbfd.get ();
12366   const char *kind = is_debug_types ? "TU" : "CU";
12367   struct dwo_file *dwo_file;
12368   struct dwo_unit *dwo_unit;
12369   struct virtual_v1_dwo_sections sections;
12370   void **dwo_file_slot;
12371   int i;
12372
12373   gdb_assert (dwp_file->version == 1);
12374
12375   if (dwarf_read_debug)
12376     {
12377       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12378                           kind,
12379                           pulongest (unit_index), hex_string (signature),
12380                           dwp_file->name);
12381     }
12382
12383   /* Fetch the sections of this DWO unit.
12384      Put a limit on the number of sections we look for so that bad data
12385      doesn't cause us to loop forever.  */
12386
12387 #define MAX_NR_V1_DWO_SECTIONS \
12388   (1 /* .debug_info or .debug_types */ \
12389    + 1 /* .debug_abbrev */ \
12390    + 1 /* .debug_line */ \
12391    + 1 /* .debug_loc */ \
12392    + 1 /* .debug_str_offsets */ \
12393    + 1 /* .debug_macro or .debug_macinfo */ \
12394    + 1 /* trailing zero */)
12395
12396   memset (&sections, 0, sizeof (sections));
12397
12398   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12399     {
12400       asection *sectp;
12401       uint32_t section_nr =
12402         read_4_bytes (dbfd,
12403                       dwp_htab->section_pool.v1.indices
12404                       + (unit_index + i) * sizeof (uint32_t));
12405
12406       if (section_nr == 0)
12407         break;
12408       if (section_nr >= dwp_file->num_sections)
12409         {
12410           error (_("Dwarf Error: bad DWP hash table, section number too large"
12411                    " [in module %s]"),
12412                  dwp_file->name);
12413         }
12414
12415       sectp = dwp_file->elf_sections[section_nr];
12416       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12417         {
12418           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12419                    " [in module %s]"),
12420                  dwp_file->name);
12421         }
12422     }
12423
12424   if (i < 2
12425       || dwarf2_section_empty_p (&sections.info_or_types)
12426       || dwarf2_section_empty_p (&sections.abbrev))
12427     {
12428       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12429                " [in module %s]"),
12430              dwp_file->name);
12431     }
12432   if (i == MAX_NR_V1_DWO_SECTIONS)
12433     {
12434       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12435                " [in module %s]"),
12436              dwp_file->name);
12437     }
12438
12439   /* It's easier for the rest of the code if we fake a struct dwo_file and
12440      have dwo_unit "live" in that.  At least for now.
12441
12442      The DWP file can be made up of a random collection of CUs and TUs.
12443      However, for each CU + set of TUs that came from the same original DWO
12444      file, we can combine them back into a virtual DWO file to save space
12445      (fewer struct dwo_file objects to allocate).  Remember that for really
12446      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12447
12448   std::string virtual_dwo_name =
12449     string_printf ("virtual-dwo/%d-%d-%d-%d",
12450                    get_section_id (&sections.abbrev),
12451                    get_section_id (&sections.line),
12452                    get_section_id (&sections.loc),
12453                    get_section_id (&sections.str_offsets));
12454   /* Can we use an existing virtual DWO file?  */
12455   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12456                                         virtual_dwo_name.c_str (),
12457                                         comp_dir);
12458   /* Create one if necessary.  */
12459   if (*dwo_file_slot == NULL)
12460     {
12461       if (dwarf_read_debug)
12462         {
12463           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12464                               virtual_dwo_name.c_str ());
12465         }
12466       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12467       dwo_file->dwo_name
12468         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12469                                         virtual_dwo_name.c_str (),
12470                                         virtual_dwo_name.size ());
12471       dwo_file->comp_dir = comp_dir;
12472       dwo_file->sections.abbrev = sections.abbrev;
12473       dwo_file->sections.line = sections.line;
12474       dwo_file->sections.loc = sections.loc;
12475       dwo_file->sections.macinfo = sections.macinfo;
12476       dwo_file->sections.macro = sections.macro;
12477       dwo_file->sections.str_offsets = sections.str_offsets;
12478       /* The "str" section is global to the entire DWP file.  */
12479       dwo_file->sections.str = dwp_file->sections.str;
12480       /* The info or types section is assigned below to dwo_unit,
12481          there's no need to record it in dwo_file.
12482          Also, we can't simply record type sections in dwo_file because
12483          we record a pointer into the vector in dwo_unit.  As we collect more
12484          types we'll grow the vector and eventually have to reallocate space
12485          for it, invalidating all copies of pointers into the previous
12486          contents.  */
12487       *dwo_file_slot = dwo_file;
12488     }
12489   else
12490     {
12491       if (dwarf_read_debug)
12492         {
12493           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12494                               virtual_dwo_name.c_str ());
12495         }
12496       dwo_file = (struct dwo_file *) *dwo_file_slot;
12497     }
12498
12499   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12500   dwo_unit->dwo_file = dwo_file;
12501   dwo_unit->signature = signature;
12502   dwo_unit->section =
12503     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12504   *dwo_unit->section = sections.info_or_types;
12505   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12506
12507   return dwo_unit;
12508 }
12509
12510 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12511    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12512    piece within that section used by a TU/CU, return a virtual section
12513    of just that piece.  */
12514
12515 static struct dwarf2_section_info
12516 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12517                        struct dwarf2_section_info *section,
12518                        bfd_size_type offset, bfd_size_type size)
12519 {
12520   struct dwarf2_section_info result;
12521   asection *sectp;
12522
12523   gdb_assert (section != NULL);
12524   gdb_assert (!section->is_virtual);
12525
12526   memset (&result, 0, sizeof (result));
12527   result.s.containing_section = section;
12528   result.is_virtual = 1;
12529
12530   if (size == 0)
12531     return result;
12532
12533   sectp = get_section_bfd_section (section);
12534
12535   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12536      bounds of the real section.  This is a pretty-rare event, so just
12537      flag an error (easier) instead of a warning and trying to cope.  */
12538   if (sectp == NULL
12539       || offset + size > bfd_get_section_size (sectp))
12540     {
12541       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12542                " in section %s [in module %s]"),
12543              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12544              objfile_name (dwarf2_per_objfile->objfile));
12545     }
12546
12547   result.virtual_offset = offset;
12548   result.size = size;
12549   return result;
12550 }
12551
12552 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12553    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12554    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12555    This is for DWP version 2 files.  */
12556
12557 static struct dwo_unit *
12558 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12559                            struct dwp_file *dwp_file,
12560                            uint32_t unit_index,
12561                            const char *comp_dir,
12562                            ULONGEST signature, int is_debug_types)
12563 {
12564   struct objfile *objfile = dwarf2_per_objfile->objfile;
12565   const struct dwp_hash_table *dwp_htab =
12566     is_debug_types ? dwp_file->tus : dwp_file->cus;
12567   bfd *dbfd = dwp_file->dbfd.get ();
12568   const char *kind = is_debug_types ? "TU" : "CU";
12569   struct dwo_file *dwo_file;
12570   struct dwo_unit *dwo_unit;
12571   struct virtual_v2_dwo_sections sections;
12572   void **dwo_file_slot;
12573   int i;
12574
12575   gdb_assert (dwp_file->version == 2);
12576
12577   if (dwarf_read_debug)
12578     {
12579       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12580                           kind,
12581                           pulongest (unit_index), hex_string (signature),
12582                           dwp_file->name);
12583     }
12584
12585   /* Fetch the section offsets of this DWO unit.  */
12586
12587   memset (&sections, 0, sizeof (sections));
12588
12589   for (i = 0; i < dwp_htab->nr_columns; ++i)
12590     {
12591       uint32_t offset = read_4_bytes (dbfd,
12592                                       dwp_htab->section_pool.v2.offsets
12593                                       + (((unit_index - 1) * dwp_htab->nr_columns
12594                                           + i)
12595                                          * sizeof (uint32_t)));
12596       uint32_t size = read_4_bytes (dbfd,
12597                                     dwp_htab->section_pool.v2.sizes
12598                                     + (((unit_index - 1) * dwp_htab->nr_columns
12599                                         + i)
12600                                        * sizeof (uint32_t)));
12601
12602       switch (dwp_htab->section_pool.v2.section_ids[i])
12603         {
12604         case DW_SECT_INFO:
12605         case DW_SECT_TYPES:
12606           sections.info_or_types_offset = offset;
12607           sections.info_or_types_size = size;
12608           break;
12609         case DW_SECT_ABBREV:
12610           sections.abbrev_offset = offset;
12611           sections.abbrev_size = size;
12612           break;
12613         case DW_SECT_LINE:
12614           sections.line_offset = offset;
12615           sections.line_size = size;
12616           break;
12617         case DW_SECT_LOC:
12618           sections.loc_offset = offset;
12619           sections.loc_size = size;
12620           break;
12621         case DW_SECT_STR_OFFSETS:
12622           sections.str_offsets_offset = offset;
12623           sections.str_offsets_size = size;
12624           break;
12625         case DW_SECT_MACINFO:
12626           sections.macinfo_offset = offset;
12627           sections.macinfo_size = size;
12628           break;
12629         case DW_SECT_MACRO:
12630           sections.macro_offset = offset;
12631           sections.macro_size = size;
12632           break;
12633         }
12634     }
12635
12636   /* It's easier for the rest of the code if we fake a struct dwo_file and
12637      have dwo_unit "live" in that.  At least for now.
12638
12639      The DWP file can be made up of a random collection of CUs and TUs.
12640      However, for each CU + set of TUs that came from the same original DWO
12641      file, we can combine them back into a virtual DWO file to save space
12642      (fewer struct dwo_file objects to allocate).  Remember that for really
12643      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12644
12645   std::string virtual_dwo_name =
12646     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12647                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12648                    (long) (sections.line_size ? sections.line_offset : 0),
12649                    (long) (sections.loc_size ? sections.loc_offset : 0),
12650                    (long) (sections.str_offsets_size
12651                            ? sections.str_offsets_offset : 0));
12652   /* Can we use an existing virtual DWO file?  */
12653   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12654                                         virtual_dwo_name.c_str (),
12655                                         comp_dir);
12656   /* Create one if necessary.  */
12657   if (*dwo_file_slot == NULL)
12658     {
12659       if (dwarf_read_debug)
12660         {
12661           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12662                               virtual_dwo_name.c_str ());
12663         }
12664       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12665       dwo_file->dwo_name
12666         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12667                                         virtual_dwo_name.c_str (),
12668                                         virtual_dwo_name.size ());
12669       dwo_file->comp_dir = comp_dir;
12670       dwo_file->sections.abbrev =
12671         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12672                                sections.abbrev_offset, sections.abbrev_size);
12673       dwo_file->sections.line =
12674         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12675                                sections.line_offset, sections.line_size);
12676       dwo_file->sections.loc =
12677         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12678                                sections.loc_offset, sections.loc_size);
12679       dwo_file->sections.macinfo =
12680         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12681                                sections.macinfo_offset, sections.macinfo_size);
12682       dwo_file->sections.macro =
12683         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12684                                sections.macro_offset, sections.macro_size);
12685       dwo_file->sections.str_offsets =
12686         create_dwp_v2_section (dwarf2_per_objfile,
12687                                &dwp_file->sections.str_offsets,
12688                                sections.str_offsets_offset,
12689                                sections.str_offsets_size);
12690       /* The "str" section is global to the entire DWP file.  */
12691       dwo_file->sections.str = dwp_file->sections.str;
12692       /* The info or types section is assigned below to dwo_unit,
12693          there's no need to record it in dwo_file.
12694          Also, we can't simply record type sections in dwo_file because
12695          we record a pointer into the vector in dwo_unit.  As we collect more
12696          types we'll grow the vector and eventually have to reallocate space
12697          for it, invalidating all copies of pointers into the previous
12698          contents.  */
12699       *dwo_file_slot = dwo_file;
12700     }
12701   else
12702     {
12703       if (dwarf_read_debug)
12704         {
12705           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12706                               virtual_dwo_name.c_str ());
12707         }
12708       dwo_file = (struct dwo_file *) *dwo_file_slot;
12709     }
12710
12711   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12712   dwo_unit->dwo_file = dwo_file;
12713   dwo_unit->signature = signature;
12714   dwo_unit->section =
12715     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12716   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12717                                               is_debug_types
12718                                               ? &dwp_file->sections.types
12719                                               : &dwp_file->sections.info,
12720                                               sections.info_or_types_offset,
12721                                               sections.info_or_types_size);
12722   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12723
12724   return dwo_unit;
12725 }
12726
12727 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12728    Returns NULL if the signature isn't found.  */
12729
12730 static struct dwo_unit *
12731 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12732                         struct dwp_file *dwp_file, const char *comp_dir,
12733                         ULONGEST signature, int is_debug_types)
12734 {
12735   const struct dwp_hash_table *dwp_htab =
12736     is_debug_types ? dwp_file->tus : dwp_file->cus;
12737   bfd *dbfd = dwp_file->dbfd.get ();
12738   uint32_t mask = dwp_htab->nr_slots - 1;
12739   uint32_t hash = signature & mask;
12740   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12741   unsigned int i;
12742   void **slot;
12743   struct dwo_unit find_dwo_cu;
12744
12745   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12746   find_dwo_cu.signature = signature;
12747   slot = htab_find_slot (is_debug_types
12748                          ? dwp_file->loaded_tus
12749                          : dwp_file->loaded_cus,
12750                          &find_dwo_cu, INSERT);
12751
12752   if (*slot != NULL)
12753     return (struct dwo_unit *) *slot;
12754
12755   /* Use a for loop so that we don't loop forever on bad debug info.  */
12756   for (i = 0; i < dwp_htab->nr_slots; ++i)
12757     {
12758       ULONGEST signature_in_table;
12759
12760       signature_in_table =
12761         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12762       if (signature_in_table == signature)
12763         {
12764           uint32_t unit_index =
12765             read_4_bytes (dbfd,
12766                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12767
12768           if (dwp_file->version == 1)
12769             {
12770               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12771                                                  dwp_file, unit_index,
12772                                                  comp_dir, signature,
12773                                                  is_debug_types);
12774             }
12775           else
12776             {
12777               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12778                                                  dwp_file, unit_index,
12779                                                  comp_dir, signature,
12780                                                  is_debug_types);
12781             }
12782           return (struct dwo_unit *) *slot;
12783         }
12784       if (signature_in_table == 0)
12785         return NULL;
12786       hash = (hash + hash2) & mask;
12787     }
12788
12789   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12790            " [in module %s]"),
12791          dwp_file->name);
12792 }
12793
12794 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12795    Open the file specified by FILE_NAME and hand it off to BFD for
12796    preliminary analysis.  Return a newly initialized bfd *, which
12797    includes a canonicalized copy of FILE_NAME.
12798    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12799    SEARCH_CWD is true if the current directory is to be searched.
12800    It will be searched before debug-file-directory.
12801    If successful, the file is added to the bfd include table of the
12802    objfile's bfd (see gdb_bfd_record_inclusion).
12803    If unable to find/open the file, return NULL.
12804    NOTE: This function is derived from symfile_bfd_open.  */
12805
12806 static gdb_bfd_ref_ptr
12807 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12808                     const char *file_name, int is_dwp, int search_cwd)
12809 {
12810   int desc;
12811   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12812      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12813      to debug_file_directory.  */
12814   const char *search_path;
12815   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12816
12817   gdb::unique_xmalloc_ptr<char> search_path_holder;
12818   if (search_cwd)
12819     {
12820       if (*debug_file_directory != '\0')
12821         {
12822           search_path_holder.reset (concat (".", dirname_separator_string,
12823                                             debug_file_directory,
12824                                             (char *) NULL));
12825           search_path = search_path_holder.get ();
12826         }
12827       else
12828         search_path = ".";
12829     }
12830   else
12831     search_path = debug_file_directory;
12832
12833   openp_flags flags = OPF_RETURN_REALPATH;
12834   if (is_dwp)
12835     flags |= OPF_SEARCH_IN_PATH;
12836
12837   gdb::unique_xmalloc_ptr<char> absolute_name;
12838   desc = openp (search_path, flags, file_name,
12839                 O_RDONLY | O_BINARY, &absolute_name);
12840   if (desc < 0)
12841     return NULL;
12842
12843   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12844                                          gnutarget, desc));
12845   if (sym_bfd == NULL)
12846     return NULL;
12847   bfd_set_cacheable (sym_bfd.get (), 1);
12848
12849   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12850     return NULL;
12851
12852   /* Success.  Record the bfd as having been included by the objfile's bfd.
12853      This is important because things like demangled_names_hash lives in the
12854      objfile's per_bfd space and may have references to things like symbol
12855      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12856   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12857
12858   return sym_bfd;
12859 }
12860
12861 /* Try to open DWO file FILE_NAME.
12862    COMP_DIR is the DW_AT_comp_dir attribute.
12863    The result is the bfd handle of the file.
12864    If there is a problem finding or opening the file, return NULL.
12865    Upon success, the canonicalized path of the file is stored in the bfd,
12866    same as symfile_bfd_open.  */
12867
12868 static gdb_bfd_ref_ptr
12869 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12870                const char *file_name, const char *comp_dir)
12871 {
12872   if (IS_ABSOLUTE_PATH (file_name))
12873     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12874                                0 /*is_dwp*/, 0 /*search_cwd*/);
12875
12876   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12877
12878   if (comp_dir != NULL)
12879     {
12880       char *path_to_try = concat (comp_dir, SLASH_STRING,
12881                                   file_name, (char *) NULL);
12882
12883       /* NOTE: If comp_dir is a relative path, this will also try the
12884          search path, which seems useful.  */
12885       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12886                                                 path_to_try,
12887                                                 0 /*is_dwp*/,
12888                                                 1 /*search_cwd*/));
12889       xfree (path_to_try);
12890       if (abfd != NULL)
12891         return abfd;
12892     }
12893
12894   /* That didn't work, try debug-file-directory, which, despite its name,
12895      is a list of paths.  */
12896
12897   if (*debug_file_directory == '\0')
12898     return NULL;
12899
12900   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12901                              0 /*is_dwp*/, 1 /*search_cwd*/);
12902 }
12903
12904 /* This function is mapped across the sections and remembers the offset and
12905    size of each of the DWO debugging sections we are interested in.  */
12906
12907 static void
12908 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12909 {
12910   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12911   const struct dwop_section_names *names = &dwop_section_names;
12912
12913   if (section_is_p (sectp->name, &names->abbrev_dwo))
12914     {
12915       dwo_sections->abbrev.s.section = sectp;
12916       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12917     }
12918   else if (section_is_p (sectp->name, &names->info_dwo))
12919     {
12920       dwo_sections->info.s.section = sectp;
12921       dwo_sections->info.size = bfd_get_section_size (sectp);
12922     }
12923   else if (section_is_p (sectp->name, &names->line_dwo))
12924     {
12925       dwo_sections->line.s.section = sectp;
12926       dwo_sections->line.size = bfd_get_section_size (sectp);
12927     }
12928   else if (section_is_p (sectp->name, &names->loc_dwo))
12929     {
12930       dwo_sections->loc.s.section = sectp;
12931       dwo_sections->loc.size = bfd_get_section_size (sectp);
12932     }
12933   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12934     {
12935       dwo_sections->macinfo.s.section = sectp;
12936       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12937     }
12938   else if (section_is_p (sectp->name, &names->macro_dwo))
12939     {
12940       dwo_sections->macro.s.section = sectp;
12941       dwo_sections->macro.size = bfd_get_section_size (sectp);
12942     }
12943   else if (section_is_p (sectp->name, &names->str_dwo))
12944     {
12945       dwo_sections->str.s.section = sectp;
12946       dwo_sections->str.size = bfd_get_section_size (sectp);
12947     }
12948   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12949     {
12950       dwo_sections->str_offsets.s.section = sectp;
12951       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12952     }
12953   else if (section_is_p (sectp->name, &names->types_dwo))
12954     {
12955       struct dwarf2_section_info type_section;
12956
12957       memset (&type_section, 0, sizeof (type_section));
12958       type_section.s.section = sectp;
12959       type_section.size = bfd_get_section_size (sectp);
12960       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12961                      &type_section);
12962     }
12963 }
12964
12965 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12966    by PER_CU.  This is for the non-DWP case.
12967    The result is NULL if DWO_NAME can't be found.  */
12968
12969 static struct dwo_file *
12970 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12971                         const char *dwo_name, const char *comp_dir)
12972 {
12973   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12974   struct objfile *objfile = dwarf2_per_objfile->objfile;
12975
12976   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12977   if (dbfd == NULL)
12978     {
12979       if (dwarf_read_debug)
12980         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12981       return NULL;
12982     }
12983
12984   /* We use a unique pointer here, despite the obstack allocation,
12985      because a dwo_file needs some cleanup if it is abandoned.  */
12986   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12987                                         struct dwo_file));
12988   dwo_file->dwo_name = dwo_name;
12989   dwo_file->comp_dir = comp_dir;
12990   dwo_file->dbfd = dbfd.release ();
12991
12992   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12993                          &dwo_file->sections);
12994
12995   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12996                          dwo_file->cus);
12997
12998   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12999                                  dwo_file->sections.types, dwo_file->tus);
13000
13001   if (dwarf_read_debug)
13002     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13003
13004   return dwo_file.release ();
13005 }
13006
13007 /* This function is mapped across the sections and remembers the offset and
13008    size of each of the DWP debugging sections common to version 1 and 2 that
13009    we are interested in.  */
13010
13011 static void
13012 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13013                                    void *dwp_file_ptr)
13014 {
13015   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13016   const struct dwop_section_names *names = &dwop_section_names;
13017   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13018
13019   /* Record the ELF section number for later lookup: this is what the
13020      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13021   gdb_assert (elf_section_nr < dwp_file->num_sections);
13022   dwp_file->elf_sections[elf_section_nr] = sectp;
13023
13024   /* Look for specific sections that we need.  */
13025   if (section_is_p (sectp->name, &names->str_dwo))
13026     {
13027       dwp_file->sections.str.s.section = sectp;
13028       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13029     }
13030   else if (section_is_p (sectp->name, &names->cu_index))
13031     {
13032       dwp_file->sections.cu_index.s.section = sectp;
13033       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13034     }
13035   else if (section_is_p (sectp->name, &names->tu_index))
13036     {
13037       dwp_file->sections.tu_index.s.section = sectp;
13038       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13039     }
13040 }
13041
13042 /* This function is mapped across the sections and remembers the offset and
13043    size of each of the DWP version 2 debugging sections that we are interested
13044    in.  This is split into a separate function because we don't know if we
13045    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13046
13047 static void
13048 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13049 {
13050   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13051   const struct dwop_section_names *names = &dwop_section_names;
13052   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13053
13054   /* Record the ELF section number for later lookup: this is what the
13055      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13056   gdb_assert (elf_section_nr < dwp_file->num_sections);
13057   dwp_file->elf_sections[elf_section_nr] = sectp;
13058
13059   /* Look for specific sections that we need.  */
13060   if (section_is_p (sectp->name, &names->abbrev_dwo))
13061     {
13062       dwp_file->sections.abbrev.s.section = sectp;
13063       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13064     }
13065   else if (section_is_p (sectp->name, &names->info_dwo))
13066     {
13067       dwp_file->sections.info.s.section = sectp;
13068       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13069     }
13070   else if (section_is_p (sectp->name, &names->line_dwo))
13071     {
13072       dwp_file->sections.line.s.section = sectp;
13073       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13074     }
13075   else if (section_is_p (sectp->name, &names->loc_dwo))
13076     {
13077       dwp_file->sections.loc.s.section = sectp;
13078       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13079     }
13080   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13081     {
13082       dwp_file->sections.macinfo.s.section = sectp;
13083       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13084     }
13085   else if (section_is_p (sectp->name, &names->macro_dwo))
13086     {
13087       dwp_file->sections.macro.s.section = sectp;
13088       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13089     }
13090   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13091     {
13092       dwp_file->sections.str_offsets.s.section = sectp;
13093       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13094     }
13095   else if (section_is_p (sectp->name, &names->types_dwo))
13096     {
13097       dwp_file->sections.types.s.section = sectp;
13098       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13099     }
13100 }
13101
13102 /* Hash function for dwp_file loaded CUs/TUs.  */
13103
13104 static hashval_t
13105 hash_dwp_loaded_cutus (const void *item)
13106 {
13107   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13108
13109   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13110   return dwo_unit->signature;
13111 }
13112
13113 /* Equality function for dwp_file loaded CUs/TUs.  */
13114
13115 static int
13116 eq_dwp_loaded_cutus (const void *a, const void *b)
13117 {
13118   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13119   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13120
13121   return dua->signature == dub->signature;
13122 }
13123
13124 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13125
13126 static htab_t
13127 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13128 {
13129   return htab_create_alloc_ex (3,
13130                                hash_dwp_loaded_cutus,
13131                                eq_dwp_loaded_cutus,
13132                                NULL,
13133                                &objfile->objfile_obstack,
13134                                hashtab_obstack_allocate,
13135                                dummy_obstack_deallocate);
13136 }
13137
13138 /* Try to open DWP file FILE_NAME.
13139    The result is the bfd handle of the file.
13140    If there is a problem finding or opening the file, return NULL.
13141    Upon success, the canonicalized path of the file is stored in the bfd,
13142    same as symfile_bfd_open.  */
13143
13144 static gdb_bfd_ref_ptr
13145 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13146                const char *file_name)
13147 {
13148   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13149                                             1 /*is_dwp*/,
13150                                             1 /*search_cwd*/));
13151   if (abfd != NULL)
13152     return abfd;
13153
13154   /* Work around upstream bug 15652.
13155      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13156      [Whether that's a "bug" is debatable, but it is getting in our way.]
13157      We have no real idea where the dwp file is, because gdb's realpath-ing
13158      of the executable's path may have discarded the needed info.
13159      [IWBN if the dwp file name was recorded in the executable, akin to
13160      .gnu_debuglink, but that doesn't exist yet.]
13161      Strip the directory from FILE_NAME and search again.  */
13162   if (*debug_file_directory != '\0')
13163     {
13164       /* Don't implicitly search the current directory here.
13165          If the user wants to search "." to handle this case,
13166          it must be added to debug-file-directory.  */
13167       return try_open_dwop_file (dwarf2_per_objfile,
13168                                  lbasename (file_name), 1 /*is_dwp*/,
13169                                  0 /*search_cwd*/);
13170     }
13171
13172   return NULL;
13173 }
13174
13175 /* Initialize the use of the DWP file for the current objfile.
13176    By convention the name of the DWP file is ${objfile}.dwp.
13177    The result is NULL if it can't be found.  */
13178
13179 static std::unique_ptr<struct dwp_file>
13180 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13181 {
13182   struct objfile *objfile = dwarf2_per_objfile->objfile;
13183
13184   /* Try to find first .dwp for the binary file before any symbolic links
13185      resolving.  */
13186
13187   /* If the objfile is a debug file, find the name of the real binary
13188      file and get the name of dwp file from there.  */
13189   std::string dwp_name;
13190   if (objfile->separate_debug_objfile_backlink != NULL)
13191     {
13192       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13193       const char *backlink_basename = lbasename (backlink->original_name);
13194
13195       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13196     }
13197   else
13198     dwp_name = objfile->original_name;
13199
13200   dwp_name += ".dwp";
13201
13202   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13203   if (dbfd == NULL
13204       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13205     {
13206       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13207       dwp_name = objfile_name (objfile);
13208       dwp_name += ".dwp";
13209       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13210     }
13211
13212   if (dbfd == NULL)
13213     {
13214       if (dwarf_read_debug)
13215         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13216       return std::unique_ptr<dwp_file> ();
13217     }
13218
13219   const char *name = bfd_get_filename (dbfd.get ());
13220   std::unique_ptr<struct dwp_file> dwp_file
13221     (new struct dwp_file (name, std::move (dbfd)));
13222
13223   /* +1: section 0 is unused */
13224   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13225   dwp_file->elf_sections =
13226     OBSTACK_CALLOC (&objfile->objfile_obstack,
13227                     dwp_file->num_sections, asection *);
13228
13229   bfd_map_over_sections (dwp_file->dbfd.get (),
13230                          dwarf2_locate_common_dwp_sections,
13231                          dwp_file.get ());
13232
13233   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13234                                          0);
13235
13236   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13237                                          1);
13238
13239   /* The DWP file version is stored in the hash table.  Oh well.  */
13240   if (dwp_file->cus && dwp_file->tus
13241       && dwp_file->cus->version != dwp_file->tus->version)
13242     {
13243       /* Technically speaking, we should try to limp along, but this is
13244          pretty bizarre.  We use pulongest here because that's the established
13245          portability solution (e.g, we cannot use %u for uint32_t).  */
13246       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13247                " TU version %s [in DWP file %s]"),
13248              pulongest (dwp_file->cus->version),
13249              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13250     }
13251
13252   if (dwp_file->cus)
13253     dwp_file->version = dwp_file->cus->version;
13254   else if (dwp_file->tus)
13255     dwp_file->version = dwp_file->tus->version;
13256   else
13257     dwp_file->version = 2;
13258
13259   if (dwp_file->version == 2)
13260     bfd_map_over_sections (dwp_file->dbfd.get (),
13261                            dwarf2_locate_v2_dwp_sections,
13262                            dwp_file.get ());
13263
13264   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13265   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13266
13267   if (dwarf_read_debug)
13268     {
13269       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13270       fprintf_unfiltered (gdb_stdlog,
13271                           "    %s CUs, %s TUs\n",
13272                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13273                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13274     }
13275
13276   return dwp_file;
13277 }
13278
13279 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13280
13281 static struct dwp_file *
13282 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13283 {
13284   if (! dwarf2_per_objfile->dwp_checked)
13285     {
13286       dwarf2_per_objfile->dwp_file
13287         = open_and_init_dwp_file (dwarf2_per_objfile);
13288       dwarf2_per_objfile->dwp_checked = 1;
13289     }
13290   return dwarf2_per_objfile->dwp_file.get ();
13291 }
13292
13293 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13294    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13295    or in the DWP file for the objfile, referenced by THIS_UNIT.
13296    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13297    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13298
13299    This is called, for example, when wanting to read a variable with a
13300    complex location.  Therefore we don't want to do file i/o for every call.
13301    Therefore we don't want to look for a DWO file on every call.
13302    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13303    then we check if we've already seen DWO_NAME, and only THEN do we check
13304    for a DWO file.
13305
13306    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13307    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13308
13309 static struct dwo_unit *
13310 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13311                  const char *dwo_name, const char *comp_dir,
13312                  ULONGEST signature, int is_debug_types)
13313 {
13314   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13315   struct objfile *objfile = dwarf2_per_objfile->objfile;
13316   const char *kind = is_debug_types ? "TU" : "CU";
13317   void **dwo_file_slot;
13318   struct dwo_file *dwo_file;
13319   struct dwp_file *dwp_file;
13320
13321   /* First see if there's a DWP file.
13322      If we have a DWP file but didn't find the DWO inside it, don't
13323      look for the original DWO file.  It makes gdb behave differently
13324      depending on whether one is debugging in the build tree.  */
13325
13326   dwp_file = get_dwp_file (dwarf2_per_objfile);
13327   if (dwp_file != NULL)
13328     {
13329       const struct dwp_hash_table *dwp_htab =
13330         is_debug_types ? dwp_file->tus : dwp_file->cus;
13331
13332       if (dwp_htab != NULL)
13333         {
13334           struct dwo_unit *dwo_cutu =
13335             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13336                                     signature, is_debug_types);
13337
13338           if (dwo_cutu != NULL)
13339             {
13340               if (dwarf_read_debug)
13341                 {
13342                   fprintf_unfiltered (gdb_stdlog,
13343                                       "Virtual DWO %s %s found: @%s\n",
13344                                       kind, hex_string (signature),
13345                                       host_address_to_string (dwo_cutu));
13346                 }
13347               return dwo_cutu;
13348             }
13349         }
13350     }
13351   else
13352     {
13353       /* No DWP file, look for the DWO file.  */
13354
13355       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13356                                             dwo_name, comp_dir);
13357       if (*dwo_file_slot == NULL)
13358         {
13359           /* Read in the file and build a table of the CUs/TUs it contains.  */
13360           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13361         }
13362       /* NOTE: This will be NULL if unable to open the file.  */
13363       dwo_file = (struct dwo_file *) *dwo_file_slot;
13364
13365       if (dwo_file != NULL)
13366         {
13367           struct dwo_unit *dwo_cutu = NULL;
13368
13369           if (is_debug_types && dwo_file->tus)
13370             {
13371               struct dwo_unit find_dwo_cutu;
13372
13373               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13374               find_dwo_cutu.signature = signature;
13375               dwo_cutu
13376                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13377             }
13378           else if (!is_debug_types && dwo_file->cus)
13379             {
13380               struct dwo_unit find_dwo_cutu;
13381
13382               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13383               find_dwo_cutu.signature = signature;
13384               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13385                                                        &find_dwo_cutu);
13386             }
13387
13388           if (dwo_cutu != NULL)
13389             {
13390               if (dwarf_read_debug)
13391                 {
13392                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13393                                       kind, dwo_name, hex_string (signature),
13394                                       host_address_to_string (dwo_cutu));
13395                 }
13396               return dwo_cutu;
13397             }
13398         }
13399     }
13400
13401   /* We didn't find it.  This could mean a dwo_id mismatch, or
13402      someone deleted the DWO/DWP file, or the search path isn't set up
13403      correctly to find the file.  */
13404
13405   if (dwarf_read_debug)
13406     {
13407       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13408                           kind, dwo_name, hex_string (signature));
13409     }
13410
13411   /* This is a warning and not a complaint because it can be caused by
13412      pilot error (e.g., user accidentally deleting the DWO).  */
13413   {
13414     /* Print the name of the DWP file if we looked there, helps the user
13415        better diagnose the problem.  */
13416     std::string dwp_text;
13417
13418     if (dwp_file != NULL)
13419       dwp_text = string_printf (" [in DWP file %s]",
13420                                 lbasename (dwp_file->name));
13421
13422     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13423                " [in module %s]"),
13424              kind, dwo_name, hex_string (signature),
13425              dwp_text.c_str (),
13426              this_unit->is_debug_types ? "TU" : "CU",
13427              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13428   }
13429   return NULL;
13430 }
13431
13432 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13433    See lookup_dwo_cutu_unit for details.  */
13434
13435 static struct dwo_unit *
13436 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13437                       const char *dwo_name, const char *comp_dir,
13438                       ULONGEST signature)
13439 {
13440   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13441 }
13442
13443 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13444    See lookup_dwo_cutu_unit for details.  */
13445
13446 static struct dwo_unit *
13447 lookup_dwo_type_unit (struct signatured_type *this_tu,
13448                       const char *dwo_name, const char *comp_dir)
13449 {
13450   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13451 }
13452
13453 /* Traversal function for queue_and_load_all_dwo_tus.  */
13454
13455 static int
13456 queue_and_load_dwo_tu (void **slot, void *info)
13457 {
13458   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13459   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13460   ULONGEST signature = dwo_unit->signature;
13461   struct signatured_type *sig_type =
13462     lookup_dwo_signatured_type (per_cu->cu, signature);
13463
13464   if (sig_type != NULL)
13465     {
13466       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13467
13468       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13469          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13470          while processing PER_CU.  */
13471       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13472         load_full_type_unit (sig_cu);
13473       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13474     }
13475
13476   return 1;
13477 }
13478
13479 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13480    The DWO may have the only definition of the type, though it may not be
13481    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13482    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13483
13484 static void
13485 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13486 {
13487   struct dwo_unit *dwo_unit;
13488   struct dwo_file *dwo_file;
13489
13490   gdb_assert (!per_cu->is_debug_types);
13491   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13492   gdb_assert (per_cu->cu != NULL);
13493
13494   dwo_unit = per_cu->cu->dwo_unit;
13495   gdb_assert (dwo_unit != NULL);
13496
13497   dwo_file = dwo_unit->dwo_file;
13498   if (dwo_file->tus != NULL)
13499     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13500 }
13501
13502 /* Free all resources associated with DWO_FILE.
13503    Close the DWO file and munmap the sections.  */
13504
13505 static void
13506 free_dwo_file (struct dwo_file *dwo_file)
13507 {
13508   /* Note: dbfd is NULL for virtual DWO files.  */
13509   gdb_bfd_unref (dwo_file->dbfd);
13510
13511   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13512 }
13513
13514 /* Traversal function for free_dwo_files.  */
13515
13516 static int
13517 free_dwo_file_from_slot (void **slot, void *info)
13518 {
13519   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13520
13521   free_dwo_file (dwo_file);
13522
13523   return 1;
13524 }
13525
13526 /* Free all resources associated with DWO_FILES.  */
13527
13528 static void
13529 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13530 {
13531   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13532 }
13533 \f
13534 /* Read in various DIEs.  */
13535
13536 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13537    Inherit only the children of the DW_AT_abstract_origin DIE not being
13538    already referenced by DW_AT_abstract_origin from the children of the
13539    current DIE.  */
13540
13541 static void
13542 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13543 {
13544   struct die_info *child_die;
13545   sect_offset *offsetp;
13546   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13547   struct die_info *origin_die;
13548   /* Iterator of the ORIGIN_DIE children.  */
13549   struct die_info *origin_child_die;
13550   struct attribute *attr;
13551   struct dwarf2_cu *origin_cu;
13552   struct pending **origin_previous_list_in_scope;
13553
13554   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13555   if (!attr)
13556     return;
13557
13558   /* Note that following die references may follow to a die in a
13559      different cu.  */
13560
13561   origin_cu = cu;
13562   origin_die = follow_die_ref (die, attr, &origin_cu);
13563
13564   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13565      symbols in.  */
13566   origin_previous_list_in_scope = origin_cu->list_in_scope;
13567   origin_cu->list_in_scope = cu->list_in_scope;
13568
13569   if (die->tag != origin_die->tag
13570       && !(die->tag == DW_TAG_inlined_subroutine
13571            && origin_die->tag == DW_TAG_subprogram))
13572     complaint (_("DIE %s and its abstract origin %s have different tags"),
13573                sect_offset_str (die->sect_off),
13574                sect_offset_str (origin_die->sect_off));
13575
13576   std::vector<sect_offset> offsets;
13577
13578   for (child_die = die->child;
13579        child_die && child_die->tag;
13580        child_die = sibling_die (child_die))
13581     {
13582       struct die_info *child_origin_die;
13583       struct dwarf2_cu *child_origin_cu;
13584
13585       /* We are trying to process concrete instance entries:
13586          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13587          it's not relevant to our analysis here. i.e. detecting DIEs that are
13588          present in the abstract instance but not referenced in the concrete
13589          one.  */
13590       if (child_die->tag == DW_TAG_call_site
13591           || child_die->tag == DW_TAG_GNU_call_site)
13592         continue;
13593
13594       /* For each CHILD_DIE, find the corresponding child of
13595          ORIGIN_DIE.  If there is more than one layer of
13596          DW_AT_abstract_origin, follow them all; there shouldn't be,
13597          but GCC versions at least through 4.4 generate this (GCC PR
13598          40573).  */
13599       child_origin_die = child_die;
13600       child_origin_cu = cu;
13601       while (1)
13602         {
13603           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13604                               child_origin_cu);
13605           if (attr == NULL)
13606             break;
13607           child_origin_die = follow_die_ref (child_origin_die, attr,
13608                                              &child_origin_cu);
13609         }
13610
13611       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13612          counterpart may exist.  */
13613       if (child_origin_die != child_die)
13614         {
13615           if (child_die->tag != child_origin_die->tag
13616               && !(child_die->tag == DW_TAG_inlined_subroutine
13617                    && child_origin_die->tag == DW_TAG_subprogram))
13618             complaint (_("Child DIE %s and its abstract origin %s have "
13619                          "different tags"),
13620                        sect_offset_str (child_die->sect_off),
13621                        sect_offset_str (child_origin_die->sect_off));
13622           if (child_origin_die->parent != origin_die)
13623             complaint (_("Child DIE %s and its abstract origin %s have "
13624                          "different parents"),
13625                        sect_offset_str (child_die->sect_off),
13626                        sect_offset_str (child_origin_die->sect_off));
13627           else
13628             offsets.push_back (child_origin_die->sect_off);
13629         }
13630     }
13631   std::sort (offsets.begin (), offsets.end ());
13632   sect_offset *offsets_end = offsets.data () + offsets.size ();
13633   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13634     if (offsetp[-1] == *offsetp)
13635       complaint (_("Multiple children of DIE %s refer "
13636                    "to DIE %s as their abstract origin"),
13637                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13638
13639   offsetp = offsets.data ();
13640   origin_child_die = origin_die->child;
13641   while (origin_child_die && origin_child_die->tag)
13642     {
13643       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13644       while (offsetp < offsets_end
13645              && *offsetp < origin_child_die->sect_off)
13646         offsetp++;
13647       if (offsetp >= offsets_end
13648           || *offsetp > origin_child_die->sect_off)
13649         {
13650           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13651              Check whether we're already processing ORIGIN_CHILD_DIE.
13652              This can happen with mutually referenced abstract_origins.
13653              PR 16581.  */
13654           if (!origin_child_die->in_process)
13655             process_die (origin_child_die, origin_cu);
13656         }
13657       origin_child_die = sibling_die (origin_child_die);
13658     }
13659   origin_cu->list_in_scope = origin_previous_list_in_scope;
13660 }
13661
13662 static void
13663 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13664 {
13665   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13666   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13667   struct context_stack *newobj;
13668   CORE_ADDR lowpc;
13669   CORE_ADDR highpc;
13670   struct die_info *child_die;
13671   struct attribute *attr, *call_line, *call_file;
13672   const char *name;
13673   CORE_ADDR baseaddr;
13674   struct block *block;
13675   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13676   std::vector<struct symbol *> template_args;
13677   struct template_symbol *templ_func = NULL;
13678
13679   if (inlined_func)
13680     {
13681       /* If we do not have call site information, we can't show the
13682          caller of this inlined function.  That's too confusing, so
13683          only use the scope for local variables.  */
13684       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13685       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13686       if (call_line == NULL || call_file == NULL)
13687         {
13688           read_lexical_block_scope (die, cu);
13689           return;
13690         }
13691     }
13692
13693   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13694
13695   name = dwarf2_name (die, cu);
13696
13697   /* Ignore functions with missing or empty names.  These are actually
13698      illegal according to the DWARF standard.  */
13699   if (name == NULL)
13700     {
13701       complaint (_("missing name for subprogram DIE at %s"),
13702                  sect_offset_str (die->sect_off));
13703       return;
13704     }
13705
13706   /* Ignore functions with missing or invalid low and high pc attributes.  */
13707   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13708       <= PC_BOUNDS_INVALID)
13709     {
13710       attr = dwarf2_attr (die, DW_AT_external, cu);
13711       if (!attr || !DW_UNSND (attr))
13712         complaint (_("cannot get low and high bounds "
13713                      "for subprogram DIE at %s"),
13714                    sect_offset_str (die->sect_off));
13715       return;
13716     }
13717
13718   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13719   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13720
13721   /* If we have any template arguments, then we must allocate a
13722      different sort of symbol.  */
13723   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13724     {
13725       if (child_die->tag == DW_TAG_template_type_param
13726           || child_die->tag == DW_TAG_template_value_param)
13727         {
13728           templ_func = allocate_template_symbol (objfile);
13729           templ_func->subclass = SYMBOL_TEMPLATE;
13730           break;
13731         }
13732     }
13733
13734   newobj = cu->builder->push_context (0, lowpc);
13735   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13736                              (struct symbol *) templ_func);
13737
13738   /* If there is a location expression for DW_AT_frame_base, record
13739      it.  */
13740   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13741   if (attr)
13742     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13743
13744   /* If there is a location for the static link, record it.  */
13745   newobj->static_link = NULL;
13746   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13747   if (attr)
13748     {
13749       newobj->static_link
13750         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13751       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13752     }
13753
13754   cu->list_in_scope = cu->builder->get_local_symbols ();
13755
13756   if (die->child != NULL)
13757     {
13758       child_die = die->child;
13759       while (child_die && child_die->tag)
13760         {
13761           if (child_die->tag == DW_TAG_template_type_param
13762               || child_die->tag == DW_TAG_template_value_param)
13763             {
13764               struct symbol *arg = new_symbol (child_die, NULL, cu);
13765
13766               if (arg != NULL)
13767                 template_args.push_back (arg);
13768             }
13769           else
13770             process_die (child_die, cu);
13771           child_die = sibling_die (child_die);
13772         }
13773     }
13774
13775   inherit_abstract_dies (die, cu);
13776
13777   /* If we have a DW_AT_specification, we might need to import using
13778      directives from the context of the specification DIE.  See the
13779      comment in determine_prefix.  */
13780   if (cu->language == language_cplus
13781       && dwarf2_attr (die, DW_AT_specification, cu))
13782     {
13783       struct dwarf2_cu *spec_cu = cu;
13784       struct die_info *spec_die = die_specification (die, &spec_cu);
13785
13786       while (spec_die)
13787         {
13788           child_die = spec_die->child;
13789           while (child_die && child_die->tag)
13790             {
13791               if (child_die->tag == DW_TAG_imported_module)
13792                 process_die (child_die, spec_cu);
13793               child_die = sibling_die (child_die);
13794             }
13795
13796           /* In some cases, GCC generates specification DIEs that
13797              themselves contain DW_AT_specification attributes.  */
13798           spec_die = die_specification (spec_die, &spec_cu);
13799         }
13800     }
13801
13802   struct context_stack cstk = cu->builder->pop_context ();
13803   /* Make a block for the local symbols within.  */
13804   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13805                                      cstk.static_link, lowpc, highpc);
13806
13807   /* For C++, set the block's scope.  */
13808   if ((cu->language == language_cplus
13809        || cu->language == language_fortran
13810        || cu->language == language_d
13811        || cu->language == language_rust)
13812       && cu->processing_has_namespace_info)
13813     block_set_scope (block, determine_prefix (die, cu),
13814                      &objfile->objfile_obstack);
13815
13816   /* If we have address ranges, record them.  */
13817   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13818
13819   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13820
13821   /* Attach template arguments to function.  */
13822   if (!template_args.empty ())
13823     {
13824       gdb_assert (templ_func != NULL);
13825
13826       templ_func->n_template_arguments = template_args.size ();
13827       templ_func->template_arguments
13828         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13829                      templ_func->n_template_arguments);
13830       memcpy (templ_func->template_arguments,
13831               template_args.data (),
13832               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13833
13834       /* Make sure that the symtab is set on the new symbols.  Even
13835          though they don't appear in this symtab directly, other parts
13836          of gdb assume that symbols do, and this is reasonably
13837          true.  */
13838       for (struct symbol *sym : template_args)
13839         symbol_set_symtab (sym, symbol_symtab (templ_func));
13840     }
13841
13842   /* In C++, we can have functions nested inside functions (e.g., when
13843      a function declares a class that has methods).  This means that
13844      when we finish processing a function scope, we may need to go
13845      back to building a containing block's symbol lists.  */
13846   *cu->builder->get_local_symbols () = cstk.locals;
13847   cu->builder->set_local_using_directives (cstk.local_using_directives);
13848
13849   /* If we've finished processing a top-level function, subsequent
13850      symbols go in the file symbol list.  */
13851   if (cu->builder->outermost_context_p ())
13852     cu->list_in_scope = cu->builder->get_file_symbols ();
13853 }
13854
13855 /* Process all the DIES contained within a lexical block scope.  Start
13856    a new scope, process the dies, and then close the scope.  */
13857
13858 static void
13859 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13860 {
13861   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13862   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13863   CORE_ADDR lowpc, highpc;
13864   struct die_info *child_die;
13865   CORE_ADDR baseaddr;
13866
13867   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13868
13869   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13870   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13871      as multiple lexical blocks?  Handling children in a sane way would
13872      be nasty.  Might be easier to properly extend generic blocks to
13873      describe ranges.  */
13874   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13875     {
13876     case PC_BOUNDS_NOT_PRESENT:
13877       /* DW_TAG_lexical_block has no attributes, process its children as if
13878          there was no wrapping by that DW_TAG_lexical_block.
13879          GCC does no longer produces such DWARF since GCC r224161.  */
13880       for (child_die = die->child;
13881            child_die != NULL && child_die->tag;
13882            child_die = sibling_die (child_die))
13883         process_die (child_die, cu);
13884       return;
13885     case PC_BOUNDS_INVALID:
13886       return;
13887     }
13888   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13889   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13890
13891   cu->builder->push_context (0, lowpc);
13892   if (die->child != NULL)
13893     {
13894       child_die = die->child;
13895       while (child_die && child_die->tag)
13896         {
13897           process_die (child_die, cu);
13898           child_die = sibling_die (child_die);
13899         }
13900     }
13901   inherit_abstract_dies (die, cu);
13902   struct context_stack cstk = cu->builder->pop_context ();
13903
13904   if (*cu->builder->get_local_symbols () != NULL
13905       || (*cu->builder->get_local_using_directives ()) != NULL)
13906     {
13907       struct block *block
13908         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13909                                      cstk.start_addr, highpc);
13910
13911       /* Note that recording ranges after traversing children, as we
13912          do here, means that recording a parent's ranges entails
13913          walking across all its children's ranges as they appear in
13914          the address map, which is quadratic behavior.
13915
13916          It would be nicer to record the parent's ranges before
13917          traversing its children, simply overriding whatever you find
13918          there.  But since we don't even decide whether to create a
13919          block until after we've traversed its children, that's hard
13920          to do.  */
13921       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13922     }
13923   *cu->builder->get_local_symbols () = cstk.locals;
13924   cu->builder->set_local_using_directives (cstk.local_using_directives);
13925 }
13926
13927 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13928
13929 static void
13930 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13931 {
13932   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13933   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13934   CORE_ADDR pc, baseaddr;
13935   struct attribute *attr;
13936   struct call_site *call_site, call_site_local;
13937   void **slot;
13938   int nparams;
13939   struct die_info *child_die;
13940
13941   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13942
13943   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13944   if (attr == NULL)
13945     {
13946       /* This was a pre-DWARF-5 GNU extension alias
13947          for DW_AT_call_return_pc.  */
13948       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13949     }
13950   if (!attr)
13951     {
13952       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13953                    "DIE %s [in module %s]"),
13954                  sect_offset_str (die->sect_off), objfile_name (objfile));
13955       return;
13956     }
13957   pc = attr_value_as_address (attr) + baseaddr;
13958   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13959
13960   if (cu->call_site_htab == NULL)
13961     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13962                                                NULL, &objfile->objfile_obstack,
13963                                                hashtab_obstack_allocate, NULL);
13964   call_site_local.pc = pc;
13965   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13966   if (*slot != NULL)
13967     {
13968       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13969                    "DIE %s [in module %s]"),
13970                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13971                  objfile_name (objfile));
13972       return;
13973     }
13974
13975   /* Count parameters at the caller.  */
13976
13977   nparams = 0;
13978   for (child_die = die->child; child_die && child_die->tag;
13979        child_die = sibling_die (child_die))
13980     {
13981       if (child_die->tag != DW_TAG_call_site_parameter
13982           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13983         {
13984           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13985                        "DW_TAG_call_site child DIE %s [in module %s]"),
13986                      child_die->tag, sect_offset_str (child_die->sect_off),
13987                      objfile_name (objfile));
13988           continue;
13989         }
13990
13991       nparams++;
13992     }
13993
13994   call_site
13995     = ((struct call_site *)
13996        obstack_alloc (&objfile->objfile_obstack,
13997                       sizeof (*call_site)
13998                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13999   *slot = call_site;
14000   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14001   call_site->pc = pc;
14002
14003   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14004       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14005     {
14006       struct die_info *func_die;
14007
14008       /* Skip also over DW_TAG_inlined_subroutine.  */
14009       for (func_die = die->parent;
14010            func_die && func_die->tag != DW_TAG_subprogram
14011            && func_die->tag != DW_TAG_subroutine_type;
14012            func_die = func_die->parent);
14013
14014       /* DW_AT_call_all_calls is a superset
14015          of DW_AT_call_all_tail_calls.  */
14016       if (func_die
14017           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14018           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14019           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14020           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14021         {
14022           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14023              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14024              both the initial caller containing the real return address PC and
14025              the final callee containing the current PC of a chain of tail
14026              calls do not need to have the tail call list complete.  But any
14027              function candidate for a virtual tail call frame searched via
14028              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14029              determined unambiguously.  */
14030         }
14031       else
14032         {
14033           struct type *func_type = NULL;
14034
14035           if (func_die)
14036             func_type = get_die_type (func_die, cu);
14037           if (func_type != NULL)
14038             {
14039               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14040
14041               /* Enlist this call site to the function.  */
14042               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14043               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14044             }
14045           else
14046             complaint (_("Cannot find function owning DW_TAG_call_site "
14047                          "DIE %s [in module %s]"),
14048                        sect_offset_str (die->sect_off), objfile_name (objfile));
14049         }
14050     }
14051
14052   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14053   if (attr == NULL)
14054     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14055   if (attr == NULL)
14056     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14057   if (attr == NULL)
14058     {
14059       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14060       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14061     }
14062   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14063   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14064     /* Keep NULL DWARF_BLOCK.  */;
14065   else if (attr_form_is_block (attr))
14066     {
14067       struct dwarf2_locexpr_baton *dlbaton;
14068
14069       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14070       dlbaton->data = DW_BLOCK (attr)->data;
14071       dlbaton->size = DW_BLOCK (attr)->size;
14072       dlbaton->per_cu = cu->per_cu;
14073
14074       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14075     }
14076   else if (attr_form_is_ref (attr))
14077     {
14078       struct dwarf2_cu *target_cu = cu;
14079       struct die_info *target_die;
14080
14081       target_die = follow_die_ref (die, attr, &target_cu);
14082       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14083       if (die_is_declaration (target_die, target_cu))
14084         {
14085           const char *target_physname;
14086
14087           /* Prefer the mangled name; otherwise compute the demangled one.  */
14088           target_physname = dw2_linkage_name (target_die, target_cu);
14089           if (target_physname == NULL)
14090             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14091           if (target_physname == NULL)
14092             complaint (_("DW_AT_call_target target DIE has invalid "
14093                          "physname, for referencing DIE %s [in module %s]"),
14094                        sect_offset_str (die->sect_off), objfile_name (objfile));
14095           else
14096             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14097         }
14098       else
14099         {
14100           CORE_ADDR lowpc;
14101
14102           /* DW_AT_entry_pc should be preferred.  */
14103           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14104               <= PC_BOUNDS_INVALID)
14105             complaint (_("DW_AT_call_target target DIE has invalid "
14106                          "low pc, for referencing DIE %s [in module %s]"),
14107                        sect_offset_str (die->sect_off), objfile_name (objfile));
14108           else
14109             {
14110               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14111               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14112             }
14113         }
14114     }
14115   else
14116     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14117                  "block nor reference, for DIE %s [in module %s]"),
14118                sect_offset_str (die->sect_off), objfile_name (objfile));
14119
14120   call_site->per_cu = cu->per_cu;
14121
14122   for (child_die = die->child;
14123        child_die && child_die->tag;
14124        child_die = sibling_die (child_die))
14125     {
14126       struct call_site_parameter *parameter;
14127       struct attribute *loc, *origin;
14128
14129       if (child_die->tag != DW_TAG_call_site_parameter
14130           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14131         {
14132           /* Already printed the complaint above.  */
14133           continue;
14134         }
14135
14136       gdb_assert (call_site->parameter_count < nparams);
14137       parameter = &call_site->parameter[call_site->parameter_count];
14138
14139       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14140          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14141          register is contained in DW_AT_call_value.  */
14142
14143       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14144       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14145       if (origin == NULL)
14146         {
14147           /* This was a pre-DWARF-5 GNU extension alias
14148              for DW_AT_call_parameter.  */
14149           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14150         }
14151       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14152         {
14153           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14154
14155           sect_offset sect_off
14156             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14157           if (!offset_in_cu_p (&cu->header, sect_off))
14158             {
14159               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14160                  binding can be done only inside one CU.  Such referenced DIE
14161                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14162               complaint (_("DW_AT_call_parameter offset is not in CU for "
14163                            "DW_TAG_call_site child DIE %s [in module %s]"),
14164                          sect_offset_str (child_die->sect_off),
14165                          objfile_name (objfile));
14166               continue;
14167             }
14168           parameter->u.param_cu_off
14169             = (cu_offset) (sect_off - cu->header.sect_off);
14170         }
14171       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14172         {
14173           complaint (_("No DW_FORM_block* DW_AT_location for "
14174                        "DW_TAG_call_site child DIE %s [in module %s]"),
14175                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14176           continue;
14177         }
14178       else
14179         {
14180           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14181             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14182           if (parameter->u.dwarf_reg != -1)
14183             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14184           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14185                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14186                                              &parameter->u.fb_offset))
14187             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14188           else
14189             {
14190               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14191                            "for DW_FORM_block* DW_AT_location is supported for "
14192                            "DW_TAG_call_site child DIE %s "
14193                            "[in module %s]"),
14194                          sect_offset_str (child_die->sect_off),
14195                          objfile_name (objfile));
14196               continue;
14197             }
14198         }
14199
14200       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14201       if (attr == NULL)
14202         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14203       if (!attr_form_is_block (attr))
14204         {
14205           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14206                        "DW_TAG_call_site child DIE %s [in module %s]"),
14207                      sect_offset_str (child_die->sect_off),
14208                      objfile_name (objfile));
14209           continue;
14210         }
14211       parameter->value = DW_BLOCK (attr)->data;
14212       parameter->value_size = DW_BLOCK (attr)->size;
14213
14214       /* Parameters are not pre-cleared by memset above.  */
14215       parameter->data_value = NULL;
14216       parameter->data_value_size = 0;
14217       call_site->parameter_count++;
14218
14219       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14220       if (attr == NULL)
14221         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14222       if (attr)
14223         {
14224           if (!attr_form_is_block (attr))
14225             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14226                          "DW_TAG_call_site child DIE %s [in module %s]"),
14227                        sect_offset_str (child_die->sect_off),
14228                        objfile_name (objfile));
14229           else
14230             {
14231               parameter->data_value = DW_BLOCK (attr)->data;
14232               parameter->data_value_size = DW_BLOCK (attr)->size;
14233             }
14234         }
14235     }
14236 }
14237
14238 /* Helper function for read_variable.  If DIE represents a virtual
14239    table, then return the type of the concrete object that is
14240    associated with the virtual table.  Otherwise, return NULL.  */
14241
14242 static struct type *
14243 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14244 {
14245   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14246   if (attr == NULL)
14247     return NULL;
14248
14249   /* Find the type DIE.  */
14250   struct die_info *type_die = NULL;
14251   struct dwarf2_cu *type_cu = cu;
14252
14253   if (attr_form_is_ref (attr))
14254     type_die = follow_die_ref (die, attr, &type_cu);
14255   if (type_die == NULL)
14256     return NULL;
14257
14258   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14259     return NULL;
14260   return die_containing_type (type_die, type_cu);
14261 }
14262
14263 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14264
14265 static void
14266 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14267 {
14268   struct rust_vtable_symbol *storage = NULL;
14269
14270   if (cu->language == language_rust)
14271     {
14272       struct type *containing_type = rust_containing_type (die, cu);
14273
14274       if (containing_type != NULL)
14275         {
14276           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14277
14278           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14279                                     struct rust_vtable_symbol);
14280           initialize_objfile_symbol (storage);
14281           storage->concrete_type = containing_type;
14282           storage->subclass = SYMBOL_RUST_VTABLE;
14283         }
14284     }
14285
14286   new_symbol (die, NULL, cu, storage);
14287 }
14288
14289 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14290    reading .debug_rnglists.
14291    Callback's type should be:
14292     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14293    Return true if the attributes are present and valid, otherwise,
14294    return false.  */
14295
14296 template <typename Callback>
14297 static bool
14298 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14299                          Callback &&callback)
14300 {
14301   struct dwarf2_per_objfile *dwarf2_per_objfile
14302     = cu->per_cu->dwarf2_per_objfile;
14303   struct objfile *objfile = dwarf2_per_objfile->objfile;
14304   bfd *obfd = objfile->obfd;
14305   /* Base address selection entry.  */
14306   CORE_ADDR base;
14307   int found_base;
14308   const gdb_byte *buffer;
14309   CORE_ADDR baseaddr;
14310   bool overflow = false;
14311
14312   found_base = cu->base_known;
14313   base = cu->base_address;
14314
14315   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14316   if (offset >= dwarf2_per_objfile->rnglists.size)
14317     {
14318       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14319                  offset);
14320       return false;
14321     }
14322   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14323
14324   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14325
14326   while (1)
14327     {
14328       /* Initialize it due to a false compiler warning.  */
14329       CORE_ADDR range_beginning = 0, range_end = 0;
14330       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14331                                  + dwarf2_per_objfile->rnglists.size);
14332       unsigned int bytes_read;
14333
14334       if (buffer == buf_end)
14335         {
14336           overflow = true;
14337           break;
14338         }
14339       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14340       switch (rlet)
14341         {
14342         case DW_RLE_end_of_list:
14343           break;
14344         case DW_RLE_base_address:
14345           if (buffer + cu->header.addr_size > buf_end)
14346             {
14347               overflow = true;
14348               break;
14349             }
14350           base = read_address (obfd, buffer, cu, &bytes_read);
14351           found_base = 1;
14352           buffer += bytes_read;
14353           break;
14354         case DW_RLE_start_length:
14355           if (buffer + cu->header.addr_size > buf_end)
14356             {
14357               overflow = true;
14358               break;
14359             }
14360           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14361           buffer += bytes_read;
14362           range_end = (range_beginning
14363                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14364           buffer += bytes_read;
14365           if (buffer > buf_end)
14366             {
14367               overflow = true;
14368               break;
14369             }
14370           break;
14371         case DW_RLE_offset_pair:
14372           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14373           buffer += bytes_read;
14374           if (buffer > buf_end)
14375             {
14376               overflow = true;
14377               break;
14378             }
14379           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14380           buffer += bytes_read;
14381           if (buffer > buf_end)
14382             {
14383               overflow = true;
14384               break;
14385             }
14386           break;
14387         case DW_RLE_start_end:
14388           if (buffer + 2 * cu->header.addr_size > buf_end)
14389             {
14390               overflow = true;
14391               break;
14392             }
14393           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14394           buffer += bytes_read;
14395           range_end = read_address (obfd, buffer, cu, &bytes_read);
14396           buffer += bytes_read;
14397           break;
14398         default:
14399           complaint (_("Invalid .debug_rnglists data (no base address)"));
14400           return false;
14401         }
14402       if (rlet == DW_RLE_end_of_list || overflow)
14403         break;
14404       if (rlet == DW_RLE_base_address)
14405         continue;
14406
14407       if (!found_base)
14408         {
14409           /* We have no valid base address for the ranges
14410              data.  */
14411           complaint (_("Invalid .debug_rnglists data (no base address)"));
14412           return false;
14413         }
14414
14415       if (range_beginning > range_end)
14416         {
14417           /* Inverted range entries are invalid.  */
14418           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14419           return false;
14420         }
14421
14422       /* Empty range entries have no effect.  */
14423       if (range_beginning == range_end)
14424         continue;
14425
14426       range_beginning += base;
14427       range_end += base;
14428
14429       /* A not-uncommon case of bad debug info.
14430          Don't pollute the addrmap with bad data.  */
14431       if (range_beginning + baseaddr == 0
14432           && !dwarf2_per_objfile->has_section_at_zero)
14433         {
14434           complaint (_(".debug_rnglists entry has start address of zero"
14435                        " [in module %s]"), objfile_name (objfile));
14436           continue;
14437         }
14438
14439       callback (range_beginning, range_end);
14440     }
14441
14442   if (overflow)
14443     {
14444       complaint (_("Offset %d is not terminated "
14445                    "for DW_AT_ranges attribute"),
14446                  offset);
14447       return false;
14448     }
14449
14450   return true;
14451 }
14452
14453 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14454    Callback's type should be:
14455     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14456    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14457
14458 template <typename Callback>
14459 static int
14460 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14461                        Callback &&callback)
14462 {
14463   struct dwarf2_per_objfile *dwarf2_per_objfile
14464       = cu->per_cu->dwarf2_per_objfile;
14465   struct objfile *objfile = dwarf2_per_objfile->objfile;
14466   struct comp_unit_head *cu_header = &cu->header;
14467   bfd *obfd = objfile->obfd;
14468   unsigned int addr_size = cu_header->addr_size;
14469   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14470   /* Base address selection entry.  */
14471   CORE_ADDR base;
14472   int found_base;
14473   unsigned int dummy;
14474   const gdb_byte *buffer;
14475   CORE_ADDR baseaddr;
14476
14477   if (cu_header->version >= 5)
14478     return dwarf2_rnglists_process (offset, cu, callback);
14479
14480   found_base = cu->base_known;
14481   base = cu->base_address;
14482
14483   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14484   if (offset >= dwarf2_per_objfile->ranges.size)
14485     {
14486       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14487                  offset);
14488       return 0;
14489     }
14490   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14491
14492   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14493
14494   while (1)
14495     {
14496       CORE_ADDR range_beginning, range_end;
14497
14498       range_beginning = read_address (obfd, buffer, cu, &dummy);
14499       buffer += addr_size;
14500       range_end = read_address (obfd, buffer, cu, &dummy);
14501       buffer += addr_size;
14502       offset += 2 * addr_size;
14503
14504       /* An end of list marker is a pair of zero addresses.  */
14505       if (range_beginning == 0 && range_end == 0)
14506         /* Found the end of list entry.  */
14507         break;
14508
14509       /* Each base address selection entry is a pair of 2 values.
14510          The first is the largest possible address, the second is
14511          the base address.  Check for a base address here.  */
14512       if ((range_beginning & mask) == mask)
14513         {
14514           /* If we found the largest possible address, then we already
14515              have the base address in range_end.  */
14516           base = range_end;
14517           found_base = 1;
14518           continue;
14519         }
14520
14521       if (!found_base)
14522         {
14523           /* We have no valid base address for the ranges
14524              data.  */
14525           complaint (_("Invalid .debug_ranges data (no base address)"));
14526           return 0;
14527         }
14528
14529       if (range_beginning > range_end)
14530         {
14531           /* Inverted range entries are invalid.  */
14532           complaint (_("Invalid .debug_ranges data (inverted range)"));
14533           return 0;
14534         }
14535
14536       /* Empty range entries have no effect.  */
14537       if (range_beginning == range_end)
14538         continue;
14539
14540       range_beginning += base;
14541       range_end += base;
14542
14543       /* A not-uncommon case of bad debug info.
14544          Don't pollute the addrmap with bad data.  */
14545       if (range_beginning + baseaddr == 0
14546           && !dwarf2_per_objfile->has_section_at_zero)
14547         {
14548           complaint (_(".debug_ranges entry has start address of zero"
14549                        " [in module %s]"), objfile_name (objfile));
14550           continue;
14551         }
14552
14553       callback (range_beginning, range_end);
14554     }
14555
14556   return 1;
14557 }
14558
14559 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14560    Return 1 if the attributes are present and valid, otherwise, return 0.
14561    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14562
14563 static int
14564 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14565                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14566                     struct partial_symtab *ranges_pst)
14567 {
14568   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14569   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14570   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14571                                        SECT_OFF_TEXT (objfile));
14572   int low_set = 0;
14573   CORE_ADDR low = 0;
14574   CORE_ADDR high = 0;
14575   int retval;
14576
14577   retval = dwarf2_ranges_process (offset, cu,
14578     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14579     {
14580       if (ranges_pst != NULL)
14581         {
14582           CORE_ADDR lowpc;
14583           CORE_ADDR highpc;
14584
14585           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14586                                                range_beginning + baseaddr)
14587                    - baseaddr);
14588           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14589                                                 range_end + baseaddr)
14590                     - baseaddr);
14591           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14592                              ranges_pst);
14593         }
14594
14595       /* FIXME: This is recording everything as a low-high
14596          segment of consecutive addresses.  We should have a
14597          data structure for discontiguous block ranges
14598          instead.  */
14599       if (! low_set)
14600         {
14601           low = range_beginning;
14602           high = range_end;
14603           low_set = 1;
14604         }
14605       else
14606         {
14607           if (range_beginning < low)
14608             low = range_beginning;
14609           if (range_end > high)
14610             high = range_end;
14611         }
14612     });
14613   if (!retval)
14614     return 0;
14615
14616   if (! low_set)
14617     /* If the first entry is an end-of-list marker, the range
14618        describes an empty scope, i.e. no instructions.  */
14619     return 0;
14620
14621   if (low_return)
14622     *low_return = low;
14623   if (high_return)
14624     *high_return = high;
14625   return 1;
14626 }
14627
14628 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14629    definition for the return value.  *LOWPC and *HIGHPC are set iff
14630    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14631
14632 static enum pc_bounds_kind
14633 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14634                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14635                       struct partial_symtab *pst)
14636 {
14637   struct dwarf2_per_objfile *dwarf2_per_objfile
14638     = cu->per_cu->dwarf2_per_objfile;
14639   struct attribute *attr;
14640   struct attribute *attr_high;
14641   CORE_ADDR low = 0;
14642   CORE_ADDR high = 0;
14643   enum pc_bounds_kind ret;
14644
14645   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14646   if (attr_high)
14647     {
14648       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14649       if (attr)
14650         {
14651           low = attr_value_as_address (attr);
14652           high = attr_value_as_address (attr_high);
14653           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14654             high += low;
14655         }
14656       else
14657         /* Found high w/o low attribute.  */
14658         return PC_BOUNDS_INVALID;
14659
14660       /* Found consecutive range of addresses.  */
14661       ret = PC_BOUNDS_HIGH_LOW;
14662     }
14663   else
14664     {
14665       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14666       if (attr != NULL)
14667         {
14668           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14669              We take advantage of the fact that DW_AT_ranges does not appear
14670              in DW_TAG_compile_unit of DWO files.  */
14671           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14672           unsigned int ranges_offset = (DW_UNSND (attr)
14673                                         + (need_ranges_base
14674                                            ? cu->ranges_base
14675                                            : 0));
14676
14677           /* Value of the DW_AT_ranges attribute is the offset in the
14678              .debug_ranges section.  */
14679           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14680             return PC_BOUNDS_INVALID;
14681           /* Found discontinuous range of addresses.  */
14682           ret = PC_BOUNDS_RANGES;
14683         }
14684       else
14685         return PC_BOUNDS_NOT_PRESENT;
14686     }
14687
14688   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14689   if (high <= low)
14690     return PC_BOUNDS_INVALID;
14691
14692   /* When using the GNU linker, .gnu.linkonce. sections are used to
14693      eliminate duplicate copies of functions and vtables and such.
14694      The linker will arbitrarily choose one and discard the others.
14695      The AT_*_pc values for such functions refer to local labels in
14696      these sections.  If the section from that file was discarded, the
14697      labels are not in the output, so the relocs get a value of 0.
14698      If this is a discarded function, mark the pc bounds as invalid,
14699      so that GDB will ignore it.  */
14700   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14701     return PC_BOUNDS_INVALID;
14702
14703   *lowpc = low;
14704   if (highpc)
14705     *highpc = high;
14706   return ret;
14707 }
14708
14709 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14710    its low and high PC addresses.  Do nothing if these addresses could not
14711    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14712    and HIGHPC to the high address if greater than HIGHPC.  */
14713
14714 static void
14715 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14716                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14717                                  struct dwarf2_cu *cu)
14718 {
14719   CORE_ADDR low, high;
14720   struct die_info *child = die->child;
14721
14722   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14723     {
14724       *lowpc = std::min (*lowpc, low);
14725       *highpc = std::max (*highpc, high);
14726     }
14727
14728   /* If the language does not allow nested subprograms (either inside
14729      subprograms or lexical blocks), we're done.  */
14730   if (cu->language != language_ada)
14731     return;
14732
14733   /* Check all the children of the given DIE.  If it contains nested
14734      subprograms, then check their pc bounds.  Likewise, we need to
14735      check lexical blocks as well, as they may also contain subprogram
14736      definitions.  */
14737   while (child && child->tag)
14738     {
14739       if (child->tag == DW_TAG_subprogram
14740           || child->tag == DW_TAG_lexical_block)
14741         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14742       child = sibling_die (child);
14743     }
14744 }
14745
14746 /* Get the low and high pc's represented by the scope DIE, and store
14747    them in *LOWPC and *HIGHPC.  If the correct values can't be
14748    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14749
14750 static void
14751 get_scope_pc_bounds (struct die_info *die,
14752                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14753                      struct dwarf2_cu *cu)
14754 {
14755   CORE_ADDR best_low = (CORE_ADDR) -1;
14756   CORE_ADDR best_high = (CORE_ADDR) 0;
14757   CORE_ADDR current_low, current_high;
14758
14759   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14760       >= PC_BOUNDS_RANGES)
14761     {
14762       best_low = current_low;
14763       best_high = current_high;
14764     }
14765   else
14766     {
14767       struct die_info *child = die->child;
14768
14769       while (child && child->tag)
14770         {
14771           switch (child->tag) {
14772           case DW_TAG_subprogram:
14773             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14774             break;
14775           case DW_TAG_namespace:
14776           case DW_TAG_module:
14777             /* FIXME: carlton/2004-01-16: Should we do this for
14778                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14779                that current GCC's always emit the DIEs corresponding
14780                to definitions of methods of classes as children of a
14781                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14782                the DIEs giving the declarations, which could be
14783                anywhere).  But I don't see any reason why the
14784                standards says that they have to be there.  */
14785             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14786
14787             if (current_low != ((CORE_ADDR) -1))
14788               {
14789                 best_low = std::min (best_low, current_low);
14790                 best_high = std::max (best_high, current_high);
14791               }
14792             break;
14793           default:
14794             /* Ignore.  */
14795             break;
14796           }
14797
14798           child = sibling_die (child);
14799         }
14800     }
14801
14802   *lowpc = best_low;
14803   *highpc = best_high;
14804 }
14805
14806 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14807    in DIE.  */
14808
14809 static void
14810 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14811                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14812 {
14813   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14814   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14815   struct attribute *attr;
14816   struct attribute *attr_high;
14817
14818   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14819   if (attr_high)
14820     {
14821       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14822       if (attr)
14823         {
14824           CORE_ADDR low = attr_value_as_address (attr);
14825           CORE_ADDR high = attr_value_as_address (attr_high);
14826
14827           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14828             high += low;
14829
14830           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14831           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14832           cu->builder->record_block_range (block, low, high - 1);
14833         }
14834     }
14835
14836   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14837   if (attr)
14838     {
14839       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14840          We take advantage of the fact that DW_AT_ranges does not appear
14841          in DW_TAG_compile_unit of DWO files.  */
14842       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14843
14844       /* The value of the DW_AT_ranges attribute is the offset of the
14845          address range list in the .debug_ranges section.  */
14846       unsigned long offset = (DW_UNSND (attr)
14847                               + (need_ranges_base ? cu->ranges_base : 0));
14848
14849       std::vector<blockrange> blockvec;
14850       dwarf2_ranges_process (offset, cu,
14851         [&] (CORE_ADDR start, CORE_ADDR end)
14852         {
14853           start += baseaddr;
14854           end += baseaddr;
14855           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14856           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14857           cu->builder->record_block_range (block, start, end - 1);
14858           blockvec.emplace_back (start, end);
14859         });
14860
14861       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14862     }
14863 }
14864
14865 /* Check whether the producer field indicates either of GCC < 4.6, or the
14866    Intel C/C++ compiler, and cache the result in CU.  */
14867
14868 static void
14869 check_producer (struct dwarf2_cu *cu)
14870 {
14871   int major, minor;
14872
14873   if (cu->producer == NULL)
14874     {
14875       /* For unknown compilers expect their behavior is DWARF version
14876          compliant.
14877
14878          GCC started to support .debug_types sections by -gdwarf-4 since
14879          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14880          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14881          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14882          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14883     }
14884   else if (producer_is_gcc (cu->producer, &major, &minor))
14885     {
14886       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14887       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14888     }
14889   else if (producer_is_icc (cu->producer, &major, &minor))
14890     cu->producer_is_icc_lt_14 = major < 14;
14891   else
14892     {
14893       /* For other non-GCC compilers, expect their behavior is DWARF version
14894          compliant.  */
14895     }
14896
14897   cu->checked_producer = 1;
14898 }
14899
14900 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14901    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14902    during 4.6.0 experimental.  */
14903
14904 static int
14905 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14906 {
14907   if (!cu->checked_producer)
14908     check_producer (cu);
14909
14910   return cu->producer_is_gxx_lt_4_6;
14911 }
14912
14913 /* Return the default accessibility type if it is not overriden by
14914    DW_AT_accessibility.  */
14915
14916 static enum dwarf_access_attribute
14917 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14918 {
14919   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14920     {
14921       /* The default DWARF 2 accessibility for members is public, the default
14922          accessibility for inheritance is private.  */
14923
14924       if (die->tag != DW_TAG_inheritance)
14925         return DW_ACCESS_public;
14926       else
14927         return DW_ACCESS_private;
14928     }
14929   else
14930     {
14931       /* DWARF 3+ defines the default accessibility a different way.  The same
14932          rules apply now for DW_TAG_inheritance as for the members and it only
14933          depends on the container kind.  */
14934
14935       if (die->parent->tag == DW_TAG_class_type)
14936         return DW_ACCESS_private;
14937       else
14938         return DW_ACCESS_public;
14939     }
14940 }
14941
14942 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14943    offset.  If the attribute was not found return 0, otherwise return
14944    1.  If it was found but could not properly be handled, set *OFFSET
14945    to 0.  */
14946
14947 static int
14948 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14949                              LONGEST *offset)
14950 {
14951   struct attribute *attr;
14952
14953   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14954   if (attr != NULL)
14955     {
14956       *offset = 0;
14957
14958       /* Note that we do not check for a section offset first here.
14959          This is because DW_AT_data_member_location is new in DWARF 4,
14960          so if we see it, we can assume that a constant form is really
14961          a constant and not a section offset.  */
14962       if (attr_form_is_constant (attr))
14963         *offset = dwarf2_get_attr_constant_value (attr, 0);
14964       else if (attr_form_is_section_offset (attr))
14965         dwarf2_complex_location_expr_complaint ();
14966       else if (attr_form_is_block (attr))
14967         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14968       else
14969         dwarf2_complex_location_expr_complaint ();
14970
14971       return 1;
14972     }
14973
14974   return 0;
14975 }
14976
14977 /* Add an aggregate field to the field list.  */
14978
14979 static void
14980 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14981                   struct dwarf2_cu *cu)
14982 {
14983   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14984   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14985   struct nextfield *new_field;
14986   struct attribute *attr;
14987   struct field *fp;
14988   const char *fieldname = "";
14989
14990   if (die->tag == DW_TAG_inheritance)
14991     {
14992       fip->baseclasses.emplace_back ();
14993       new_field = &fip->baseclasses.back ();
14994     }
14995   else
14996     {
14997       fip->fields.emplace_back ();
14998       new_field = &fip->fields.back ();
14999     }
15000
15001   fip->nfields++;
15002
15003   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15004   if (attr)
15005     new_field->accessibility = DW_UNSND (attr);
15006   else
15007     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15008   if (new_field->accessibility != DW_ACCESS_public)
15009     fip->non_public_fields = 1;
15010
15011   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15012   if (attr)
15013     new_field->virtuality = DW_UNSND (attr);
15014   else
15015     new_field->virtuality = DW_VIRTUALITY_none;
15016
15017   fp = &new_field->field;
15018
15019   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15020     {
15021       LONGEST offset;
15022
15023       /* Data member other than a C++ static data member.  */
15024
15025       /* Get type of field.  */
15026       fp->type = die_type (die, cu);
15027
15028       SET_FIELD_BITPOS (*fp, 0);
15029
15030       /* Get bit size of field (zero if none).  */
15031       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15032       if (attr)
15033         {
15034           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15035         }
15036       else
15037         {
15038           FIELD_BITSIZE (*fp) = 0;
15039         }
15040
15041       /* Get bit offset of field.  */
15042       if (handle_data_member_location (die, cu, &offset))
15043         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15044       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15045       if (attr)
15046         {
15047           if (gdbarch_bits_big_endian (gdbarch))
15048             {
15049               /* For big endian bits, the DW_AT_bit_offset gives the
15050                  additional bit offset from the MSB of the containing
15051                  anonymous object to the MSB of the field.  We don't
15052                  have to do anything special since we don't need to
15053                  know the size of the anonymous object.  */
15054               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15055             }
15056           else
15057             {
15058               /* For little endian bits, compute the bit offset to the
15059                  MSB of the anonymous object, subtract off the number of
15060                  bits from the MSB of the field to the MSB of the
15061                  object, and then subtract off the number of bits of
15062                  the field itself.  The result is the bit offset of
15063                  the LSB of the field.  */
15064               int anonymous_size;
15065               int bit_offset = DW_UNSND (attr);
15066
15067               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15068               if (attr)
15069                 {
15070                   /* The size of the anonymous object containing
15071                      the bit field is explicit, so use the
15072                      indicated size (in bytes).  */
15073                   anonymous_size = DW_UNSND (attr);
15074                 }
15075               else
15076                 {
15077                   /* The size of the anonymous object containing
15078                      the bit field must be inferred from the type
15079                      attribute of the data member containing the
15080                      bit field.  */
15081                   anonymous_size = TYPE_LENGTH (fp->type);
15082                 }
15083               SET_FIELD_BITPOS (*fp,
15084                                 (FIELD_BITPOS (*fp)
15085                                  + anonymous_size * bits_per_byte
15086                                  - bit_offset - FIELD_BITSIZE (*fp)));
15087             }
15088         }
15089       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15090       if (attr != NULL)
15091         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15092                                 + dwarf2_get_attr_constant_value (attr, 0)));
15093
15094       /* Get name of field.  */
15095       fieldname = dwarf2_name (die, cu);
15096       if (fieldname == NULL)
15097         fieldname = "";
15098
15099       /* The name is already allocated along with this objfile, so we don't
15100          need to duplicate it for the type.  */
15101       fp->name = fieldname;
15102
15103       /* Change accessibility for artificial fields (e.g. virtual table
15104          pointer or virtual base class pointer) to private.  */
15105       if (dwarf2_attr (die, DW_AT_artificial, cu))
15106         {
15107           FIELD_ARTIFICIAL (*fp) = 1;
15108           new_field->accessibility = DW_ACCESS_private;
15109           fip->non_public_fields = 1;
15110         }
15111     }
15112   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15113     {
15114       /* C++ static member.  */
15115
15116       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15117          is a declaration, but all versions of G++ as of this writing
15118          (so through at least 3.2.1) incorrectly generate
15119          DW_TAG_variable tags.  */
15120
15121       const char *physname;
15122
15123       /* Get name of field.  */
15124       fieldname = dwarf2_name (die, cu);
15125       if (fieldname == NULL)
15126         return;
15127
15128       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15129       if (attr
15130           /* Only create a symbol if this is an external value.
15131              new_symbol checks this and puts the value in the global symbol
15132              table, which we want.  If it is not external, new_symbol
15133              will try to put the value in cu->list_in_scope which is wrong.  */
15134           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15135         {
15136           /* A static const member, not much different than an enum as far as
15137              we're concerned, except that we can support more types.  */
15138           new_symbol (die, NULL, cu);
15139         }
15140
15141       /* Get physical name.  */
15142       physname = dwarf2_physname (fieldname, die, cu);
15143
15144       /* The name is already allocated along with this objfile, so we don't
15145          need to duplicate it for the type.  */
15146       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15147       FIELD_TYPE (*fp) = die_type (die, cu);
15148       FIELD_NAME (*fp) = fieldname;
15149     }
15150   else if (die->tag == DW_TAG_inheritance)
15151     {
15152       LONGEST offset;
15153
15154       /* C++ base class field.  */
15155       if (handle_data_member_location (die, cu, &offset))
15156         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15157       FIELD_BITSIZE (*fp) = 0;
15158       FIELD_TYPE (*fp) = die_type (die, cu);
15159       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15160     }
15161   else if (die->tag == DW_TAG_variant_part)
15162     {
15163       /* process_structure_scope will treat this DIE as a union.  */
15164       process_structure_scope (die, cu);
15165
15166       /* The variant part is relative to the start of the enclosing
15167          structure.  */
15168       SET_FIELD_BITPOS (*fp, 0);
15169       fp->type = get_die_type (die, cu);
15170       fp->artificial = 1;
15171       fp->name = "<<variant>>";
15172
15173       /* Normally a DW_TAG_variant_part won't have a size, but our
15174          representation requires one, so set it to the maximum of the
15175          child sizes.  */
15176       if (TYPE_LENGTH (fp->type) == 0)
15177         {
15178           unsigned max = 0;
15179           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15180             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15181               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15182           TYPE_LENGTH (fp->type) = max;
15183         }
15184     }
15185   else
15186     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15187 }
15188
15189 /* Can the type given by DIE define another type?  */
15190
15191 static bool
15192 type_can_define_types (const struct die_info *die)
15193 {
15194   switch (die->tag)
15195     {
15196     case DW_TAG_typedef:
15197     case DW_TAG_class_type:
15198     case DW_TAG_structure_type:
15199     case DW_TAG_union_type:
15200     case DW_TAG_enumeration_type:
15201       return true;
15202
15203     default:
15204       return false;
15205     }
15206 }
15207
15208 /* Add a type definition defined in the scope of the FIP's class.  */
15209
15210 static void
15211 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15212                       struct dwarf2_cu *cu)
15213 {
15214   struct decl_field fp;
15215   memset (&fp, 0, sizeof (fp));
15216
15217   gdb_assert (type_can_define_types (die));
15218
15219   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15220   fp.name = dwarf2_name (die, cu);
15221   fp.type = read_type_die (die, cu);
15222
15223   /* Save accessibility.  */
15224   enum dwarf_access_attribute accessibility;
15225   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15226   if (attr != NULL)
15227     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15228   else
15229     accessibility = dwarf2_default_access_attribute (die, cu);
15230   switch (accessibility)
15231     {
15232     case DW_ACCESS_public:
15233       /* The assumed value if neither private nor protected.  */
15234       break;
15235     case DW_ACCESS_private:
15236       fp.is_private = 1;
15237       break;
15238     case DW_ACCESS_protected:
15239       fp.is_protected = 1;
15240       break;
15241     default:
15242       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15243     }
15244
15245   if (die->tag == DW_TAG_typedef)
15246     fip->typedef_field_list.push_back (fp);
15247   else
15248     fip->nested_types_list.push_back (fp);
15249 }
15250
15251 /* Create the vector of fields, and attach it to the type.  */
15252
15253 static void
15254 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15255                               struct dwarf2_cu *cu)
15256 {
15257   int nfields = fip->nfields;
15258
15259   /* Record the field count, allocate space for the array of fields,
15260      and create blank accessibility bitfields if necessary.  */
15261   TYPE_NFIELDS (type) = nfields;
15262   TYPE_FIELDS (type) = (struct field *)
15263     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15264
15265   if (fip->non_public_fields && cu->language != language_ada)
15266     {
15267       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15268
15269       TYPE_FIELD_PRIVATE_BITS (type) =
15270         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15271       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15272
15273       TYPE_FIELD_PROTECTED_BITS (type) =
15274         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15275       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15276
15277       TYPE_FIELD_IGNORE_BITS (type) =
15278         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15279       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15280     }
15281
15282   /* If the type has baseclasses, allocate and clear a bit vector for
15283      TYPE_FIELD_VIRTUAL_BITS.  */
15284   if (!fip->baseclasses.empty () && cu->language != language_ada)
15285     {
15286       int num_bytes = B_BYTES (fip->baseclasses.size ());
15287       unsigned char *pointer;
15288
15289       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15290       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15291       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15292       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15293       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15294     }
15295
15296   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15297     {
15298       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15299
15300       for (int index = 0; index < nfields; ++index)
15301         {
15302           struct nextfield &field = fip->fields[index];
15303
15304           if (field.variant.is_discriminant)
15305             di->discriminant_index = index;
15306           else if (field.variant.default_branch)
15307             di->default_index = index;
15308           else
15309             di->discriminants[index] = field.variant.discriminant_value;
15310         }
15311     }
15312
15313   /* Copy the saved-up fields into the field vector.  */
15314   for (int i = 0; i < nfields; ++i)
15315     {
15316       struct nextfield &field
15317         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15318            : fip->fields[i - fip->baseclasses.size ()]);
15319
15320       TYPE_FIELD (type, i) = field.field;
15321       switch (field.accessibility)
15322         {
15323         case DW_ACCESS_private:
15324           if (cu->language != language_ada)
15325             SET_TYPE_FIELD_PRIVATE (type, i);
15326           break;
15327
15328         case DW_ACCESS_protected:
15329           if (cu->language != language_ada)
15330             SET_TYPE_FIELD_PROTECTED (type, i);
15331           break;
15332
15333         case DW_ACCESS_public:
15334           break;
15335
15336         default:
15337           /* Unknown accessibility.  Complain and treat it as public.  */
15338           {
15339             complaint (_("unsupported accessibility %d"),
15340                        field.accessibility);
15341           }
15342           break;
15343         }
15344       if (i < fip->baseclasses.size ())
15345         {
15346           switch (field.virtuality)
15347             {
15348             case DW_VIRTUALITY_virtual:
15349             case DW_VIRTUALITY_pure_virtual:
15350               if (cu->language == language_ada)
15351                 error (_("unexpected virtuality in component of Ada type"));
15352               SET_TYPE_FIELD_VIRTUAL (type, i);
15353               break;
15354             }
15355         }
15356     }
15357 }
15358
15359 /* Return true if this member function is a constructor, false
15360    otherwise.  */
15361
15362 static int
15363 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15364 {
15365   const char *fieldname;
15366   const char *type_name;
15367   int len;
15368
15369   if (die->parent == NULL)
15370     return 0;
15371
15372   if (die->parent->tag != DW_TAG_structure_type
15373       && die->parent->tag != DW_TAG_union_type
15374       && die->parent->tag != DW_TAG_class_type)
15375     return 0;
15376
15377   fieldname = dwarf2_name (die, cu);
15378   type_name = dwarf2_name (die->parent, cu);
15379   if (fieldname == NULL || type_name == NULL)
15380     return 0;
15381
15382   len = strlen (fieldname);
15383   return (strncmp (fieldname, type_name, len) == 0
15384           && (type_name[len] == '\0' || type_name[len] == '<'));
15385 }
15386
15387 /* Add a member function to the proper fieldlist.  */
15388
15389 static void
15390 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15391                       struct type *type, struct dwarf2_cu *cu)
15392 {
15393   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15394   struct attribute *attr;
15395   int i;
15396   struct fnfieldlist *flp = nullptr;
15397   struct fn_field *fnp;
15398   const char *fieldname;
15399   struct type *this_type;
15400   enum dwarf_access_attribute accessibility;
15401
15402   if (cu->language == language_ada)
15403     error (_("unexpected member function in Ada type"));
15404
15405   /* Get name of member function.  */
15406   fieldname = dwarf2_name (die, cu);
15407   if (fieldname == NULL)
15408     return;
15409
15410   /* Look up member function name in fieldlist.  */
15411   for (i = 0; i < fip->fnfieldlists.size (); i++)
15412     {
15413       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15414         {
15415           flp = &fip->fnfieldlists[i];
15416           break;
15417         }
15418     }
15419
15420   /* Create a new fnfieldlist if necessary.  */
15421   if (flp == nullptr)
15422     {
15423       fip->fnfieldlists.emplace_back ();
15424       flp = &fip->fnfieldlists.back ();
15425       flp->name = fieldname;
15426       i = fip->fnfieldlists.size () - 1;
15427     }
15428
15429   /* Create a new member function field and add it to the vector of
15430      fnfieldlists.  */
15431   flp->fnfields.emplace_back ();
15432   fnp = &flp->fnfields.back ();
15433
15434   /* Delay processing of the physname until later.  */
15435   if (cu->language == language_cplus)
15436     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15437                         die, cu);
15438   else
15439     {
15440       const char *physname = dwarf2_physname (fieldname, die, cu);
15441       fnp->physname = physname ? physname : "";
15442     }
15443
15444   fnp->type = alloc_type (objfile);
15445   this_type = read_type_die (die, cu);
15446   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15447     {
15448       int nparams = TYPE_NFIELDS (this_type);
15449
15450       /* TYPE is the domain of this method, and THIS_TYPE is the type
15451            of the method itself (TYPE_CODE_METHOD).  */
15452       smash_to_method_type (fnp->type, type,
15453                             TYPE_TARGET_TYPE (this_type),
15454                             TYPE_FIELDS (this_type),
15455                             TYPE_NFIELDS (this_type),
15456                             TYPE_VARARGS (this_type));
15457
15458       /* Handle static member functions.
15459          Dwarf2 has no clean way to discern C++ static and non-static
15460          member functions.  G++ helps GDB by marking the first
15461          parameter for non-static member functions (which is the this
15462          pointer) as artificial.  We obtain this information from
15463          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15464       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15465         fnp->voffset = VOFFSET_STATIC;
15466     }
15467   else
15468     complaint (_("member function type missing for '%s'"),
15469                dwarf2_full_name (fieldname, die, cu));
15470
15471   /* Get fcontext from DW_AT_containing_type if present.  */
15472   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15473     fnp->fcontext = die_containing_type (die, cu);
15474
15475   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15476      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15477
15478   /* Get accessibility.  */
15479   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15480   if (attr)
15481     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15482   else
15483     accessibility = dwarf2_default_access_attribute (die, cu);
15484   switch (accessibility)
15485     {
15486     case DW_ACCESS_private:
15487       fnp->is_private = 1;
15488       break;
15489     case DW_ACCESS_protected:
15490       fnp->is_protected = 1;
15491       break;
15492     }
15493
15494   /* Check for artificial methods.  */
15495   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15496   if (attr && DW_UNSND (attr) != 0)
15497     fnp->is_artificial = 1;
15498
15499   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15500
15501   /* Get index in virtual function table if it is a virtual member
15502      function.  For older versions of GCC, this is an offset in the
15503      appropriate virtual table, as specified by DW_AT_containing_type.
15504      For everyone else, it is an expression to be evaluated relative
15505      to the object address.  */
15506
15507   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15508   if (attr)
15509     {
15510       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15511         {
15512           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15513             {
15514               /* Old-style GCC.  */
15515               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15516             }
15517           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15518                    || (DW_BLOCK (attr)->size > 1
15519                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15520                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15521             {
15522               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15523               if ((fnp->voffset % cu->header.addr_size) != 0)
15524                 dwarf2_complex_location_expr_complaint ();
15525               else
15526                 fnp->voffset /= cu->header.addr_size;
15527               fnp->voffset += 2;
15528             }
15529           else
15530             dwarf2_complex_location_expr_complaint ();
15531
15532           if (!fnp->fcontext)
15533             {
15534               /* If there is no `this' field and no DW_AT_containing_type,
15535                  we cannot actually find a base class context for the
15536                  vtable!  */
15537               if (TYPE_NFIELDS (this_type) == 0
15538                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15539                 {
15540                   complaint (_("cannot determine context for virtual member "
15541                                "function \"%s\" (offset %s)"),
15542                              fieldname, sect_offset_str (die->sect_off));
15543                 }
15544               else
15545                 {
15546                   fnp->fcontext
15547                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15548                 }
15549             }
15550         }
15551       else if (attr_form_is_section_offset (attr))
15552         {
15553           dwarf2_complex_location_expr_complaint ();
15554         }
15555       else
15556         {
15557           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15558                                                  fieldname);
15559         }
15560     }
15561   else
15562     {
15563       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15564       if (attr && DW_UNSND (attr))
15565         {
15566           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15567           complaint (_("Member function \"%s\" (offset %s) is virtual "
15568                        "but the vtable offset is not specified"),
15569                      fieldname, sect_offset_str (die->sect_off));
15570           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15571           TYPE_CPLUS_DYNAMIC (type) = 1;
15572         }
15573     }
15574 }
15575
15576 /* Create the vector of member function fields, and attach it to the type.  */
15577
15578 static void
15579 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15580                                  struct dwarf2_cu *cu)
15581 {
15582   if (cu->language == language_ada)
15583     error (_("unexpected member functions in Ada type"));
15584
15585   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15586   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15587     TYPE_ALLOC (type,
15588                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15589
15590   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15591     {
15592       struct fnfieldlist &nf = fip->fnfieldlists[i];
15593       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15594
15595       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15596       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15597       fn_flp->fn_fields = (struct fn_field *)
15598         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15599
15600       for (int k = 0; k < nf.fnfields.size (); ++k)
15601         fn_flp->fn_fields[k] = nf.fnfields[k];
15602     }
15603
15604   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15605 }
15606
15607 /* Returns non-zero if NAME is the name of a vtable member in CU's
15608    language, zero otherwise.  */
15609 static int
15610 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15611 {
15612   static const char vptr[] = "_vptr";
15613
15614   /* Look for the C++ form of the vtable.  */
15615   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15616     return 1;
15617
15618   return 0;
15619 }
15620
15621 /* GCC outputs unnamed structures that are really pointers to member
15622    functions, with the ABI-specified layout.  If TYPE describes
15623    such a structure, smash it into a member function type.
15624
15625    GCC shouldn't do this; it should just output pointer to member DIEs.
15626    This is GCC PR debug/28767.  */
15627
15628 static void
15629 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15630 {
15631   struct type *pfn_type, *self_type, *new_type;
15632
15633   /* Check for a structure with no name and two children.  */
15634   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15635     return;
15636
15637   /* Check for __pfn and __delta members.  */
15638   if (TYPE_FIELD_NAME (type, 0) == NULL
15639       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15640       || TYPE_FIELD_NAME (type, 1) == NULL
15641       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15642     return;
15643
15644   /* Find the type of the method.  */
15645   pfn_type = TYPE_FIELD_TYPE (type, 0);
15646   if (pfn_type == NULL
15647       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15648       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15649     return;
15650
15651   /* Look for the "this" argument.  */
15652   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15653   if (TYPE_NFIELDS (pfn_type) == 0
15654       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15655       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15656     return;
15657
15658   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15659   new_type = alloc_type (objfile);
15660   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15661                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15662                         TYPE_VARARGS (pfn_type));
15663   smash_to_methodptr_type (type, new_type);
15664 }
15665
15666 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15667    appropriate error checking and issuing complaints if there is a
15668    problem.  */
15669
15670 static ULONGEST
15671 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15672 {
15673   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15674
15675   if (attr == nullptr)
15676     return 0;
15677
15678   if (!attr_form_is_constant (attr))
15679     {
15680       complaint (_("DW_AT_alignment must have constant form"
15681                    " - DIE at %s [in module %s]"),
15682                  sect_offset_str (die->sect_off),
15683                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15684       return 0;
15685     }
15686
15687   ULONGEST align;
15688   if (attr->form == DW_FORM_sdata)
15689     {
15690       LONGEST val = DW_SND (attr);
15691       if (val < 0)
15692         {
15693           complaint (_("DW_AT_alignment value must not be negative"
15694                        " - DIE at %s [in module %s]"),
15695                      sect_offset_str (die->sect_off),
15696                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15697           return 0;
15698         }
15699       align = val;
15700     }
15701   else
15702     align = DW_UNSND (attr);
15703
15704   if (align == 0)
15705     {
15706       complaint (_("DW_AT_alignment value must not be zero"
15707                    " - DIE at %s [in module %s]"),
15708                  sect_offset_str (die->sect_off),
15709                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15710       return 0;
15711     }
15712   if ((align & (align - 1)) != 0)
15713     {
15714       complaint (_("DW_AT_alignment value must be a power of 2"
15715                    " - DIE at %s [in module %s]"),
15716                  sect_offset_str (die->sect_off),
15717                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15718       return 0;
15719     }
15720
15721   return align;
15722 }
15723
15724 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15725    the alignment for TYPE.  */
15726
15727 static void
15728 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15729                      struct type *type)
15730 {
15731   if (!set_type_align (type, get_alignment (cu, die)))
15732     complaint (_("DW_AT_alignment value too large"
15733                  " - DIE at %s [in module %s]"),
15734                sect_offset_str (die->sect_off),
15735                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15736 }
15737
15738 /* Called when we find the DIE that starts a structure or union scope
15739    (definition) to create a type for the structure or union.  Fill in
15740    the type's name and general properties; the members will not be
15741    processed until process_structure_scope.  A symbol table entry for
15742    the type will also not be done until process_structure_scope (assuming
15743    the type has a name).
15744
15745    NOTE: we need to call these functions regardless of whether or not the
15746    DIE has a DW_AT_name attribute, since it might be an anonymous
15747    structure or union.  This gets the type entered into our set of
15748    user defined types.  */
15749
15750 static struct type *
15751 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15752 {
15753   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15754   struct type *type;
15755   struct attribute *attr;
15756   const char *name;
15757
15758   /* If the definition of this type lives in .debug_types, read that type.
15759      Don't follow DW_AT_specification though, that will take us back up
15760      the chain and we want to go down.  */
15761   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15762   if (attr)
15763     {
15764       type = get_DW_AT_signature_type (die, attr, cu);
15765
15766       /* The type's CU may not be the same as CU.
15767          Ensure TYPE is recorded with CU in die_type_hash.  */
15768       return set_die_type (die, type, cu);
15769     }
15770
15771   type = alloc_type (objfile);
15772   INIT_CPLUS_SPECIFIC (type);
15773
15774   name = dwarf2_name (die, cu);
15775   if (name != NULL)
15776     {
15777       if (cu->language == language_cplus
15778           || cu->language == language_d
15779           || cu->language == language_rust)
15780         {
15781           const char *full_name = dwarf2_full_name (name, die, cu);
15782
15783           /* dwarf2_full_name might have already finished building the DIE's
15784              type.  If so, there is no need to continue.  */
15785           if (get_die_type (die, cu) != NULL)
15786             return get_die_type (die, cu);
15787
15788           TYPE_NAME (type) = full_name;
15789         }
15790       else
15791         {
15792           /* The name is already allocated along with this objfile, so
15793              we don't need to duplicate it for the type.  */
15794           TYPE_NAME (type) = name;
15795         }
15796     }
15797
15798   if (die->tag == DW_TAG_structure_type)
15799     {
15800       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15801     }
15802   else if (die->tag == DW_TAG_union_type)
15803     {
15804       TYPE_CODE (type) = TYPE_CODE_UNION;
15805     }
15806   else if (die->tag == DW_TAG_variant_part)
15807     {
15808       TYPE_CODE (type) = TYPE_CODE_UNION;
15809       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15810     }
15811   else
15812     {
15813       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15814     }
15815
15816   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15817     TYPE_DECLARED_CLASS (type) = 1;
15818
15819   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15820   if (attr)
15821     {
15822       if (attr_form_is_constant (attr))
15823         TYPE_LENGTH (type) = DW_UNSND (attr);
15824       else
15825         {
15826           /* For the moment, dynamic type sizes are not supported
15827              by GDB's struct type.  The actual size is determined
15828              on-demand when resolving the type of a given object,
15829              so set the type's length to zero for now.  Otherwise,
15830              we record an expression as the length, and that expression
15831              could lead to a very large value, which could eventually
15832              lead to us trying to allocate that much memory when creating
15833              a value of that type.  */
15834           TYPE_LENGTH (type) = 0;
15835         }
15836     }
15837   else
15838     {
15839       TYPE_LENGTH (type) = 0;
15840     }
15841
15842   maybe_set_alignment (cu, die, type);
15843
15844   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15845     {
15846       /* ICC<14 does not output the required DW_AT_declaration on
15847          incomplete types, but gives them a size of zero.  */
15848       TYPE_STUB (type) = 1;
15849     }
15850   else
15851     TYPE_STUB_SUPPORTED (type) = 1;
15852
15853   if (die_is_declaration (die, cu))
15854     TYPE_STUB (type) = 1;
15855   else if (attr == NULL && die->child == NULL
15856            && producer_is_realview (cu->producer))
15857     /* RealView does not output the required DW_AT_declaration
15858        on incomplete types.  */
15859     TYPE_STUB (type) = 1;
15860
15861   /* We need to add the type field to the die immediately so we don't
15862      infinitely recurse when dealing with pointers to the structure
15863      type within the structure itself.  */
15864   set_die_type (die, type, cu);
15865
15866   /* set_die_type should be already done.  */
15867   set_descriptive_type (type, die, cu);
15868
15869   return type;
15870 }
15871
15872 /* A helper for process_structure_scope that handles a single member
15873    DIE.  */
15874
15875 static void
15876 handle_struct_member_die (struct die_info *child_die, struct type *type,
15877                           struct field_info *fi,
15878                           std::vector<struct symbol *> *template_args,
15879                           struct dwarf2_cu *cu)
15880 {
15881   if (child_die->tag == DW_TAG_member
15882       || child_die->tag == DW_TAG_variable
15883       || child_die->tag == DW_TAG_variant_part)
15884     {
15885       /* NOTE: carlton/2002-11-05: A C++ static data member
15886          should be a DW_TAG_member that is a declaration, but
15887          all versions of G++ as of this writing (so through at
15888          least 3.2.1) incorrectly generate DW_TAG_variable
15889          tags for them instead.  */
15890       dwarf2_add_field (fi, child_die, cu);
15891     }
15892   else if (child_die->tag == DW_TAG_subprogram)
15893     {
15894       /* Rust doesn't have member functions in the C++ sense.
15895          However, it does emit ordinary functions as children
15896          of a struct DIE.  */
15897       if (cu->language == language_rust)
15898         read_func_scope (child_die, cu);
15899       else
15900         {
15901           /* C++ member function.  */
15902           dwarf2_add_member_fn (fi, child_die, type, cu);
15903         }
15904     }
15905   else if (child_die->tag == DW_TAG_inheritance)
15906     {
15907       /* C++ base class field.  */
15908       dwarf2_add_field (fi, child_die, cu);
15909     }
15910   else if (type_can_define_types (child_die))
15911     dwarf2_add_type_defn (fi, child_die, cu);
15912   else if (child_die->tag == DW_TAG_template_type_param
15913            || child_die->tag == DW_TAG_template_value_param)
15914     {
15915       struct symbol *arg = new_symbol (child_die, NULL, cu);
15916
15917       if (arg != NULL)
15918         template_args->push_back (arg);
15919     }
15920   else if (child_die->tag == DW_TAG_variant)
15921     {
15922       /* In a variant we want to get the discriminant and also add a
15923          field for our sole member child.  */
15924       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15925
15926       for (struct die_info *variant_child = child_die->child;
15927            variant_child != NULL;
15928            variant_child = sibling_die (variant_child))
15929         {
15930           if (variant_child->tag == DW_TAG_member)
15931             {
15932               handle_struct_member_die (variant_child, type, fi,
15933                                         template_args, cu);
15934               /* Only handle the one.  */
15935               break;
15936             }
15937         }
15938
15939       /* We don't handle this but we might as well report it if we see
15940          it.  */
15941       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15942           complaint (_("DW_AT_discr_list is not supported yet"
15943                        " - DIE at %s [in module %s]"),
15944                      sect_offset_str (child_die->sect_off),
15945                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15946
15947       /* The first field was just added, so we can stash the
15948          discriminant there.  */
15949       gdb_assert (!fi->fields.empty ());
15950       if (discr == NULL)
15951         fi->fields.back ().variant.default_branch = true;
15952       else
15953         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15954     }
15955 }
15956
15957 /* Finish creating a structure or union type, including filling in
15958    its members and creating a symbol for it.  */
15959
15960 static void
15961 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15962 {
15963   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15964   struct die_info *child_die;
15965   struct type *type;
15966
15967   type = get_die_type (die, cu);
15968   if (type == NULL)
15969     type = read_structure_type (die, cu);
15970
15971   /* When reading a DW_TAG_variant_part, we need to notice when we
15972      read the discriminant member, so we can record it later in the
15973      discriminant_info.  */
15974   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15975   sect_offset discr_offset;
15976   bool has_template_parameters = false;
15977
15978   if (is_variant_part)
15979     {
15980       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15981       if (discr == NULL)
15982         {
15983           /* Maybe it's a univariant form, an extension we support.
15984              In this case arrange not to check the offset.  */
15985           is_variant_part = false;
15986         }
15987       else if (attr_form_is_ref (discr))
15988         {
15989           struct dwarf2_cu *target_cu = cu;
15990           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15991
15992           discr_offset = target_die->sect_off;
15993         }
15994       else
15995         {
15996           complaint (_("DW_AT_discr does not have DIE reference form"
15997                        " - DIE at %s [in module %s]"),
15998                      sect_offset_str (die->sect_off),
15999                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16000           is_variant_part = false;
16001         }
16002     }
16003
16004   if (die->child != NULL && ! die_is_declaration (die, cu))
16005     {
16006       struct field_info fi;
16007       std::vector<struct symbol *> template_args;
16008
16009       child_die = die->child;
16010
16011       while (child_die && child_die->tag)
16012         {
16013           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16014
16015           if (is_variant_part && discr_offset == child_die->sect_off)
16016             fi.fields.back ().variant.is_discriminant = true;
16017
16018           child_die = sibling_die (child_die);
16019         }
16020
16021       /* Attach template arguments to type.  */
16022       if (!template_args.empty ())
16023         {
16024           has_template_parameters = true;
16025           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16026           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16027           TYPE_TEMPLATE_ARGUMENTS (type)
16028             = XOBNEWVEC (&objfile->objfile_obstack,
16029                          struct symbol *,
16030                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16031           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16032                   template_args.data (),
16033                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16034                    * sizeof (struct symbol *)));
16035         }
16036
16037       /* Attach fields and member functions to the type.  */
16038       if (fi.nfields)
16039         dwarf2_attach_fields_to_type (&fi, type, cu);
16040       if (!fi.fnfieldlists.empty ())
16041         {
16042           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16043
16044           /* Get the type which refers to the base class (possibly this
16045              class itself) which contains the vtable pointer for the current
16046              class from the DW_AT_containing_type attribute.  This use of
16047              DW_AT_containing_type is a GNU extension.  */
16048
16049           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16050             {
16051               struct type *t = die_containing_type (die, cu);
16052
16053               set_type_vptr_basetype (type, t);
16054               if (type == t)
16055                 {
16056                   int i;
16057
16058                   /* Our own class provides vtbl ptr.  */
16059                   for (i = TYPE_NFIELDS (t) - 1;
16060                        i >= TYPE_N_BASECLASSES (t);
16061                        --i)
16062                     {
16063                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16064
16065                       if (is_vtable_name (fieldname, cu))
16066                         {
16067                           set_type_vptr_fieldno (type, i);
16068                           break;
16069                         }
16070                     }
16071
16072                   /* Complain if virtual function table field not found.  */
16073                   if (i < TYPE_N_BASECLASSES (t))
16074                     complaint (_("virtual function table pointer "
16075                                  "not found when defining class '%s'"),
16076                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16077                 }
16078               else
16079                 {
16080                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16081                 }
16082             }
16083           else if (cu->producer
16084                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16085             {
16086               /* The IBM XLC compiler does not provide direct indication
16087                  of the containing type, but the vtable pointer is
16088                  always named __vfp.  */
16089
16090               int i;
16091
16092               for (i = TYPE_NFIELDS (type) - 1;
16093                    i >= TYPE_N_BASECLASSES (type);
16094                    --i)
16095                 {
16096                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16097                     {
16098                       set_type_vptr_fieldno (type, i);
16099                       set_type_vptr_basetype (type, type);
16100                       break;
16101                     }
16102                 }
16103             }
16104         }
16105
16106       /* Copy fi.typedef_field_list linked list elements content into the
16107          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16108       if (!fi.typedef_field_list.empty ())
16109         {
16110           int count = fi.typedef_field_list.size ();
16111
16112           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16113           TYPE_TYPEDEF_FIELD_ARRAY (type)
16114             = ((struct decl_field *)
16115                TYPE_ALLOC (type,
16116                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16117           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16118
16119           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16120             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16121         }
16122
16123       /* Copy fi.nested_types_list linked list elements content into the
16124          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16125       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16126         {
16127           int count = fi.nested_types_list.size ();
16128
16129           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16130           TYPE_NESTED_TYPES_ARRAY (type)
16131             = ((struct decl_field *)
16132                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16133           TYPE_NESTED_TYPES_COUNT (type) = count;
16134
16135           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16136             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16137         }
16138     }
16139
16140   quirk_gcc_member_function_pointer (type, objfile);
16141   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16142     cu->rust_unions.push_back (type);
16143
16144   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16145      snapshots) has been known to create a die giving a declaration
16146      for a class that has, as a child, a die giving a definition for a
16147      nested class.  So we have to process our children even if the
16148      current die is a declaration.  Normally, of course, a declaration
16149      won't have any children at all.  */
16150
16151   child_die = die->child;
16152
16153   while (child_die != NULL && child_die->tag)
16154     {
16155       if (child_die->tag == DW_TAG_member
16156           || child_die->tag == DW_TAG_variable
16157           || child_die->tag == DW_TAG_inheritance
16158           || child_die->tag == DW_TAG_template_value_param
16159           || child_die->tag == DW_TAG_template_type_param)
16160         {
16161           /* Do nothing.  */
16162         }
16163       else
16164         process_die (child_die, cu);
16165
16166       child_die = sibling_die (child_die);
16167     }
16168
16169   /* Do not consider external references.  According to the DWARF standard,
16170      these DIEs are identified by the fact that they have no byte_size
16171      attribute, and a declaration attribute.  */
16172   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16173       || !die_is_declaration (die, cu))
16174     {
16175       struct symbol *sym = new_symbol (die, type, cu);
16176
16177       if (has_template_parameters)
16178         {
16179           /* Make sure that the symtab is set on the new symbols.
16180              Even though they don't appear in this symtab directly,
16181              other parts of gdb assume that symbols do, and this is
16182              reasonably true.  */
16183           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16184             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16185                                symbol_symtab (sym));
16186         }
16187     }
16188 }
16189
16190 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16191    update TYPE using some information only available in DIE's children.  */
16192
16193 static void
16194 update_enumeration_type_from_children (struct die_info *die,
16195                                        struct type *type,
16196                                        struct dwarf2_cu *cu)
16197 {
16198   struct die_info *child_die;
16199   int unsigned_enum = 1;
16200   int flag_enum = 1;
16201   ULONGEST mask = 0;
16202
16203   auto_obstack obstack;
16204
16205   for (child_die = die->child;
16206        child_die != NULL && child_die->tag;
16207        child_die = sibling_die (child_die))
16208     {
16209       struct attribute *attr;
16210       LONGEST value;
16211       const gdb_byte *bytes;
16212       struct dwarf2_locexpr_baton *baton;
16213       const char *name;
16214
16215       if (child_die->tag != DW_TAG_enumerator)
16216         continue;
16217
16218       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16219       if (attr == NULL)
16220         continue;
16221
16222       name = dwarf2_name (child_die, cu);
16223       if (name == NULL)
16224         name = "<anonymous enumerator>";
16225
16226       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16227                                &value, &bytes, &baton);
16228       if (value < 0)
16229         {
16230           unsigned_enum = 0;
16231           flag_enum = 0;
16232         }
16233       else if ((mask & value) != 0)
16234         flag_enum = 0;
16235       else
16236         mask |= value;
16237
16238       /* If we already know that the enum type is neither unsigned, nor
16239          a flag type, no need to look at the rest of the enumerates.  */
16240       if (!unsigned_enum && !flag_enum)
16241         break;
16242     }
16243
16244   if (unsigned_enum)
16245     TYPE_UNSIGNED (type) = 1;
16246   if (flag_enum)
16247     TYPE_FLAG_ENUM (type) = 1;
16248 }
16249
16250 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16251    complete the type's fields yet, or create any symbols.  */
16252
16253 static struct type *
16254 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16255 {
16256   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16257   struct type *type;
16258   struct attribute *attr;
16259   const char *name;
16260
16261   /* If the definition of this type lives in .debug_types, read that type.
16262      Don't follow DW_AT_specification though, that will take us back up
16263      the chain and we want to go down.  */
16264   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16265   if (attr)
16266     {
16267       type = get_DW_AT_signature_type (die, attr, cu);
16268
16269       /* The type's CU may not be the same as CU.
16270          Ensure TYPE is recorded with CU in die_type_hash.  */
16271       return set_die_type (die, type, cu);
16272     }
16273
16274   type = alloc_type (objfile);
16275
16276   TYPE_CODE (type) = TYPE_CODE_ENUM;
16277   name = dwarf2_full_name (NULL, die, cu);
16278   if (name != NULL)
16279     TYPE_NAME (type) = name;
16280
16281   attr = dwarf2_attr (die, DW_AT_type, cu);
16282   if (attr != NULL)
16283     {
16284       struct type *underlying_type = die_type (die, cu);
16285
16286       TYPE_TARGET_TYPE (type) = underlying_type;
16287     }
16288
16289   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16290   if (attr)
16291     {
16292       TYPE_LENGTH (type) = DW_UNSND (attr);
16293     }
16294   else
16295     {
16296       TYPE_LENGTH (type) = 0;
16297     }
16298
16299   maybe_set_alignment (cu, die, type);
16300
16301   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16302      declared as private in the package spec, and then defined only
16303      inside the package body.  Such types are known as Taft Amendment
16304      Types.  When another package uses such a type, an incomplete DIE
16305      may be generated by the compiler.  */
16306   if (die_is_declaration (die, cu))
16307     TYPE_STUB (type) = 1;
16308
16309   /* Finish the creation of this type by using the enum's children.
16310      We must call this even when the underlying type has been provided
16311      so that we can determine if we're looking at a "flag" enum.  */
16312   update_enumeration_type_from_children (die, type, cu);
16313
16314   /* If this type has an underlying type that is not a stub, then we
16315      may use its attributes.  We always use the "unsigned" attribute
16316      in this situation, because ordinarily we guess whether the type
16317      is unsigned -- but the guess can be wrong and the underlying type
16318      can tell us the reality.  However, we defer to a local size
16319      attribute if one exists, because this lets the compiler override
16320      the underlying type if needed.  */
16321   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16322     {
16323       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16324       if (TYPE_LENGTH (type) == 0)
16325         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16326       if (TYPE_RAW_ALIGN (type) == 0
16327           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16328         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16329     }
16330
16331   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16332
16333   return set_die_type (die, type, cu);
16334 }
16335
16336 /* Given a pointer to a die which begins an enumeration, process all
16337    the dies that define the members of the enumeration, and create the
16338    symbol for the enumeration type.
16339
16340    NOTE: We reverse the order of the element list.  */
16341
16342 static void
16343 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16344 {
16345   struct type *this_type;
16346
16347   this_type = get_die_type (die, cu);
16348   if (this_type == NULL)
16349     this_type = read_enumeration_type (die, cu);
16350
16351   if (die->child != NULL)
16352     {
16353       struct die_info *child_die;
16354       struct symbol *sym;
16355       struct field *fields = NULL;
16356       int num_fields = 0;
16357       const char *name;
16358
16359       child_die = die->child;
16360       while (child_die && child_die->tag)
16361         {
16362           if (child_die->tag != DW_TAG_enumerator)
16363             {
16364               process_die (child_die, cu);
16365             }
16366           else
16367             {
16368               name = dwarf2_name (child_die, cu);
16369               if (name)
16370                 {
16371                   sym = new_symbol (child_die, this_type, cu);
16372
16373                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16374                     {
16375                       fields = (struct field *)
16376                         xrealloc (fields,
16377                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16378                                   * sizeof (struct field));
16379                     }
16380
16381                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16382                   FIELD_TYPE (fields[num_fields]) = NULL;
16383                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16384                   FIELD_BITSIZE (fields[num_fields]) = 0;
16385
16386                   num_fields++;
16387                 }
16388             }
16389
16390           child_die = sibling_die (child_die);
16391         }
16392
16393       if (num_fields)
16394         {
16395           TYPE_NFIELDS (this_type) = num_fields;
16396           TYPE_FIELDS (this_type) = (struct field *)
16397             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16398           memcpy (TYPE_FIELDS (this_type), fields,
16399                   sizeof (struct field) * num_fields);
16400           xfree (fields);
16401         }
16402     }
16403
16404   /* If we are reading an enum from a .debug_types unit, and the enum
16405      is a declaration, and the enum is not the signatured type in the
16406      unit, then we do not want to add a symbol for it.  Adding a
16407      symbol would in some cases obscure the true definition of the
16408      enum, giving users an incomplete type when the definition is
16409      actually available.  Note that we do not want to do this for all
16410      enums which are just declarations, because C++0x allows forward
16411      enum declarations.  */
16412   if (cu->per_cu->is_debug_types
16413       && die_is_declaration (die, cu))
16414     {
16415       struct signatured_type *sig_type;
16416
16417       sig_type = (struct signatured_type *) cu->per_cu;
16418       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16419       if (sig_type->type_offset_in_section != die->sect_off)
16420         return;
16421     }
16422
16423   new_symbol (die, this_type, cu);
16424 }
16425
16426 /* Extract all information from a DW_TAG_array_type DIE and put it in
16427    the DIE's type field.  For now, this only handles one dimensional
16428    arrays.  */
16429
16430 static struct type *
16431 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16432 {
16433   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16434   struct die_info *child_die;
16435   struct type *type;
16436   struct type *element_type, *range_type, *index_type;
16437   struct attribute *attr;
16438   const char *name;
16439   struct dynamic_prop *byte_stride_prop = NULL;
16440   unsigned int bit_stride = 0;
16441
16442   element_type = die_type (die, cu);
16443
16444   /* The die_type call above may have already set the type for this DIE.  */
16445   type = get_die_type (die, cu);
16446   if (type)
16447     return type;
16448
16449   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16450   if (attr != NULL)
16451     {
16452       int stride_ok;
16453
16454       byte_stride_prop
16455         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16456       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16457       if (!stride_ok)
16458         {
16459           complaint (_("unable to read array DW_AT_byte_stride "
16460                        " - DIE at %s [in module %s]"),
16461                      sect_offset_str (die->sect_off),
16462                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16463           /* Ignore this attribute.  We will likely not be able to print
16464              arrays of this type correctly, but there is little we can do
16465              to help if we cannot read the attribute's value.  */
16466           byte_stride_prop = NULL;
16467         }
16468     }
16469
16470   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16471   if (attr != NULL)
16472     bit_stride = DW_UNSND (attr);
16473
16474   /* Irix 6.2 native cc creates array types without children for
16475      arrays with unspecified length.  */
16476   if (die->child == NULL)
16477     {
16478       index_type = objfile_type (objfile)->builtin_int;
16479       range_type = create_static_range_type (NULL, index_type, 0, -1);
16480       type = create_array_type_with_stride (NULL, element_type, range_type,
16481                                             byte_stride_prop, bit_stride);
16482       return set_die_type (die, type, cu);
16483     }
16484
16485   std::vector<struct type *> range_types;
16486   child_die = die->child;
16487   while (child_die && child_die->tag)
16488     {
16489       if (child_die->tag == DW_TAG_subrange_type)
16490         {
16491           struct type *child_type = read_type_die (child_die, cu);
16492
16493           if (child_type != NULL)
16494             {
16495               /* The range type was succesfully read.  Save it for the
16496                  array type creation.  */
16497               range_types.push_back (child_type);
16498             }
16499         }
16500       child_die = sibling_die (child_die);
16501     }
16502
16503   /* Dwarf2 dimensions are output from left to right, create the
16504      necessary array types in backwards order.  */
16505
16506   type = element_type;
16507
16508   if (read_array_order (die, cu) == DW_ORD_col_major)
16509     {
16510       int i = 0;
16511
16512       while (i < range_types.size ())
16513         type = create_array_type_with_stride (NULL, type, range_types[i++],
16514                                               byte_stride_prop, bit_stride);
16515     }
16516   else
16517     {
16518       size_t ndim = range_types.size ();
16519       while (ndim-- > 0)
16520         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16521                                               byte_stride_prop, bit_stride);
16522     }
16523
16524   /* Understand Dwarf2 support for vector types (like they occur on
16525      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16526      array type.  This is not part of the Dwarf2/3 standard yet, but a
16527      custom vendor extension.  The main difference between a regular
16528      array and the vector variant is that vectors are passed by value
16529      to functions.  */
16530   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16531   if (attr)
16532     make_vector_type (type);
16533
16534   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16535      implementation may choose to implement triple vectors using this
16536      attribute.  */
16537   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16538   if (attr)
16539     {
16540       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16541         TYPE_LENGTH (type) = DW_UNSND (attr);
16542       else
16543         complaint (_("DW_AT_byte_size for array type smaller "
16544                      "than the total size of elements"));
16545     }
16546
16547   name = dwarf2_name (die, cu);
16548   if (name)
16549     TYPE_NAME (type) = name;
16550
16551   maybe_set_alignment (cu, die, type);
16552
16553   /* Install the type in the die.  */
16554   set_die_type (die, type, cu);
16555
16556   /* set_die_type should be already done.  */
16557   set_descriptive_type (type, die, cu);
16558
16559   return type;
16560 }
16561
16562 static enum dwarf_array_dim_ordering
16563 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16564 {
16565   struct attribute *attr;
16566
16567   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16568
16569   if (attr)
16570     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16571
16572   /* GNU F77 is a special case, as at 08/2004 array type info is the
16573      opposite order to the dwarf2 specification, but data is still
16574      laid out as per normal fortran.
16575
16576      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16577      version checking.  */
16578
16579   if (cu->language == language_fortran
16580       && cu->producer && strstr (cu->producer, "GNU F77"))
16581     {
16582       return DW_ORD_row_major;
16583     }
16584
16585   switch (cu->language_defn->la_array_ordering)
16586     {
16587     case array_column_major:
16588       return DW_ORD_col_major;
16589     case array_row_major:
16590     default:
16591       return DW_ORD_row_major;
16592     };
16593 }
16594
16595 /* Extract all information from a DW_TAG_set_type DIE and put it in
16596    the DIE's type field.  */
16597
16598 static struct type *
16599 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16600 {
16601   struct type *domain_type, *set_type;
16602   struct attribute *attr;
16603
16604   domain_type = die_type (die, cu);
16605
16606   /* The die_type call above may have already set the type for this DIE.  */
16607   set_type = get_die_type (die, cu);
16608   if (set_type)
16609     return set_type;
16610
16611   set_type = create_set_type (NULL, domain_type);
16612
16613   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16614   if (attr)
16615     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16616
16617   maybe_set_alignment (cu, die, set_type);
16618
16619   return set_die_type (die, set_type, cu);
16620 }
16621
16622 /* A helper for read_common_block that creates a locexpr baton.
16623    SYM is the symbol which we are marking as computed.
16624    COMMON_DIE is the DIE for the common block.
16625    COMMON_LOC is the location expression attribute for the common
16626    block itself.
16627    MEMBER_LOC is the location expression attribute for the particular
16628    member of the common block that we are processing.
16629    CU is the CU from which the above come.  */
16630
16631 static void
16632 mark_common_block_symbol_computed (struct symbol *sym,
16633                                    struct die_info *common_die,
16634                                    struct attribute *common_loc,
16635                                    struct attribute *member_loc,
16636                                    struct dwarf2_cu *cu)
16637 {
16638   struct dwarf2_per_objfile *dwarf2_per_objfile
16639     = cu->per_cu->dwarf2_per_objfile;
16640   struct objfile *objfile = dwarf2_per_objfile->objfile;
16641   struct dwarf2_locexpr_baton *baton;
16642   gdb_byte *ptr;
16643   unsigned int cu_off;
16644   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16645   LONGEST offset = 0;
16646
16647   gdb_assert (common_loc && member_loc);
16648   gdb_assert (attr_form_is_block (common_loc));
16649   gdb_assert (attr_form_is_block (member_loc)
16650               || attr_form_is_constant (member_loc));
16651
16652   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16653   baton->per_cu = cu->per_cu;
16654   gdb_assert (baton->per_cu);
16655
16656   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16657
16658   if (attr_form_is_constant (member_loc))
16659     {
16660       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16661       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16662     }
16663   else
16664     baton->size += DW_BLOCK (member_loc)->size;
16665
16666   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16667   baton->data = ptr;
16668
16669   *ptr++ = DW_OP_call4;
16670   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16671   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16672   ptr += 4;
16673
16674   if (attr_form_is_constant (member_loc))
16675     {
16676       *ptr++ = DW_OP_addr;
16677       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16678       ptr += cu->header.addr_size;
16679     }
16680   else
16681     {
16682       /* We have to copy the data here, because DW_OP_call4 will only
16683          use a DW_AT_location attribute.  */
16684       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16685       ptr += DW_BLOCK (member_loc)->size;
16686     }
16687
16688   *ptr++ = DW_OP_plus;
16689   gdb_assert (ptr - baton->data == baton->size);
16690
16691   SYMBOL_LOCATION_BATON (sym) = baton;
16692   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16693 }
16694
16695 /* Create appropriate locally-scoped variables for all the
16696    DW_TAG_common_block entries.  Also create a struct common_block
16697    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16698    is used to sepate the common blocks name namespace from regular
16699    variable names.  */
16700
16701 static void
16702 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16703 {
16704   struct attribute *attr;
16705
16706   attr = dwarf2_attr (die, DW_AT_location, cu);
16707   if (attr)
16708     {
16709       /* Support the .debug_loc offsets.  */
16710       if (attr_form_is_block (attr))
16711         {
16712           /* Ok.  */
16713         }
16714       else if (attr_form_is_section_offset (attr))
16715         {
16716           dwarf2_complex_location_expr_complaint ();
16717           attr = NULL;
16718         }
16719       else
16720         {
16721           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16722                                                  "common block member");
16723           attr = NULL;
16724         }
16725     }
16726
16727   if (die->child != NULL)
16728     {
16729       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16730       struct die_info *child_die;
16731       size_t n_entries = 0, size;
16732       struct common_block *common_block;
16733       struct symbol *sym;
16734
16735       for (child_die = die->child;
16736            child_die && child_die->tag;
16737            child_die = sibling_die (child_die))
16738         ++n_entries;
16739
16740       size = (sizeof (struct common_block)
16741               + (n_entries - 1) * sizeof (struct symbol *));
16742       common_block
16743         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16744                                                  size);
16745       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16746       common_block->n_entries = 0;
16747
16748       for (child_die = die->child;
16749            child_die && child_die->tag;
16750            child_die = sibling_die (child_die))
16751         {
16752           /* Create the symbol in the DW_TAG_common_block block in the current
16753              symbol scope.  */
16754           sym = new_symbol (child_die, NULL, cu);
16755           if (sym != NULL)
16756             {
16757               struct attribute *member_loc;
16758
16759               common_block->contents[common_block->n_entries++] = sym;
16760
16761               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16762                                         cu);
16763               if (member_loc)
16764                 {
16765                   /* GDB has handled this for a long time, but it is
16766                      not specified by DWARF.  It seems to have been
16767                      emitted by gfortran at least as recently as:
16768                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16769                   complaint (_("Variable in common block has "
16770                                "DW_AT_data_member_location "
16771                                "- DIE at %s [in module %s]"),
16772                                sect_offset_str (child_die->sect_off),
16773                              objfile_name (objfile));
16774
16775                   if (attr_form_is_section_offset (member_loc))
16776                     dwarf2_complex_location_expr_complaint ();
16777                   else if (attr_form_is_constant (member_loc)
16778                            || attr_form_is_block (member_loc))
16779                     {
16780                       if (attr)
16781                         mark_common_block_symbol_computed (sym, die, attr,
16782                                                            member_loc, cu);
16783                     }
16784                   else
16785                     dwarf2_complex_location_expr_complaint ();
16786                 }
16787             }
16788         }
16789
16790       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16791       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16792     }
16793 }
16794
16795 /* Create a type for a C++ namespace.  */
16796
16797 static struct type *
16798 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16799 {
16800   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16801   const char *previous_prefix, *name;
16802   int is_anonymous;
16803   struct type *type;
16804
16805   /* For extensions, reuse the type of the original namespace.  */
16806   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16807     {
16808       struct die_info *ext_die;
16809       struct dwarf2_cu *ext_cu = cu;
16810
16811       ext_die = dwarf2_extension (die, &ext_cu);
16812       type = read_type_die (ext_die, ext_cu);
16813
16814       /* EXT_CU may not be the same as CU.
16815          Ensure TYPE is recorded with CU in die_type_hash.  */
16816       return set_die_type (die, type, cu);
16817     }
16818
16819   name = namespace_name (die, &is_anonymous, cu);
16820
16821   /* Now build the name of the current namespace.  */
16822
16823   previous_prefix = determine_prefix (die, cu);
16824   if (previous_prefix[0] != '\0')
16825     name = typename_concat (&objfile->objfile_obstack,
16826                             previous_prefix, name, 0, cu);
16827
16828   /* Create the type.  */
16829   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16830
16831   return set_die_type (die, type, cu);
16832 }
16833
16834 /* Read a namespace scope.  */
16835
16836 static void
16837 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16838 {
16839   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16840   int is_anonymous;
16841
16842   /* Add a symbol associated to this if we haven't seen the namespace
16843      before.  Also, add a using directive if it's an anonymous
16844      namespace.  */
16845
16846   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16847     {
16848       struct type *type;
16849
16850       type = read_type_die (die, cu);
16851       new_symbol (die, type, cu);
16852
16853       namespace_name (die, &is_anonymous, cu);
16854       if (is_anonymous)
16855         {
16856           const char *previous_prefix = determine_prefix (die, cu);
16857
16858           std::vector<const char *> excludes;
16859           add_using_directive (using_directives (cu),
16860                                previous_prefix, TYPE_NAME (type), NULL,
16861                                NULL, excludes, 0, &objfile->objfile_obstack);
16862         }
16863     }
16864
16865   if (die->child != NULL)
16866     {
16867       struct die_info *child_die = die->child;
16868
16869       while (child_die && child_die->tag)
16870         {
16871           process_die (child_die, cu);
16872           child_die = sibling_die (child_die);
16873         }
16874     }
16875 }
16876
16877 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16878    imported module.  Still we need that type as local Fortran "use ... only"
16879    declaration imports depend on the created type in determine_prefix.  */
16880
16881 static struct type *
16882 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16883 {
16884   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16885   const char *module_name;
16886   struct type *type;
16887
16888   module_name = dwarf2_name (die, cu);
16889   if (!module_name)
16890     complaint (_("DW_TAG_module has no name, offset %s"),
16891                sect_offset_str (die->sect_off));
16892   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16893
16894   return set_die_type (die, type, cu);
16895 }
16896
16897 /* Read a Fortran module.  */
16898
16899 static void
16900 read_module (struct die_info *die, struct dwarf2_cu *cu)
16901 {
16902   struct die_info *child_die = die->child;
16903   struct type *type;
16904
16905   type = read_type_die (die, cu);
16906   new_symbol (die, type, cu);
16907
16908   while (child_die && child_die->tag)
16909     {
16910       process_die (child_die, cu);
16911       child_die = sibling_die (child_die);
16912     }
16913 }
16914
16915 /* Return the name of the namespace represented by DIE.  Set
16916    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16917    namespace.  */
16918
16919 static const char *
16920 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16921 {
16922   struct die_info *current_die;
16923   const char *name = NULL;
16924
16925   /* Loop through the extensions until we find a name.  */
16926
16927   for (current_die = die;
16928        current_die != NULL;
16929        current_die = dwarf2_extension (die, &cu))
16930     {
16931       /* We don't use dwarf2_name here so that we can detect the absence
16932          of a name -> anonymous namespace.  */
16933       name = dwarf2_string_attr (die, DW_AT_name, cu);
16934
16935       if (name != NULL)
16936         break;
16937     }
16938
16939   /* Is it an anonymous namespace?  */
16940
16941   *is_anonymous = (name == NULL);
16942   if (*is_anonymous)
16943     name = CP_ANONYMOUS_NAMESPACE_STR;
16944
16945   return name;
16946 }
16947
16948 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16949    the user defined type vector.  */
16950
16951 static struct type *
16952 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16953 {
16954   struct gdbarch *gdbarch
16955     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16956   struct comp_unit_head *cu_header = &cu->header;
16957   struct type *type;
16958   struct attribute *attr_byte_size;
16959   struct attribute *attr_address_class;
16960   int byte_size, addr_class;
16961   struct type *target_type;
16962
16963   target_type = die_type (die, cu);
16964
16965   /* The die_type call above may have already set the type for this DIE.  */
16966   type = get_die_type (die, cu);
16967   if (type)
16968     return type;
16969
16970   type = lookup_pointer_type (target_type);
16971
16972   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16973   if (attr_byte_size)
16974     byte_size = DW_UNSND (attr_byte_size);
16975   else
16976     byte_size = cu_header->addr_size;
16977
16978   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16979   if (attr_address_class)
16980     addr_class = DW_UNSND (attr_address_class);
16981   else
16982     addr_class = DW_ADDR_none;
16983
16984   ULONGEST alignment = get_alignment (cu, die);
16985
16986   /* If the pointer size, alignment, or address class is different
16987      than the default, create a type variant marked as such and set
16988      the length accordingly.  */
16989   if (TYPE_LENGTH (type) != byte_size
16990       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
16991           && alignment != TYPE_RAW_ALIGN (type))
16992       || addr_class != DW_ADDR_none)
16993     {
16994       if (gdbarch_address_class_type_flags_p (gdbarch))
16995         {
16996           int type_flags;
16997
16998           type_flags = gdbarch_address_class_type_flags
16999                          (gdbarch, byte_size, addr_class);
17000           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17001                       == 0);
17002           type = make_type_with_address_space (type, type_flags);
17003         }
17004       else if (TYPE_LENGTH (type) != byte_size)
17005         {
17006           complaint (_("invalid pointer size %d"), byte_size);
17007         }
17008       else if (TYPE_RAW_ALIGN (type) != alignment)
17009         {
17010           complaint (_("Invalid DW_AT_alignment"
17011                        " - DIE at %s [in module %s]"),
17012                      sect_offset_str (die->sect_off),
17013                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17014         }
17015       else
17016         {
17017           /* Should we also complain about unhandled address classes?  */
17018         }
17019     }
17020
17021   TYPE_LENGTH (type) = byte_size;
17022   set_type_align (type, alignment);
17023   return set_die_type (die, type, cu);
17024 }
17025
17026 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17027    the user defined type vector.  */
17028
17029 static struct type *
17030 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17031 {
17032   struct type *type;
17033   struct type *to_type;
17034   struct type *domain;
17035
17036   to_type = die_type (die, cu);
17037   domain = die_containing_type (die, cu);
17038
17039   /* The calls above may have already set the type for this DIE.  */
17040   type = get_die_type (die, cu);
17041   if (type)
17042     return type;
17043
17044   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17045     type = lookup_methodptr_type (to_type);
17046   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17047     {
17048       struct type *new_type
17049         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17050
17051       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17052                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17053                             TYPE_VARARGS (to_type));
17054       type = lookup_methodptr_type (new_type);
17055     }
17056   else
17057     type = lookup_memberptr_type (to_type, domain);
17058
17059   return set_die_type (die, type, cu);
17060 }
17061
17062 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17063    the user defined type vector.  */
17064
17065 static struct type *
17066 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17067                           enum type_code refcode)
17068 {
17069   struct comp_unit_head *cu_header = &cu->header;
17070   struct type *type, *target_type;
17071   struct attribute *attr;
17072
17073   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17074
17075   target_type = die_type (die, cu);
17076
17077   /* The die_type call above may have already set the type for this DIE.  */
17078   type = get_die_type (die, cu);
17079   if (type)
17080     return type;
17081
17082   type = lookup_reference_type (target_type, refcode);
17083   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17084   if (attr)
17085     {
17086       TYPE_LENGTH (type) = DW_UNSND (attr);
17087     }
17088   else
17089     {
17090       TYPE_LENGTH (type) = cu_header->addr_size;
17091     }
17092   maybe_set_alignment (cu, die, type);
17093   return set_die_type (die, type, cu);
17094 }
17095
17096 /* Add the given cv-qualifiers to the element type of the array.  GCC
17097    outputs DWARF type qualifiers that apply to an array, not the
17098    element type.  But GDB relies on the array element type to carry
17099    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17100    specification.  */
17101
17102 static struct type *
17103 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17104                    struct type *base_type, int cnst, int voltl)
17105 {
17106   struct type *el_type, *inner_array;
17107
17108   base_type = copy_type (base_type);
17109   inner_array = base_type;
17110
17111   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17112     {
17113       TYPE_TARGET_TYPE (inner_array) =
17114         copy_type (TYPE_TARGET_TYPE (inner_array));
17115       inner_array = TYPE_TARGET_TYPE (inner_array);
17116     }
17117
17118   el_type = TYPE_TARGET_TYPE (inner_array);
17119   cnst |= TYPE_CONST (el_type);
17120   voltl |= TYPE_VOLATILE (el_type);
17121   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17122
17123   return set_die_type (die, base_type, cu);
17124 }
17125
17126 static struct type *
17127 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17128 {
17129   struct type *base_type, *cv_type;
17130
17131   base_type = die_type (die, cu);
17132
17133   /* The die_type call above may have already set the type for this DIE.  */
17134   cv_type = get_die_type (die, cu);
17135   if (cv_type)
17136     return cv_type;
17137
17138   /* In case the const qualifier is applied to an array type, the element type
17139      is so qualified, not the array type (section 6.7.3 of C99).  */
17140   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17141     return add_array_cv_type (die, cu, base_type, 1, 0);
17142
17143   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17144   return set_die_type (die, cv_type, cu);
17145 }
17146
17147 static struct type *
17148 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17149 {
17150   struct type *base_type, *cv_type;
17151
17152   base_type = die_type (die, cu);
17153
17154   /* The die_type call above may have already set the type for this DIE.  */
17155   cv_type = get_die_type (die, cu);
17156   if (cv_type)
17157     return cv_type;
17158
17159   /* In case the volatile qualifier is applied to an array type, the
17160      element type is so qualified, not the array type (section 6.7.3
17161      of C99).  */
17162   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17163     return add_array_cv_type (die, cu, base_type, 0, 1);
17164
17165   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17166   return set_die_type (die, cv_type, cu);
17167 }
17168
17169 /* Handle DW_TAG_restrict_type.  */
17170
17171 static struct type *
17172 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17173 {
17174   struct type *base_type, *cv_type;
17175
17176   base_type = die_type (die, cu);
17177
17178   /* The die_type call above may have already set the type for this DIE.  */
17179   cv_type = get_die_type (die, cu);
17180   if (cv_type)
17181     return cv_type;
17182
17183   cv_type = make_restrict_type (base_type);
17184   return set_die_type (die, cv_type, cu);
17185 }
17186
17187 /* Handle DW_TAG_atomic_type.  */
17188
17189 static struct type *
17190 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17191 {
17192   struct type *base_type, *cv_type;
17193
17194   base_type = die_type (die, cu);
17195
17196   /* The die_type call above may have already set the type for this DIE.  */
17197   cv_type = get_die_type (die, cu);
17198   if (cv_type)
17199     return cv_type;
17200
17201   cv_type = make_atomic_type (base_type);
17202   return set_die_type (die, cv_type, cu);
17203 }
17204
17205 /* Extract all information from a DW_TAG_string_type DIE and add to
17206    the user defined type vector.  It isn't really a user defined type,
17207    but it behaves like one, with other DIE's using an AT_user_def_type
17208    attribute to reference it.  */
17209
17210 static struct type *
17211 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17212 {
17213   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17214   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17215   struct type *type, *range_type, *index_type, *char_type;
17216   struct attribute *attr;
17217   unsigned int length;
17218
17219   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17220   if (attr)
17221     {
17222       length = DW_UNSND (attr);
17223     }
17224   else
17225     {
17226       /* Check for the DW_AT_byte_size attribute.  */
17227       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17228       if (attr)
17229         {
17230           length = DW_UNSND (attr);
17231         }
17232       else
17233         {
17234           length = 1;
17235         }
17236     }
17237
17238   index_type = objfile_type (objfile)->builtin_int;
17239   range_type = create_static_range_type (NULL, index_type, 1, length);
17240   char_type = language_string_char_type (cu->language_defn, gdbarch);
17241   type = create_string_type (NULL, char_type, range_type);
17242
17243   return set_die_type (die, type, cu);
17244 }
17245
17246 /* Assuming that DIE corresponds to a function, returns nonzero
17247    if the function is prototyped.  */
17248
17249 static int
17250 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17251 {
17252   struct attribute *attr;
17253
17254   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17255   if (attr && (DW_UNSND (attr) != 0))
17256     return 1;
17257
17258   /* The DWARF standard implies that the DW_AT_prototyped attribute
17259      is only meaninful for C, but the concept also extends to other
17260      languages that allow unprototyped functions (Eg: Objective C).
17261      For all other languages, assume that functions are always
17262      prototyped.  */
17263   if (cu->language != language_c
17264       && cu->language != language_objc
17265       && cu->language != language_opencl)
17266     return 1;
17267
17268   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17269      prototyped and unprototyped functions; default to prototyped,
17270      since that is more common in modern code (and RealView warns
17271      about unprototyped functions).  */
17272   if (producer_is_realview (cu->producer))
17273     return 1;
17274
17275   return 0;
17276 }
17277
17278 /* Handle DIES due to C code like:
17279
17280    struct foo
17281    {
17282    int (*funcp)(int a, long l);
17283    int b;
17284    };
17285
17286    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17287
17288 static struct type *
17289 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17290 {
17291   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17292   struct type *type;            /* Type that this function returns.  */
17293   struct type *ftype;           /* Function that returns above type.  */
17294   struct attribute *attr;
17295
17296   type = die_type (die, cu);
17297
17298   /* The die_type call above may have already set the type for this DIE.  */
17299   ftype = get_die_type (die, cu);
17300   if (ftype)
17301     return ftype;
17302
17303   ftype = lookup_function_type (type);
17304
17305   if (prototyped_function_p (die, cu))
17306     TYPE_PROTOTYPED (ftype) = 1;
17307
17308   /* Store the calling convention in the type if it's available in
17309      the subroutine die.  Otherwise set the calling convention to
17310      the default value DW_CC_normal.  */
17311   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17312   if (attr)
17313     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17314   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17315     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17316   else
17317     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17318
17319   /* Record whether the function returns normally to its caller or not
17320      if the DWARF producer set that information.  */
17321   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17322   if (attr && (DW_UNSND (attr) != 0))
17323     TYPE_NO_RETURN (ftype) = 1;
17324
17325   /* We need to add the subroutine type to the die immediately so
17326      we don't infinitely recurse when dealing with parameters
17327      declared as the same subroutine type.  */
17328   set_die_type (die, ftype, cu);
17329
17330   if (die->child != NULL)
17331     {
17332       struct type *void_type = objfile_type (objfile)->builtin_void;
17333       struct die_info *child_die;
17334       int nparams, iparams;
17335
17336       /* Count the number of parameters.
17337          FIXME: GDB currently ignores vararg functions, but knows about
17338          vararg member functions.  */
17339       nparams = 0;
17340       child_die = die->child;
17341       while (child_die && child_die->tag)
17342         {
17343           if (child_die->tag == DW_TAG_formal_parameter)
17344             nparams++;
17345           else if (child_die->tag == DW_TAG_unspecified_parameters)
17346             TYPE_VARARGS (ftype) = 1;
17347           child_die = sibling_die (child_die);
17348         }
17349
17350       /* Allocate storage for parameters and fill them in.  */
17351       TYPE_NFIELDS (ftype) = nparams;
17352       TYPE_FIELDS (ftype) = (struct field *)
17353         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17354
17355       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17356          even if we error out during the parameters reading below.  */
17357       for (iparams = 0; iparams < nparams; iparams++)
17358         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17359
17360       iparams = 0;
17361       child_die = die->child;
17362       while (child_die && child_die->tag)
17363         {
17364           if (child_die->tag == DW_TAG_formal_parameter)
17365             {
17366               struct type *arg_type;
17367
17368               /* DWARF version 2 has no clean way to discern C++
17369                  static and non-static member functions.  G++ helps
17370                  GDB by marking the first parameter for non-static
17371                  member functions (which is the this pointer) as
17372                  artificial.  We pass this information to
17373                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17374
17375                  DWARF version 3 added DW_AT_object_pointer, which GCC
17376                  4.5 does not yet generate.  */
17377               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17378               if (attr)
17379                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17380               else
17381                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17382               arg_type = die_type (child_die, cu);
17383
17384               /* RealView does not mark THIS as const, which the testsuite
17385                  expects.  GCC marks THIS as const in method definitions,
17386                  but not in the class specifications (GCC PR 43053).  */
17387               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17388                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17389                 {
17390                   int is_this = 0;
17391                   struct dwarf2_cu *arg_cu = cu;
17392                   const char *name = dwarf2_name (child_die, cu);
17393
17394                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17395                   if (attr)
17396                     {
17397                       /* If the compiler emits this, use it.  */
17398                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17399                         is_this = 1;
17400                     }
17401                   else if (name && strcmp (name, "this") == 0)
17402                     /* Function definitions will have the argument names.  */
17403                     is_this = 1;
17404                   else if (name == NULL && iparams == 0)
17405                     /* Declarations may not have the names, so like
17406                        elsewhere in GDB, assume an artificial first
17407                        argument is "this".  */
17408                     is_this = 1;
17409
17410                   if (is_this)
17411                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17412                                              arg_type, 0);
17413                 }
17414
17415               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17416               iparams++;
17417             }
17418           child_die = sibling_die (child_die);
17419         }
17420     }
17421
17422   return ftype;
17423 }
17424
17425 static struct type *
17426 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17427 {
17428   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17429   const char *name = NULL;
17430   struct type *this_type, *target_type;
17431
17432   name = dwarf2_full_name (NULL, die, cu);
17433   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17434   TYPE_TARGET_STUB (this_type) = 1;
17435   set_die_type (die, this_type, cu);
17436   target_type = die_type (die, cu);
17437   if (target_type != this_type)
17438     TYPE_TARGET_TYPE (this_type) = target_type;
17439   else
17440     {
17441       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17442          spec and cause infinite loops in GDB.  */
17443       complaint (_("Self-referential DW_TAG_typedef "
17444                    "- DIE at %s [in module %s]"),
17445                  sect_offset_str (die->sect_off), objfile_name (objfile));
17446       TYPE_TARGET_TYPE (this_type) = NULL;
17447     }
17448   return this_type;
17449 }
17450
17451 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17452    (which may be different from NAME) to the architecture back-end to allow
17453    it to guess the correct format if necessary.  */
17454
17455 static struct type *
17456 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17457                         const char *name_hint)
17458 {
17459   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17460   const struct floatformat **format;
17461   struct type *type;
17462
17463   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17464   if (format)
17465     type = init_float_type (objfile, bits, name, format);
17466   else
17467     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17468
17469   return type;
17470 }
17471
17472 /* Find a representation of a given base type and install
17473    it in the TYPE field of the die.  */
17474
17475 static struct type *
17476 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17477 {
17478   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17479   struct type *type;
17480   struct attribute *attr;
17481   int encoding = 0, bits = 0;
17482   const char *name;
17483
17484   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17485   if (attr)
17486     {
17487       encoding = DW_UNSND (attr);
17488     }
17489   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17490   if (attr)
17491     {
17492       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17493     }
17494   name = dwarf2_name (die, cu);
17495   if (!name)
17496     {
17497       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17498     }
17499
17500   switch (encoding)
17501     {
17502       case DW_ATE_address:
17503         /* Turn DW_ATE_address into a void * pointer.  */
17504         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17505         type = init_pointer_type (objfile, bits, name, type);
17506         break;
17507       case DW_ATE_boolean:
17508         type = init_boolean_type (objfile, bits, 1, name);
17509         break;
17510       case DW_ATE_complex_float:
17511         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17512         type = init_complex_type (objfile, name, type);
17513         break;
17514       case DW_ATE_decimal_float:
17515         type = init_decfloat_type (objfile, bits, name);
17516         break;
17517       case DW_ATE_float:
17518         type = dwarf2_init_float_type (objfile, bits, name, name);
17519         break;
17520       case DW_ATE_signed:
17521         type = init_integer_type (objfile, bits, 0, name);
17522         break;
17523       case DW_ATE_unsigned:
17524         if (cu->language == language_fortran
17525             && name
17526             && startswith (name, "character("))
17527           type = init_character_type (objfile, bits, 1, name);
17528         else
17529           type = init_integer_type (objfile, bits, 1, name);
17530         break;
17531       case DW_ATE_signed_char:
17532         if (cu->language == language_ada || cu->language == language_m2
17533             || cu->language == language_pascal
17534             || cu->language == language_fortran)
17535           type = init_character_type (objfile, bits, 0, name);
17536         else
17537           type = init_integer_type (objfile, bits, 0, name);
17538         break;
17539       case DW_ATE_unsigned_char:
17540         if (cu->language == language_ada || cu->language == language_m2
17541             || cu->language == language_pascal
17542             || cu->language == language_fortran
17543             || cu->language == language_rust)
17544           type = init_character_type (objfile, bits, 1, name);
17545         else
17546           type = init_integer_type (objfile, bits, 1, name);
17547         break;
17548       case DW_ATE_UTF:
17549         {
17550           gdbarch *arch = get_objfile_arch (objfile);
17551
17552           if (bits == 16)
17553             type = builtin_type (arch)->builtin_char16;
17554           else if (bits == 32)
17555             type = builtin_type (arch)->builtin_char32;
17556           else
17557             {
17558               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17559                          bits);
17560               type = init_integer_type (objfile, bits, 1, name);
17561             }
17562           return set_die_type (die, type, cu);
17563         }
17564         break;
17565
17566       default:
17567         complaint (_("unsupported DW_AT_encoding: '%s'"),
17568                    dwarf_type_encoding_name (encoding));
17569         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17570         break;
17571     }
17572
17573   if (name && strcmp (name, "char") == 0)
17574     TYPE_NOSIGN (type) = 1;
17575
17576   maybe_set_alignment (cu, die, type);
17577
17578   return set_die_type (die, type, cu);
17579 }
17580
17581 /* Parse dwarf attribute if it's a block, reference or constant and put the
17582    resulting value of the attribute into struct bound_prop.
17583    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17584
17585 static int
17586 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17587                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17588 {
17589   struct dwarf2_property_baton *baton;
17590   struct obstack *obstack
17591     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17592
17593   if (attr == NULL || prop == NULL)
17594     return 0;
17595
17596   if (attr_form_is_block (attr))
17597     {
17598       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17599       baton->referenced_type = NULL;
17600       baton->locexpr.per_cu = cu->per_cu;
17601       baton->locexpr.size = DW_BLOCK (attr)->size;
17602       baton->locexpr.data = DW_BLOCK (attr)->data;
17603       prop->data.baton = baton;
17604       prop->kind = PROP_LOCEXPR;
17605       gdb_assert (prop->data.baton != NULL);
17606     }
17607   else if (attr_form_is_ref (attr))
17608     {
17609       struct dwarf2_cu *target_cu = cu;
17610       struct die_info *target_die;
17611       struct attribute *target_attr;
17612
17613       target_die = follow_die_ref (die, attr, &target_cu);
17614       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17615       if (target_attr == NULL)
17616         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17617                                    target_cu);
17618       if (target_attr == NULL)
17619         return 0;
17620
17621       switch (target_attr->name)
17622         {
17623           case DW_AT_location:
17624             if (attr_form_is_section_offset (target_attr))
17625               {
17626                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17627                 baton->referenced_type = die_type (target_die, target_cu);
17628                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17629                 prop->data.baton = baton;
17630                 prop->kind = PROP_LOCLIST;
17631                 gdb_assert (prop->data.baton != NULL);
17632               }
17633             else if (attr_form_is_block (target_attr))
17634               {
17635                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17636                 baton->referenced_type = die_type (target_die, target_cu);
17637                 baton->locexpr.per_cu = cu->per_cu;
17638                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17639                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17640                 prop->data.baton = baton;
17641                 prop->kind = PROP_LOCEXPR;
17642                 gdb_assert (prop->data.baton != NULL);
17643               }
17644             else
17645               {
17646                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17647                                                        "dynamic property");
17648                 return 0;
17649               }
17650             break;
17651           case DW_AT_data_member_location:
17652             {
17653               LONGEST offset;
17654
17655               if (!handle_data_member_location (target_die, target_cu,
17656                                                 &offset))
17657                 return 0;
17658
17659               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17660               baton->referenced_type = read_type_die (target_die->parent,
17661                                                       target_cu);
17662               baton->offset_info.offset = offset;
17663               baton->offset_info.type = die_type (target_die, target_cu);
17664               prop->data.baton = baton;
17665               prop->kind = PROP_ADDR_OFFSET;
17666               break;
17667             }
17668         }
17669     }
17670   else if (attr_form_is_constant (attr))
17671     {
17672       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17673       prop->kind = PROP_CONST;
17674     }
17675   else
17676     {
17677       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17678                                              dwarf2_name (die, cu));
17679       return 0;
17680     }
17681
17682   return 1;
17683 }
17684
17685 /* Read the given DW_AT_subrange DIE.  */
17686
17687 static struct type *
17688 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17689 {
17690   struct type *base_type, *orig_base_type;
17691   struct type *range_type;
17692   struct attribute *attr;
17693   struct dynamic_prop low, high;
17694   int low_default_is_valid;
17695   int high_bound_is_count = 0;
17696   const char *name;
17697   LONGEST negative_mask;
17698
17699   orig_base_type = die_type (die, cu);
17700   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17701      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17702      creating the range type, but we use the result of check_typedef
17703      when examining properties of the type.  */
17704   base_type = check_typedef (orig_base_type);
17705
17706   /* The die_type call above may have already set the type for this DIE.  */
17707   range_type = get_die_type (die, cu);
17708   if (range_type)
17709     return range_type;
17710
17711   low.kind = PROP_CONST;
17712   high.kind = PROP_CONST;
17713   high.data.const_val = 0;
17714
17715   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17716      omitting DW_AT_lower_bound.  */
17717   switch (cu->language)
17718     {
17719     case language_c:
17720     case language_cplus:
17721       low.data.const_val = 0;
17722       low_default_is_valid = 1;
17723       break;
17724     case language_fortran:
17725       low.data.const_val = 1;
17726       low_default_is_valid = 1;
17727       break;
17728     case language_d:
17729     case language_objc:
17730     case language_rust:
17731       low.data.const_val = 0;
17732       low_default_is_valid = (cu->header.version >= 4);
17733       break;
17734     case language_ada:
17735     case language_m2:
17736     case language_pascal:
17737       low.data.const_val = 1;
17738       low_default_is_valid = (cu->header.version >= 4);
17739       break;
17740     default:
17741       low.data.const_val = 0;
17742       low_default_is_valid = 0;
17743       break;
17744     }
17745
17746   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17747   if (attr)
17748     attr_to_dynamic_prop (attr, die, cu, &low);
17749   else if (!low_default_is_valid)
17750     complaint (_("Missing DW_AT_lower_bound "
17751                                       "- DIE at %s [in module %s]"),
17752                sect_offset_str (die->sect_off),
17753                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17754
17755   struct attribute *attr_ub, *attr_count;
17756   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17757   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17758     {
17759       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17760       if (attr_to_dynamic_prop (attr, die, cu, &high))
17761         {
17762           /* If bounds are constant do the final calculation here.  */
17763           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17764             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17765           else
17766             high_bound_is_count = 1;
17767         }
17768       else
17769         {
17770           if (attr_ub != NULL)
17771             complaint (_("Unresolved DW_AT_upper_bound "
17772                          "- DIE at %s [in module %s]"),
17773                        sect_offset_str (die->sect_off),
17774                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17775           if (attr_count != NULL)
17776             complaint (_("Unresolved DW_AT_count "
17777                          "- DIE at %s [in module %s]"),
17778                        sect_offset_str (die->sect_off),
17779                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17780         }
17781         
17782     }
17783
17784   /* Dwarf-2 specifications explicitly allows to create subrange types
17785      without specifying a base type.
17786      In that case, the base type must be set to the type of
17787      the lower bound, upper bound or count, in that order, if any of these
17788      three attributes references an object that has a type.
17789      If no base type is found, the Dwarf-2 specifications say that
17790      a signed integer type of size equal to the size of an address should
17791      be used.
17792      For the following C code: `extern char gdb_int [];'
17793      GCC produces an empty range DIE.
17794      FIXME: muller/2010-05-28: Possible references to object for low bound,
17795      high bound or count are not yet handled by this code.  */
17796   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17797     {
17798       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17799       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17800       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17801       struct type *int_type = objfile_type (objfile)->builtin_int;
17802
17803       /* Test "int", "long int", and "long long int" objfile types,
17804          and select the first one having a size above or equal to the
17805          architecture address size.  */
17806       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17807         base_type = int_type;
17808       else
17809         {
17810           int_type = objfile_type (objfile)->builtin_long;
17811           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17812             base_type = int_type;
17813           else
17814             {
17815               int_type = objfile_type (objfile)->builtin_long_long;
17816               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17817                 base_type = int_type;
17818             }
17819         }
17820     }
17821
17822   /* Normally, the DWARF producers are expected to use a signed
17823      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17824      But this is unfortunately not always the case, as witnessed
17825      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17826      is used instead.  To work around that ambiguity, we treat
17827      the bounds as signed, and thus sign-extend their values, when
17828      the base type is signed.  */
17829   negative_mask =
17830     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17831   if (low.kind == PROP_CONST
17832       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17833     low.data.const_val |= negative_mask;
17834   if (high.kind == PROP_CONST
17835       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17836     high.data.const_val |= negative_mask;
17837
17838   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17839
17840   if (high_bound_is_count)
17841     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17842
17843   /* Ada expects an empty array on no boundary attributes.  */
17844   if (attr == NULL && cu->language != language_ada)
17845     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17846
17847   name = dwarf2_name (die, cu);
17848   if (name)
17849     TYPE_NAME (range_type) = name;
17850
17851   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17852   if (attr)
17853     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17854
17855   maybe_set_alignment (cu, die, range_type);
17856
17857   set_die_type (die, range_type, cu);
17858
17859   /* set_die_type should be already done.  */
17860   set_descriptive_type (range_type, die, cu);
17861
17862   return range_type;
17863 }
17864
17865 static struct type *
17866 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17867 {
17868   struct type *type;
17869
17870   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17871                     NULL);
17872   TYPE_NAME (type) = dwarf2_name (die, cu);
17873
17874   /* In Ada, an unspecified type is typically used when the description
17875      of the type is defered to a different unit.  When encountering
17876      such a type, we treat it as a stub, and try to resolve it later on,
17877      when needed.  */
17878   if (cu->language == language_ada)
17879     TYPE_STUB (type) = 1;
17880
17881   return set_die_type (die, type, cu);
17882 }
17883
17884 /* Read a single die and all its descendents.  Set the die's sibling
17885    field to NULL; set other fields in the die correctly, and set all
17886    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17887    location of the info_ptr after reading all of those dies.  PARENT
17888    is the parent of the die in question.  */
17889
17890 static struct die_info *
17891 read_die_and_children (const struct die_reader_specs *reader,
17892                        const gdb_byte *info_ptr,
17893                        const gdb_byte **new_info_ptr,
17894                        struct die_info *parent)
17895 {
17896   struct die_info *die;
17897   const gdb_byte *cur_ptr;
17898   int has_children;
17899
17900   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17901   if (die == NULL)
17902     {
17903       *new_info_ptr = cur_ptr;
17904       return NULL;
17905     }
17906   store_in_ref_table (die, reader->cu);
17907
17908   if (has_children)
17909     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17910   else
17911     {
17912       die->child = NULL;
17913       *new_info_ptr = cur_ptr;
17914     }
17915
17916   die->sibling = NULL;
17917   die->parent = parent;
17918   return die;
17919 }
17920
17921 /* Read a die, all of its descendents, and all of its siblings; set
17922    all of the fields of all of the dies correctly.  Arguments are as
17923    in read_die_and_children.  */
17924
17925 static struct die_info *
17926 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17927                          const gdb_byte *info_ptr,
17928                          const gdb_byte **new_info_ptr,
17929                          struct die_info *parent)
17930 {
17931   struct die_info *first_die, *last_sibling;
17932   const gdb_byte *cur_ptr;
17933
17934   cur_ptr = info_ptr;
17935   first_die = last_sibling = NULL;
17936
17937   while (1)
17938     {
17939       struct die_info *die
17940         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17941
17942       if (die == NULL)
17943         {
17944           *new_info_ptr = cur_ptr;
17945           return first_die;
17946         }
17947
17948       if (!first_die)
17949         first_die = die;
17950       else
17951         last_sibling->sibling = die;
17952
17953       last_sibling = die;
17954     }
17955 }
17956
17957 /* Read a die, all of its descendents, and all of its siblings; set
17958    all of the fields of all of the dies correctly.  Arguments are as
17959    in read_die_and_children.
17960    This the main entry point for reading a DIE and all its children.  */
17961
17962 static struct die_info *
17963 read_die_and_siblings (const struct die_reader_specs *reader,
17964                        const gdb_byte *info_ptr,
17965                        const gdb_byte **new_info_ptr,
17966                        struct die_info *parent)
17967 {
17968   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17969                                                   new_info_ptr, parent);
17970
17971   if (dwarf_die_debug)
17972     {
17973       fprintf_unfiltered (gdb_stdlog,
17974                           "Read die from %s@0x%x of %s:\n",
17975                           get_section_name (reader->die_section),
17976                           (unsigned) (info_ptr - reader->die_section->buffer),
17977                           bfd_get_filename (reader->abfd));
17978       dump_die (die, dwarf_die_debug);
17979     }
17980
17981   return die;
17982 }
17983
17984 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17985    attributes.
17986    The caller is responsible for filling in the extra attributes
17987    and updating (*DIEP)->num_attrs.
17988    Set DIEP to point to a newly allocated die with its information,
17989    except for its child, sibling, and parent fields.
17990    Set HAS_CHILDREN to tell whether the die has children or not.  */
17991
17992 static const gdb_byte *
17993 read_full_die_1 (const struct die_reader_specs *reader,
17994                  struct die_info **diep, const gdb_byte *info_ptr,
17995                  int *has_children, int num_extra_attrs)
17996 {
17997   unsigned int abbrev_number, bytes_read, i;
17998   struct abbrev_info *abbrev;
17999   struct die_info *die;
18000   struct dwarf2_cu *cu = reader->cu;
18001   bfd *abfd = reader->abfd;
18002
18003   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18004   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18005   info_ptr += bytes_read;
18006   if (!abbrev_number)
18007     {
18008       *diep = NULL;
18009       *has_children = 0;
18010       return info_ptr;
18011     }
18012
18013   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18014   if (!abbrev)
18015     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18016            abbrev_number,
18017            bfd_get_filename (abfd));
18018
18019   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18020   die->sect_off = sect_off;
18021   die->tag = abbrev->tag;
18022   die->abbrev = abbrev_number;
18023
18024   /* Make the result usable.
18025      The caller needs to update num_attrs after adding the extra
18026      attributes.  */
18027   die->num_attrs = abbrev->num_attrs;
18028
18029   for (i = 0; i < abbrev->num_attrs; ++i)
18030     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18031                                info_ptr);
18032
18033   *diep = die;
18034   *has_children = abbrev->has_children;
18035   return info_ptr;
18036 }
18037
18038 /* Read a die and all its attributes.
18039    Set DIEP to point to a newly allocated die with its information,
18040    except for its child, sibling, and parent fields.
18041    Set HAS_CHILDREN to tell whether the die has children or not.  */
18042
18043 static const gdb_byte *
18044 read_full_die (const struct die_reader_specs *reader,
18045                struct die_info **diep, const gdb_byte *info_ptr,
18046                int *has_children)
18047 {
18048   const gdb_byte *result;
18049
18050   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18051
18052   if (dwarf_die_debug)
18053     {
18054       fprintf_unfiltered (gdb_stdlog,
18055                           "Read die from %s@0x%x of %s:\n",
18056                           get_section_name (reader->die_section),
18057                           (unsigned) (info_ptr - reader->die_section->buffer),
18058                           bfd_get_filename (reader->abfd));
18059       dump_die (*diep, dwarf_die_debug);
18060     }
18061
18062   return result;
18063 }
18064 \f
18065 /* Abbreviation tables.
18066
18067    In DWARF version 2, the description of the debugging information is
18068    stored in a separate .debug_abbrev section.  Before we read any
18069    dies from a section we read in all abbreviations and install them
18070    in a hash table.  */
18071
18072 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18073
18074 struct abbrev_info *
18075 abbrev_table::alloc_abbrev ()
18076 {
18077   struct abbrev_info *abbrev;
18078
18079   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18080   memset (abbrev, 0, sizeof (struct abbrev_info));
18081
18082   return abbrev;
18083 }
18084
18085 /* Add an abbreviation to the table.  */
18086
18087 void
18088 abbrev_table::add_abbrev (unsigned int abbrev_number,
18089                           struct abbrev_info *abbrev)
18090 {
18091   unsigned int hash_number;
18092
18093   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18094   abbrev->next = m_abbrevs[hash_number];
18095   m_abbrevs[hash_number] = abbrev;
18096 }
18097
18098 /* Look up an abbrev in the table.
18099    Returns NULL if the abbrev is not found.  */
18100
18101 struct abbrev_info *
18102 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18103 {
18104   unsigned int hash_number;
18105   struct abbrev_info *abbrev;
18106
18107   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18108   abbrev = m_abbrevs[hash_number];
18109
18110   while (abbrev)
18111     {
18112       if (abbrev->number == abbrev_number)
18113         return abbrev;
18114       abbrev = abbrev->next;
18115     }
18116   return NULL;
18117 }
18118
18119 /* Read in an abbrev table.  */
18120
18121 static abbrev_table_up
18122 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18123                          struct dwarf2_section_info *section,
18124                          sect_offset sect_off)
18125 {
18126   struct objfile *objfile = dwarf2_per_objfile->objfile;
18127   bfd *abfd = get_section_bfd_owner (section);
18128   const gdb_byte *abbrev_ptr;
18129   struct abbrev_info *cur_abbrev;
18130   unsigned int abbrev_number, bytes_read, abbrev_name;
18131   unsigned int abbrev_form;
18132   struct attr_abbrev *cur_attrs;
18133   unsigned int allocated_attrs;
18134
18135   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18136
18137   dwarf2_read_section (objfile, section);
18138   abbrev_ptr = section->buffer + to_underlying (sect_off);
18139   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18140   abbrev_ptr += bytes_read;
18141
18142   allocated_attrs = ATTR_ALLOC_CHUNK;
18143   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18144
18145   /* Loop until we reach an abbrev number of 0.  */
18146   while (abbrev_number)
18147     {
18148       cur_abbrev = abbrev_table->alloc_abbrev ();
18149
18150       /* read in abbrev header */
18151       cur_abbrev->number = abbrev_number;
18152       cur_abbrev->tag
18153         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18154       abbrev_ptr += bytes_read;
18155       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18156       abbrev_ptr += 1;
18157
18158       /* now read in declarations */
18159       for (;;)
18160         {
18161           LONGEST implicit_const;
18162
18163           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18164           abbrev_ptr += bytes_read;
18165           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18166           abbrev_ptr += bytes_read;
18167           if (abbrev_form == DW_FORM_implicit_const)
18168             {
18169               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18170                                                    &bytes_read);
18171               abbrev_ptr += bytes_read;
18172             }
18173           else
18174             {
18175               /* Initialize it due to a false compiler warning.  */
18176               implicit_const = -1;
18177             }
18178
18179           if (abbrev_name == 0)
18180             break;
18181
18182           if (cur_abbrev->num_attrs == allocated_attrs)
18183             {
18184               allocated_attrs += ATTR_ALLOC_CHUNK;
18185               cur_attrs
18186                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18187             }
18188
18189           cur_attrs[cur_abbrev->num_attrs].name
18190             = (enum dwarf_attribute) abbrev_name;
18191           cur_attrs[cur_abbrev->num_attrs].form
18192             = (enum dwarf_form) abbrev_form;
18193           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18194           ++cur_abbrev->num_attrs;
18195         }
18196
18197       cur_abbrev->attrs =
18198         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18199                    cur_abbrev->num_attrs);
18200       memcpy (cur_abbrev->attrs, cur_attrs,
18201               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18202
18203       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18204
18205       /* Get next abbreviation.
18206          Under Irix6 the abbreviations for a compilation unit are not
18207          always properly terminated with an abbrev number of 0.
18208          Exit loop if we encounter an abbreviation which we have
18209          already read (which means we are about to read the abbreviations
18210          for the next compile unit) or if the end of the abbreviation
18211          table is reached.  */
18212       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18213         break;
18214       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18215       abbrev_ptr += bytes_read;
18216       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18217         break;
18218     }
18219
18220   xfree (cur_attrs);
18221   return abbrev_table;
18222 }
18223
18224 /* Returns nonzero if TAG represents a type that we might generate a partial
18225    symbol for.  */
18226
18227 static int
18228 is_type_tag_for_partial (int tag)
18229 {
18230   switch (tag)
18231     {
18232 #if 0
18233     /* Some types that would be reasonable to generate partial symbols for,
18234        that we don't at present.  */
18235     case DW_TAG_array_type:
18236     case DW_TAG_file_type:
18237     case DW_TAG_ptr_to_member_type:
18238     case DW_TAG_set_type:
18239     case DW_TAG_string_type:
18240     case DW_TAG_subroutine_type:
18241 #endif
18242     case DW_TAG_base_type:
18243     case DW_TAG_class_type:
18244     case DW_TAG_interface_type:
18245     case DW_TAG_enumeration_type:
18246     case DW_TAG_structure_type:
18247     case DW_TAG_subrange_type:
18248     case DW_TAG_typedef:
18249     case DW_TAG_union_type:
18250       return 1;
18251     default:
18252       return 0;
18253     }
18254 }
18255
18256 /* Load all DIEs that are interesting for partial symbols into memory.  */
18257
18258 static struct partial_die_info *
18259 load_partial_dies (const struct die_reader_specs *reader,
18260                    const gdb_byte *info_ptr, int building_psymtab)
18261 {
18262   struct dwarf2_cu *cu = reader->cu;
18263   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18264   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18265   unsigned int bytes_read;
18266   unsigned int load_all = 0;
18267   int nesting_level = 1;
18268
18269   parent_die = NULL;
18270   last_die = NULL;
18271
18272   gdb_assert (cu->per_cu != NULL);
18273   if (cu->per_cu->load_all_dies)
18274     load_all = 1;
18275
18276   cu->partial_dies
18277     = htab_create_alloc_ex (cu->header.length / 12,
18278                             partial_die_hash,
18279                             partial_die_eq,
18280                             NULL,
18281                             &cu->comp_unit_obstack,
18282                             hashtab_obstack_allocate,
18283                             dummy_obstack_deallocate);
18284
18285   while (1)
18286     {
18287       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18288
18289       /* A NULL abbrev means the end of a series of children.  */
18290       if (abbrev == NULL)
18291         {
18292           if (--nesting_level == 0)
18293             return first_die;
18294
18295           info_ptr += bytes_read;
18296           last_die = parent_die;
18297           parent_die = parent_die->die_parent;
18298           continue;
18299         }
18300
18301       /* Check for template arguments.  We never save these; if
18302          they're seen, we just mark the parent, and go on our way.  */
18303       if (parent_die != NULL
18304           && cu->language == language_cplus
18305           && (abbrev->tag == DW_TAG_template_type_param
18306               || abbrev->tag == DW_TAG_template_value_param))
18307         {
18308           parent_die->has_template_arguments = 1;
18309
18310           if (!load_all)
18311             {
18312               /* We don't need a partial DIE for the template argument.  */
18313               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18314               continue;
18315             }
18316         }
18317
18318       /* We only recurse into c++ subprograms looking for template arguments.
18319          Skip their other children.  */
18320       if (!load_all
18321           && cu->language == language_cplus
18322           && parent_die != NULL
18323           && parent_die->tag == DW_TAG_subprogram)
18324         {
18325           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18326           continue;
18327         }
18328
18329       /* Check whether this DIE is interesting enough to save.  Normally
18330          we would not be interested in members here, but there may be
18331          later variables referencing them via DW_AT_specification (for
18332          static members).  */
18333       if (!load_all
18334           && !is_type_tag_for_partial (abbrev->tag)
18335           && abbrev->tag != DW_TAG_constant
18336           && abbrev->tag != DW_TAG_enumerator
18337           && abbrev->tag != DW_TAG_subprogram
18338           && abbrev->tag != DW_TAG_inlined_subroutine
18339           && abbrev->tag != DW_TAG_lexical_block
18340           && abbrev->tag != DW_TAG_variable
18341           && abbrev->tag != DW_TAG_namespace
18342           && abbrev->tag != DW_TAG_module
18343           && abbrev->tag != DW_TAG_member
18344           && abbrev->tag != DW_TAG_imported_unit
18345           && abbrev->tag != DW_TAG_imported_declaration)
18346         {
18347           /* Otherwise we skip to the next sibling, if any.  */
18348           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18349           continue;
18350         }
18351
18352       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18353                                    abbrev);
18354
18355       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18356
18357       /* This two-pass algorithm for processing partial symbols has a
18358          high cost in cache pressure.  Thus, handle some simple cases
18359          here which cover the majority of C partial symbols.  DIEs
18360          which neither have specification tags in them, nor could have
18361          specification tags elsewhere pointing at them, can simply be
18362          processed and discarded.
18363
18364          This segment is also optional; scan_partial_symbols and
18365          add_partial_symbol will handle these DIEs if we chain
18366          them in normally.  When compilers which do not emit large
18367          quantities of duplicate debug information are more common,
18368          this code can probably be removed.  */
18369
18370       /* Any complete simple types at the top level (pretty much all
18371          of them, for a language without namespaces), can be processed
18372          directly.  */
18373       if (parent_die == NULL
18374           && pdi.has_specification == 0
18375           && pdi.is_declaration == 0
18376           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18377               || pdi.tag == DW_TAG_base_type
18378               || pdi.tag == DW_TAG_subrange_type))
18379         {
18380           if (building_psymtab && pdi.name != NULL)
18381             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18382                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18383                                  &objfile->static_psymbols,
18384                                  0, cu->language, objfile);
18385           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18386           continue;
18387         }
18388
18389       /* The exception for DW_TAG_typedef with has_children above is
18390          a workaround of GCC PR debug/47510.  In the case of this complaint
18391          type_name_or_error will error on such types later.
18392
18393          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18394          it could not find the child DIEs referenced later, this is checked
18395          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18396
18397       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18398         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18399                      "- DIE at %s [in module %s]"),
18400                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18401
18402       /* If we're at the second level, and we're an enumerator, and
18403          our parent has no specification (meaning possibly lives in a
18404          namespace elsewhere), then we can add the partial symbol now
18405          instead of queueing it.  */
18406       if (pdi.tag == DW_TAG_enumerator
18407           && parent_die != NULL
18408           && parent_die->die_parent == NULL
18409           && parent_die->tag == DW_TAG_enumeration_type
18410           && parent_die->has_specification == 0)
18411         {
18412           if (pdi.name == NULL)
18413             complaint (_("malformed enumerator DIE ignored"));
18414           else if (building_psymtab)
18415             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18416                                  VAR_DOMAIN, LOC_CONST, -1,
18417                                  cu->language == language_cplus
18418                                  ? &objfile->global_psymbols
18419                                  : &objfile->static_psymbols,
18420                                  0, cu->language, objfile);
18421
18422           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18423           continue;
18424         }
18425
18426       struct partial_die_info *part_die
18427         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18428
18429       /* We'll save this DIE so link it in.  */
18430       part_die->die_parent = parent_die;
18431       part_die->die_sibling = NULL;
18432       part_die->die_child = NULL;
18433
18434       if (last_die && last_die == parent_die)
18435         last_die->die_child = part_die;
18436       else if (last_die)
18437         last_die->die_sibling = part_die;
18438
18439       last_die = part_die;
18440
18441       if (first_die == NULL)
18442         first_die = part_die;
18443
18444       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18445          find interesting need to be in the hash table, because we
18446          also have the parent/sibling/child chains; only those that we
18447          might refer to by offset later during partial symbol reading.
18448
18449          For now this means things that might have be the target of a
18450          DW_AT_specification, DW_AT_abstract_origin, or
18451          DW_AT_extension.  DW_AT_extension will refer only to
18452          namespaces; DW_AT_abstract_origin refers to functions (and
18453          many things under the function DIE, but we do not recurse
18454          into function DIEs during partial symbol reading) and
18455          possibly variables as well; DW_AT_specification refers to
18456          declarations.  Declarations ought to have the DW_AT_declaration
18457          flag.  It happens that GCC forgets to put it in sometimes, but
18458          only for functions, not for types.
18459
18460          Adding more things than necessary to the hash table is harmless
18461          except for the performance cost.  Adding too few will result in
18462          wasted time in find_partial_die, when we reread the compilation
18463          unit with load_all_dies set.  */
18464
18465       if (load_all
18466           || abbrev->tag == DW_TAG_constant
18467           || abbrev->tag == DW_TAG_subprogram
18468           || abbrev->tag == DW_TAG_variable
18469           || abbrev->tag == DW_TAG_namespace
18470           || part_die->is_declaration)
18471         {
18472           void **slot;
18473
18474           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18475                                            to_underlying (part_die->sect_off),
18476                                            INSERT);
18477           *slot = part_die;
18478         }
18479
18480       /* For some DIEs we want to follow their children (if any).  For C
18481          we have no reason to follow the children of structures; for other
18482          languages we have to, so that we can get at method physnames
18483          to infer fully qualified class names, for DW_AT_specification,
18484          and for C++ template arguments.  For C++, we also look one level
18485          inside functions to find template arguments (if the name of the
18486          function does not already contain the template arguments).
18487
18488          For Ada, we need to scan the children of subprograms and lexical
18489          blocks as well because Ada allows the definition of nested
18490          entities that could be interesting for the debugger, such as
18491          nested subprograms for instance.  */
18492       if (last_die->has_children
18493           && (load_all
18494               || last_die->tag == DW_TAG_namespace
18495               || last_die->tag == DW_TAG_module
18496               || last_die->tag == DW_TAG_enumeration_type
18497               || (cu->language == language_cplus
18498                   && last_die->tag == DW_TAG_subprogram
18499                   && (last_die->name == NULL
18500                       || strchr (last_die->name, '<') == NULL))
18501               || (cu->language != language_c
18502                   && (last_die->tag == DW_TAG_class_type
18503                       || last_die->tag == DW_TAG_interface_type
18504                       || last_die->tag == DW_TAG_structure_type
18505                       || last_die->tag == DW_TAG_union_type))
18506               || (cu->language == language_ada
18507                   && (last_die->tag == DW_TAG_subprogram
18508                       || last_die->tag == DW_TAG_lexical_block))))
18509         {
18510           nesting_level++;
18511           parent_die = last_die;
18512           continue;
18513         }
18514
18515       /* Otherwise we skip to the next sibling, if any.  */
18516       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18517
18518       /* Back to the top, do it again.  */
18519     }
18520 }
18521
18522 partial_die_info::partial_die_info (sect_offset sect_off_,
18523                                     struct abbrev_info *abbrev)
18524   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18525 {
18526 }
18527
18528 /* Read a minimal amount of information into the minimal die structure.
18529    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18530
18531 const gdb_byte *
18532 partial_die_info::read (const struct die_reader_specs *reader,
18533                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18534 {
18535   struct dwarf2_cu *cu = reader->cu;
18536   struct dwarf2_per_objfile *dwarf2_per_objfile
18537     = cu->per_cu->dwarf2_per_objfile;
18538   unsigned int i;
18539   int has_low_pc_attr = 0;
18540   int has_high_pc_attr = 0;
18541   int high_pc_relative = 0;
18542
18543   for (i = 0; i < abbrev.num_attrs; ++i)
18544     {
18545       struct attribute attr;
18546
18547       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18548
18549       /* Store the data if it is of an attribute we want to keep in a
18550          partial symbol table.  */
18551       switch (attr.name)
18552         {
18553         case DW_AT_name:
18554           switch (tag)
18555             {
18556             case DW_TAG_compile_unit:
18557             case DW_TAG_partial_unit:
18558             case DW_TAG_type_unit:
18559               /* Compilation units have a DW_AT_name that is a filename, not
18560                  a source language identifier.  */
18561             case DW_TAG_enumeration_type:
18562             case DW_TAG_enumerator:
18563               /* These tags always have simple identifiers already; no need
18564                  to canonicalize them.  */
18565               name = DW_STRING (&attr);
18566               break;
18567             default:
18568               {
18569                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18570
18571                 name
18572                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18573                                               &objfile->per_bfd->storage_obstack);
18574               }
18575               break;
18576             }
18577           break;
18578         case DW_AT_linkage_name:
18579         case DW_AT_MIPS_linkage_name:
18580           /* Note that both forms of linkage name might appear.  We
18581              assume they will be the same, and we only store the last
18582              one we see.  */
18583           if (cu->language == language_ada)
18584             name = DW_STRING (&attr);
18585           linkage_name = DW_STRING (&attr);
18586           break;
18587         case DW_AT_low_pc:
18588           has_low_pc_attr = 1;
18589           lowpc = attr_value_as_address (&attr);
18590           break;
18591         case DW_AT_high_pc:
18592           has_high_pc_attr = 1;
18593           highpc = attr_value_as_address (&attr);
18594           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18595                 high_pc_relative = 1;
18596           break;
18597         case DW_AT_location:
18598           /* Support the .debug_loc offsets.  */
18599           if (attr_form_is_block (&attr))
18600             {
18601                d.locdesc = DW_BLOCK (&attr);
18602             }
18603           else if (attr_form_is_section_offset (&attr))
18604             {
18605               dwarf2_complex_location_expr_complaint ();
18606             }
18607           else
18608             {
18609               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18610                                                      "partial symbol information");
18611             }
18612           break;
18613         case DW_AT_external:
18614           is_external = DW_UNSND (&attr);
18615           break;
18616         case DW_AT_declaration:
18617           is_declaration = DW_UNSND (&attr);
18618           break;
18619         case DW_AT_type:
18620           has_type = 1;
18621           break;
18622         case DW_AT_abstract_origin:
18623         case DW_AT_specification:
18624         case DW_AT_extension:
18625           has_specification = 1;
18626           spec_offset = dwarf2_get_ref_die_offset (&attr);
18627           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18628                                    || cu->per_cu->is_dwz);
18629           break;
18630         case DW_AT_sibling:
18631           /* Ignore absolute siblings, they might point outside of
18632              the current compile unit.  */
18633           if (attr.form == DW_FORM_ref_addr)
18634             complaint (_("ignoring absolute DW_AT_sibling"));
18635           else
18636             {
18637               const gdb_byte *buffer = reader->buffer;
18638               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18639               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18640
18641               if (sibling_ptr < info_ptr)
18642                 complaint (_("DW_AT_sibling points backwards"));
18643               else if (sibling_ptr > reader->buffer_end)
18644                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18645               else
18646                 sibling = sibling_ptr;
18647             }
18648           break;
18649         case DW_AT_byte_size:
18650           has_byte_size = 1;
18651           break;
18652         case DW_AT_const_value:
18653           has_const_value = 1;
18654           break;
18655         case DW_AT_calling_convention:
18656           /* DWARF doesn't provide a way to identify a program's source-level
18657              entry point.  DW_AT_calling_convention attributes are only meant
18658              to describe functions' calling conventions.
18659
18660              However, because it's a necessary piece of information in
18661              Fortran, and before DWARF 4 DW_CC_program was the only
18662              piece of debugging information whose definition refers to
18663              a 'main program' at all, several compilers marked Fortran
18664              main programs with DW_CC_program --- even when those
18665              functions use the standard calling conventions.
18666
18667              Although DWARF now specifies a way to provide this
18668              information, we support this practice for backward
18669              compatibility.  */
18670           if (DW_UNSND (&attr) == DW_CC_program
18671               && cu->language == language_fortran)
18672             main_subprogram = 1;
18673           break;
18674         case DW_AT_inline:
18675           if (DW_UNSND (&attr) == DW_INL_inlined
18676               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18677             may_be_inlined = 1;
18678           break;
18679
18680         case DW_AT_import:
18681           if (tag == DW_TAG_imported_unit)
18682             {
18683               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18684               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18685                                   || cu->per_cu->is_dwz);
18686             }
18687           break;
18688
18689         case DW_AT_main_subprogram:
18690           main_subprogram = DW_UNSND (&attr);
18691           break;
18692
18693         default:
18694           break;
18695         }
18696     }
18697
18698   if (high_pc_relative)
18699     highpc += lowpc;
18700
18701   if (has_low_pc_attr && has_high_pc_attr)
18702     {
18703       /* When using the GNU linker, .gnu.linkonce. sections are used to
18704          eliminate duplicate copies of functions and vtables and such.
18705          The linker will arbitrarily choose one and discard the others.
18706          The AT_*_pc values for such functions refer to local labels in
18707          these sections.  If the section from that file was discarded, the
18708          labels are not in the output, so the relocs get a value of 0.
18709          If this is a discarded function, mark the pc bounds as invalid,
18710          so that GDB will ignore it.  */
18711       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18712         {
18713           struct objfile *objfile = dwarf2_per_objfile->objfile;
18714           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18715
18716           complaint (_("DW_AT_low_pc %s is zero "
18717                        "for DIE at %s [in module %s]"),
18718                      paddress (gdbarch, lowpc),
18719                      sect_offset_str (sect_off),
18720                      objfile_name (objfile));
18721         }
18722       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18723       else if (lowpc >= highpc)
18724         {
18725           struct objfile *objfile = dwarf2_per_objfile->objfile;
18726           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18727
18728           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18729                        "for DIE at %s [in module %s]"),
18730                      paddress (gdbarch, lowpc),
18731                      paddress (gdbarch, highpc),
18732                      sect_offset_str (sect_off),
18733                      objfile_name (objfile));
18734         }
18735       else
18736         has_pc_info = 1;
18737     }
18738
18739   return info_ptr;
18740 }
18741
18742 /* Find a cached partial DIE at OFFSET in CU.  */
18743
18744 struct partial_die_info *
18745 dwarf2_cu::find_partial_die (sect_offset sect_off)
18746 {
18747   struct partial_die_info *lookup_die = NULL;
18748   struct partial_die_info part_die (sect_off);
18749
18750   lookup_die = ((struct partial_die_info *)
18751                 htab_find_with_hash (partial_dies, &part_die,
18752                                      to_underlying (sect_off)));
18753
18754   return lookup_die;
18755 }
18756
18757 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18758    except in the case of .debug_types DIEs which do not reference
18759    outside their CU (they do however referencing other types via
18760    DW_FORM_ref_sig8).  */
18761
18762 static struct partial_die_info *
18763 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18764 {
18765   struct dwarf2_per_objfile *dwarf2_per_objfile
18766     = cu->per_cu->dwarf2_per_objfile;
18767   struct objfile *objfile = dwarf2_per_objfile->objfile;
18768   struct dwarf2_per_cu_data *per_cu = NULL;
18769   struct partial_die_info *pd = NULL;
18770
18771   if (offset_in_dwz == cu->per_cu->is_dwz
18772       && offset_in_cu_p (&cu->header, sect_off))
18773     {
18774       pd = cu->find_partial_die (sect_off);
18775       if (pd != NULL)
18776         return pd;
18777       /* We missed recording what we needed.
18778          Load all dies and try again.  */
18779       per_cu = cu->per_cu;
18780     }
18781   else
18782     {
18783       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18784       if (cu->per_cu->is_debug_types)
18785         {
18786           error (_("Dwarf Error: Type Unit at offset %s contains"
18787                    " external reference to offset %s [in module %s].\n"),
18788                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18789                  bfd_get_filename (objfile->obfd));
18790         }
18791       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18792                                                  dwarf2_per_objfile);
18793
18794       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18795         load_partial_comp_unit (per_cu);
18796
18797       per_cu->cu->last_used = 0;
18798       pd = per_cu->cu->find_partial_die (sect_off);
18799     }
18800
18801   /* If we didn't find it, and not all dies have been loaded,
18802      load them all and try again.  */
18803
18804   if (pd == NULL && per_cu->load_all_dies == 0)
18805     {
18806       per_cu->load_all_dies = 1;
18807
18808       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18809          THIS_CU->cu may already be in use.  So we can't just free it and
18810          replace its DIEs with the ones we read in.  Instead, we leave those
18811          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18812          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18813          set.  */
18814       load_partial_comp_unit (per_cu);
18815
18816       pd = per_cu->cu->find_partial_die (sect_off);
18817     }
18818
18819   if (pd == NULL)
18820     internal_error (__FILE__, __LINE__,
18821                     _("could not find partial DIE %s "
18822                       "in cache [from module %s]\n"),
18823                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18824   return pd;
18825 }
18826
18827 /* See if we can figure out if the class lives in a namespace.  We do
18828    this by looking for a member function; its demangled name will
18829    contain namespace info, if there is any.  */
18830
18831 static void
18832 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18833                                   struct dwarf2_cu *cu)
18834 {
18835   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18836      what template types look like, because the demangler
18837      frequently doesn't give the same name as the debug info.  We
18838      could fix this by only using the demangled name to get the
18839      prefix (but see comment in read_structure_type).  */
18840
18841   struct partial_die_info *real_pdi;
18842   struct partial_die_info *child_pdi;
18843
18844   /* If this DIE (this DIE's specification, if any) has a parent, then
18845      we should not do this.  We'll prepend the parent's fully qualified
18846      name when we create the partial symbol.  */
18847
18848   real_pdi = struct_pdi;
18849   while (real_pdi->has_specification)
18850     real_pdi = find_partial_die (real_pdi->spec_offset,
18851                                  real_pdi->spec_is_dwz, cu);
18852
18853   if (real_pdi->die_parent != NULL)
18854     return;
18855
18856   for (child_pdi = struct_pdi->die_child;
18857        child_pdi != NULL;
18858        child_pdi = child_pdi->die_sibling)
18859     {
18860       if (child_pdi->tag == DW_TAG_subprogram
18861           && child_pdi->linkage_name != NULL)
18862         {
18863           char *actual_class_name
18864             = language_class_name_from_physname (cu->language_defn,
18865                                                  child_pdi->linkage_name);
18866           if (actual_class_name != NULL)
18867             {
18868               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18869               struct_pdi->name
18870                 = ((const char *)
18871                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18872                                   actual_class_name,
18873                                   strlen (actual_class_name)));
18874               xfree (actual_class_name);
18875             }
18876           break;
18877         }
18878     }
18879 }
18880
18881 void
18882 partial_die_info::fixup (struct dwarf2_cu *cu)
18883 {
18884   /* Once we've fixed up a die, there's no point in doing so again.
18885      This also avoids a memory leak if we were to call
18886      guess_partial_die_structure_name multiple times.  */
18887   if (fixup_called)
18888     return;
18889
18890   /* If we found a reference attribute and the DIE has no name, try
18891      to find a name in the referred to DIE.  */
18892
18893   if (name == NULL && has_specification)
18894     {
18895       struct partial_die_info *spec_die;
18896
18897       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18898
18899       spec_die->fixup (cu);
18900
18901       if (spec_die->name)
18902         {
18903           name = spec_die->name;
18904
18905           /* Copy DW_AT_external attribute if it is set.  */
18906           if (spec_die->is_external)
18907             is_external = spec_die->is_external;
18908         }
18909     }
18910
18911   /* Set default names for some unnamed DIEs.  */
18912
18913   if (name == NULL && tag == DW_TAG_namespace)
18914     name = CP_ANONYMOUS_NAMESPACE_STR;
18915
18916   /* If there is no parent die to provide a namespace, and there are
18917      children, see if we can determine the namespace from their linkage
18918      name.  */
18919   if (cu->language == language_cplus
18920       && !VEC_empty (dwarf2_section_info_def,
18921                      cu->per_cu->dwarf2_per_objfile->types)
18922       && die_parent == NULL
18923       && has_children
18924       && (tag == DW_TAG_class_type
18925           || tag == DW_TAG_structure_type
18926           || tag == DW_TAG_union_type))
18927     guess_partial_die_structure_name (this, cu);
18928
18929   /* GCC might emit a nameless struct or union that has a linkage
18930      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18931   if (name == NULL
18932       && (tag == DW_TAG_class_type
18933           || tag == DW_TAG_interface_type
18934           || tag == DW_TAG_structure_type
18935           || tag == DW_TAG_union_type)
18936       && linkage_name != NULL)
18937     {
18938       char *demangled;
18939
18940       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18941       if (demangled)
18942         {
18943           const char *base;
18944
18945           /* Strip any leading namespaces/classes, keep only the base name.
18946              DW_AT_name for named DIEs does not contain the prefixes.  */
18947           base = strrchr (demangled, ':');
18948           if (base && base > demangled && base[-1] == ':')
18949             base++;
18950           else
18951             base = demangled;
18952
18953           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18954           name
18955             = ((const char *)
18956                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18957                               base, strlen (base)));
18958           xfree (demangled);
18959         }
18960     }
18961
18962   fixup_called = 1;
18963 }
18964
18965 /* Read an attribute value described by an attribute form.  */
18966
18967 static const gdb_byte *
18968 read_attribute_value (const struct die_reader_specs *reader,
18969                       struct attribute *attr, unsigned form,
18970                       LONGEST implicit_const, const gdb_byte *info_ptr)
18971 {
18972   struct dwarf2_cu *cu = reader->cu;
18973   struct dwarf2_per_objfile *dwarf2_per_objfile
18974     = cu->per_cu->dwarf2_per_objfile;
18975   struct objfile *objfile = dwarf2_per_objfile->objfile;
18976   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18977   bfd *abfd = reader->abfd;
18978   struct comp_unit_head *cu_header = &cu->header;
18979   unsigned int bytes_read;
18980   struct dwarf_block *blk;
18981
18982   attr->form = (enum dwarf_form) form;
18983   switch (form)
18984     {
18985     case DW_FORM_ref_addr:
18986       if (cu->header.version == 2)
18987         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18988       else
18989         DW_UNSND (attr) = read_offset (abfd, info_ptr,
18990                                        &cu->header, &bytes_read);
18991       info_ptr += bytes_read;
18992       break;
18993     case DW_FORM_GNU_ref_alt:
18994       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18995       info_ptr += bytes_read;
18996       break;
18997     case DW_FORM_addr:
18998       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18999       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19000       info_ptr += bytes_read;
19001       break;
19002     case DW_FORM_block2:
19003       blk = dwarf_alloc_block (cu);
19004       blk->size = read_2_bytes (abfd, info_ptr);
19005       info_ptr += 2;
19006       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19007       info_ptr += blk->size;
19008       DW_BLOCK (attr) = blk;
19009       break;
19010     case DW_FORM_block4:
19011       blk = dwarf_alloc_block (cu);
19012       blk->size = read_4_bytes (abfd, info_ptr);
19013       info_ptr += 4;
19014       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19015       info_ptr += blk->size;
19016       DW_BLOCK (attr) = blk;
19017       break;
19018     case DW_FORM_data2:
19019       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19020       info_ptr += 2;
19021       break;
19022     case DW_FORM_data4:
19023       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19024       info_ptr += 4;
19025       break;
19026     case DW_FORM_data8:
19027       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19028       info_ptr += 8;
19029       break;
19030     case DW_FORM_data16:
19031       blk = dwarf_alloc_block (cu);
19032       blk->size = 16;
19033       blk->data = read_n_bytes (abfd, info_ptr, 16);
19034       info_ptr += 16;
19035       DW_BLOCK (attr) = blk;
19036       break;
19037     case DW_FORM_sec_offset:
19038       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19039       info_ptr += bytes_read;
19040       break;
19041     case DW_FORM_string:
19042       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19043       DW_STRING_IS_CANONICAL (attr) = 0;
19044       info_ptr += bytes_read;
19045       break;
19046     case DW_FORM_strp:
19047       if (!cu->per_cu->is_dwz)
19048         {
19049           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19050                                                    abfd, info_ptr, cu_header,
19051                                                    &bytes_read);
19052           DW_STRING_IS_CANONICAL (attr) = 0;
19053           info_ptr += bytes_read;
19054           break;
19055         }
19056       /* FALLTHROUGH */
19057     case DW_FORM_line_strp:
19058       if (!cu->per_cu->is_dwz)
19059         {
19060           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19061                                                         abfd, info_ptr,
19062                                                         cu_header, &bytes_read);
19063           DW_STRING_IS_CANONICAL (attr) = 0;
19064           info_ptr += bytes_read;
19065           break;
19066         }
19067       /* FALLTHROUGH */
19068     case DW_FORM_GNU_strp_alt:
19069       {
19070         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19071         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19072                                           &bytes_read);
19073
19074         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19075                                                           dwz, str_offset);
19076         DW_STRING_IS_CANONICAL (attr) = 0;
19077         info_ptr += bytes_read;
19078       }
19079       break;
19080     case DW_FORM_exprloc:
19081     case DW_FORM_block:
19082       blk = dwarf_alloc_block (cu);
19083       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19084       info_ptr += bytes_read;
19085       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19086       info_ptr += blk->size;
19087       DW_BLOCK (attr) = blk;
19088       break;
19089     case DW_FORM_block1:
19090       blk = dwarf_alloc_block (cu);
19091       blk->size = read_1_byte (abfd, info_ptr);
19092       info_ptr += 1;
19093       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19094       info_ptr += blk->size;
19095       DW_BLOCK (attr) = blk;
19096       break;
19097     case DW_FORM_data1:
19098       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19099       info_ptr += 1;
19100       break;
19101     case DW_FORM_flag:
19102       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19103       info_ptr += 1;
19104       break;
19105     case DW_FORM_flag_present:
19106       DW_UNSND (attr) = 1;
19107       break;
19108     case DW_FORM_sdata:
19109       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19110       info_ptr += bytes_read;
19111       break;
19112     case DW_FORM_udata:
19113       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19114       info_ptr += bytes_read;
19115       break;
19116     case DW_FORM_ref1:
19117       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19118                          + read_1_byte (abfd, info_ptr));
19119       info_ptr += 1;
19120       break;
19121     case DW_FORM_ref2:
19122       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19123                          + read_2_bytes (abfd, info_ptr));
19124       info_ptr += 2;
19125       break;
19126     case DW_FORM_ref4:
19127       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19128                          + read_4_bytes (abfd, info_ptr));
19129       info_ptr += 4;
19130       break;
19131     case DW_FORM_ref8:
19132       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19133                          + read_8_bytes (abfd, info_ptr));
19134       info_ptr += 8;
19135       break;
19136     case DW_FORM_ref_sig8:
19137       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19138       info_ptr += 8;
19139       break;
19140     case DW_FORM_ref_udata:
19141       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19142                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19143       info_ptr += bytes_read;
19144       break;
19145     case DW_FORM_indirect:
19146       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19147       info_ptr += bytes_read;
19148       if (form == DW_FORM_implicit_const)
19149         {
19150           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19151           info_ptr += bytes_read;
19152         }
19153       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19154                                        info_ptr);
19155       break;
19156     case DW_FORM_implicit_const:
19157       DW_SND (attr) = implicit_const;
19158       break;
19159     case DW_FORM_GNU_addr_index:
19160       if (reader->dwo_file == NULL)
19161         {
19162           /* For now flag a hard error.
19163              Later we can turn this into a complaint.  */
19164           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19165                  dwarf_form_name (form),
19166                  bfd_get_filename (abfd));
19167         }
19168       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19169       info_ptr += bytes_read;
19170       break;
19171     case DW_FORM_GNU_str_index:
19172       if (reader->dwo_file == NULL)
19173         {
19174           /* For now flag a hard error.
19175              Later we can turn this into a complaint if warranted.  */
19176           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19177                  dwarf_form_name (form),
19178                  bfd_get_filename (abfd));
19179         }
19180       {
19181         ULONGEST str_index =
19182           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19183
19184         DW_STRING (attr) = read_str_index (reader, str_index);
19185         DW_STRING_IS_CANONICAL (attr) = 0;
19186         info_ptr += bytes_read;
19187       }
19188       break;
19189     default:
19190       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19191              dwarf_form_name (form),
19192              bfd_get_filename (abfd));
19193     }
19194
19195   /* Super hack.  */
19196   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19197     attr->form = DW_FORM_GNU_ref_alt;
19198
19199   /* We have seen instances where the compiler tried to emit a byte
19200      size attribute of -1 which ended up being encoded as an unsigned
19201      0xffffffff.  Although 0xffffffff is technically a valid size value,
19202      an object of this size seems pretty unlikely so we can relatively
19203      safely treat these cases as if the size attribute was invalid and
19204      treat them as zero by default.  */
19205   if (attr->name == DW_AT_byte_size
19206       && form == DW_FORM_data4
19207       && DW_UNSND (attr) >= 0xffffffff)
19208     {
19209       complaint
19210         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19211          hex_string (DW_UNSND (attr)));
19212       DW_UNSND (attr) = 0;
19213     }
19214
19215   return info_ptr;
19216 }
19217
19218 /* Read an attribute described by an abbreviated attribute.  */
19219
19220 static const gdb_byte *
19221 read_attribute (const struct die_reader_specs *reader,
19222                 struct attribute *attr, struct attr_abbrev *abbrev,
19223                 const gdb_byte *info_ptr)
19224 {
19225   attr->name = abbrev->name;
19226   return read_attribute_value (reader, attr, abbrev->form,
19227                                abbrev->implicit_const, info_ptr);
19228 }
19229
19230 /* Read dwarf information from a buffer.  */
19231
19232 static unsigned int
19233 read_1_byte (bfd *abfd, const gdb_byte *buf)
19234 {
19235   return bfd_get_8 (abfd, buf);
19236 }
19237
19238 static int
19239 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19240 {
19241   return bfd_get_signed_8 (abfd, buf);
19242 }
19243
19244 static unsigned int
19245 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19246 {
19247   return bfd_get_16 (abfd, buf);
19248 }
19249
19250 static int
19251 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19252 {
19253   return bfd_get_signed_16 (abfd, buf);
19254 }
19255
19256 static unsigned int
19257 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19258 {
19259   return bfd_get_32 (abfd, buf);
19260 }
19261
19262 static int
19263 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19264 {
19265   return bfd_get_signed_32 (abfd, buf);
19266 }
19267
19268 static ULONGEST
19269 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19270 {
19271   return bfd_get_64 (abfd, buf);
19272 }
19273
19274 static CORE_ADDR
19275 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19276               unsigned int *bytes_read)
19277 {
19278   struct comp_unit_head *cu_header = &cu->header;
19279   CORE_ADDR retval = 0;
19280
19281   if (cu_header->signed_addr_p)
19282     {
19283       switch (cu_header->addr_size)
19284         {
19285         case 2:
19286           retval = bfd_get_signed_16 (abfd, buf);
19287           break;
19288         case 4:
19289           retval = bfd_get_signed_32 (abfd, buf);
19290           break;
19291         case 8:
19292           retval = bfd_get_signed_64 (abfd, buf);
19293           break;
19294         default:
19295           internal_error (__FILE__, __LINE__,
19296                           _("read_address: bad switch, signed [in module %s]"),
19297                           bfd_get_filename (abfd));
19298         }
19299     }
19300   else
19301     {
19302       switch (cu_header->addr_size)
19303         {
19304         case 2:
19305           retval = bfd_get_16 (abfd, buf);
19306           break;
19307         case 4:
19308           retval = bfd_get_32 (abfd, buf);
19309           break;
19310         case 8:
19311           retval = bfd_get_64 (abfd, buf);
19312           break;
19313         default:
19314           internal_error (__FILE__, __LINE__,
19315                           _("read_address: bad switch, "
19316                             "unsigned [in module %s]"),
19317                           bfd_get_filename (abfd));
19318         }
19319     }
19320
19321   *bytes_read = cu_header->addr_size;
19322   return retval;
19323 }
19324
19325 /* Read the initial length from a section.  The (draft) DWARF 3
19326    specification allows the initial length to take up either 4 bytes
19327    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19328    bytes describe the length and all offsets will be 8 bytes in length
19329    instead of 4.
19330
19331    An older, non-standard 64-bit format is also handled by this
19332    function.  The older format in question stores the initial length
19333    as an 8-byte quantity without an escape value.  Lengths greater
19334    than 2^32 aren't very common which means that the initial 4 bytes
19335    is almost always zero.  Since a length value of zero doesn't make
19336    sense for the 32-bit format, this initial zero can be considered to
19337    be an escape value which indicates the presence of the older 64-bit
19338    format.  As written, the code can't detect (old format) lengths
19339    greater than 4GB.  If it becomes necessary to handle lengths
19340    somewhat larger than 4GB, we could allow other small values (such
19341    as the non-sensical values of 1, 2, and 3) to also be used as
19342    escape values indicating the presence of the old format.
19343
19344    The value returned via bytes_read should be used to increment the
19345    relevant pointer after calling read_initial_length().
19346
19347    [ Note:  read_initial_length() and read_offset() are based on the
19348      document entitled "DWARF Debugging Information Format", revision
19349      3, draft 8, dated November 19, 2001.  This document was obtained
19350      from:
19351
19352         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19353
19354      This document is only a draft and is subject to change.  (So beware.)
19355
19356      Details regarding the older, non-standard 64-bit format were
19357      determined empirically by examining 64-bit ELF files produced by
19358      the SGI toolchain on an IRIX 6.5 machine.
19359
19360      - Kevin, July 16, 2002
19361    ] */
19362
19363 static LONGEST
19364 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19365 {
19366   LONGEST length = bfd_get_32 (abfd, buf);
19367
19368   if (length == 0xffffffff)
19369     {
19370       length = bfd_get_64 (abfd, buf + 4);
19371       *bytes_read = 12;
19372     }
19373   else if (length == 0)
19374     {
19375       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19376       length = bfd_get_64 (abfd, buf);
19377       *bytes_read = 8;
19378     }
19379   else
19380     {
19381       *bytes_read = 4;
19382     }
19383
19384   return length;
19385 }
19386
19387 /* Cover function for read_initial_length.
19388    Returns the length of the object at BUF, and stores the size of the
19389    initial length in *BYTES_READ and stores the size that offsets will be in
19390    *OFFSET_SIZE.
19391    If the initial length size is not equivalent to that specified in
19392    CU_HEADER then issue a complaint.
19393    This is useful when reading non-comp-unit headers.  */
19394
19395 static LONGEST
19396 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19397                                         const struct comp_unit_head *cu_header,
19398                                         unsigned int *bytes_read,
19399                                         unsigned int *offset_size)
19400 {
19401   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19402
19403   gdb_assert (cu_header->initial_length_size == 4
19404               || cu_header->initial_length_size == 8
19405               || cu_header->initial_length_size == 12);
19406
19407   if (cu_header->initial_length_size != *bytes_read)
19408     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19409
19410   *offset_size = (*bytes_read == 4) ? 4 : 8;
19411   return length;
19412 }
19413
19414 /* Read an offset from the data stream.  The size of the offset is
19415    given by cu_header->offset_size.  */
19416
19417 static LONGEST
19418 read_offset (bfd *abfd, const gdb_byte *buf,
19419              const struct comp_unit_head *cu_header,
19420              unsigned int *bytes_read)
19421 {
19422   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19423
19424   *bytes_read = cu_header->offset_size;
19425   return offset;
19426 }
19427
19428 /* Read an offset from the data stream.  */
19429
19430 static LONGEST
19431 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19432 {
19433   LONGEST retval = 0;
19434
19435   switch (offset_size)
19436     {
19437     case 4:
19438       retval = bfd_get_32 (abfd, buf);
19439       break;
19440     case 8:
19441       retval = bfd_get_64 (abfd, buf);
19442       break;
19443     default:
19444       internal_error (__FILE__, __LINE__,
19445                       _("read_offset_1: bad switch [in module %s]"),
19446                       bfd_get_filename (abfd));
19447     }
19448
19449   return retval;
19450 }
19451
19452 static const gdb_byte *
19453 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19454 {
19455   /* If the size of a host char is 8 bits, we can return a pointer
19456      to the buffer, otherwise we have to copy the data to a buffer
19457      allocated on the temporary obstack.  */
19458   gdb_assert (HOST_CHAR_BIT == 8);
19459   return buf;
19460 }
19461
19462 static const char *
19463 read_direct_string (bfd *abfd, const gdb_byte *buf,
19464                     unsigned int *bytes_read_ptr)
19465 {
19466   /* If the size of a host char is 8 bits, we can return a pointer
19467      to the string, otherwise we have to copy the string to a buffer
19468      allocated on the temporary obstack.  */
19469   gdb_assert (HOST_CHAR_BIT == 8);
19470   if (*buf == '\0')
19471     {
19472       *bytes_read_ptr = 1;
19473       return NULL;
19474     }
19475   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19476   return (const char *) buf;
19477 }
19478
19479 /* Return pointer to string at section SECT offset STR_OFFSET with error
19480    reporting strings FORM_NAME and SECT_NAME.  */
19481
19482 static const char *
19483 read_indirect_string_at_offset_from (struct objfile *objfile,
19484                                      bfd *abfd, LONGEST str_offset,
19485                                      struct dwarf2_section_info *sect,
19486                                      const char *form_name,
19487                                      const char *sect_name)
19488 {
19489   dwarf2_read_section (objfile, sect);
19490   if (sect->buffer == NULL)
19491     error (_("%s used without %s section [in module %s]"),
19492            form_name, sect_name, bfd_get_filename (abfd));
19493   if (str_offset >= sect->size)
19494     error (_("%s pointing outside of %s section [in module %s]"),
19495            form_name, sect_name, bfd_get_filename (abfd));
19496   gdb_assert (HOST_CHAR_BIT == 8);
19497   if (sect->buffer[str_offset] == '\0')
19498     return NULL;
19499   return (const char *) (sect->buffer + str_offset);
19500 }
19501
19502 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19503
19504 static const char *
19505 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19506                                 bfd *abfd, LONGEST str_offset)
19507 {
19508   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19509                                               abfd, str_offset,
19510                                               &dwarf2_per_objfile->str,
19511                                               "DW_FORM_strp", ".debug_str");
19512 }
19513
19514 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19515
19516 static const char *
19517 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19518                                      bfd *abfd, LONGEST str_offset)
19519 {
19520   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19521                                               abfd, str_offset,
19522                                               &dwarf2_per_objfile->line_str,
19523                                               "DW_FORM_line_strp",
19524                                               ".debug_line_str");
19525 }
19526
19527 /* Read a string at offset STR_OFFSET in the .debug_str section from
19528    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19529    the string consists of a single NUL byte, return NULL; otherwise
19530    return a pointer to the string.  */
19531
19532 static const char *
19533 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19534                                LONGEST str_offset)
19535 {
19536   dwarf2_read_section (objfile, &dwz->str);
19537
19538   if (dwz->str.buffer == NULL)
19539     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19540              "section [in module %s]"),
19541            bfd_get_filename (dwz->dwz_bfd));
19542   if (str_offset >= dwz->str.size)
19543     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19544              ".debug_str section [in module %s]"),
19545            bfd_get_filename (dwz->dwz_bfd));
19546   gdb_assert (HOST_CHAR_BIT == 8);
19547   if (dwz->str.buffer[str_offset] == '\0')
19548     return NULL;
19549   return (const char *) (dwz->str.buffer + str_offset);
19550 }
19551
19552 /* Return pointer to string at .debug_str offset as read from BUF.
19553    BUF is assumed to be in a compilation unit described by CU_HEADER.
19554    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19555
19556 static const char *
19557 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19558                       const gdb_byte *buf,
19559                       const struct comp_unit_head *cu_header,
19560                       unsigned int *bytes_read_ptr)
19561 {
19562   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19563
19564   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19565 }
19566
19567 /* Return pointer to string at .debug_line_str offset as read from BUF.
19568    BUF is assumed to be in a compilation unit described by CU_HEADER.
19569    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19570
19571 static const char *
19572 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19573                            bfd *abfd, const gdb_byte *buf,
19574                            const struct comp_unit_head *cu_header,
19575                            unsigned int *bytes_read_ptr)
19576 {
19577   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19578
19579   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19580                                               str_offset);
19581 }
19582
19583 ULONGEST
19584 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19585                           unsigned int *bytes_read_ptr)
19586 {
19587   ULONGEST result;
19588   unsigned int num_read;
19589   int shift;
19590   unsigned char byte;
19591
19592   result = 0;
19593   shift = 0;
19594   num_read = 0;
19595   while (1)
19596     {
19597       byte = bfd_get_8 (abfd, buf);
19598       buf++;
19599       num_read++;
19600       result |= ((ULONGEST) (byte & 127) << shift);
19601       if ((byte & 128) == 0)
19602         {
19603           break;
19604         }
19605       shift += 7;
19606     }
19607   *bytes_read_ptr = num_read;
19608   return result;
19609 }
19610
19611 static LONGEST
19612 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19613                     unsigned int *bytes_read_ptr)
19614 {
19615   LONGEST result;
19616   int shift, num_read;
19617   unsigned char byte;
19618
19619   result = 0;
19620   shift = 0;
19621   num_read = 0;
19622   while (1)
19623     {
19624       byte = bfd_get_8 (abfd, buf);
19625       buf++;
19626       num_read++;
19627       result |= ((LONGEST) (byte & 127) << shift);
19628       shift += 7;
19629       if ((byte & 128) == 0)
19630         {
19631           break;
19632         }
19633     }
19634   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19635     result |= -(((LONGEST) 1) << shift);
19636   *bytes_read_ptr = num_read;
19637   return result;
19638 }
19639
19640 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19641    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19642    ADDR_SIZE is the size of addresses from the CU header.  */
19643
19644 static CORE_ADDR
19645 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19646                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19647 {
19648   struct objfile *objfile = dwarf2_per_objfile->objfile;
19649   bfd *abfd = objfile->obfd;
19650   const gdb_byte *info_ptr;
19651
19652   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19653   if (dwarf2_per_objfile->addr.buffer == NULL)
19654     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19655            objfile_name (objfile));
19656   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19657     error (_("DW_FORM_addr_index pointing outside of "
19658              ".debug_addr section [in module %s]"),
19659            objfile_name (objfile));
19660   info_ptr = (dwarf2_per_objfile->addr.buffer
19661               + addr_base + addr_index * addr_size);
19662   if (addr_size == 4)
19663     return bfd_get_32 (abfd, info_ptr);
19664   else
19665     return bfd_get_64 (abfd, info_ptr);
19666 }
19667
19668 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19669
19670 static CORE_ADDR
19671 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19672 {
19673   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19674                             cu->addr_base, cu->header.addr_size);
19675 }
19676
19677 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19678
19679 static CORE_ADDR
19680 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19681                              unsigned int *bytes_read)
19682 {
19683   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19684   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19685
19686   return read_addr_index (cu, addr_index);
19687 }
19688
19689 /* Data structure to pass results from dwarf2_read_addr_index_reader
19690    back to dwarf2_read_addr_index.  */
19691
19692 struct dwarf2_read_addr_index_data
19693 {
19694   ULONGEST addr_base;
19695   int addr_size;
19696 };
19697
19698 /* die_reader_func for dwarf2_read_addr_index.  */
19699
19700 static void
19701 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19702                                const gdb_byte *info_ptr,
19703                                struct die_info *comp_unit_die,
19704                                int has_children,
19705                                void *data)
19706 {
19707   struct dwarf2_cu *cu = reader->cu;
19708   struct dwarf2_read_addr_index_data *aidata =
19709     (struct dwarf2_read_addr_index_data *) data;
19710
19711   aidata->addr_base = cu->addr_base;
19712   aidata->addr_size = cu->header.addr_size;
19713 }
19714
19715 /* Given an index in .debug_addr, fetch the value.
19716    NOTE: This can be called during dwarf expression evaluation,
19717    long after the debug information has been read, and thus per_cu->cu
19718    may no longer exist.  */
19719
19720 CORE_ADDR
19721 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19722                         unsigned int addr_index)
19723 {
19724   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19725   struct dwarf2_cu *cu = per_cu->cu;
19726   ULONGEST addr_base;
19727   int addr_size;
19728
19729   /* We need addr_base and addr_size.
19730      If we don't have PER_CU->cu, we have to get it.
19731      Nasty, but the alternative is storing the needed info in PER_CU,
19732      which at this point doesn't seem justified: it's not clear how frequently
19733      it would get used and it would increase the size of every PER_CU.
19734      Entry points like dwarf2_per_cu_addr_size do a similar thing
19735      so we're not in uncharted territory here.
19736      Alas we need to be a bit more complicated as addr_base is contained
19737      in the DIE.
19738
19739      We don't need to read the entire CU(/TU).
19740      We just need the header and top level die.
19741
19742      IWBN to use the aging mechanism to let us lazily later discard the CU.
19743      For now we skip this optimization.  */
19744
19745   if (cu != NULL)
19746     {
19747       addr_base = cu->addr_base;
19748       addr_size = cu->header.addr_size;
19749     }
19750   else
19751     {
19752       struct dwarf2_read_addr_index_data aidata;
19753
19754       /* Note: We can't use init_cutu_and_read_dies_simple here,
19755          we need addr_base.  */
19756       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19757                                dwarf2_read_addr_index_reader, &aidata);
19758       addr_base = aidata.addr_base;
19759       addr_size = aidata.addr_size;
19760     }
19761
19762   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19763                             addr_size);
19764 }
19765
19766 /* Given a DW_FORM_GNU_str_index, fetch the string.
19767    This is only used by the Fission support.  */
19768
19769 static const char *
19770 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19771 {
19772   struct dwarf2_cu *cu = reader->cu;
19773   struct dwarf2_per_objfile *dwarf2_per_objfile
19774     = cu->per_cu->dwarf2_per_objfile;
19775   struct objfile *objfile = dwarf2_per_objfile->objfile;
19776   const char *objf_name = objfile_name (objfile);
19777   bfd *abfd = objfile->obfd;
19778   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19779   struct dwarf2_section_info *str_offsets_section =
19780     &reader->dwo_file->sections.str_offsets;
19781   const gdb_byte *info_ptr;
19782   ULONGEST str_offset;
19783   static const char form_name[] = "DW_FORM_GNU_str_index";
19784
19785   dwarf2_read_section (objfile, str_section);
19786   dwarf2_read_section (objfile, str_offsets_section);
19787   if (str_section->buffer == NULL)
19788     error (_("%s used without .debug_str.dwo section"
19789              " in CU at offset %s [in module %s]"),
19790            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19791   if (str_offsets_section->buffer == NULL)
19792     error (_("%s used without .debug_str_offsets.dwo section"
19793              " in CU at offset %s [in module %s]"),
19794            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19795   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19796     error (_("%s pointing outside of .debug_str_offsets.dwo"
19797              " section in CU at offset %s [in module %s]"),
19798            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19799   info_ptr = (str_offsets_section->buffer
19800               + str_index * cu->header.offset_size);
19801   if (cu->header.offset_size == 4)
19802     str_offset = bfd_get_32 (abfd, info_ptr);
19803   else
19804     str_offset = bfd_get_64 (abfd, info_ptr);
19805   if (str_offset >= str_section->size)
19806     error (_("Offset from %s pointing outside of"
19807              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19808            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19809   return (const char *) (str_section->buffer + str_offset);
19810 }
19811
19812 /* Return the length of an LEB128 number in BUF.  */
19813
19814 static int
19815 leb128_size (const gdb_byte *buf)
19816 {
19817   const gdb_byte *begin = buf;
19818   gdb_byte byte;
19819
19820   while (1)
19821     {
19822       byte = *buf++;
19823       if ((byte & 128) == 0)
19824         return buf - begin;
19825     }
19826 }
19827
19828 static void
19829 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19830 {
19831   switch (lang)
19832     {
19833     case DW_LANG_C89:
19834     case DW_LANG_C99:
19835     case DW_LANG_C11:
19836     case DW_LANG_C:
19837     case DW_LANG_UPC:
19838       cu->language = language_c;
19839       break;
19840     case DW_LANG_Java:
19841     case DW_LANG_C_plus_plus:
19842     case DW_LANG_C_plus_plus_11:
19843     case DW_LANG_C_plus_plus_14:
19844       cu->language = language_cplus;
19845       break;
19846     case DW_LANG_D:
19847       cu->language = language_d;
19848       break;
19849     case DW_LANG_Fortran77:
19850     case DW_LANG_Fortran90:
19851     case DW_LANG_Fortran95:
19852     case DW_LANG_Fortran03:
19853     case DW_LANG_Fortran08:
19854       cu->language = language_fortran;
19855       break;
19856     case DW_LANG_Go:
19857       cu->language = language_go;
19858       break;
19859     case DW_LANG_Mips_Assembler:
19860       cu->language = language_asm;
19861       break;
19862     case DW_LANG_Ada83:
19863     case DW_LANG_Ada95:
19864       cu->language = language_ada;
19865       break;
19866     case DW_LANG_Modula2:
19867       cu->language = language_m2;
19868       break;
19869     case DW_LANG_Pascal83:
19870       cu->language = language_pascal;
19871       break;
19872     case DW_LANG_ObjC:
19873       cu->language = language_objc;
19874       break;
19875     case DW_LANG_Rust:
19876     case DW_LANG_Rust_old:
19877       cu->language = language_rust;
19878       break;
19879     case DW_LANG_Cobol74:
19880     case DW_LANG_Cobol85:
19881     default:
19882       cu->language = language_minimal;
19883       break;
19884     }
19885   cu->language_defn = language_def (cu->language);
19886 }
19887
19888 /* Return the named attribute or NULL if not there.  */
19889
19890 static struct attribute *
19891 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19892 {
19893   for (;;)
19894     {
19895       unsigned int i;
19896       struct attribute *spec = NULL;
19897
19898       for (i = 0; i < die->num_attrs; ++i)
19899         {
19900           if (die->attrs[i].name == name)
19901             return &die->attrs[i];
19902           if (die->attrs[i].name == DW_AT_specification
19903               || die->attrs[i].name == DW_AT_abstract_origin)
19904             spec = &die->attrs[i];
19905         }
19906
19907       if (!spec)
19908         break;
19909
19910       die = follow_die_ref (die, spec, &cu);
19911     }
19912
19913   return NULL;
19914 }
19915
19916 /* Return the named attribute or NULL if not there,
19917    but do not follow DW_AT_specification, etc.
19918    This is for use in contexts where we're reading .debug_types dies.
19919    Following DW_AT_specification, DW_AT_abstract_origin will take us
19920    back up the chain, and we want to go down.  */
19921
19922 static struct attribute *
19923 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19924 {
19925   unsigned int i;
19926
19927   for (i = 0; i < die->num_attrs; ++i)
19928     if (die->attrs[i].name == name)
19929       return &die->attrs[i];
19930
19931   return NULL;
19932 }
19933
19934 /* Return the string associated with a string-typed attribute, or NULL if it
19935    is either not found or is of an incorrect type.  */
19936
19937 static const char *
19938 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19939 {
19940   struct attribute *attr;
19941   const char *str = NULL;
19942
19943   attr = dwarf2_attr (die, name, cu);
19944
19945   if (attr != NULL)
19946     {
19947       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19948           || attr->form == DW_FORM_string
19949           || attr->form == DW_FORM_GNU_str_index
19950           || attr->form == DW_FORM_GNU_strp_alt)
19951         str = DW_STRING (attr);
19952       else
19953         complaint (_("string type expected for attribute %s for "
19954                      "DIE at %s in module %s"),
19955                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19956                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19957     }
19958
19959   return str;
19960 }
19961
19962 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19963    and holds a non-zero value.  This function should only be used for
19964    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19965
19966 static int
19967 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19968 {
19969   struct attribute *attr = dwarf2_attr (die, name, cu);
19970
19971   return (attr && DW_UNSND (attr));
19972 }
19973
19974 static int
19975 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19976 {
19977   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19978      which value is non-zero.  However, we have to be careful with
19979      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19980      (via dwarf2_flag_true_p) follows this attribute.  So we may
19981      end up accidently finding a declaration attribute that belongs
19982      to a different DIE referenced by the specification attribute,
19983      even though the given DIE does not have a declaration attribute.  */
19984   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
19985           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
19986 }
19987
19988 /* Return the die giving the specification for DIE, if there is
19989    one.  *SPEC_CU is the CU containing DIE on input, and the CU
19990    containing the return value on output.  If there is no
19991    specification, but there is an abstract origin, that is
19992    returned.  */
19993
19994 static struct die_info *
19995 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
19996 {
19997   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
19998                                              *spec_cu);
19999
20000   if (spec_attr == NULL)
20001     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20002
20003   if (spec_attr == NULL)
20004     return NULL;
20005   else
20006     return follow_die_ref (die, spec_attr, spec_cu);
20007 }
20008
20009 /* Stub for free_line_header to match void * callback types.  */
20010
20011 static void
20012 free_line_header_voidp (void *arg)
20013 {
20014   struct line_header *lh = (struct line_header *) arg;
20015
20016   delete lh;
20017 }
20018
20019 void
20020 line_header::add_include_dir (const char *include_dir)
20021 {
20022   if (dwarf_line_debug >= 2)
20023     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20024                         include_dirs.size () + 1, include_dir);
20025
20026   include_dirs.push_back (include_dir);
20027 }
20028
20029 void
20030 line_header::add_file_name (const char *name,
20031                             dir_index d_index,
20032                             unsigned int mod_time,
20033                             unsigned int length)
20034 {
20035   if (dwarf_line_debug >= 2)
20036     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20037                         (unsigned) file_names.size () + 1, name);
20038
20039   file_names.emplace_back (name, d_index, mod_time, length);
20040 }
20041
20042 /* A convenience function to find the proper .debug_line section for a CU.  */
20043
20044 static struct dwarf2_section_info *
20045 get_debug_line_section (struct dwarf2_cu *cu)
20046 {
20047   struct dwarf2_section_info *section;
20048   struct dwarf2_per_objfile *dwarf2_per_objfile
20049     = cu->per_cu->dwarf2_per_objfile;
20050
20051   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20052      DWO file.  */
20053   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20054     section = &cu->dwo_unit->dwo_file->sections.line;
20055   else if (cu->per_cu->is_dwz)
20056     {
20057       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20058
20059       section = &dwz->line;
20060     }
20061   else
20062     section = &dwarf2_per_objfile->line;
20063
20064   return section;
20065 }
20066
20067 /* Read directory or file name entry format, starting with byte of
20068    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20069    entries count and the entries themselves in the described entry
20070    format.  */
20071
20072 static void
20073 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20074                         bfd *abfd, const gdb_byte **bufp,
20075                         struct line_header *lh,
20076                         const struct comp_unit_head *cu_header,
20077                         void (*callback) (struct line_header *lh,
20078                                           const char *name,
20079                                           dir_index d_index,
20080                                           unsigned int mod_time,
20081                                           unsigned int length))
20082 {
20083   gdb_byte format_count, formati;
20084   ULONGEST data_count, datai;
20085   const gdb_byte *buf = *bufp;
20086   const gdb_byte *format_header_data;
20087   unsigned int bytes_read;
20088
20089   format_count = read_1_byte (abfd, buf);
20090   buf += 1;
20091   format_header_data = buf;
20092   for (formati = 0; formati < format_count; formati++)
20093     {
20094       read_unsigned_leb128 (abfd, buf, &bytes_read);
20095       buf += bytes_read;
20096       read_unsigned_leb128 (abfd, buf, &bytes_read);
20097       buf += bytes_read;
20098     }
20099
20100   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20101   buf += bytes_read;
20102   for (datai = 0; datai < data_count; datai++)
20103     {
20104       const gdb_byte *format = format_header_data;
20105       struct file_entry fe;
20106
20107       for (formati = 0; formati < format_count; formati++)
20108         {
20109           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20110           format += bytes_read;
20111
20112           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20113           format += bytes_read;
20114
20115           gdb::optional<const char *> string;
20116           gdb::optional<unsigned int> uint;
20117
20118           switch (form)
20119             {
20120             case DW_FORM_string:
20121               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20122               buf += bytes_read;
20123               break;
20124
20125             case DW_FORM_line_strp:
20126               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20127                                                          abfd, buf,
20128                                                          cu_header,
20129                                                          &bytes_read));
20130               buf += bytes_read;
20131               break;
20132
20133             case DW_FORM_data1:
20134               uint.emplace (read_1_byte (abfd, buf));
20135               buf += 1;
20136               break;
20137
20138             case DW_FORM_data2:
20139               uint.emplace (read_2_bytes (abfd, buf));
20140               buf += 2;
20141               break;
20142
20143             case DW_FORM_data4:
20144               uint.emplace (read_4_bytes (abfd, buf));
20145               buf += 4;
20146               break;
20147
20148             case DW_FORM_data8:
20149               uint.emplace (read_8_bytes (abfd, buf));
20150               buf += 8;
20151               break;
20152
20153             case DW_FORM_udata:
20154               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20155               buf += bytes_read;
20156               break;
20157
20158             case DW_FORM_block:
20159               /* It is valid only for DW_LNCT_timestamp which is ignored by
20160                  current GDB.  */
20161               break;
20162             }
20163
20164           switch (content_type)
20165             {
20166             case DW_LNCT_path:
20167               if (string.has_value ())
20168                 fe.name = *string;
20169               break;
20170             case DW_LNCT_directory_index:
20171               if (uint.has_value ())
20172                 fe.d_index = (dir_index) *uint;
20173               break;
20174             case DW_LNCT_timestamp:
20175               if (uint.has_value ())
20176                 fe.mod_time = *uint;
20177               break;
20178             case DW_LNCT_size:
20179               if (uint.has_value ())
20180                 fe.length = *uint;
20181               break;
20182             case DW_LNCT_MD5:
20183               break;
20184             default:
20185               complaint (_("Unknown format content type %s"),
20186                          pulongest (content_type));
20187             }
20188         }
20189
20190       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20191     }
20192
20193   *bufp = buf;
20194 }
20195
20196 /* Read the statement program header starting at OFFSET in
20197    .debug_line, or .debug_line.dwo.  Return a pointer
20198    to a struct line_header, allocated using xmalloc.
20199    Returns NULL if there is a problem reading the header, e.g., if it
20200    has a version we don't understand.
20201
20202    NOTE: the strings in the include directory and file name tables of
20203    the returned object point into the dwarf line section buffer,
20204    and must not be freed.  */
20205
20206 static line_header_up
20207 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20208 {
20209   const gdb_byte *line_ptr;
20210   unsigned int bytes_read, offset_size;
20211   int i;
20212   const char *cur_dir, *cur_file;
20213   struct dwarf2_section_info *section;
20214   bfd *abfd;
20215   struct dwarf2_per_objfile *dwarf2_per_objfile
20216     = cu->per_cu->dwarf2_per_objfile;
20217
20218   section = get_debug_line_section (cu);
20219   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20220   if (section->buffer == NULL)
20221     {
20222       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20223         complaint (_("missing .debug_line.dwo section"));
20224       else
20225         complaint (_("missing .debug_line section"));
20226       return 0;
20227     }
20228
20229   /* We can't do this until we know the section is non-empty.
20230      Only then do we know we have such a section.  */
20231   abfd = get_section_bfd_owner (section);
20232
20233   /* Make sure that at least there's room for the total_length field.
20234      That could be 12 bytes long, but we're just going to fudge that.  */
20235   if (to_underlying (sect_off) + 4 >= section->size)
20236     {
20237       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20238       return 0;
20239     }
20240
20241   line_header_up lh (new line_header ());
20242
20243   lh->sect_off = sect_off;
20244   lh->offset_in_dwz = cu->per_cu->is_dwz;
20245
20246   line_ptr = section->buffer + to_underlying (sect_off);
20247
20248   /* Read in the header.  */
20249   lh->total_length =
20250     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20251                                             &bytes_read, &offset_size);
20252   line_ptr += bytes_read;
20253   if (line_ptr + lh->total_length > (section->buffer + section->size))
20254     {
20255       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20256       return 0;
20257     }
20258   lh->statement_program_end = line_ptr + lh->total_length;
20259   lh->version = read_2_bytes (abfd, line_ptr);
20260   line_ptr += 2;
20261   if (lh->version > 5)
20262     {
20263       /* This is a version we don't understand.  The format could have
20264          changed in ways we don't handle properly so just punt.  */
20265       complaint (_("unsupported version in .debug_line section"));
20266       return NULL;
20267     }
20268   if (lh->version >= 5)
20269     {
20270       gdb_byte segment_selector_size;
20271
20272       /* Skip address size.  */
20273       read_1_byte (abfd, line_ptr);
20274       line_ptr += 1;
20275
20276       segment_selector_size = read_1_byte (abfd, line_ptr);
20277       line_ptr += 1;
20278       if (segment_selector_size != 0)
20279         {
20280           complaint (_("unsupported segment selector size %u "
20281                        "in .debug_line section"),
20282                      segment_selector_size);
20283           return NULL;
20284         }
20285     }
20286   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20287   line_ptr += offset_size;
20288   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20289   line_ptr += 1;
20290   if (lh->version >= 4)
20291     {
20292       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20293       line_ptr += 1;
20294     }
20295   else
20296     lh->maximum_ops_per_instruction = 1;
20297
20298   if (lh->maximum_ops_per_instruction == 0)
20299     {
20300       lh->maximum_ops_per_instruction = 1;
20301       complaint (_("invalid maximum_ops_per_instruction "
20302                    "in `.debug_line' section"));
20303     }
20304
20305   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20306   line_ptr += 1;
20307   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20308   line_ptr += 1;
20309   lh->line_range = read_1_byte (abfd, line_ptr);
20310   line_ptr += 1;
20311   lh->opcode_base = read_1_byte (abfd, line_ptr);
20312   line_ptr += 1;
20313   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20314
20315   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20316   for (i = 1; i < lh->opcode_base; ++i)
20317     {
20318       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20319       line_ptr += 1;
20320     }
20321
20322   if (lh->version >= 5)
20323     {
20324       /* Read directory table.  */
20325       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20326                               &cu->header,
20327                               [] (struct line_header *lh, const char *name,
20328                                   dir_index d_index, unsigned int mod_time,
20329                                   unsigned int length)
20330         {
20331           lh->add_include_dir (name);
20332         });
20333
20334       /* Read file name table.  */
20335       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20336                               &cu->header,
20337                               [] (struct line_header *lh, const char *name,
20338                                   dir_index d_index, unsigned int mod_time,
20339                                   unsigned int length)
20340         {
20341           lh->add_file_name (name, d_index, mod_time, length);
20342         });
20343     }
20344   else
20345     {
20346       /* Read directory table.  */
20347       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20348         {
20349           line_ptr += bytes_read;
20350           lh->add_include_dir (cur_dir);
20351         }
20352       line_ptr += bytes_read;
20353
20354       /* Read file name table.  */
20355       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20356         {
20357           unsigned int mod_time, length;
20358           dir_index d_index;
20359
20360           line_ptr += bytes_read;
20361           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20362           line_ptr += bytes_read;
20363           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20364           line_ptr += bytes_read;
20365           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20366           line_ptr += bytes_read;
20367
20368           lh->add_file_name (cur_file, d_index, mod_time, length);
20369         }
20370       line_ptr += bytes_read;
20371     }
20372   lh->statement_program_start = line_ptr;
20373
20374   if (line_ptr > (section->buffer + section->size))
20375     complaint (_("line number info header doesn't "
20376                  "fit in `.debug_line' section"));
20377
20378   return lh;
20379 }
20380
20381 /* Subroutine of dwarf_decode_lines to simplify it.
20382    Return the file name of the psymtab for included file FILE_INDEX
20383    in line header LH of PST.
20384    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20385    If space for the result is malloc'd, *NAME_HOLDER will be set.
20386    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20387
20388 static const char *
20389 psymtab_include_file_name (const struct line_header *lh, int file_index,
20390                            const struct partial_symtab *pst,
20391                            const char *comp_dir,
20392                            gdb::unique_xmalloc_ptr<char> *name_holder)
20393 {
20394   const file_entry &fe = lh->file_names[file_index];
20395   const char *include_name = fe.name;
20396   const char *include_name_to_compare = include_name;
20397   const char *pst_filename;
20398   int file_is_pst;
20399
20400   const char *dir_name = fe.include_dir (lh);
20401
20402   gdb::unique_xmalloc_ptr<char> hold_compare;
20403   if (!IS_ABSOLUTE_PATH (include_name)
20404       && (dir_name != NULL || comp_dir != NULL))
20405     {
20406       /* Avoid creating a duplicate psymtab for PST.
20407          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20408          Before we do the comparison, however, we need to account
20409          for DIR_NAME and COMP_DIR.
20410          First prepend dir_name (if non-NULL).  If we still don't
20411          have an absolute path prepend comp_dir (if non-NULL).
20412          However, the directory we record in the include-file's
20413          psymtab does not contain COMP_DIR (to match the
20414          corresponding symtab(s)).
20415
20416          Example:
20417
20418          bash$ cd /tmp
20419          bash$ gcc -g ./hello.c
20420          include_name = "hello.c"
20421          dir_name = "."
20422          DW_AT_comp_dir = comp_dir = "/tmp"
20423          DW_AT_name = "./hello.c"
20424
20425       */
20426
20427       if (dir_name != NULL)
20428         {
20429           name_holder->reset (concat (dir_name, SLASH_STRING,
20430                                       include_name, (char *) NULL));
20431           include_name = name_holder->get ();
20432           include_name_to_compare = include_name;
20433         }
20434       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20435         {
20436           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20437                                       include_name, (char *) NULL));
20438           include_name_to_compare = hold_compare.get ();
20439         }
20440     }
20441
20442   pst_filename = pst->filename;
20443   gdb::unique_xmalloc_ptr<char> copied_name;
20444   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20445     {
20446       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20447                                  pst_filename, (char *) NULL));
20448       pst_filename = copied_name.get ();
20449     }
20450
20451   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20452
20453   if (file_is_pst)
20454     return NULL;
20455   return include_name;
20456 }
20457
20458 /* State machine to track the state of the line number program.  */
20459
20460 class lnp_state_machine
20461 {
20462 public:
20463   /* Initialize a machine state for the start of a line number
20464      program.  */
20465   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20466                      bool record_lines_p);
20467
20468   file_entry *current_file ()
20469   {
20470     /* lh->file_names is 0-based, but the file name numbers in the
20471        statement program are 1-based.  */
20472     return m_line_header->file_name_at (m_file);
20473   }
20474
20475   /* Record the line in the state machine.  END_SEQUENCE is true if
20476      we're processing the end of a sequence.  */
20477   void record_line (bool end_sequence);
20478
20479   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20480      nop-out rest of the lines in this sequence.  */
20481   void check_line_address (struct dwarf2_cu *cu,
20482                            const gdb_byte *line_ptr,
20483                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20484
20485   void handle_set_discriminator (unsigned int discriminator)
20486   {
20487     m_discriminator = discriminator;
20488     m_line_has_non_zero_discriminator |= discriminator != 0;
20489   }
20490
20491   /* Handle DW_LNE_set_address.  */
20492   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20493   {
20494     m_op_index = 0;
20495     address += baseaddr;
20496     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20497   }
20498
20499   /* Handle DW_LNS_advance_pc.  */
20500   void handle_advance_pc (CORE_ADDR adjust);
20501
20502   /* Handle a special opcode.  */
20503   void handle_special_opcode (unsigned char op_code);
20504
20505   /* Handle DW_LNS_advance_line.  */
20506   void handle_advance_line (int line_delta)
20507   {
20508     advance_line (line_delta);
20509   }
20510
20511   /* Handle DW_LNS_set_file.  */
20512   void handle_set_file (file_name_index file);
20513
20514   /* Handle DW_LNS_negate_stmt.  */
20515   void handle_negate_stmt ()
20516   {
20517     m_is_stmt = !m_is_stmt;
20518   }
20519
20520   /* Handle DW_LNS_const_add_pc.  */
20521   void handle_const_add_pc ();
20522
20523   /* Handle DW_LNS_fixed_advance_pc.  */
20524   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20525   {
20526     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20527     m_op_index = 0;
20528   }
20529
20530   /* Handle DW_LNS_copy.  */
20531   void handle_copy ()
20532   {
20533     record_line (false);
20534     m_discriminator = 0;
20535   }
20536
20537   /* Handle DW_LNE_end_sequence.  */
20538   void handle_end_sequence ()
20539   {
20540     m_currently_recording_lines = true;
20541   }
20542
20543 private:
20544   /* Advance the line by LINE_DELTA.  */
20545   void advance_line (int line_delta)
20546   {
20547     m_line += line_delta;
20548
20549     if (line_delta != 0)
20550       m_line_has_non_zero_discriminator = m_discriminator != 0;
20551   }
20552
20553   struct dwarf2_cu *m_cu;
20554
20555   gdbarch *m_gdbarch;
20556
20557   /* True if we're recording lines.
20558      Otherwise we're building partial symtabs and are just interested in
20559      finding include files mentioned by the line number program.  */
20560   bool m_record_lines_p;
20561
20562   /* The line number header.  */
20563   line_header *m_line_header;
20564
20565   /* These are part of the standard DWARF line number state machine,
20566      and initialized according to the DWARF spec.  */
20567
20568   unsigned char m_op_index = 0;
20569   /* The line table index (1-based) of the current file.  */
20570   file_name_index m_file = (file_name_index) 1;
20571   unsigned int m_line = 1;
20572
20573   /* These are initialized in the constructor.  */
20574
20575   CORE_ADDR m_address;
20576   bool m_is_stmt;
20577   unsigned int m_discriminator;
20578
20579   /* Additional bits of state we need to track.  */
20580
20581   /* The last file that we called dwarf2_start_subfile for.
20582      This is only used for TLLs.  */
20583   unsigned int m_last_file = 0;
20584   /* The last file a line number was recorded for.  */
20585   struct subfile *m_last_subfile = NULL;
20586
20587   /* When true, record the lines we decode.  */
20588   bool m_currently_recording_lines = false;
20589
20590   /* The last line number that was recorded, used to coalesce
20591      consecutive entries for the same line.  This can happen, for
20592      example, when discriminators are present.  PR 17276.  */
20593   unsigned int m_last_line = 0;
20594   bool m_line_has_non_zero_discriminator = false;
20595 };
20596
20597 void
20598 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20599 {
20600   CORE_ADDR addr_adj = (((m_op_index + adjust)
20601                          / m_line_header->maximum_ops_per_instruction)
20602                         * m_line_header->minimum_instruction_length);
20603   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20604   m_op_index = ((m_op_index + adjust)
20605                 % m_line_header->maximum_ops_per_instruction);
20606 }
20607
20608 void
20609 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20610 {
20611   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20612   CORE_ADDR addr_adj = (((m_op_index
20613                           + (adj_opcode / m_line_header->line_range))
20614                          / m_line_header->maximum_ops_per_instruction)
20615                         * m_line_header->minimum_instruction_length);
20616   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20617   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20618                 % m_line_header->maximum_ops_per_instruction);
20619
20620   int line_delta = (m_line_header->line_base
20621                     + (adj_opcode % m_line_header->line_range));
20622   advance_line (line_delta);
20623   record_line (false);
20624   m_discriminator = 0;
20625 }
20626
20627 void
20628 lnp_state_machine::handle_set_file (file_name_index file)
20629 {
20630   m_file = file;
20631
20632   const file_entry *fe = current_file ();
20633   if (fe == NULL)
20634     dwarf2_debug_line_missing_file_complaint ();
20635   else if (m_record_lines_p)
20636     {
20637       const char *dir = fe->include_dir (m_line_header);
20638
20639       m_last_subfile = m_cu->builder->get_current_subfile ();
20640       m_line_has_non_zero_discriminator = m_discriminator != 0;
20641       dwarf2_start_subfile (m_cu, fe->name, dir);
20642     }
20643 }
20644
20645 void
20646 lnp_state_machine::handle_const_add_pc ()
20647 {
20648   CORE_ADDR adjust
20649     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20650
20651   CORE_ADDR addr_adj
20652     = (((m_op_index + adjust)
20653         / m_line_header->maximum_ops_per_instruction)
20654        * m_line_header->minimum_instruction_length);
20655
20656   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20657   m_op_index = ((m_op_index + adjust)
20658                 % m_line_header->maximum_ops_per_instruction);
20659 }
20660
20661 /* Return non-zero if we should add LINE to the line number table.
20662    LINE is the line to add, LAST_LINE is the last line that was added,
20663    LAST_SUBFILE is the subfile for LAST_LINE.
20664    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20665    had a non-zero discriminator.
20666
20667    We have to be careful in the presence of discriminators.
20668    E.g., for this line:
20669
20670      for (i = 0; i < 100000; i++);
20671
20672    clang can emit four line number entries for that one line,
20673    each with a different discriminator.
20674    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20675
20676    However, we want gdb to coalesce all four entries into one.
20677    Otherwise the user could stepi into the middle of the line and
20678    gdb would get confused about whether the pc really was in the
20679    middle of the line.
20680
20681    Things are further complicated by the fact that two consecutive
20682    line number entries for the same line is a heuristic used by gcc
20683    to denote the end of the prologue.  So we can't just discard duplicate
20684    entries, we have to be selective about it.  The heuristic we use is
20685    that we only collapse consecutive entries for the same line if at least
20686    one of those entries has a non-zero discriminator.  PR 17276.
20687
20688    Note: Addresses in the line number state machine can never go backwards
20689    within one sequence, thus this coalescing is ok.  */
20690
20691 static int
20692 dwarf_record_line_p (struct dwarf2_cu *cu,
20693                      unsigned int line, unsigned int last_line,
20694                      int line_has_non_zero_discriminator,
20695                      struct subfile *last_subfile)
20696 {
20697   if (cu->builder->get_current_subfile () != last_subfile)
20698     return 1;
20699   if (line != last_line)
20700     return 1;
20701   /* Same line for the same file that we've seen already.
20702      As a last check, for pr 17276, only record the line if the line
20703      has never had a non-zero discriminator.  */
20704   if (!line_has_non_zero_discriminator)
20705     return 1;
20706   return 0;
20707 }
20708
20709 /* Use the CU's builder to record line number LINE beginning at
20710    address ADDRESS in the line table of subfile SUBFILE.  */
20711
20712 static void
20713 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20714                      unsigned int line, CORE_ADDR address,
20715                      struct dwarf2_cu *cu)
20716 {
20717   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20718
20719   if (dwarf_line_debug)
20720     {
20721       fprintf_unfiltered (gdb_stdlog,
20722                           "Recording line %u, file %s, address %s\n",
20723                           line, lbasename (subfile->name),
20724                           paddress (gdbarch, address));
20725     }
20726
20727   if (cu != nullptr)
20728     cu->builder->record_line (subfile, line, addr);
20729 }
20730
20731 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20732    Mark the end of a set of line number records.
20733    The arguments are the same as for dwarf_record_line_1.
20734    If SUBFILE is NULL the request is ignored.  */
20735
20736 static void
20737 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20738                    CORE_ADDR address, struct dwarf2_cu *cu)
20739 {
20740   if (subfile == NULL)
20741     return;
20742
20743   if (dwarf_line_debug)
20744     {
20745       fprintf_unfiltered (gdb_stdlog,
20746                           "Finishing current line, file %s, address %s\n",
20747                           lbasename (subfile->name),
20748                           paddress (gdbarch, address));
20749     }
20750
20751   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20752 }
20753
20754 void
20755 lnp_state_machine::record_line (bool end_sequence)
20756 {
20757   if (dwarf_line_debug)
20758     {
20759       fprintf_unfiltered (gdb_stdlog,
20760                           "Processing actual line %u: file %u,"
20761                           " address %s, is_stmt %u, discrim %u\n",
20762                           m_line, to_underlying (m_file),
20763                           paddress (m_gdbarch, m_address),
20764                           m_is_stmt, m_discriminator);
20765     }
20766
20767   file_entry *fe = current_file ();
20768
20769   if (fe == NULL)
20770     dwarf2_debug_line_missing_file_complaint ();
20771   /* For now we ignore lines not starting on an instruction boundary.
20772      But not when processing end_sequence for compatibility with the
20773      previous version of the code.  */
20774   else if (m_op_index == 0 || end_sequence)
20775     {
20776       fe->included_p = 1;
20777       if (m_record_lines_p && m_is_stmt)
20778         {
20779           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20780               || end_sequence)
20781             {
20782               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20783                                  m_currently_recording_lines ? m_cu : nullptr);
20784             }
20785
20786           if (!end_sequence)
20787             {
20788               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20789                                        m_line_has_non_zero_discriminator,
20790                                        m_last_subfile))
20791                 {
20792                   dwarf_record_line_1 (m_gdbarch,
20793                                        m_cu->builder->get_current_subfile (),
20794                                        m_line, m_address,
20795                                        m_currently_recording_lines ? m_cu : nullptr);
20796                 }
20797               m_last_subfile = m_cu->builder->get_current_subfile ();
20798               m_last_line = m_line;
20799             }
20800         }
20801     }
20802 }
20803
20804 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20805                                       line_header *lh, bool record_lines_p)
20806 {
20807   m_cu = cu;
20808   m_gdbarch = arch;
20809   m_record_lines_p = record_lines_p;
20810   m_line_header = lh;
20811
20812   m_currently_recording_lines = true;
20813
20814   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20815      was a line entry for it so that the backend has a chance to adjust it
20816      and also record it in case it needs it.  This is currently used by MIPS
20817      code, cf. `mips_adjust_dwarf2_line'.  */
20818   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20819   m_is_stmt = lh->default_is_stmt;
20820   m_discriminator = 0;
20821 }
20822
20823 void
20824 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20825                                        const gdb_byte *line_ptr,
20826                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20827 {
20828   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20829      the pc range of the CU.  However, we restrict the test to only ADDRESS
20830      values of zero to preserve GDB's previous behaviour which is to handle
20831      the specific case of a function being GC'd by the linker.  */
20832
20833   if (address == 0 && address < unrelocated_lowpc)
20834     {
20835       /* This line table is for a function which has been
20836          GCd by the linker.  Ignore it.  PR gdb/12528 */
20837
20838       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20839       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20840
20841       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20842                  line_offset, objfile_name (objfile));
20843       m_currently_recording_lines = false;
20844       /* Note: m_currently_recording_lines is left as false until we see
20845          DW_LNE_end_sequence.  */
20846     }
20847 }
20848
20849 /* Subroutine of dwarf_decode_lines to simplify it.
20850    Process the line number information in LH.
20851    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20852    program in order to set included_p for every referenced header.  */
20853
20854 static void
20855 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20856                       const int decode_for_pst_p, CORE_ADDR lowpc)
20857 {
20858   const gdb_byte *line_ptr, *extended_end;
20859   const gdb_byte *line_end;
20860   unsigned int bytes_read, extended_len;
20861   unsigned char op_code, extended_op;
20862   CORE_ADDR baseaddr;
20863   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20864   bfd *abfd = objfile->obfd;
20865   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20866   /* True if we're recording line info (as opposed to building partial
20867      symtabs and just interested in finding include files mentioned by
20868      the line number program).  */
20869   bool record_lines_p = !decode_for_pst_p;
20870
20871   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20872
20873   line_ptr = lh->statement_program_start;
20874   line_end = lh->statement_program_end;
20875
20876   /* Read the statement sequences until there's nothing left.  */
20877   while (line_ptr < line_end)
20878     {
20879       /* The DWARF line number program state machine.  Reset the state
20880          machine at the start of each sequence.  */
20881       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20882       bool end_sequence = false;
20883
20884       if (record_lines_p)
20885         {
20886           /* Start a subfile for the current file of the state
20887              machine.  */
20888           const file_entry *fe = state_machine.current_file ();
20889
20890           if (fe != NULL)
20891             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20892         }
20893
20894       /* Decode the table.  */
20895       while (line_ptr < line_end && !end_sequence)
20896         {
20897           op_code = read_1_byte (abfd, line_ptr);
20898           line_ptr += 1;
20899
20900           if (op_code >= lh->opcode_base)
20901             {
20902               /* Special opcode.  */
20903               state_machine.handle_special_opcode (op_code);
20904             }
20905           else switch (op_code)
20906             {
20907             case DW_LNS_extended_op:
20908               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20909                                                    &bytes_read);
20910               line_ptr += bytes_read;
20911               extended_end = line_ptr + extended_len;
20912               extended_op = read_1_byte (abfd, line_ptr);
20913               line_ptr += 1;
20914               switch (extended_op)
20915                 {
20916                 case DW_LNE_end_sequence:
20917                   state_machine.handle_end_sequence ();
20918                   end_sequence = true;
20919                   break;
20920                 case DW_LNE_set_address:
20921                   {
20922                     CORE_ADDR address
20923                       = read_address (abfd, line_ptr, cu, &bytes_read);
20924                     line_ptr += bytes_read;
20925
20926                     state_machine.check_line_address (cu, line_ptr,
20927                                                       lowpc - baseaddr, address);
20928                     state_machine.handle_set_address (baseaddr, address);
20929                   }
20930                   break;
20931                 case DW_LNE_define_file:
20932                   {
20933                     const char *cur_file;
20934                     unsigned int mod_time, length;
20935                     dir_index dindex;
20936
20937                     cur_file = read_direct_string (abfd, line_ptr,
20938                                                    &bytes_read);
20939                     line_ptr += bytes_read;
20940                     dindex = (dir_index)
20941                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20942                     line_ptr += bytes_read;
20943                     mod_time =
20944                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20945                     line_ptr += bytes_read;
20946                     length =
20947                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20948                     line_ptr += bytes_read;
20949                     lh->add_file_name (cur_file, dindex, mod_time, length);
20950                   }
20951                   break;
20952                 case DW_LNE_set_discriminator:
20953                   {
20954                     /* The discriminator is not interesting to the
20955                        debugger; just ignore it.  We still need to
20956                        check its value though:
20957                        if there are consecutive entries for the same
20958                        (non-prologue) line we want to coalesce them.
20959                        PR 17276.  */
20960                     unsigned int discr
20961                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20962                     line_ptr += bytes_read;
20963
20964                     state_machine.handle_set_discriminator (discr);
20965                   }
20966                   break;
20967                 default:
20968                   complaint (_("mangled .debug_line section"));
20969                   return;
20970                 }
20971               /* Make sure that we parsed the extended op correctly.  If e.g.
20972                  we expected a different address size than the producer used,
20973                  we may have read the wrong number of bytes.  */
20974               if (line_ptr != extended_end)
20975                 {
20976                   complaint (_("mangled .debug_line section"));
20977                   return;
20978                 }
20979               break;
20980             case DW_LNS_copy:
20981               state_machine.handle_copy ();
20982               break;
20983             case DW_LNS_advance_pc:
20984               {
20985                 CORE_ADDR adjust
20986                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20987                 line_ptr += bytes_read;
20988
20989                 state_machine.handle_advance_pc (adjust);
20990               }
20991               break;
20992             case DW_LNS_advance_line:
20993               {
20994                 int line_delta
20995                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
20996                 line_ptr += bytes_read;
20997
20998                 state_machine.handle_advance_line (line_delta);
20999               }
21000               break;
21001             case DW_LNS_set_file:
21002               {
21003                 file_name_index file
21004                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21005                                                             &bytes_read);
21006                 line_ptr += bytes_read;
21007
21008                 state_machine.handle_set_file (file);
21009               }
21010               break;
21011             case DW_LNS_set_column:
21012               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21013               line_ptr += bytes_read;
21014               break;
21015             case DW_LNS_negate_stmt:
21016               state_machine.handle_negate_stmt ();
21017               break;
21018             case DW_LNS_set_basic_block:
21019               break;
21020             /* Add to the address register of the state machine the
21021                address increment value corresponding to special opcode
21022                255.  I.e., this value is scaled by the minimum
21023                instruction length since special opcode 255 would have
21024                scaled the increment.  */
21025             case DW_LNS_const_add_pc:
21026               state_machine.handle_const_add_pc ();
21027               break;
21028             case DW_LNS_fixed_advance_pc:
21029               {
21030                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21031                 line_ptr += 2;
21032
21033                 state_machine.handle_fixed_advance_pc (addr_adj);
21034               }
21035               break;
21036             default:
21037               {
21038                 /* Unknown standard opcode, ignore it.  */
21039                 int i;
21040
21041                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21042                   {
21043                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21044                     line_ptr += bytes_read;
21045                   }
21046               }
21047             }
21048         }
21049
21050       if (!end_sequence)
21051         dwarf2_debug_line_missing_end_sequence_complaint ();
21052
21053       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21054          in which case we still finish recording the last line).  */
21055       state_machine.record_line (true);
21056     }
21057 }
21058
21059 /* Decode the Line Number Program (LNP) for the given line_header
21060    structure and CU.  The actual information extracted and the type
21061    of structures created from the LNP depends on the value of PST.
21062
21063    1. If PST is NULL, then this procedure uses the data from the program
21064       to create all necessary symbol tables, and their linetables.
21065
21066    2. If PST is not NULL, this procedure reads the program to determine
21067       the list of files included by the unit represented by PST, and
21068       builds all the associated partial symbol tables.
21069
21070    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21071    It is used for relative paths in the line table.
21072    NOTE: When processing partial symtabs (pst != NULL),
21073    comp_dir == pst->dirname.
21074
21075    NOTE: It is important that psymtabs have the same file name (via strcmp)
21076    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21077    symtab we don't use it in the name of the psymtabs we create.
21078    E.g. expand_line_sal requires this when finding psymtabs to expand.
21079    A good testcase for this is mb-inline.exp.
21080
21081    LOWPC is the lowest address in CU (or 0 if not known).
21082
21083    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21084    for its PC<->lines mapping information.  Otherwise only the filename
21085    table is read in.  */
21086
21087 static void
21088 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21089                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21090                     CORE_ADDR lowpc, int decode_mapping)
21091 {
21092   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21093   const int decode_for_pst_p = (pst != NULL);
21094
21095   if (decode_mapping)
21096     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21097
21098   if (decode_for_pst_p)
21099     {
21100       int file_index;
21101
21102       /* Now that we're done scanning the Line Header Program, we can
21103          create the psymtab of each included file.  */
21104       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21105         if (lh->file_names[file_index].included_p == 1)
21106           {
21107             gdb::unique_xmalloc_ptr<char> name_holder;
21108             const char *include_name =
21109               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21110                                          &name_holder);
21111             if (include_name != NULL)
21112               dwarf2_create_include_psymtab (include_name, pst, objfile);
21113           }
21114     }
21115   else
21116     {
21117       /* Make sure a symtab is created for every file, even files
21118          which contain only variables (i.e. no code with associated
21119          line numbers).  */
21120       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21121       int i;
21122
21123       for (i = 0; i < lh->file_names.size (); i++)
21124         {
21125           file_entry &fe = lh->file_names[i];
21126
21127           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21128
21129           if (cu->builder->get_current_subfile ()->symtab == NULL)
21130             {
21131               cu->builder->get_current_subfile ()->symtab
21132                 = allocate_symtab (cust,
21133                                    cu->builder->get_current_subfile ()->name);
21134             }
21135           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21136         }
21137     }
21138 }
21139
21140 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21141    DIRNAME the name of the source directory which contains FILENAME
21142    or NULL if not known.
21143    This routine tries to keep line numbers from identical absolute and
21144    relative file names in a common subfile.
21145
21146    Using the `list' example from the GDB testsuite, which resides in
21147    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21148    of /srcdir/list0.c yields the following debugging information for list0.c:
21149
21150    DW_AT_name:          /srcdir/list0.c
21151    DW_AT_comp_dir:      /compdir
21152    files.files[0].name: list0.h
21153    files.files[0].dir:  /srcdir
21154    files.files[1].name: list0.c
21155    files.files[1].dir:  /srcdir
21156
21157    The line number information for list0.c has to end up in a single
21158    subfile, so that `break /srcdir/list0.c:1' works as expected.
21159    start_subfile will ensure that this happens provided that we pass the
21160    concatenation of files.files[1].dir and files.files[1].name as the
21161    subfile's name.  */
21162
21163 static void
21164 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21165                       const char *dirname)
21166 {
21167   char *copy = NULL;
21168
21169   /* In order not to lose the line information directory,
21170      we concatenate it to the filename when it makes sense.
21171      Note that the Dwarf3 standard says (speaking of filenames in line
21172      information): ``The directory index is ignored for file names
21173      that represent full path names''.  Thus ignoring dirname in the
21174      `else' branch below isn't an issue.  */
21175
21176   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21177     {
21178       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21179       filename = copy;
21180     }
21181
21182   cu->builder->start_subfile (filename);
21183
21184   if (copy != NULL)
21185     xfree (copy);
21186 }
21187
21188 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21189    buildsym_compunit constructor.  */
21190
21191 static struct compunit_symtab *
21192 dwarf2_start_symtab (struct dwarf2_cu *cu,
21193                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21194 {
21195   gdb_assert (cu->builder == nullptr);
21196
21197   cu->builder.reset (new struct buildsym_compunit
21198                      (cu->per_cu->dwarf2_per_objfile->objfile,
21199                       name, comp_dir, cu->language, low_pc));
21200
21201   cu->list_in_scope = cu->builder->get_file_symbols ();
21202
21203   cu->builder->record_debugformat ("DWARF 2");
21204   cu->builder->record_producer (cu->producer);
21205
21206   cu->processing_has_namespace_info = 0;
21207
21208   return cu->builder->get_compunit_symtab ();
21209 }
21210
21211 static void
21212 var_decode_location (struct attribute *attr, struct symbol *sym,
21213                      struct dwarf2_cu *cu)
21214 {
21215   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21216   struct comp_unit_head *cu_header = &cu->header;
21217
21218   /* NOTE drow/2003-01-30: There used to be a comment and some special
21219      code here to turn a symbol with DW_AT_external and a
21220      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21221      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21222      with some versions of binutils) where shared libraries could have
21223      relocations against symbols in their debug information - the
21224      minimal symbol would have the right address, but the debug info
21225      would not.  It's no longer necessary, because we will explicitly
21226      apply relocations when we read in the debug information now.  */
21227
21228   /* A DW_AT_location attribute with no contents indicates that a
21229      variable has been optimized away.  */
21230   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21231     {
21232       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21233       return;
21234     }
21235
21236   /* Handle one degenerate form of location expression specially, to
21237      preserve GDB's previous behavior when section offsets are
21238      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21239      then mark this symbol as LOC_STATIC.  */
21240
21241   if (attr_form_is_block (attr)
21242       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21243            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21244           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21245               && (DW_BLOCK (attr)->size
21246                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21247     {
21248       unsigned int dummy;
21249
21250       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21251         SYMBOL_VALUE_ADDRESS (sym) =
21252           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21253       else
21254         SYMBOL_VALUE_ADDRESS (sym) =
21255           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21256       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21257       fixup_symbol_section (sym, objfile);
21258       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21259                                               SYMBOL_SECTION (sym));
21260       return;
21261     }
21262
21263   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21264      expression evaluator, and use LOC_COMPUTED only when necessary
21265      (i.e. when the value of a register or memory location is
21266      referenced, or a thread-local block, etc.).  Then again, it might
21267      not be worthwhile.  I'm assuming that it isn't unless performance
21268      or memory numbers show me otherwise.  */
21269
21270   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21271
21272   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21273     cu->has_loclist = 1;
21274 }
21275
21276 /* Given a pointer to a DWARF information entry, figure out if we need
21277    to make a symbol table entry for it, and if so, create a new entry
21278    and return a pointer to it.
21279    If TYPE is NULL, determine symbol type from the die, otherwise
21280    used the passed type.
21281    If SPACE is not NULL, use it to hold the new symbol.  If it is
21282    NULL, allocate a new symbol on the objfile's obstack.  */
21283
21284 static struct symbol *
21285 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21286             struct symbol *space)
21287 {
21288   struct dwarf2_per_objfile *dwarf2_per_objfile
21289     = cu->per_cu->dwarf2_per_objfile;
21290   struct objfile *objfile = dwarf2_per_objfile->objfile;
21291   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21292   struct symbol *sym = NULL;
21293   const char *name;
21294   struct attribute *attr = NULL;
21295   struct attribute *attr2 = NULL;
21296   CORE_ADDR baseaddr;
21297   struct pending **list_to_add = NULL;
21298
21299   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21300
21301   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21302
21303   name = dwarf2_name (die, cu);
21304   if (name)
21305     {
21306       const char *linkagename;
21307       int suppress_add = 0;
21308
21309       if (space)
21310         sym = space;
21311       else
21312         sym = allocate_symbol (objfile);
21313       OBJSTAT (objfile, n_syms++);
21314
21315       /* Cache this symbol's name and the name's demangled form (if any).  */
21316       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21317       linkagename = dwarf2_physname (name, die, cu);
21318       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21319
21320       /* Fortran does not have mangling standard and the mangling does differ
21321          between gfortran, iFort etc.  */
21322       if (cu->language == language_fortran
21323           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21324         symbol_set_demangled_name (&(sym->ginfo),
21325                                    dwarf2_full_name (name, die, cu),
21326                                    NULL);
21327
21328       /* Default assumptions.
21329          Use the passed type or decode it from the die.  */
21330       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21331       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21332       if (type != NULL)
21333         SYMBOL_TYPE (sym) = type;
21334       else
21335         SYMBOL_TYPE (sym) = die_type (die, cu);
21336       attr = dwarf2_attr (die,
21337                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21338                           cu);
21339       if (attr)
21340         {
21341           SYMBOL_LINE (sym) = DW_UNSND (attr);
21342         }
21343
21344       attr = dwarf2_attr (die,
21345                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21346                           cu);
21347       if (attr)
21348         {
21349           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21350           struct file_entry *fe;
21351
21352           if (cu->line_header != NULL)
21353             fe = cu->line_header->file_name_at (file_index);
21354           else
21355             fe = NULL;
21356
21357           if (fe == NULL)
21358             complaint (_("file index out of range"));
21359           else
21360             symbol_set_symtab (sym, fe->symtab);
21361         }
21362
21363       switch (die->tag)
21364         {
21365         case DW_TAG_label:
21366           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21367           if (attr)
21368             {
21369               CORE_ADDR addr;
21370
21371               addr = attr_value_as_address (attr);
21372               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21373               SYMBOL_VALUE_ADDRESS (sym) = addr;
21374             }
21375           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21376           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21377           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21378           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21379           break;
21380         case DW_TAG_subprogram:
21381           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21382              finish_block.  */
21383           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21384           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21385           if ((attr2 && (DW_UNSND (attr2) != 0))
21386               || cu->language == language_ada)
21387             {
21388               /* Subprograms marked external are stored as a global symbol.
21389                  Ada subprograms, whether marked external or not, are always
21390                  stored as a global symbol, because we want to be able to
21391                  access them globally.  For instance, we want to be able
21392                  to break on a nested subprogram without having to
21393                  specify the context.  */
21394               list_to_add = cu->builder->get_global_symbols ();
21395             }
21396           else
21397             {
21398               list_to_add = cu->list_in_scope;
21399             }
21400           break;
21401         case DW_TAG_inlined_subroutine:
21402           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21403              finish_block.  */
21404           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21405           SYMBOL_INLINED (sym) = 1;
21406           list_to_add = cu->list_in_scope;
21407           break;
21408         case DW_TAG_template_value_param:
21409           suppress_add = 1;
21410           /* Fall through.  */
21411         case DW_TAG_constant:
21412         case DW_TAG_variable:
21413         case DW_TAG_member:
21414           /* Compilation with minimal debug info may result in
21415              variables with missing type entries.  Change the
21416              misleading `void' type to something sensible.  */
21417           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21418             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21419
21420           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21421           /* In the case of DW_TAG_member, we should only be called for
21422              static const members.  */
21423           if (die->tag == DW_TAG_member)
21424             {
21425               /* dwarf2_add_field uses die_is_declaration,
21426                  so we do the same.  */
21427               gdb_assert (die_is_declaration (die, cu));
21428               gdb_assert (attr);
21429             }
21430           if (attr)
21431             {
21432               dwarf2_const_value (attr, sym, cu);
21433               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21434               if (!suppress_add)
21435                 {
21436                   if (attr2 && (DW_UNSND (attr2) != 0))
21437                     list_to_add = cu->builder->get_global_symbols ();
21438                   else
21439                     list_to_add = cu->list_in_scope;
21440                 }
21441               break;
21442             }
21443           attr = dwarf2_attr (die, DW_AT_location, cu);
21444           if (attr)
21445             {
21446               var_decode_location (attr, sym, cu);
21447               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21448
21449               /* Fortran explicitly imports any global symbols to the local
21450                  scope by DW_TAG_common_block.  */
21451               if (cu->language == language_fortran && die->parent
21452                   && die->parent->tag == DW_TAG_common_block)
21453                 attr2 = NULL;
21454
21455               if (SYMBOL_CLASS (sym) == LOC_STATIC
21456                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21457                   && !dwarf2_per_objfile->has_section_at_zero)
21458                 {
21459                   /* When a static variable is eliminated by the linker,
21460                      the corresponding debug information is not stripped
21461                      out, but the variable address is set to null;
21462                      do not add such variables into symbol table.  */
21463                 }
21464               else if (attr2 && (DW_UNSND (attr2) != 0))
21465                 {
21466                   /* Workaround gfortran PR debug/40040 - it uses
21467                      DW_AT_location for variables in -fPIC libraries which may
21468                      get overriden by other libraries/executable and get
21469                      a different address.  Resolve it by the minimal symbol
21470                      which may come from inferior's executable using copy
21471                      relocation.  Make this workaround only for gfortran as for
21472                      other compilers GDB cannot guess the minimal symbol
21473                      Fortran mangling kind.  */
21474                   if (cu->language == language_fortran && die->parent
21475                       && die->parent->tag == DW_TAG_module
21476                       && cu->producer
21477                       && startswith (cu->producer, "GNU Fortran"))
21478                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21479
21480                   /* A variable with DW_AT_external is never static,
21481                      but it may be block-scoped.  */
21482                   list_to_add
21483                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21484                        ? cu->builder->get_global_symbols ()
21485                        : cu->list_in_scope);
21486                 }
21487               else
21488                 list_to_add = cu->list_in_scope;
21489             }
21490           else
21491             {
21492               /* We do not know the address of this symbol.
21493                  If it is an external symbol and we have type information
21494                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21495                  The address of the variable will then be determined from
21496                  the minimal symbol table whenever the variable is
21497                  referenced.  */
21498               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21499
21500               /* Fortran explicitly imports any global symbols to the local
21501                  scope by DW_TAG_common_block.  */
21502               if (cu->language == language_fortran && die->parent
21503                   && die->parent->tag == DW_TAG_common_block)
21504                 {
21505                   /* SYMBOL_CLASS doesn't matter here because
21506                      read_common_block is going to reset it.  */
21507                   if (!suppress_add)
21508                     list_to_add = cu->list_in_scope;
21509                 }
21510               else if (attr2 && (DW_UNSND (attr2) != 0)
21511                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21512                 {
21513                   /* A variable with DW_AT_external is never static, but it
21514                      may be block-scoped.  */
21515                   list_to_add
21516                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21517                        ? cu->builder->get_global_symbols ()
21518                        : cu->list_in_scope);
21519
21520                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21521                 }
21522               else if (!die_is_declaration (die, cu))
21523                 {
21524                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21525                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21526                   if (!suppress_add)
21527                     list_to_add = cu->list_in_scope;
21528                 }
21529             }
21530           break;
21531         case DW_TAG_formal_parameter:
21532           {
21533             /* If we are inside a function, mark this as an argument.  If
21534                not, we might be looking at an argument to an inlined function
21535                when we do not have enough information to show inlined frames;
21536                pretend it's a local variable in that case so that the user can
21537                still see it.  */
21538             struct context_stack *curr
21539               = cu->builder->get_current_context_stack ();
21540             if (curr != nullptr && curr->name != nullptr)
21541               SYMBOL_IS_ARGUMENT (sym) = 1;
21542             attr = dwarf2_attr (die, DW_AT_location, cu);
21543             if (attr)
21544               {
21545                 var_decode_location (attr, sym, cu);
21546               }
21547             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21548             if (attr)
21549               {
21550                 dwarf2_const_value (attr, sym, cu);
21551               }
21552
21553             list_to_add = cu->list_in_scope;
21554           }
21555           break;
21556         case DW_TAG_unspecified_parameters:
21557           /* From varargs functions; gdb doesn't seem to have any
21558              interest in this information, so just ignore it for now.
21559              (FIXME?) */
21560           break;
21561         case DW_TAG_template_type_param:
21562           suppress_add = 1;
21563           /* Fall through.  */
21564         case DW_TAG_class_type:
21565         case DW_TAG_interface_type:
21566         case DW_TAG_structure_type:
21567         case DW_TAG_union_type:
21568         case DW_TAG_set_type:
21569         case DW_TAG_enumeration_type:
21570           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21571           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21572
21573           {
21574             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21575                really ever be static objects: otherwise, if you try
21576                to, say, break of a class's method and you're in a file
21577                which doesn't mention that class, it won't work unless
21578                the check for all static symbols in lookup_symbol_aux
21579                saves you.  See the OtherFileClass tests in
21580                gdb.c++/namespace.exp.  */
21581
21582             if (!suppress_add)
21583               {
21584                 list_to_add
21585                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21586                      && cu->language == language_cplus
21587                      ? cu->builder->get_global_symbols ()
21588                      : cu->list_in_scope);
21589
21590                 /* The semantics of C++ state that "struct foo {
21591                    ... }" also defines a typedef for "foo".  */
21592                 if (cu->language == language_cplus
21593                     || cu->language == language_ada
21594                     || cu->language == language_d
21595                     || cu->language == language_rust)
21596                   {
21597                     /* The symbol's name is already allocated along
21598                        with this objfile, so we don't need to
21599                        duplicate it for the type.  */
21600                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21601                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21602                   }
21603               }
21604           }
21605           break;
21606         case DW_TAG_typedef:
21607           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21608           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21609           list_to_add = cu->list_in_scope;
21610           break;
21611         case DW_TAG_base_type:
21612         case DW_TAG_subrange_type:
21613           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21614           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21615           list_to_add = cu->list_in_scope;
21616           break;
21617         case DW_TAG_enumerator:
21618           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21619           if (attr)
21620             {
21621               dwarf2_const_value (attr, sym, cu);
21622             }
21623           {
21624             /* NOTE: carlton/2003-11-10: See comment above in the
21625                DW_TAG_class_type, etc. block.  */
21626
21627             list_to_add
21628               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21629                  && cu->language == language_cplus
21630                  ? cu->builder->get_global_symbols ()
21631                  : cu->list_in_scope);
21632           }
21633           break;
21634         case DW_TAG_imported_declaration:
21635         case DW_TAG_namespace:
21636           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21637           list_to_add = cu->builder->get_global_symbols ();
21638           break;
21639         case DW_TAG_module:
21640           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21641           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21642           list_to_add = cu->builder->get_global_symbols ();
21643           break;
21644         case DW_TAG_common_block:
21645           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21646           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21647           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21648           break;
21649         default:
21650           /* Not a tag we recognize.  Hopefully we aren't processing
21651              trash data, but since we must specifically ignore things
21652              we don't recognize, there is nothing else we should do at
21653              this point.  */
21654           complaint (_("unsupported tag: '%s'"),
21655                      dwarf_tag_name (die->tag));
21656           break;
21657         }
21658
21659       if (suppress_add)
21660         {
21661           sym->hash_next = objfile->template_symbols;
21662           objfile->template_symbols = sym;
21663           list_to_add = NULL;
21664         }
21665
21666       if (list_to_add != NULL)
21667         dw2_add_symbol_to_list (sym, list_to_add);
21668
21669       /* For the benefit of old versions of GCC, check for anonymous
21670          namespaces based on the demangled name.  */
21671       if (!cu->processing_has_namespace_info
21672           && cu->language == language_cplus)
21673         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21674     }
21675   return (sym);
21676 }
21677
21678 /* Given an attr with a DW_FORM_dataN value in host byte order,
21679    zero-extend it as appropriate for the symbol's type.  The DWARF
21680    standard (v4) is not entirely clear about the meaning of using
21681    DW_FORM_dataN for a constant with a signed type, where the type is
21682    wider than the data.  The conclusion of a discussion on the DWARF
21683    list was that this is unspecified.  We choose to always zero-extend
21684    because that is the interpretation long in use by GCC.  */
21685
21686 static gdb_byte *
21687 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21688                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21689 {
21690   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21691   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21692                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21693   LONGEST l = DW_UNSND (attr);
21694
21695   if (bits < sizeof (*value) * 8)
21696     {
21697       l &= ((LONGEST) 1 << bits) - 1;
21698       *value = l;
21699     }
21700   else if (bits == sizeof (*value) * 8)
21701     *value = l;
21702   else
21703     {
21704       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21705       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21706       return bytes;
21707     }
21708
21709   return NULL;
21710 }
21711
21712 /* Read a constant value from an attribute.  Either set *VALUE, or if
21713    the value does not fit in *VALUE, set *BYTES - either already
21714    allocated on the objfile obstack, or newly allocated on OBSTACK,
21715    or, set *BATON, if we translated the constant to a location
21716    expression.  */
21717
21718 static void
21719 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21720                          const char *name, struct obstack *obstack,
21721                          struct dwarf2_cu *cu,
21722                          LONGEST *value, const gdb_byte **bytes,
21723                          struct dwarf2_locexpr_baton **baton)
21724 {
21725   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21726   struct comp_unit_head *cu_header = &cu->header;
21727   struct dwarf_block *blk;
21728   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21729                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21730
21731   *value = 0;
21732   *bytes = NULL;
21733   *baton = NULL;
21734
21735   switch (attr->form)
21736     {
21737     case DW_FORM_addr:
21738     case DW_FORM_GNU_addr_index:
21739       {
21740         gdb_byte *data;
21741
21742         if (TYPE_LENGTH (type) != cu_header->addr_size)
21743           dwarf2_const_value_length_mismatch_complaint (name,
21744                                                         cu_header->addr_size,
21745                                                         TYPE_LENGTH (type));
21746         /* Symbols of this form are reasonably rare, so we just
21747            piggyback on the existing location code rather than writing
21748            a new implementation of symbol_computed_ops.  */
21749         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21750         (*baton)->per_cu = cu->per_cu;
21751         gdb_assert ((*baton)->per_cu);
21752
21753         (*baton)->size = 2 + cu_header->addr_size;
21754         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21755         (*baton)->data = data;
21756
21757         data[0] = DW_OP_addr;
21758         store_unsigned_integer (&data[1], cu_header->addr_size,
21759                                 byte_order, DW_ADDR (attr));
21760         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21761       }
21762       break;
21763     case DW_FORM_string:
21764     case DW_FORM_strp:
21765     case DW_FORM_GNU_str_index:
21766     case DW_FORM_GNU_strp_alt:
21767       /* DW_STRING is already allocated on the objfile obstack, point
21768          directly to it.  */
21769       *bytes = (const gdb_byte *) DW_STRING (attr);
21770       break;
21771     case DW_FORM_block1:
21772     case DW_FORM_block2:
21773     case DW_FORM_block4:
21774     case DW_FORM_block:
21775     case DW_FORM_exprloc:
21776     case DW_FORM_data16:
21777       blk = DW_BLOCK (attr);
21778       if (TYPE_LENGTH (type) != blk->size)
21779         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21780                                                       TYPE_LENGTH (type));
21781       *bytes = blk->data;
21782       break;
21783
21784       /* The DW_AT_const_value attributes are supposed to carry the
21785          symbol's value "represented as it would be on the target
21786          architecture."  By the time we get here, it's already been
21787          converted to host endianness, so we just need to sign- or
21788          zero-extend it as appropriate.  */
21789     case DW_FORM_data1:
21790       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21791       break;
21792     case DW_FORM_data2:
21793       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21794       break;
21795     case DW_FORM_data4:
21796       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21797       break;
21798     case DW_FORM_data8:
21799       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21800       break;
21801
21802     case DW_FORM_sdata:
21803     case DW_FORM_implicit_const:
21804       *value = DW_SND (attr);
21805       break;
21806
21807     case DW_FORM_udata:
21808       *value = DW_UNSND (attr);
21809       break;
21810
21811     default:
21812       complaint (_("unsupported const value attribute form: '%s'"),
21813                  dwarf_form_name (attr->form));
21814       *value = 0;
21815       break;
21816     }
21817 }
21818
21819
21820 /* Copy constant value from an attribute to a symbol.  */
21821
21822 static void
21823 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21824                     struct dwarf2_cu *cu)
21825 {
21826   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21827   LONGEST value;
21828   const gdb_byte *bytes;
21829   struct dwarf2_locexpr_baton *baton;
21830
21831   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21832                            SYMBOL_PRINT_NAME (sym),
21833                            &objfile->objfile_obstack, cu,
21834                            &value, &bytes, &baton);
21835
21836   if (baton != NULL)
21837     {
21838       SYMBOL_LOCATION_BATON (sym) = baton;
21839       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21840     }
21841   else if (bytes != NULL)
21842      {
21843       SYMBOL_VALUE_BYTES (sym) = bytes;
21844       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21845     }
21846   else
21847     {
21848       SYMBOL_VALUE (sym) = value;
21849       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21850     }
21851 }
21852
21853 /* Return the type of the die in question using its DW_AT_type attribute.  */
21854
21855 static struct type *
21856 die_type (struct die_info *die, struct dwarf2_cu *cu)
21857 {
21858   struct attribute *type_attr;
21859
21860   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21861   if (!type_attr)
21862     {
21863       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21864       /* A missing DW_AT_type represents a void type.  */
21865       return objfile_type (objfile)->builtin_void;
21866     }
21867
21868   return lookup_die_type (die, type_attr, cu);
21869 }
21870
21871 /* True iff CU's producer generates GNAT Ada auxiliary information
21872    that allows to find parallel types through that information instead
21873    of having to do expensive parallel lookups by type name.  */
21874
21875 static int
21876 need_gnat_info (struct dwarf2_cu *cu)
21877 {
21878   /* Assume that the Ada compiler was GNAT, which always produces
21879      the auxiliary information.  */
21880   return (cu->language == language_ada);
21881 }
21882
21883 /* Return the auxiliary type of the die in question using its
21884    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21885    attribute is not present.  */
21886
21887 static struct type *
21888 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21889 {
21890   struct attribute *type_attr;
21891
21892   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21893   if (!type_attr)
21894     return NULL;
21895
21896   return lookup_die_type (die, type_attr, cu);
21897 }
21898
21899 /* If DIE has a descriptive_type attribute, then set the TYPE's
21900    descriptive type accordingly.  */
21901
21902 static void
21903 set_descriptive_type (struct type *type, struct die_info *die,
21904                       struct dwarf2_cu *cu)
21905 {
21906   struct type *descriptive_type = die_descriptive_type (die, cu);
21907
21908   if (descriptive_type)
21909     {
21910       ALLOCATE_GNAT_AUX_TYPE (type);
21911       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21912     }
21913 }
21914
21915 /* Return the containing type of the die in question using its
21916    DW_AT_containing_type attribute.  */
21917
21918 static struct type *
21919 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21920 {
21921   struct attribute *type_attr;
21922   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21923
21924   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21925   if (!type_attr)
21926     error (_("Dwarf Error: Problem turning containing type into gdb type "
21927              "[in module %s]"), objfile_name (objfile));
21928
21929   return lookup_die_type (die, type_attr, cu);
21930 }
21931
21932 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21933
21934 static struct type *
21935 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21936 {
21937   struct dwarf2_per_objfile *dwarf2_per_objfile
21938     = cu->per_cu->dwarf2_per_objfile;
21939   struct objfile *objfile = dwarf2_per_objfile->objfile;
21940   char *saved;
21941
21942   std::string message
21943     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21944                      objfile_name (objfile),
21945                      sect_offset_str (cu->header.sect_off),
21946                      sect_offset_str (die->sect_off));
21947   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21948                                   message.c_str (), message.length ());
21949
21950   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21951 }
21952
21953 /* Look up the type of DIE in CU using its type attribute ATTR.
21954    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21955    DW_AT_containing_type.
21956    If there is no type substitute an error marker.  */
21957
21958 static struct type *
21959 lookup_die_type (struct die_info *die, const struct attribute *attr,
21960                  struct dwarf2_cu *cu)
21961 {
21962   struct dwarf2_per_objfile *dwarf2_per_objfile
21963     = cu->per_cu->dwarf2_per_objfile;
21964   struct objfile *objfile = dwarf2_per_objfile->objfile;
21965   struct type *this_type;
21966
21967   gdb_assert (attr->name == DW_AT_type
21968               || attr->name == DW_AT_GNAT_descriptive_type
21969               || attr->name == DW_AT_containing_type);
21970
21971   /* First see if we have it cached.  */
21972
21973   if (attr->form == DW_FORM_GNU_ref_alt)
21974     {
21975       struct dwarf2_per_cu_data *per_cu;
21976       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21977
21978       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
21979                                                  dwarf2_per_objfile);
21980       this_type = get_die_type_at_offset (sect_off, per_cu);
21981     }
21982   else if (attr_form_is_ref (attr))
21983     {
21984       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21985
21986       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
21987     }
21988   else if (attr->form == DW_FORM_ref_sig8)
21989     {
21990       ULONGEST signature = DW_SIGNATURE (attr);
21991
21992       return get_signatured_type (die, signature, cu);
21993     }
21994   else
21995     {
21996       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
21997                    " at %s [in module %s]"),
21998                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
21999                  objfile_name (objfile));
22000       return build_error_marker_type (cu, die);
22001     }
22002
22003   /* If not cached we need to read it in.  */
22004
22005   if (this_type == NULL)
22006     {
22007       struct die_info *type_die = NULL;
22008       struct dwarf2_cu *type_cu = cu;
22009
22010       if (attr_form_is_ref (attr))
22011         type_die = follow_die_ref (die, attr, &type_cu);
22012       if (type_die == NULL)
22013         return build_error_marker_type (cu, die);
22014       /* If we find the type now, it's probably because the type came
22015          from an inter-CU reference and the type's CU got expanded before
22016          ours.  */
22017       this_type = read_type_die (type_die, type_cu);
22018     }
22019
22020   /* If we still don't have a type use an error marker.  */
22021
22022   if (this_type == NULL)
22023     return build_error_marker_type (cu, die);
22024
22025   return this_type;
22026 }
22027
22028 /* Return the type in DIE, CU.
22029    Returns NULL for invalid types.
22030
22031    This first does a lookup in die_type_hash,
22032    and only reads the die in if necessary.
22033
22034    NOTE: This can be called when reading in partial or full symbols.  */
22035
22036 static struct type *
22037 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22038 {
22039   struct type *this_type;
22040
22041   this_type = get_die_type (die, cu);
22042   if (this_type)
22043     return this_type;
22044
22045   return read_type_die_1 (die, cu);
22046 }
22047
22048 /* Read the type in DIE, CU.
22049    Returns NULL for invalid types.  */
22050
22051 static struct type *
22052 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22053 {
22054   struct type *this_type = NULL;
22055
22056   switch (die->tag)
22057     {
22058     case DW_TAG_class_type:
22059     case DW_TAG_interface_type:
22060     case DW_TAG_structure_type:
22061     case DW_TAG_union_type:
22062       this_type = read_structure_type (die, cu);
22063       break;
22064     case DW_TAG_enumeration_type:
22065       this_type = read_enumeration_type (die, cu);
22066       break;
22067     case DW_TAG_subprogram:
22068     case DW_TAG_subroutine_type:
22069     case DW_TAG_inlined_subroutine:
22070       this_type = read_subroutine_type (die, cu);
22071       break;
22072     case DW_TAG_array_type:
22073       this_type = read_array_type (die, cu);
22074       break;
22075     case DW_TAG_set_type:
22076       this_type = read_set_type (die, cu);
22077       break;
22078     case DW_TAG_pointer_type:
22079       this_type = read_tag_pointer_type (die, cu);
22080       break;
22081     case DW_TAG_ptr_to_member_type:
22082       this_type = read_tag_ptr_to_member_type (die, cu);
22083       break;
22084     case DW_TAG_reference_type:
22085       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22086       break;
22087     case DW_TAG_rvalue_reference_type:
22088       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22089       break;
22090     case DW_TAG_const_type:
22091       this_type = read_tag_const_type (die, cu);
22092       break;
22093     case DW_TAG_volatile_type:
22094       this_type = read_tag_volatile_type (die, cu);
22095       break;
22096     case DW_TAG_restrict_type:
22097       this_type = read_tag_restrict_type (die, cu);
22098       break;
22099     case DW_TAG_string_type:
22100       this_type = read_tag_string_type (die, cu);
22101       break;
22102     case DW_TAG_typedef:
22103       this_type = read_typedef (die, cu);
22104       break;
22105     case DW_TAG_subrange_type:
22106       this_type = read_subrange_type (die, cu);
22107       break;
22108     case DW_TAG_base_type:
22109       this_type = read_base_type (die, cu);
22110       break;
22111     case DW_TAG_unspecified_type:
22112       this_type = read_unspecified_type (die, cu);
22113       break;
22114     case DW_TAG_namespace:
22115       this_type = read_namespace_type (die, cu);
22116       break;
22117     case DW_TAG_module:
22118       this_type = read_module_type (die, cu);
22119       break;
22120     case DW_TAG_atomic_type:
22121       this_type = read_tag_atomic_type (die, cu);
22122       break;
22123     default:
22124       complaint (_("unexpected tag in read_type_die: '%s'"),
22125                  dwarf_tag_name (die->tag));
22126       break;
22127     }
22128
22129   return this_type;
22130 }
22131
22132 /* See if we can figure out if the class lives in a namespace.  We do
22133    this by looking for a member function; its demangled name will
22134    contain namespace info, if there is any.
22135    Return the computed name or NULL.
22136    Space for the result is allocated on the objfile's obstack.
22137    This is the full-die version of guess_partial_die_structure_name.
22138    In this case we know DIE has no useful parent.  */
22139
22140 static char *
22141 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22142 {
22143   struct die_info *spec_die;
22144   struct dwarf2_cu *spec_cu;
22145   struct die_info *child;
22146   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22147
22148   spec_cu = cu;
22149   spec_die = die_specification (die, &spec_cu);
22150   if (spec_die != NULL)
22151     {
22152       die = spec_die;
22153       cu = spec_cu;
22154     }
22155
22156   for (child = die->child;
22157        child != NULL;
22158        child = child->sibling)
22159     {
22160       if (child->tag == DW_TAG_subprogram)
22161         {
22162           const char *linkage_name = dw2_linkage_name (child, cu);
22163
22164           if (linkage_name != NULL)
22165             {
22166               char *actual_name
22167                 = language_class_name_from_physname (cu->language_defn,
22168                                                      linkage_name);
22169               char *name = NULL;
22170
22171               if (actual_name != NULL)
22172                 {
22173                   const char *die_name = dwarf2_name (die, cu);
22174
22175                   if (die_name != NULL
22176                       && strcmp (die_name, actual_name) != 0)
22177                     {
22178                       /* Strip off the class name from the full name.
22179                          We want the prefix.  */
22180                       int die_name_len = strlen (die_name);
22181                       int actual_name_len = strlen (actual_name);
22182
22183                       /* Test for '::' as a sanity check.  */
22184                       if (actual_name_len > die_name_len + 2
22185                           && actual_name[actual_name_len
22186                                          - die_name_len - 1] == ':')
22187                         name = (char *) obstack_copy0 (
22188                           &objfile->per_bfd->storage_obstack,
22189                           actual_name, actual_name_len - die_name_len - 2);
22190                     }
22191                 }
22192               xfree (actual_name);
22193               return name;
22194             }
22195         }
22196     }
22197
22198   return NULL;
22199 }
22200
22201 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22202    prefix part in such case.  See
22203    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22204
22205 static const char *
22206 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22207 {
22208   struct attribute *attr;
22209   const char *base;
22210
22211   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22212       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22213     return NULL;
22214
22215   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22216     return NULL;
22217
22218   attr = dw2_linkage_name_attr (die, cu);
22219   if (attr == NULL || DW_STRING (attr) == NULL)
22220     return NULL;
22221
22222   /* dwarf2_name had to be already called.  */
22223   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22224
22225   /* Strip the base name, keep any leading namespaces/classes.  */
22226   base = strrchr (DW_STRING (attr), ':');
22227   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22228     return "";
22229
22230   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22231   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22232                                  DW_STRING (attr),
22233                                  &base[-1] - DW_STRING (attr));
22234 }
22235
22236 /* Return the name of the namespace/class that DIE is defined within,
22237    or "" if we can't tell.  The caller should not xfree the result.
22238
22239    For example, if we're within the method foo() in the following
22240    code:
22241
22242    namespace N {
22243      class C {
22244        void foo () {
22245        }
22246      };
22247    }
22248
22249    then determine_prefix on foo's die will return "N::C".  */
22250
22251 static const char *
22252 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22253 {
22254   struct dwarf2_per_objfile *dwarf2_per_objfile
22255     = cu->per_cu->dwarf2_per_objfile;
22256   struct die_info *parent, *spec_die;
22257   struct dwarf2_cu *spec_cu;
22258   struct type *parent_type;
22259   const char *retval;
22260
22261   if (cu->language != language_cplus
22262       && cu->language != language_fortran && cu->language != language_d
22263       && cu->language != language_rust)
22264     return "";
22265
22266   retval = anonymous_struct_prefix (die, cu);
22267   if (retval)
22268     return retval;
22269
22270   /* We have to be careful in the presence of DW_AT_specification.
22271      For example, with GCC 3.4, given the code
22272
22273      namespace N {
22274        void foo() {
22275          // Definition of N::foo.
22276        }
22277      }
22278
22279      then we'll have a tree of DIEs like this:
22280
22281      1: DW_TAG_compile_unit
22282        2: DW_TAG_namespace        // N
22283          3: DW_TAG_subprogram     // declaration of N::foo
22284        4: DW_TAG_subprogram       // definition of N::foo
22285             DW_AT_specification   // refers to die #3
22286
22287      Thus, when processing die #4, we have to pretend that we're in
22288      the context of its DW_AT_specification, namely the contex of die
22289      #3.  */
22290   spec_cu = cu;
22291   spec_die = die_specification (die, &spec_cu);
22292   if (spec_die == NULL)
22293     parent = die->parent;
22294   else
22295     {
22296       parent = spec_die->parent;
22297       cu = spec_cu;
22298     }
22299
22300   if (parent == NULL)
22301     return "";
22302   else if (parent->building_fullname)
22303     {
22304       const char *name;
22305       const char *parent_name;
22306
22307       /* It has been seen on RealView 2.2 built binaries,
22308          DW_TAG_template_type_param types actually _defined_ as
22309          children of the parent class:
22310
22311          enum E {};
22312          template class <class Enum> Class{};
22313          Class<enum E> class_e;
22314
22315          1: DW_TAG_class_type (Class)
22316            2: DW_TAG_enumeration_type (E)
22317              3: DW_TAG_enumerator (enum1:0)
22318              3: DW_TAG_enumerator (enum2:1)
22319              ...
22320            2: DW_TAG_template_type_param
22321               DW_AT_type  DW_FORM_ref_udata (E)
22322
22323          Besides being broken debug info, it can put GDB into an
22324          infinite loop.  Consider:
22325
22326          When we're building the full name for Class<E>, we'll start
22327          at Class, and go look over its template type parameters,
22328          finding E.  We'll then try to build the full name of E, and
22329          reach here.  We're now trying to build the full name of E,
22330          and look over the parent DIE for containing scope.  In the
22331          broken case, if we followed the parent DIE of E, we'd again
22332          find Class, and once again go look at its template type
22333          arguments, etc., etc.  Simply don't consider such parent die
22334          as source-level parent of this die (it can't be, the language
22335          doesn't allow it), and break the loop here.  */
22336       name = dwarf2_name (die, cu);
22337       parent_name = dwarf2_name (parent, cu);
22338       complaint (_("template param type '%s' defined within parent '%s'"),
22339                  name ? name : "<unknown>",
22340                  parent_name ? parent_name : "<unknown>");
22341       return "";
22342     }
22343   else
22344     switch (parent->tag)
22345       {
22346       case DW_TAG_namespace:
22347         parent_type = read_type_die (parent, cu);
22348         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22349            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22350            Work around this problem here.  */
22351         if (cu->language == language_cplus
22352             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22353           return "";
22354         /* We give a name to even anonymous namespaces.  */
22355         return TYPE_NAME (parent_type);
22356       case DW_TAG_class_type:
22357       case DW_TAG_interface_type:
22358       case DW_TAG_structure_type:
22359       case DW_TAG_union_type:
22360       case DW_TAG_module:
22361         parent_type = read_type_die (parent, cu);
22362         if (TYPE_NAME (parent_type) != NULL)
22363           return TYPE_NAME (parent_type);
22364         else
22365           /* An anonymous structure is only allowed non-static data
22366              members; no typedefs, no member functions, et cetera.
22367              So it does not need a prefix.  */
22368           return "";
22369       case DW_TAG_compile_unit:
22370       case DW_TAG_partial_unit:
22371         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22372         if (cu->language == language_cplus
22373             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22374             && die->child != NULL
22375             && (die->tag == DW_TAG_class_type
22376                 || die->tag == DW_TAG_structure_type
22377                 || die->tag == DW_TAG_union_type))
22378           {
22379             char *name = guess_full_die_structure_name (die, cu);
22380             if (name != NULL)
22381               return name;
22382           }
22383         return "";
22384       case DW_TAG_enumeration_type:
22385         parent_type = read_type_die (parent, cu);
22386         if (TYPE_DECLARED_CLASS (parent_type))
22387           {
22388             if (TYPE_NAME (parent_type) != NULL)
22389               return TYPE_NAME (parent_type);
22390             return "";
22391           }
22392         /* Fall through.  */
22393       default:
22394         return determine_prefix (parent, cu);
22395       }
22396 }
22397
22398 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22399    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22400    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22401    an obconcat, otherwise allocate storage for the result.  The CU argument is
22402    used to determine the language and hence, the appropriate separator.  */
22403
22404 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22405
22406 static char *
22407 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22408                  int physname, struct dwarf2_cu *cu)
22409 {
22410   const char *lead = "";
22411   const char *sep;
22412
22413   if (suffix == NULL || suffix[0] == '\0'
22414       || prefix == NULL || prefix[0] == '\0')
22415     sep = "";
22416   else if (cu->language == language_d)
22417     {
22418       /* For D, the 'main' function could be defined in any module, but it
22419          should never be prefixed.  */
22420       if (strcmp (suffix, "D main") == 0)
22421         {
22422           prefix = "";
22423           sep = "";
22424         }
22425       else
22426         sep = ".";
22427     }
22428   else if (cu->language == language_fortran && physname)
22429     {
22430       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22431          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22432
22433       lead = "__";
22434       sep = "_MOD_";
22435     }
22436   else
22437     sep = "::";
22438
22439   if (prefix == NULL)
22440     prefix = "";
22441   if (suffix == NULL)
22442     suffix = "";
22443
22444   if (obs == NULL)
22445     {
22446       char *retval
22447         = ((char *)
22448            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22449
22450       strcpy (retval, lead);
22451       strcat (retval, prefix);
22452       strcat (retval, sep);
22453       strcat (retval, suffix);
22454       return retval;
22455     }
22456   else
22457     {
22458       /* We have an obstack.  */
22459       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22460     }
22461 }
22462
22463 /* Return sibling of die, NULL if no sibling.  */
22464
22465 static struct die_info *
22466 sibling_die (struct die_info *die)
22467 {
22468   return die->sibling;
22469 }
22470
22471 /* Get name of a die, return NULL if not found.  */
22472
22473 static const char *
22474 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22475                           struct obstack *obstack)
22476 {
22477   if (name && cu->language == language_cplus)
22478     {
22479       std::string canon_name = cp_canonicalize_string (name);
22480
22481       if (!canon_name.empty ())
22482         {
22483           if (canon_name != name)
22484             name = (const char *) obstack_copy0 (obstack,
22485                                                  canon_name.c_str (),
22486                                                  canon_name.length ());
22487         }
22488     }
22489
22490   return name;
22491 }
22492
22493 /* Get name of a die, return NULL if not found.
22494    Anonymous namespaces are converted to their magic string.  */
22495
22496 static const char *
22497 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22498 {
22499   struct attribute *attr;
22500   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22501
22502   attr = dwarf2_attr (die, DW_AT_name, cu);
22503   if ((!attr || !DW_STRING (attr))
22504       && die->tag != DW_TAG_namespace
22505       && die->tag != DW_TAG_class_type
22506       && die->tag != DW_TAG_interface_type
22507       && die->tag != DW_TAG_structure_type
22508       && die->tag != DW_TAG_union_type)
22509     return NULL;
22510
22511   switch (die->tag)
22512     {
22513     case DW_TAG_compile_unit:
22514     case DW_TAG_partial_unit:
22515       /* Compilation units have a DW_AT_name that is a filename, not
22516          a source language identifier.  */
22517     case DW_TAG_enumeration_type:
22518     case DW_TAG_enumerator:
22519       /* These tags always have simple identifiers already; no need
22520          to canonicalize them.  */
22521       return DW_STRING (attr);
22522
22523     case DW_TAG_namespace:
22524       if (attr != NULL && DW_STRING (attr) != NULL)
22525         return DW_STRING (attr);
22526       return CP_ANONYMOUS_NAMESPACE_STR;
22527
22528     case DW_TAG_class_type:
22529     case DW_TAG_interface_type:
22530     case DW_TAG_structure_type:
22531     case DW_TAG_union_type:
22532       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22533          structures or unions.  These were of the form "._%d" in GCC 4.1,
22534          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22535          and GCC 4.4.  We work around this problem by ignoring these.  */
22536       if (attr && DW_STRING (attr)
22537           && (startswith (DW_STRING (attr), "._")
22538               || startswith (DW_STRING (attr), "<anonymous")))
22539         return NULL;
22540
22541       /* GCC might emit a nameless typedef that has a linkage name.  See
22542          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22543       if (!attr || DW_STRING (attr) == NULL)
22544         {
22545           char *demangled = NULL;
22546
22547           attr = dw2_linkage_name_attr (die, cu);
22548           if (attr == NULL || DW_STRING (attr) == NULL)
22549             return NULL;
22550
22551           /* Avoid demangling DW_STRING (attr) the second time on a second
22552              call for the same DIE.  */
22553           if (!DW_STRING_IS_CANONICAL (attr))
22554             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22555
22556           if (demangled)
22557             {
22558               const char *base;
22559
22560               /* FIXME: we already did this for the partial symbol... */
22561               DW_STRING (attr)
22562                 = ((const char *)
22563                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22564                                   demangled, strlen (demangled)));
22565               DW_STRING_IS_CANONICAL (attr) = 1;
22566               xfree (demangled);
22567
22568               /* Strip any leading namespaces/classes, keep only the base name.
22569                  DW_AT_name for named DIEs does not contain the prefixes.  */
22570               base = strrchr (DW_STRING (attr), ':');
22571               if (base && base > DW_STRING (attr) && base[-1] == ':')
22572                 return &base[1];
22573               else
22574                 return DW_STRING (attr);
22575             }
22576         }
22577       break;
22578
22579     default:
22580       break;
22581     }
22582
22583   if (!DW_STRING_IS_CANONICAL (attr))
22584     {
22585       DW_STRING (attr)
22586         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22587                                     &objfile->per_bfd->storage_obstack);
22588       DW_STRING_IS_CANONICAL (attr) = 1;
22589     }
22590   return DW_STRING (attr);
22591 }
22592
22593 /* Return the die that this die in an extension of, or NULL if there
22594    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22595    containing the return value on output.  */
22596
22597 static struct die_info *
22598 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22599 {
22600   struct attribute *attr;
22601
22602   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22603   if (attr == NULL)
22604     return NULL;
22605
22606   return follow_die_ref (die, attr, ext_cu);
22607 }
22608
22609 /* Convert a DIE tag into its string name.  */
22610
22611 static const char *
22612 dwarf_tag_name (unsigned tag)
22613 {
22614   const char *name = get_DW_TAG_name (tag);
22615
22616   if (name == NULL)
22617     return "DW_TAG_<unknown>";
22618
22619   return name;
22620 }
22621
22622 /* Convert a DWARF attribute code into its string name.  */
22623
22624 static const char *
22625 dwarf_attr_name (unsigned attr)
22626 {
22627   const char *name;
22628
22629 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22630   if (attr == DW_AT_MIPS_fde)
22631     return "DW_AT_MIPS_fde";
22632 #else
22633   if (attr == DW_AT_HP_block_index)
22634     return "DW_AT_HP_block_index";
22635 #endif
22636
22637   name = get_DW_AT_name (attr);
22638
22639   if (name == NULL)
22640     return "DW_AT_<unknown>";
22641
22642   return name;
22643 }
22644
22645 /* Convert a DWARF value form code into its string name.  */
22646
22647 static const char *
22648 dwarf_form_name (unsigned form)
22649 {
22650   const char *name = get_DW_FORM_name (form);
22651
22652   if (name == NULL)
22653     return "DW_FORM_<unknown>";
22654
22655   return name;
22656 }
22657
22658 static const char *
22659 dwarf_bool_name (unsigned mybool)
22660 {
22661   if (mybool)
22662     return "TRUE";
22663   else
22664     return "FALSE";
22665 }
22666
22667 /* Convert a DWARF type code into its string name.  */
22668
22669 static const char *
22670 dwarf_type_encoding_name (unsigned enc)
22671 {
22672   const char *name = get_DW_ATE_name (enc);
22673
22674   if (name == NULL)
22675     return "DW_ATE_<unknown>";
22676
22677   return name;
22678 }
22679
22680 static void
22681 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22682 {
22683   unsigned int i;
22684
22685   print_spaces (indent, f);
22686   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22687                       dwarf_tag_name (die->tag), die->abbrev,
22688                       sect_offset_str (die->sect_off));
22689
22690   if (die->parent != NULL)
22691     {
22692       print_spaces (indent, f);
22693       fprintf_unfiltered (f, "  parent at offset: %s\n",
22694                           sect_offset_str (die->parent->sect_off));
22695     }
22696
22697   print_spaces (indent, f);
22698   fprintf_unfiltered (f, "  has children: %s\n",
22699            dwarf_bool_name (die->child != NULL));
22700
22701   print_spaces (indent, f);
22702   fprintf_unfiltered (f, "  attributes:\n");
22703
22704   for (i = 0; i < die->num_attrs; ++i)
22705     {
22706       print_spaces (indent, f);
22707       fprintf_unfiltered (f, "    %s (%s) ",
22708                dwarf_attr_name (die->attrs[i].name),
22709                dwarf_form_name (die->attrs[i].form));
22710
22711       switch (die->attrs[i].form)
22712         {
22713         case DW_FORM_addr:
22714         case DW_FORM_GNU_addr_index:
22715           fprintf_unfiltered (f, "address: ");
22716           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22717           break;
22718         case DW_FORM_block2:
22719         case DW_FORM_block4:
22720         case DW_FORM_block:
22721         case DW_FORM_block1:
22722           fprintf_unfiltered (f, "block: size %s",
22723                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22724           break;
22725         case DW_FORM_exprloc:
22726           fprintf_unfiltered (f, "expression: size %s",
22727                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22728           break;
22729         case DW_FORM_data16:
22730           fprintf_unfiltered (f, "constant of 16 bytes");
22731           break;
22732         case DW_FORM_ref_addr:
22733           fprintf_unfiltered (f, "ref address: ");
22734           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22735           break;
22736         case DW_FORM_GNU_ref_alt:
22737           fprintf_unfiltered (f, "alt ref address: ");
22738           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22739           break;
22740         case DW_FORM_ref1:
22741         case DW_FORM_ref2:
22742         case DW_FORM_ref4:
22743         case DW_FORM_ref8:
22744         case DW_FORM_ref_udata:
22745           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22746                               (long) (DW_UNSND (&die->attrs[i])));
22747           break;
22748         case DW_FORM_data1:
22749         case DW_FORM_data2:
22750         case DW_FORM_data4:
22751         case DW_FORM_data8:
22752         case DW_FORM_udata:
22753         case DW_FORM_sdata:
22754           fprintf_unfiltered (f, "constant: %s",
22755                               pulongest (DW_UNSND (&die->attrs[i])));
22756           break;
22757         case DW_FORM_sec_offset:
22758           fprintf_unfiltered (f, "section offset: %s",
22759                               pulongest (DW_UNSND (&die->attrs[i])));
22760           break;
22761         case DW_FORM_ref_sig8:
22762           fprintf_unfiltered (f, "signature: %s",
22763                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22764           break;
22765         case DW_FORM_string:
22766         case DW_FORM_strp:
22767         case DW_FORM_line_strp:
22768         case DW_FORM_GNU_str_index:
22769         case DW_FORM_GNU_strp_alt:
22770           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22771                    DW_STRING (&die->attrs[i])
22772                    ? DW_STRING (&die->attrs[i]) : "",
22773                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22774           break;
22775         case DW_FORM_flag:
22776           if (DW_UNSND (&die->attrs[i]))
22777             fprintf_unfiltered (f, "flag: TRUE");
22778           else
22779             fprintf_unfiltered (f, "flag: FALSE");
22780           break;
22781         case DW_FORM_flag_present:
22782           fprintf_unfiltered (f, "flag: TRUE");
22783           break;
22784         case DW_FORM_indirect:
22785           /* The reader will have reduced the indirect form to
22786              the "base form" so this form should not occur.  */
22787           fprintf_unfiltered (f, 
22788                               "unexpected attribute form: DW_FORM_indirect");
22789           break;
22790         case DW_FORM_implicit_const:
22791           fprintf_unfiltered (f, "constant: %s",
22792                               plongest (DW_SND (&die->attrs[i])));
22793           break;
22794         default:
22795           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22796                    die->attrs[i].form);
22797           break;
22798         }
22799       fprintf_unfiltered (f, "\n");
22800     }
22801 }
22802
22803 static void
22804 dump_die_for_error (struct die_info *die)
22805 {
22806   dump_die_shallow (gdb_stderr, 0, die);
22807 }
22808
22809 static void
22810 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22811 {
22812   int indent = level * 4;
22813
22814   gdb_assert (die != NULL);
22815
22816   if (level >= max_level)
22817     return;
22818
22819   dump_die_shallow (f, indent, die);
22820
22821   if (die->child != NULL)
22822     {
22823       print_spaces (indent, f);
22824       fprintf_unfiltered (f, "  Children:");
22825       if (level + 1 < max_level)
22826         {
22827           fprintf_unfiltered (f, "\n");
22828           dump_die_1 (f, level + 1, max_level, die->child);
22829         }
22830       else
22831         {
22832           fprintf_unfiltered (f,
22833                               " [not printed, max nesting level reached]\n");
22834         }
22835     }
22836
22837   if (die->sibling != NULL && level > 0)
22838     {
22839       dump_die_1 (f, level, max_level, die->sibling);
22840     }
22841 }
22842
22843 /* This is called from the pdie macro in gdbinit.in.
22844    It's not static so gcc will keep a copy callable from gdb.  */
22845
22846 void
22847 dump_die (struct die_info *die, int max_level)
22848 {
22849   dump_die_1 (gdb_stdlog, 0, max_level, die);
22850 }
22851
22852 static void
22853 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22854 {
22855   void **slot;
22856
22857   slot = htab_find_slot_with_hash (cu->die_hash, die,
22858                                    to_underlying (die->sect_off),
22859                                    INSERT);
22860
22861   *slot = die;
22862 }
22863
22864 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22865    required kind.  */
22866
22867 static sect_offset
22868 dwarf2_get_ref_die_offset (const struct attribute *attr)
22869 {
22870   if (attr_form_is_ref (attr))
22871     return (sect_offset) DW_UNSND (attr);
22872
22873   complaint (_("unsupported die ref attribute form: '%s'"),
22874              dwarf_form_name (attr->form));
22875   return {};
22876 }
22877
22878 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22879  * the value held by the attribute is not constant.  */
22880
22881 static LONGEST
22882 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22883 {
22884   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22885     return DW_SND (attr);
22886   else if (attr->form == DW_FORM_udata
22887            || attr->form == DW_FORM_data1
22888            || attr->form == DW_FORM_data2
22889            || attr->form == DW_FORM_data4
22890            || attr->form == DW_FORM_data8)
22891     return DW_UNSND (attr);
22892   else
22893     {
22894       /* For DW_FORM_data16 see attr_form_is_constant.  */
22895       complaint (_("Attribute value is not a constant (%s)"),
22896                  dwarf_form_name (attr->form));
22897       return default_value;
22898     }
22899 }
22900
22901 /* Follow reference or signature attribute ATTR of SRC_DIE.
22902    On entry *REF_CU is the CU of SRC_DIE.
22903    On exit *REF_CU is the CU of the result.  */
22904
22905 static struct die_info *
22906 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22907                        struct dwarf2_cu **ref_cu)
22908 {
22909   struct die_info *die;
22910
22911   if (attr_form_is_ref (attr))
22912     die = follow_die_ref (src_die, attr, ref_cu);
22913   else if (attr->form == DW_FORM_ref_sig8)
22914     die = follow_die_sig (src_die, attr, ref_cu);
22915   else
22916     {
22917       dump_die_for_error (src_die);
22918       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22919              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22920     }
22921
22922   return die;
22923 }
22924
22925 /* Follow reference OFFSET.
22926    On entry *REF_CU is the CU of the source die referencing OFFSET.
22927    On exit *REF_CU is the CU of the result.
22928    Returns NULL if OFFSET is invalid.  */
22929
22930 static struct die_info *
22931 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22932                    struct dwarf2_cu **ref_cu)
22933 {
22934   struct die_info temp_die;
22935   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22936   struct dwarf2_per_objfile *dwarf2_per_objfile
22937     = cu->per_cu->dwarf2_per_objfile;
22938
22939   gdb_assert (cu->per_cu != NULL);
22940
22941   target_cu = cu;
22942
22943   if (cu->per_cu->is_debug_types)
22944     {
22945       /* .debug_types CUs cannot reference anything outside their CU.
22946          If they need to, they have to reference a signatured type via
22947          DW_FORM_ref_sig8.  */
22948       if (!offset_in_cu_p (&cu->header, sect_off))
22949         return NULL;
22950     }
22951   else if (offset_in_dwz != cu->per_cu->is_dwz
22952            || !offset_in_cu_p (&cu->header, sect_off))
22953     {
22954       struct dwarf2_per_cu_data *per_cu;
22955
22956       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22957                                                  dwarf2_per_objfile);
22958
22959       /* If necessary, add it to the queue and load its DIEs.  */
22960       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22961         load_full_comp_unit (per_cu, false, cu->language);
22962
22963       target_cu = per_cu->cu;
22964     }
22965   else if (cu->dies == NULL)
22966     {
22967       /* We're loading full DIEs during partial symbol reading.  */
22968       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22969       load_full_comp_unit (cu->per_cu, false, language_minimal);
22970     }
22971
22972   *ref_cu = target_cu;
22973   temp_die.sect_off = sect_off;
22974   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22975                                                   &temp_die,
22976                                                   to_underlying (sect_off));
22977 }
22978
22979 /* Follow reference attribute ATTR of SRC_DIE.
22980    On entry *REF_CU is the CU of SRC_DIE.
22981    On exit *REF_CU is the CU of the result.  */
22982
22983 static struct die_info *
22984 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
22985                 struct dwarf2_cu **ref_cu)
22986 {
22987   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22988   struct dwarf2_cu *cu = *ref_cu;
22989   struct die_info *die;
22990
22991   die = follow_die_offset (sect_off,
22992                            (attr->form == DW_FORM_GNU_ref_alt
22993                             || cu->per_cu->is_dwz),
22994                            ref_cu);
22995   if (!die)
22996     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
22997            "at %s [in module %s]"),
22998            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
22999            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23000
23001   return die;
23002 }
23003
23004 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23005    Returned value is intended for DW_OP_call*.  Returned
23006    dwarf2_locexpr_baton->data has lifetime of
23007    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23008
23009 struct dwarf2_locexpr_baton
23010 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23011                                struct dwarf2_per_cu_data *per_cu,
23012                                CORE_ADDR (*get_frame_pc) (void *baton),
23013                                void *baton)
23014 {
23015   struct dwarf2_cu *cu;
23016   struct die_info *die;
23017   struct attribute *attr;
23018   struct dwarf2_locexpr_baton retval;
23019   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23020   struct objfile *objfile = dwarf2_per_objfile->objfile;
23021
23022   if (per_cu->cu == NULL)
23023     load_cu (per_cu, false);
23024   cu = per_cu->cu;
23025   if (cu == NULL)
23026     {
23027       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23028          Instead just throw an error, not much else we can do.  */
23029       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23030              sect_offset_str (sect_off), objfile_name (objfile));
23031     }
23032
23033   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23034   if (!die)
23035     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23036            sect_offset_str (sect_off), objfile_name (objfile));
23037
23038   attr = dwarf2_attr (die, DW_AT_location, cu);
23039   if (!attr)
23040     {
23041       /* DWARF: "If there is no such attribute, then there is no effect.".
23042          DATA is ignored if SIZE is 0.  */
23043
23044       retval.data = NULL;
23045       retval.size = 0;
23046     }
23047   else if (attr_form_is_section_offset (attr))
23048     {
23049       struct dwarf2_loclist_baton loclist_baton;
23050       CORE_ADDR pc = (*get_frame_pc) (baton);
23051       size_t size;
23052
23053       fill_in_loclist_baton (cu, &loclist_baton, attr);
23054
23055       retval.data = dwarf2_find_location_expression (&loclist_baton,
23056                                                      &size, pc);
23057       retval.size = size;
23058     }
23059   else
23060     {
23061       if (!attr_form_is_block (attr))
23062         error (_("Dwarf Error: DIE at %s referenced in module %s "
23063                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23064                sect_offset_str (sect_off), objfile_name (objfile));
23065
23066       retval.data = DW_BLOCK (attr)->data;
23067       retval.size = DW_BLOCK (attr)->size;
23068     }
23069   retval.per_cu = cu->per_cu;
23070
23071   age_cached_comp_units (dwarf2_per_objfile);
23072
23073   return retval;
23074 }
23075
23076 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23077    offset.  */
23078
23079 struct dwarf2_locexpr_baton
23080 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23081                              struct dwarf2_per_cu_data *per_cu,
23082                              CORE_ADDR (*get_frame_pc) (void *baton),
23083                              void *baton)
23084 {
23085   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23086
23087   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23088 }
23089
23090 /* Write a constant of a given type as target-ordered bytes into
23091    OBSTACK.  */
23092
23093 static const gdb_byte *
23094 write_constant_as_bytes (struct obstack *obstack,
23095                          enum bfd_endian byte_order,
23096                          struct type *type,
23097                          ULONGEST value,
23098                          LONGEST *len)
23099 {
23100   gdb_byte *result;
23101
23102   *len = TYPE_LENGTH (type);
23103   result = (gdb_byte *) obstack_alloc (obstack, *len);
23104   store_unsigned_integer (result, *len, byte_order, value);
23105
23106   return result;
23107 }
23108
23109 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23110    pointer to the constant bytes and set LEN to the length of the
23111    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23112    does not have a DW_AT_const_value, return NULL.  */
23113
23114 const gdb_byte *
23115 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23116                              struct dwarf2_per_cu_data *per_cu,
23117                              struct obstack *obstack,
23118                              LONGEST *len)
23119 {
23120   struct dwarf2_cu *cu;
23121   struct die_info *die;
23122   struct attribute *attr;
23123   const gdb_byte *result = NULL;
23124   struct type *type;
23125   LONGEST value;
23126   enum bfd_endian byte_order;
23127   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23128
23129   if (per_cu->cu == NULL)
23130     load_cu (per_cu, false);
23131   cu = per_cu->cu;
23132   if (cu == NULL)
23133     {
23134       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23135          Instead just throw an error, not much else we can do.  */
23136       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23137              sect_offset_str (sect_off), objfile_name (objfile));
23138     }
23139
23140   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23141   if (!die)
23142     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23143            sect_offset_str (sect_off), objfile_name (objfile));
23144
23145   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23146   if (attr == NULL)
23147     return NULL;
23148
23149   byte_order = (bfd_big_endian (objfile->obfd)
23150                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23151
23152   switch (attr->form)
23153     {
23154     case DW_FORM_addr:
23155     case DW_FORM_GNU_addr_index:
23156       {
23157         gdb_byte *tem;
23158
23159         *len = cu->header.addr_size;
23160         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23161         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23162         result = tem;
23163       }
23164       break;
23165     case DW_FORM_string:
23166     case DW_FORM_strp:
23167     case DW_FORM_GNU_str_index:
23168     case DW_FORM_GNU_strp_alt:
23169       /* DW_STRING is already allocated on the objfile obstack, point
23170          directly to it.  */
23171       result = (const gdb_byte *) DW_STRING (attr);
23172       *len = strlen (DW_STRING (attr));
23173       break;
23174     case DW_FORM_block1:
23175     case DW_FORM_block2:
23176     case DW_FORM_block4:
23177     case DW_FORM_block:
23178     case DW_FORM_exprloc:
23179     case DW_FORM_data16:
23180       result = DW_BLOCK (attr)->data;
23181       *len = DW_BLOCK (attr)->size;
23182       break;
23183
23184       /* The DW_AT_const_value attributes are supposed to carry the
23185          symbol's value "represented as it would be on the target
23186          architecture."  By the time we get here, it's already been
23187          converted to host endianness, so we just need to sign- or
23188          zero-extend it as appropriate.  */
23189     case DW_FORM_data1:
23190       type = die_type (die, cu);
23191       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23192       if (result == NULL)
23193         result = write_constant_as_bytes (obstack, byte_order,
23194                                           type, value, len);
23195       break;
23196     case DW_FORM_data2:
23197       type = die_type (die, cu);
23198       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23199       if (result == NULL)
23200         result = write_constant_as_bytes (obstack, byte_order,
23201                                           type, value, len);
23202       break;
23203     case DW_FORM_data4:
23204       type = die_type (die, cu);
23205       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23206       if (result == NULL)
23207         result = write_constant_as_bytes (obstack, byte_order,
23208                                           type, value, len);
23209       break;
23210     case DW_FORM_data8:
23211       type = die_type (die, cu);
23212       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23213       if (result == NULL)
23214         result = write_constant_as_bytes (obstack, byte_order,
23215                                           type, value, len);
23216       break;
23217
23218     case DW_FORM_sdata:
23219     case DW_FORM_implicit_const:
23220       type = die_type (die, cu);
23221       result = write_constant_as_bytes (obstack, byte_order,
23222                                         type, DW_SND (attr), len);
23223       break;
23224
23225     case DW_FORM_udata:
23226       type = die_type (die, cu);
23227       result = write_constant_as_bytes (obstack, byte_order,
23228                                         type, DW_UNSND (attr), len);
23229       break;
23230
23231     default:
23232       complaint (_("unsupported const value attribute form: '%s'"),
23233                  dwarf_form_name (attr->form));
23234       break;
23235     }
23236
23237   return result;
23238 }
23239
23240 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23241    valid type for this die is found.  */
23242
23243 struct type *
23244 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23245                                 struct dwarf2_per_cu_data *per_cu)
23246 {
23247   struct dwarf2_cu *cu;
23248   struct die_info *die;
23249
23250   if (per_cu->cu == NULL)
23251     load_cu (per_cu, false);
23252   cu = per_cu->cu;
23253   if (!cu)
23254     return NULL;
23255
23256   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23257   if (!die)
23258     return NULL;
23259
23260   return die_type (die, cu);
23261 }
23262
23263 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23264    PER_CU.  */
23265
23266 struct type *
23267 dwarf2_get_die_type (cu_offset die_offset,
23268                      struct dwarf2_per_cu_data *per_cu)
23269 {
23270   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23271   return get_die_type_at_offset (die_offset_sect, per_cu);
23272 }
23273
23274 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23275    On entry *REF_CU is the CU of SRC_DIE.
23276    On exit *REF_CU is the CU of the result.
23277    Returns NULL if the referenced DIE isn't found.  */
23278
23279 static struct die_info *
23280 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23281                   struct dwarf2_cu **ref_cu)
23282 {
23283   struct die_info temp_die;
23284   struct dwarf2_cu *sig_cu;
23285   struct die_info *die;
23286
23287   /* While it might be nice to assert sig_type->type == NULL here,
23288      we can get here for DW_AT_imported_declaration where we need
23289      the DIE not the type.  */
23290
23291   /* If necessary, add it to the queue and load its DIEs.  */
23292
23293   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23294     read_signatured_type (sig_type);
23295
23296   sig_cu = sig_type->per_cu.cu;
23297   gdb_assert (sig_cu != NULL);
23298   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23299   temp_die.sect_off = sig_type->type_offset_in_section;
23300   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23301                                                  to_underlying (temp_die.sect_off));
23302   if (die)
23303     {
23304       struct dwarf2_per_objfile *dwarf2_per_objfile
23305         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23306
23307       /* For .gdb_index version 7 keep track of included TUs.
23308          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23309       if (dwarf2_per_objfile->index_table != NULL
23310           && dwarf2_per_objfile->index_table->version <= 7)
23311         {
23312           VEC_safe_push (dwarf2_per_cu_ptr,
23313                          (*ref_cu)->per_cu->imported_symtabs,
23314                          sig_cu->per_cu);
23315         }
23316
23317       *ref_cu = sig_cu;
23318       return die;
23319     }
23320
23321   return NULL;
23322 }
23323
23324 /* Follow signatured type referenced by ATTR in SRC_DIE.
23325    On entry *REF_CU is the CU of SRC_DIE.
23326    On exit *REF_CU is the CU of the result.
23327    The result is the DIE of the type.
23328    If the referenced type cannot be found an error is thrown.  */
23329
23330 static struct die_info *
23331 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23332                 struct dwarf2_cu **ref_cu)
23333 {
23334   ULONGEST signature = DW_SIGNATURE (attr);
23335   struct signatured_type *sig_type;
23336   struct die_info *die;
23337
23338   gdb_assert (attr->form == DW_FORM_ref_sig8);
23339
23340   sig_type = lookup_signatured_type (*ref_cu, signature);
23341   /* sig_type will be NULL if the signatured type is missing from
23342      the debug info.  */
23343   if (sig_type == NULL)
23344     {
23345       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23346                " from DIE at %s [in module %s]"),
23347              hex_string (signature), sect_offset_str (src_die->sect_off),
23348              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23349     }
23350
23351   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23352   if (die == NULL)
23353     {
23354       dump_die_for_error (src_die);
23355       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23356                " from DIE at %s [in module %s]"),
23357              hex_string (signature), sect_offset_str (src_die->sect_off),
23358              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23359     }
23360
23361   return die;
23362 }
23363
23364 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23365    reading in and processing the type unit if necessary.  */
23366
23367 static struct type *
23368 get_signatured_type (struct die_info *die, ULONGEST signature,
23369                      struct dwarf2_cu *cu)
23370 {
23371   struct dwarf2_per_objfile *dwarf2_per_objfile
23372     = cu->per_cu->dwarf2_per_objfile;
23373   struct signatured_type *sig_type;
23374   struct dwarf2_cu *type_cu;
23375   struct die_info *type_die;
23376   struct type *type;
23377
23378   sig_type = lookup_signatured_type (cu, signature);
23379   /* sig_type will be NULL if the signatured type is missing from
23380      the debug info.  */
23381   if (sig_type == NULL)
23382     {
23383       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23384                    " from DIE at %s [in module %s]"),
23385                  hex_string (signature), sect_offset_str (die->sect_off),
23386                  objfile_name (dwarf2_per_objfile->objfile));
23387       return build_error_marker_type (cu, die);
23388     }
23389
23390   /* If we already know the type we're done.  */
23391   if (sig_type->type != NULL)
23392     return sig_type->type;
23393
23394   type_cu = cu;
23395   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23396   if (type_die != NULL)
23397     {
23398       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23399          is created.  This is important, for example, because for c++ classes
23400          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23401       type = read_type_die (type_die, type_cu);
23402       if (type == NULL)
23403         {
23404           complaint (_("Dwarf Error: Cannot build signatured type %s"
23405                        " referenced from DIE at %s [in module %s]"),
23406                      hex_string (signature), sect_offset_str (die->sect_off),
23407                      objfile_name (dwarf2_per_objfile->objfile));
23408           type = build_error_marker_type (cu, die);
23409         }
23410     }
23411   else
23412     {
23413       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23414                    " from DIE at %s [in module %s]"),
23415                  hex_string (signature), sect_offset_str (die->sect_off),
23416                  objfile_name (dwarf2_per_objfile->objfile));
23417       type = build_error_marker_type (cu, die);
23418     }
23419   sig_type->type = type;
23420
23421   return type;
23422 }
23423
23424 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23425    reading in and processing the type unit if necessary.  */
23426
23427 static struct type *
23428 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23429                           struct dwarf2_cu *cu) /* ARI: editCase function */
23430 {
23431   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23432   if (attr_form_is_ref (attr))
23433     {
23434       struct dwarf2_cu *type_cu = cu;
23435       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23436
23437       return read_type_die (type_die, type_cu);
23438     }
23439   else if (attr->form == DW_FORM_ref_sig8)
23440     {
23441       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23442     }
23443   else
23444     {
23445       struct dwarf2_per_objfile *dwarf2_per_objfile
23446         = cu->per_cu->dwarf2_per_objfile;
23447
23448       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23449                    " at %s [in module %s]"),
23450                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23451                  objfile_name (dwarf2_per_objfile->objfile));
23452       return build_error_marker_type (cu, die);
23453     }
23454 }
23455
23456 /* Load the DIEs associated with type unit PER_CU into memory.  */
23457
23458 static void
23459 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23460 {
23461   struct signatured_type *sig_type;
23462
23463   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23464   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23465
23466   /* We have the per_cu, but we need the signatured_type.
23467      Fortunately this is an easy translation.  */
23468   gdb_assert (per_cu->is_debug_types);
23469   sig_type = (struct signatured_type *) per_cu;
23470
23471   gdb_assert (per_cu->cu == NULL);
23472
23473   read_signatured_type (sig_type);
23474
23475   gdb_assert (per_cu->cu != NULL);
23476 }
23477
23478 /* die_reader_func for read_signatured_type.
23479    This is identical to load_full_comp_unit_reader,
23480    but is kept separate for now.  */
23481
23482 static void
23483 read_signatured_type_reader (const struct die_reader_specs *reader,
23484                              const gdb_byte *info_ptr,
23485                              struct die_info *comp_unit_die,
23486                              int has_children,
23487                              void *data)
23488 {
23489   struct dwarf2_cu *cu = reader->cu;
23490
23491   gdb_assert (cu->die_hash == NULL);
23492   cu->die_hash =
23493     htab_create_alloc_ex (cu->header.length / 12,
23494                           die_hash,
23495                           die_eq,
23496                           NULL,
23497                           &cu->comp_unit_obstack,
23498                           hashtab_obstack_allocate,
23499                           dummy_obstack_deallocate);
23500
23501   if (has_children)
23502     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23503                                                   &info_ptr, comp_unit_die);
23504   cu->dies = comp_unit_die;
23505   /* comp_unit_die is not stored in die_hash, no need.  */
23506
23507   /* We try not to read any attributes in this function, because not
23508      all CUs needed for references have been loaded yet, and symbol
23509      table processing isn't initialized.  But we have to set the CU language,
23510      or we won't be able to build types correctly.
23511      Similarly, if we do not read the producer, we can not apply
23512      producer-specific interpretation.  */
23513   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23514 }
23515
23516 /* Read in a signatured type and build its CU and DIEs.
23517    If the type is a stub for the real type in a DWO file,
23518    read in the real type from the DWO file as well.  */
23519
23520 static void
23521 read_signatured_type (struct signatured_type *sig_type)
23522 {
23523   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23524
23525   gdb_assert (per_cu->is_debug_types);
23526   gdb_assert (per_cu->cu == NULL);
23527
23528   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23529                            read_signatured_type_reader, NULL);
23530   sig_type->per_cu.tu_read = 1;
23531 }
23532
23533 /* Decode simple location descriptions.
23534    Given a pointer to a dwarf block that defines a location, compute
23535    the location and return the value.
23536
23537    NOTE drow/2003-11-18: This function is called in two situations
23538    now: for the address of static or global variables (partial symbols
23539    only) and for offsets into structures which are expected to be
23540    (more or less) constant.  The partial symbol case should go away,
23541    and only the constant case should remain.  That will let this
23542    function complain more accurately.  A few special modes are allowed
23543    without complaint for global variables (for instance, global
23544    register values and thread-local values).
23545
23546    A location description containing no operations indicates that the
23547    object is optimized out.  The return value is 0 for that case.
23548    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23549    callers will only want a very basic result and this can become a
23550    complaint.
23551
23552    Note that stack[0] is unused except as a default error return.  */
23553
23554 static CORE_ADDR
23555 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23556 {
23557   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23558   size_t i;
23559   size_t size = blk->size;
23560   const gdb_byte *data = blk->data;
23561   CORE_ADDR stack[64];
23562   int stacki;
23563   unsigned int bytes_read, unsnd;
23564   gdb_byte op;
23565
23566   i = 0;
23567   stacki = 0;
23568   stack[stacki] = 0;
23569   stack[++stacki] = 0;
23570
23571   while (i < size)
23572     {
23573       op = data[i++];
23574       switch (op)
23575         {
23576         case DW_OP_lit0:
23577         case DW_OP_lit1:
23578         case DW_OP_lit2:
23579         case DW_OP_lit3:
23580         case DW_OP_lit4:
23581         case DW_OP_lit5:
23582         case DW_OP_lit6:
23583         case DW_OP_lit7:
23584         case DW_OP_lit8:
23585         case DW_OP_lit9:
23586         case DW_OP_lit10:
23587         case DW_OP_lit11:
23588         case DW_OP_lit12:
23589         case DW_OP_lit13:
23590         case DW_OP_lit14:
23591         case DW_OP_lit15:
23592         case DW_OP_lit16:
23593         case DW_OP_lit17:
23594         case DW_OP_lit18:
23595         case DW_OP_lit19:
23596         case DW_OP_lit20:
23597         case DW_OP_lit21:
23598         case DW_OP_lit22:
23599         case DW_OP_lit23:
23600         case DW_OP_lit24:
23601         case DW_OP_lit25:
23602         case DW_OP_lit26:
23603         case DW_OP_lit27:
23604         case DW_OP_lit28:
23605         case DW_OP_lit29:
23606         case DW_OP_lit30:
23607         case DW_OP_lit31:
23608           stack[++stacki] = op - DW_OP_lit0;
23609           break;
23610
23611         case DW_OP_reg0:
23612         case DW_OP_reg1:
23613         case DW_OP_reg2:
23614         case DW_OP_reg3:
23615         case DW_OP_reg4:
23616         case DW_OP_reg5:
23617         case DW_OP_reg6:
23618         case DW_OP_reg7:
23619         case DW_OP_reg8:
23620         case DW_OP_reg9:
23621         case DW_OP_reg10:
23622         case DW_OP_reg11:
23623         case DW_OP_reg12:
23624         case DW_OP_reg13:
23625         case DW_OP_reg14:
23626         case DW_OP_reg15:
23627         case DW_OP_reg16:
23628         case DW_OP_reg17:
23629         case DW_OP_reg18:
23630         case DW_OP_reg19:
23631         case DW_OP_reg20:
23632         case DW_OP_reg21:
23633         case DW_OP_reg22:
23634         case DW_OP_reg23:
23635         case DW_OP_reg24:
23636         case DW_OP_reg25:
23637         case DW_OP_reg26:
23638         case DW_OP_reg27:
23639         case DW_OP_reg28:
23640         case DW_OP_reg29:
23641         case DW_OP_reg30:
23642         case DW_OP_reg31:
23643           stack[++stacki] = op - DW_OP_reg0;
23644           if (i < size)
23645             dwarf2_complex_location_expr_complaint ();
23646           break;
23647
23648         case DW_OP_regx:
23649           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23650           i += bytes_read;
23651           stack[++stacki] = unsnd;
23652           if (i < size)
23653             dwarf2_complex_location_expr_complaint ();
23654           break;
23655
23656         case DW_OP_addr:
23657           stack[++stacki] = read_address (objfile->obfd, &data[i],
23658                                           cu, &bytes_read);
23659           i += bytes_read;
23660           break;
23661
23662         case DW_OP_const1u:
23663           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23664           i += 1;
23665           break;
23666
23667         case DW_OP_const1s:
23668           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23669           i += 1;
23670           break;
23671
23672         case DW_OP_const2u:
23673           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23674           i += 2;
23675           break;
23676
23677         case DW_OP_const2s:
23678           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23679           i += 2;
23680           break;
23681
23682         case DW_OP_const4u:
23683           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23684           i += 4;
23685           break;
23686
23687         case DW_OP_const4s:
23688           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23689           i += 4;
23690           break;
23691
23692         case DW_OP_const8u:
23693           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23694           i += 8;
23695           break;
23696
23697         case DW_OP_constu:
23698           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23699                                                   &bytes_read);
23700           i += bytes_read;
23701           break;
23702
23703         case DW_OP_consts:
23704           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23705           i += bytes_read;
23706           break;
23707
23708         case DW_OP_dup:
23709           stack[stacki + 1] = stack[stacki];
23710           stacki++;
23711           break;
23712
23713         case DW_OP_plus:
23714           stack[stacki - 1] += stack[stacki];
23715           stacki--;
23716           break;
23717
23718         case DW_OP_plus_uconst:
23719           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23720                                                  &bytes_read);
23721           i += bytes_read;
23722           break;
23723
23724         case DW_OP_minus:
23725           stack[stacki - 1] -= stack[stacki];
23726           stacki--;
23727           break;
23728
23729         case DW_OP_deref:
23730           /* If we're not the last op, then we definitely can't encode
23731              this using GDB's address_class enum.  This is valid for partial
23732              global symbols, although the variable's address will be bogus
23733              in the psymtab.  */
23734           if (i < size)
23735             dwarf2_complex_location_expr_complaint ();
23736           break;
23737
23738         case DW_OP_GNU_push_tls_address:
23739         case DW_OP_form_tls_address:
23740           /* The top of the stack has the offset from the beginning
23741              of the thread control block at which the variable is located.  */
23742           /* Nothing should follow this operator, so the top of stack would
23743              be returned.  */
23744           /* This is valid for partial global symbols, but the variable's
23745              address will be bogus in the psymtab.  Make it always at least
23746              non-zero to not look as a variable garbage collected by linker
23747              which have DW_OP_addr 0.  */
23748           if (i < size)
23749             dwarf2_complex_location_expr_complaint ();
23750           stack[stacki]++;
23751           break;
23752
23753         case DW_OP_GNU_uninit:
23754           break;
23755
23756         case DW_OP_GNU_addr_index:
23757         case DW_OP_GNU_const_index:
23758           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23759                                                          &bytes_read);
23760           i += bytes_read;
23761           break;
23762
23763         default:
23764           {
23765             const char *name = get_DW_OP_name (op);
23766
23767             if (name)
23768               complaint (_("unsupported stack op: '%s'"),
23769                          name);
23770             else
23771               complaint (_("unsupported stack op: '%02x'"),
23772                          op);
23773           }
23774
23775           return (stack[stacki]);
23776         }
23777
23778       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23779          outside of the allocated space.  Also enforce minimum>0.  */
23780       if (stacki >= ARRAY_SIZE (stack) - 1)
23781         {
23782           complaint (_("location description stack overflow"));
23783           return 0;
23784         }
23785
23786       if (stacki <= 0)
23787         {
23788           complaint (_("location description stack underflow"));
23789           return 0;
23790         }
23791     }
23792   return (stack[stacki]);
23793 }
23794
23795 /* memory allocation interface */
23796
23797 static struct dwarf_block *
23798 dwarf_alloc_block (struct dwarf2_cu *cu)
23799 {
23800   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23801 }
23802
23803 static struct die_info *
23804 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23805 {
23806   struct die_info *die;
23807   size_t size = sizeof (struct die_info);
23808
23809   if (num_attrs > 1)
23810     size += (num_attrs - 1) * sizeof (struct attribute);
23811
23812   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23813   memset (die, 0, sizeof (struct die_info));
23814   return (die);
23815 }
23816
23817 \f
23818 /* Macro support.  */
23819
23820 /* Return file name relative to the compilation directory of file number I in
23821    *LH's file name table.  The result is allocated using xmalloc; the caller is
23822    responsible for freeing it.  */
23823
23824 static char *
23825 file_file_name (int file, struct line_header *lh)
23826 {
23827   /* Is the file number a valid index into the line header's file name
23828      table?  Remember that file numbers start with one, not zero.  */
23829   if (1 <= file && file <= lh->file_names.size ())
23830     {
23831       const file_entry &fe = lh->file_names[file - 1];
23832
23833       if (!IS_ABSOLUTE_PATH (fe.name))
23834         {
23835           const char *dir = fe.include_dir (lh);
23836           if (dir != NULL)
23837             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23838         }
23839       return xstrdup (fe.name);
23840     }
23841   else
23842     {
23843       /* The compiler produced a bogus file number.  We can at least
23844          record the macro definitions made in the file, even if we
23845          won't be able to find the file by name.  */
23846       char fake_name[80];
23847
23848       xsnprintf (fake_name, sizeof (fake_name),
23849                  "<bad macro file number %d>", file);
23850
23851       complaint (_("bad file number in macro information (%d)"),
23852                  file);
23853
23854       return xstrdup (fake_name);
23855     }
23856 }
23857
23858 /* Return the full name of file number I in *LH's file name table.
23859    Use COMP_DIR as the name of the current directory of the
23860    compilation.  The result is allocated using xmalloc; the caller is
23861    responsible for freeing it.  */
23862 static char *
23863 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23864 {
23865   /* Is the file number a valid index into the line header's file name
23866      table?  Remember that file numbers start with one, not zero.  */
23867   if (1 <= file && file <= lh->file_names.size ())
23868     {
23869       char *relative = file_file_name (file, lh);
23870
23871       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23872         return relative;
23873       return reconcat (relative, comp_dir, SLASH_STRING,
23874                        relative, (char *) NULL);
23875     }
23876   else
23877     return file_file_name (file, lh);
23878 }
23879
23880
23881 static struct macro_source_file *
23882 macro_start_file (struct dwarf2_cu *cu,
23883                   int file, int line,
23884                   struct macro_source_file *current_file,
23885                   struct line_header *lh)
23886 {
23887   /* File name relative to the compilation directory of this source file.  */
23888   char *file_name = file_file_name (file, lh);
23889
23890   if (! current_file)
23891     {
23892       /* Note: We don't create a macro table for this compilation unit
23893          at all until we actually get a filename.  */
23894       struct macro_table *macro_table = cu->builder->get_macro_table ();
23895
23896       /* If we have no current file, then this must be the start_file
23897          directive for the compilation unit's main source file.  */
23898       current_file = macro_set_main (macro_table, file_name);
23899       macro_define_special (macro_table);
23900     }
23901   else
23902     current_file = macro_include (current_file, line, file_name);
23903
23904   xfree (file_name);
23905
23906   return current_file;
23907 }
23908
23909 static const char *
23910 consume_improper_spaces (const char *p, const char *body)
23911 {
23912   if (*p == ' ')
23913     {
23914       complaint (_("macro definition contains spaces "
23915                    "in formal argument list:\n`%s'"),
23916                  body);
23917
23918       while (*p == ' ')
23919         p++;
23920     }
23921
23922   return p;
23923 }
23924
23925
23926 static void
23927 parse_macro_definition (struct macro_source_file *file, int line,
23928                         const char *body)
23929 {
23930   const char *p;
23931
23932   /* The body string takes one of two forms.  For object-like macro
23933      definitions, it should be:
23934
23935         <macro name> " " <definition>
23936
23937      For function-like macro definitions, it should be:
23938
23939         <macro name> "() " <definition>
23940      or
23941         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23942
23943      Spaces may appear only where explicitly indicated, and in the
23944      <definition>.
23945
23946      The Dwarf 2 spec says that an object-like macro's name is always
23947      followed by a space, but versions of GCC around March 2002 omit
23948      the space when the macro's definition is the empty string.
23949
23950      The Dwarf 2 spec says that there should be no spaces between the
23951      formal arguments in a function-like macro's formal argument list,
23952      but versions of GCC around March 2002 include spaces after the
23953      commas.  */
23954
23955
23956   /* Find the extent of the macro name.  The macro name is terminated
23957      by either a space or null character (for an object-like macro) or
23958      an opening paren (for a function-like macro).  */
23959   for (p = body; *p; p++)
23960     if (*p == ' ' || *p == '(')
23961       break;
23962
23963   if (*p == ' ' || *p == '\0')
23964     {
23965       /* It's an object-like macro.  */
23966       int name_len = p - body;
23967       char *name = savestring (body, name_len);
23968       const char *replacement;
23969
23970       if (*p == ' ')
23971         replacement = body + name_len + 1;
23972       else
23973         {
23974           dwarf2_macro_malformed_definition_complaint (body);
23975           replacement = body + name_len;
23976         }
23977
23978       macro_define_object (file, line, name, replacement);
23979
23980       xfree (name);
23981     }
23982   else if (*p == '(')
23983     {
23984       /* It's a function-like macro.  */
23985       char *name = savestring (body, p - body);
23986       int argc = 0;
23987       int argv_size = 1;
23988       char **argv = XNEWVEC (char *, argv_size);
23989
23990       p++;
23991
23992       p = consume_improper_spaces (p, body);
23993
23994       /* Parse the formal argument list.  */
23995       while (*p && *p != ')')
23996         {
23997           /* Find the extent of the current argument name.  */
23998           const char *arg_start = p;
23999
24000           while (*p && *p != ',' && *p != ')' && *p != ' ')
24001             p++;
24002
24003           if (! *p || p == arg_start)
24004             dwarf2_macro_malformed_definition_complaint (body);
24005           else
24006             {
24007               /* Make sure argv has room for the new argument.  */
24008               if (argc >= argv_size)
24009                 {
24010                   argv_size *= 2;
24011                   argv = XRESIZEVEC (char *, argv, argv_size);
24012                 }
24013
24014               argv[argc++] = savestring (arg_start, p - arg_start);
24015             }
24016
24017           p = consume_improper_spaces (p, body);
24018
24019           /* Consume the comma, if present.  */
24020           if (*p == ',')
24021             {
24022               p++;
24023
24024               p = consume_improper_spaces (p, body);
24025             }
24026         }
24027
24028       if (*p == ')')
24029         {
24030           p++;
24031
24032           if (*p == ' ')
24033             /* Perfectly formed definition, no complaints.  */
24034             macro_define_function (file, line, name,
24035                                    argc, (const char **) argv,
24036                                    p + 1);
24037           else if (*p == '\0')
24038             {
24039               /* Complain, but do define it.  */
24040               dwarf2_macro_malformed_definition_complaint (body);
24041               macro_define_function (file, line, name,
24042                                      argc, (const char **) argv,
24043                                      p);
24044             }
24045           else
24046             /* Just complain.  */
24047             dwarf2_macro_malformed_definition_complaint (body);
24048         }
24049       else
24050         /* Just complain.  */
24051         dwarf2_macro_malformed_definition_complaint (body);
24052
24053       xfree (name);
24054       {
24055         int i;
24056
24057         for (i = 0; i < argc; i++)
24058           xfree (argv[i]);
24059       }
24060       xfree (argv);
24061     }
24062   else
24063     dwarf2_macro_malformed_definition_complaint (body);
24064 }
24065
24066 /* Skip some bytes from BYTES according to the form given in FORM.
24067    Returns the new pointer.  */
24068
24069 static const gdb_byte *
24070 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24071                  enum dwarf_form form,
24072                  unsigned int offset_size,
24073                  struct dwarf2_section_info *section)
24074 {
24075   unsigned int bytes_read;
24076
24077   switch (form)
24078     {
24079     case DW_FORM_data1:
24080     case DW_FORM_flag:
24081       ++bytes;
24082       break;
24083
24084     case DW_FORM_data2:
24085       bytes += 2;
24086       break;
24087
24088     case DW_FORM_data4:
24089       bytes += 4;
24090       break;
24091
24092     case DW_FORM_data8:
24093       bytes += 8;
24094       break;
24095
24096     case DW_FORM_data16:
24097       bytes += 16;
24098       break;
24099
24100     case DW_FORM_string:
24101       read_direct_string (abfd, bytes, &bytes_read);
24102       bytes += bytes_read;
24103       break;
24104
24105     case DW_FORM_sec_offset:
24106     case DW_FORM_strp:
24107     case DW_FORM_GNU_strp_alt:
24108       bytes += offset_size;
24109       break;
24110
24111     case DW_FORM_block:
24112       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24113       bytes += bytes_read;
24114       break;
24115
24116     case DW_FORM_block1:
24117       bytes += 1 + read_1_byte (abfd, bytes);
24118       break;
24119     case DW_FORM_block2:
24120       bytes += 2 + read_2_bytes (abfd, bytes);
24121       break;
24122     case DW_FORM_block4:
24123       bytes += 4 + read_4_bytes (abfd, bytes);
24124       break;
24125
24126     case DW_FORM_sdata:
24127     case DW_FORM_udata:
24128     case DW_FORM_GNU_addr_index:
24129     case DW_FORM_GNU_str_index:
24130       bytes = gdb_skip_leb128 (bytes, buffer_end);
24131       if (bytes == NULL)
24132         {
24133           dwarf2_section_buffer_overflow_complaint (section);
24134           return NULL;
24135         }
24136       break;
24137
24138     case DW_FORM_implicit_const:
24139       break;
24140
24141     default:
24142       {
24143         complaint (_("invalid form 0x%x in `%s'"),
24144                    form, get_section_name (section));
24145         return NULL;
24146       }
24147     }
24148
24149   return bytes;
24150 }
24151
24152 /* A helper for dwarf_decode_macros that handles skipping an unknown
24153    opcode.  Returns an updated pointer to the macro data buffer; or,
24154    on error, issues a complaint and returns NULL.  */
24155
24156 static const gdb_byte *
24157 skip_unknown_opcode (unsigned int opcode,
24158                      const gdb_byte **opcode_definitions,
24159                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24160                      bfd *abfd,
24161                      unsigned int offset_size,
24162                      struct dwarf2_section_info *section)
24163 {
24164   unsigned int bytes_read, i;
24165   unsigned long arg;
24166   const gdb_byte *defn;
24167
24168   if (opcode_definitions[opcode] == NULL)
24169     {
24170       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24171                  opcode);
24172       return NULL;
24173     }
24174
24175   defn = opcode_definitions[opcode];
24176   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24177   defn += bytes_read;
24178
24179   for (i = 0; i < arg; ++i)
24180     {
24181       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24182                                  (enum dwarf_form) defn[i], offset_size,
24183                                  section);
24184       if (mac_ptr == NULL)
24185         {
24186           /* skip_form_bytes already issued the complaint.  */
24187           return NULL;
24188         }
24189     }
24190
24191   return mac_ptr;
24192 }
24193
24194 /* A helper function which parses the header of a macro section.
24195    If the macro section is the extended (for now called "GNU") type,
24196    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24197    the header, or issues a complaint and returns NULL on error.  */
24198
24199 static const gdb_byte *
24200 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24201                           bfd *abfd,
24202                           const gdb_byte *mac_ptr,
24203                           unsigned int *offset_size,
24204                           int section_is_gnu)
24205 {
24206   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24207
24208   if (section_is_gnu)
24209     {
24210       unsigned int version, flags;
24211
24212       version = read_2_bytes (abfd, mac_ptr);
24213       if (version != 4 && version != 5)
24214         {
24215           complaint (_("unrecognized version `%d' in .debug_macro section"),
24216                      version);
24217           return NULL;
24218         }
24219       mac_ptr += 2;
24220
24221       flags = read_1_byte (abfd, mac_ptr);
24222       ++mac_ptr;
24223       *offset_size = (flags & 1) ? 8 : 4;
24224
24225       if ((flags & 2) != 0)
24226         /* We don't need the line table offset.  */
24227         mac_ptr += *offset_size;
24228
24229       /* Vendor opcode descriptions.  */
24230       if ((flags & 4) != 0)
24231         {
24232           unsigned int i, count;
24233
24234           count = read_1_byte (abfd, mac_ptr);
24235           ++mac_ptr;
24236           for (i = 0; i < count; ++i)
24237             {
24238               unsigned int opcode, bytes_read;
24239               unsigned long arg;
24240
24241               opcode = read_1_byte (abfd, mac_ptr);
24242               ++mac_ptr;
24243               opcode_definitions[opcode] = mac_ptr;
24244               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24245               mac_ptr += bytes_read;
24246               mac_ptr += arg;
24247             }
24248         }
24249     }
24250
24251   return mac_ptr;
24252 }
24253
24254 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24255    including DW_MACRO_import.  */
24256
24257 static void
24258 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24259                           bfd *abfd,
24260                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24261                           struct macro_source_file *current_file,
24262                           struct line_header *lh,
24263                           struct dwarf2_section_info *section,
24264                           int section_is_gnu, int section_is_dwz,
24265                           unsigned int offset_size,
24266                           htab_t include_hash)
24267 {
24268   struct dwarf2_per_objfile *dwarf2_per_objfile
24269     = cu->per_cu->dwarf2_per_objfile;
24270   struct objfile *objfile = dwarf2_per_objfile->objfile;
24271   enum dwarf_macro_record_type macinfo_type;
24272   int at_commandline;
24273   const gdb_byte *opcode_definitions[256];
24274
24275   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24276                                       &offset_size, section_is_gnu);
24277   if (mac_ptr == NULL)
24278     {
24279       /* We already issued a complaint.  */
24280       return;
24281     }
24282
24283   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24284      GDB is still reading the definitions from command line.  First
24285      DW_MACINFO_start_file will need to be ignored as it was already executed
24286      to create CURRENT_FILE for the main source holding also the command line
24287      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24288      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24289
24290   at_commandline = 1;
24291
24292   do
24293     {
24294       /* Do we at least have room for a macinfo type byte?  */
24295       if (mac_ptr >= mac_end)
24296         {
24297           dwarf2_section_buffer_overflow_complaint (section);
24298           break;
24299         }
24300
24301       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24302       mac_ptr++;
24303
24304       /* Note that we rely on the fact that the corresponding GNU and
24305          DWARF constants are the same.  */
24306       DIAGNOSTIC_PUSH
24307       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24308       switch (macinfo_type)
24309         {
24310           /* A zero macinfo type indicates the end of the macro
24311              information.  */
24312         case 0:
24313           break;
24314
24315         case DW_MACRO_define:
24316         case DW_MACRO_undef:
24317         case DW_MACRO_define_strp:
24318         case DW_MACRO_undef_strp:
24319         case DW_MACRO_define_sup:
24320         case DW_MACRO_undef_sup:
24321           {
24322             unsigned int bytes_read;
24323             int line;
24324             const char *body;
24325             int is_define;
24326
24327             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24328             mac_ptr += bytes_read;
24329
24330             if (macinfo_type == DW_MACRO_define
24331                 || macinfo_type == DW_MACRO_undef)
24332               {
24333                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24334                 mac_ptr += bytes_read;
24335               }
24336             else
24337               {
24338                 LONGEST str_offset;
24339
24340                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24341                 mac_ptr += offset_size;
24342
24343                 if (macinfo_type == DW_MACRO_define_sup
24344                     || macinfo_type == DW_MACRO_undef_sup
24345                     || section_is_dwz)
24346                   {
24347                     struct dwz_file *dwz
24348                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24349
24350                     body = read_indirect_string_from_dwz (objfile,
24351                                                           dwz, str_offset);
24352                   }
24353                 else
24354                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24355                                                          abfd, str_offset);
24356               }
24357
24358             is_define = (macinfo_type == DW_MACRO_define
24359                          || macinfo_type == DW_MACRO_define_strp
24360                          || macinfo_type == DW_MACRO_define_sup);
24361             if (! current_file)
24362               {
24363                 /* DWARF violation as no main source is present.  */
24364                 complaint (_("debug info with no main source gives macro %s "
24365                              "on line %d: %s"),
24366                            is_define ? _("definition") : _("undefinition"),
24367                            line, body);
24368                 break;
24369               }
24370             if ((line == 0 && !at_commandline)
24371                 || (line != 0 && at_commandline))
24372               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24373                          at_commandline ? _("command-line") : _("in-file"),
24374                          is_define ? _("definition") : _("undefinition"),
24375                          line == 0 ? _("zero") : _("non-zero"), line, body);
24376
24377             if (is_define)
24378               parse_macro_definition (current_file, line, body);
24379             else
24380               {
24381                 gdb_assert (macinfo_type == DW_MACRO_undef
24382                             || macinfo_type == DW_MACRO_undef_strp
24383                             || macinfo_type == DW_MACRO_undef_sup);
24384                 macro_undef (current_file, line, body);
24385               }
24386           }
24387           break;
24388
24389         case DW_MACRO_start_file:
24390           {
24391             unsigned int bytes_read;
24392             int line, file;
24393
24394             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24395             mac_ptr += bytes_read;
24396             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24397             mac_ptr += bytes_read;
24398
24399             if ((line == 0 && !at_commandline)
24400                 || (line != 0 && at_commandline))
24401               complaint (_("debug info gives source %d included "
24402                            "from %s at %s line %d"),
24403                          file, at_commandline ? _("command-line") : _("file"),
24404                          line == 0 ? _("zero") : _("non-zero"), line);
24405
24406             if (at_commandline)
24407               {
24408                 /* This DW_MACRO_start_file was executed in the
24409                    pass one.  */
24410                 at_commandline = 0;
24411               }
24412             else
24413               current_file = macro_start_file (cu, file, line, current_file,
24414                                                lh);
24415           }
24416           break;
24417
24418         case DW_MACRO_end_file:
24419           if (! current_file)
24420             complaint (_("macro debug info has an unmatched "
24421                          "`close_file' directive"));
24422           else
24423             {
24424               current_file = current_file->included_by;
24425               if (! current_file)
24426                 {
24427                   enum dwarf_macro_record_type next_type;
24428
24429                   /* GCC circa March 2002 doesn't produce the zero
24430                      type byte marking the end of the compilation
24431                      unit.  Complain if it's not there, but exit no
24432                      matter what.  */
24433
24434                   /* Do we at least have room for a macinfo type byte?  */
24435                   if (mac_ptr >= mac_end)
24436                     {
24437                       dwarf2_section_buffer_overflow_complaint (section);
24438                       return;
24439                     }
24440
24441                   /* We don't increment mac_ptr here, so this is just
24442                      a look-ahead.  */
24443                   next_type
24444                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24445                                                                   mac_ptr);
24446                   if (next_type != 0)
24447                     complaint (_("no terminating 0-type entry for "
24448                                  "macros in `.debug_macinfo' section"));
24449
24450                   return;
24451                 }
24452             }
24453           break;
24454
24455         case DW_MACRO_import:
24456         case DW_MACRO_import_sup:
24457           {
24458             LONGEST offset;
24459             void **slot;
24460             bfd *include_bfd = abfd;
24461             struct dwarf2_section_info *include_section = section;
24462             const gdb_byte *include_mac_end = mac_end;
24463             int is_dwz = section_is_dwz;
24464             const gdb_byte *new_mac_ptr;
24465
24466             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24467             mac_ptr += offset_size;
24468
24469             if (macinfo_type == DW_MACRO_import_sup)
24470               {
24471                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24472
24473                 dwarf2_read_section (objfile, &dwz->macro);
24474
24475                 include_section = &dwz->macro;
24476                 include_bfd = get_section_bfd_owner (include_section);
24477                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24478                 is_dwz = 1;
24479               }
24480
24481             new_mac_ptr = include_section->buffer + offset;
24482             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24483
24484             if (*slot != NULL)
24485               {
24486                 /* This has actually happened; see
24487                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24488                 complaint (_("recursive DW_MACRO_import in "
24489                              ".debug_macro section"));
24490               }
24491             else
24492               {
24493                 *slot = (void *) new_mac_ptr;
24494
24495                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24496                                           include_mac_end, current_file, lh,
24497                                           section, section_is_gnu, is_dwz,
24498                                           offset_size, include_hash);
24499
24500                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24501               }
24502           }
24503           break;
24504
24505         case DW_MACINFO_vendor_ext:
24506           if (!section_is_gnu)
24507             {
24508               unsigned int bytes_read;
24509
24510               /* This reads the constant, but since we don't recognize
24511                  any vendor extensions, we ignore it.  */
24512               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24513               mac_ptr += bytes_read;
24514               read_direct_string (abfd, mac_ptr, &bytes_read);
24515               mac_ptr += bytes_read;
24516
24517               /* We don't recognize any vendor extensions.  */
24518               break;
24519             }
24520           /* FALLTHROUGH */
24521
24522         default:
24523           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24524                                          mac_ptr, mac_end, abfd, offset_size,
24525                                          section);
24526           if (mac_ptr == NULL)
24527             return;
24528           break;
24529         }
24530       DIAGNOSTIC_POP
24531     } while (macinfo_type != 0);
24532 }
24533
24534 static void
24535 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24536                      int section_is_gnu)
24537 {
24538   struct dwarf2_per_objfile *dwarf2_per_objfile
24539     = cu->per_cu->dwarf2_per_objfile;
24540   struct objfile *objfile = dwarf2_per_objfile->objfile;
24541   struct line_header *lh = cu->line_header;
24542   bfd *abfd;
24543   const gdb_byte *mac_ptr, *mac_end;
24544   struct macro_source_file *current_file = 0;
24545   enum dwarf_macro_record_type macinfo_type;
24546   unsigned int offset_size = cu->header.offset_size;
24547   const gdb_byte *opcode_definitions[256];
24548   void **slot;
24549   struct dwarf2_section_info *section;
24550   const char *section_name;
24551
24552   if (cu->dwo_unit != NULL)
24553     {
24554       if (section_is_gnu)
24555         {
24556           section = &cu->dwo_unit->dwo_file->sections.macro;
24557           section_name = ".debug_macro.dwo";
24558         }
24559       else
24560         {
24561           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24562           section_name = ".debug_macinfo.dwo";
24563         }
24564     }
24565   else
24566     {
24567       if (section_is_gnu)
24568         {
24569           section = &dwarf2_per_objfile->macro;
24570           section_name = ".debug_macro";
24571         }
24572       else
24573         {
24574           section = &dwarf2_per_objfile->macinfo;
24575           section_name = ".debug_macinfo";
24576         }
24577     }
24578
24579   dwarf2_read_section (objfile, section);
24580   if (section->buffer == NULL)
24581     {
24582       complaint (_("missing %s section"), section_name);
24583       return;
24584     }
24585   abfd = get_section_bfd_owner (section);
24586
24587   /* First pass: Find the name of the base filename.
24588      This filename is needed in order to process all macros whose definition
24589      (or undefinition) comes from the command line.  These macros are defined
24590      before the first DW_MACINFO_start_file entry, and yet still need to be
24591      associated to the base file.
24592
24593      To determine the base file name, we scan the macro definitions until we
24594      reach the first DW_MACINFO_start_file entry.  We then initialize
24595      CURRENT_FILE accordingly so that any macro definition found before the
24596      first DW_MACINFO_start_file can still be associated to the base file.  */
24597
24598   mac_ptr = section->buffer + offset;
24599   mac_end = section->buffer + section->size;
24600
24601   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24602                                       &offset_size, section_is_gnu);
24603   if (mac_ptr == NULL)
24604     {
24605       /* We already issued a complaint.  */
24606       return;
24607     }
24608
24609   do
24610     {
24611       /* Do we at least have room for a macinfo type byte?  */
24612       if (mac_ptr >= mac_end)
24613         {
24614           /* Complaint is printed during the second pass as GDB will probably
24615              stop the first pass earlier upon finding
24616              DW_MACINFO_start_file.  */
24617           break;
24618         }
24619
24620       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24621       mac_ptr++;
24622
24623       /* Note that we rely on the fact that the corresponding GNU and
24624          DWARF constants are the same.  */
24625       DIAGNOSTIC_PUSH
24626       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24627       switch (macinfo_type)
24628         {
24629           /* A zero macinfo type indicates the end of the macro
24630              information.  */
24631         case 0:
24632           break;
24633
24634         case DW_MACRO_define:
24635         case DW_MACRO_undef:
24636           /* Only skip the data by MAC_PTR.  */
24637           {
24638             unsigned int bytes_read;
24639
24640             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24641             mac_ptr += bytes_read;
24642             read_direct_string (abfd, mac_ptr, &bytes_read);
24643             mac_ptr += bytes_read;
24644           }
24645           break;
24646
24647         case DW_MACRO_start_file:
24648           {
24649             unsigned int bytes_read;
24650             int line, file;
24651
24652             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24653             mac_ptr += bytes_read;
24654             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24655             mac_ptr += bytes_read;
24656
24657             current_file = macro_start_file (cu, file, line, current_file, lh);
24658           }
24659           break;
24660
24661         case DW_MACRO_end_file:
24662           /* No data to skip by MAC_PTR.  */
24663           break;
24664
24665         case DW_MACRO_define_strp:
24666         case DW_MACRO_undef_strp:
24667         case DW_MACRO_define_sup:
24668         case DW_MACRO_undef_sup:
24669           {
24670             unsigned int bytes_read;
24671
24672             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24673             mac_ptr += bytes_read;
24674             mac_ptr += offset_size;
24675           }
24676           break;
24677
24678         case DW_MACRO_import:
24679         case DW_MACRO_import_sup:
24680           /* Note that, according to the spec, a transparent include
24681              chain cannot call DW_MACRO_start_file.  So, we can just
24682              skip this opcode.  */
24683           mac_ptr += offset_size;
24684           break;
24685
24686         case DW_MACINFO_vendor_ext:
24687           /* Only skip the data by MAC_PTR.  */
24688           if (!section_is_gnu)
24689             {
24690               unsigned int bytes_read;
24691
24692               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24693               mac_ptr += bytes_read;
24694               read_direct_string (abfd, mac_ptr, &bytes_read);
24695               mac_ptr += bytes_read;
24696             }
24697           /* FALLTHROUGH */
24698
24699         default:
24700           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24701                                          mac_ptr, mac_end, abfd, offset_size,
24702                                          section);
24703           if (mac_ptr == NULL)
24704             return;
24705           break;
24706         }
24707       DIAGNOSTIC_POP
24708     } while (macinfo_type != 0 && current_file == NULL);
24709
24710   /* Second pass: Process all entries.
24711
24712      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24713      command-line macro definitions/undefinitions.  This flag is unset when we
24714      reach the first DW_MACINFO_start_file entry.  */
24715
24716   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24717                                            htab_eq_pointer,
24718                                            NULL, xcalloc, xfree));
24719   mac_ptr = section->buffer + offset;
24720   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24721   *slot = (void *) mac_ptr;
24722   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24723                             current_file, lh, section,
24724                             section_is_gnu, 0, offset_size,
24725                             include_hash.get ());
24726 }
24727
24728 /* Check if the attribute's form is a DW_FORM_block*
24729    if so return true else false.  */
24730
24731 static int
24732 attr_form_is_block (const struct attribute *attr)
24733 {
24734   return (attr == NULL ? 0 :
24735       attr->form == DW_FORM_block1
24736       || attr->form == DW_FORM_block2
24737       || attr->form == DW_FORM_block4
24738       || attr->form == DW_FORM_block
24739       || attr->form == DW_FORM_exprloc);
24740 }
24741
24742 /* Return non-zero if ATTR's value is a section offset --- classes
24743    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24744    You may use DW_UNSND (attr) to retrieve such offsets.
24745
24746    Section 7.5.4, "Attribute Encodings", explains that no attribute
24747    may have a value that belongs to more than one of these classes; it
24748    would be ambiguous if we did, because we use the same forms for all
24749    of them.  */
24750
24751 static int
24752 attr_form_is_section_offset (const struct attribute *attr)
24753 {
24754   return (attr->form == DW_FORM_data4
24755           || attr->form == DW_FORM_data8
24756           || attr->form == DW_FORM_sec_offset);
24757 }
24758
24759 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24760    zero otherwise.  When this function returns true, you can apply
24761    dwarf2_get_attr_constant_value to it.
24762
24763    However, note that for some attributes you must check
24764    attr_form_is_section_offset before using this test.  DW_FORM_data4
24765    and DW_FORM_data8 are members of both the constant class, and of
24766    the classes that contain offsets into other debug sections
24767    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24768    that, if an attribute's can be either a constant or one of the
24769    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24770    taken as section offsets, not constants.
24771
24772    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24773    cannot handle that.  */
24774
24775 static int
24776 attr_form_is_constant (const struct attribute *attr)
24777 {
24778   switch (attr->form)
24779     {
24780     case DW_FORM_sdata:
24781     case DW_FORM_udata:
24782     case DW_FORM_data1:
24783     case DW_FORM_data2:
24784     case DW_FORM_data4:
24785     case DW_FORM_data8:
24786     case DW_FORM_implicit_const:
24787       return 1;
24788     default:
24789       return 0;
24790     }
24791 }
24792
24793
24794 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24795    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24796
24797 static int
24798 attr_form_is_ref (const struct attribute *attr)
24799 {
24800   switch (attr->form)
24801     {
24802     case DW_FORM_ref_addr:
24803     case DW_FORM_ref1:
24804     case DW_FORM_ref2:
24805     case DW_FORM_ref4:
24806     case DW_FORM_ref8:
24807     case DW_FORM_ref_udata:
24808     case DW_FORM_GNU_ref_alt:
24809       return 1;
24810     default:
24811       return 0;
24812     }
24813 }
24814
24815 /* Return the .debug_loc section to use for CU.
24816    For DWO files use .debug_loc.dwo.  */
24817
24818 static struct dwarf2_section_info *
24819 cu_debug_loc_section (struct dwarf2_cu *cu)
24820 {
24821   struct dwarf2_per_objfile *dwarf2_per_objfile
24822     = cu->per_cu->dwarf2_per_objfile;
24823
24824   if (cu->dwo_unit)
24825     {
24826       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24827       
24828       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24829     }
24830   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24831                                   : &dwarf2_per_objfile->loc);
24832 }
24833
24834 /* A helper function that fills in a dwarf2_loclist_baton.  */
24835
24836 static void
24837 fill_in_loclist_baton (struct dwarf2_cu *cu,
24838                        struct dwarf2_loclist_baton *baton,
24839                        const struct attribute *attr)
24840 {
24841   struct dwarf2_per_objfile *dwarf2_per_objfile
24842     = cu->per_cu->dwarf2_per_objfile;
24843   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24844
24845   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24846
24847   baton->per_cu = cu->per_cu;
24848   gdb_assert (baton->per_cu);
24849   /* We don't know how long the location list is, but make sure we
24850      don't run off the edge of the section.  */
24851   baton->size = section->size - DW_UNSND (attr);
24852   baton->data = section->buffer + DW_UNSND (attr);
24853   baton->base_address = cu->base_address;
24854   baton->from_dwo = cu->dwo_unit != NULL;
24855 }
24856
24857 static void
24858 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24859                              struct dwarf2_cu *cu, int is_block)
24860 {
24861   struct dwarf2_per_objfile *dwarf2_per_objfile
24862     = cu->per_cu->dwarf2_per_objfile;
24863   struct objfile *objfile = dwarf2_per_objfile->objfile;
24864   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24865
24866   if (attr_form_is_section_offset (attr)
24867       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24868          the section.  If so, fall through to the complaint in the
24869          other branch.  */
24870       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24871     {
24872       struct dwarf2_loclist_baton *baton;
24873
24874       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24875
24876       fill_in_loclist_baton (cu, baton, attr);
24877
24878       if (cu->base_known == 0)
24879         complaint (_("Location list used without "
24880                      "specifying the CU base address."));
24881
24882       SYMBOL_ACLASS_INDEX (sym) = (is_block
24883                                    ? dwarf2_loclist_block_index
24884                                    : dwarf2_loclist_index);
24885       SYMBOL_LOCATION_BATON (sym) = baton;
24886     }
24887   else
24888     {
24889       struct dwarf2_locexpr_baton *baton;
24890
24891       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24892       baton->per_cu = cu->per_cu;
24893       gdb_assert (baton->per_cu);
24894
24895       if (attr_form_is_block (attr))
24896         {
24897           /* Note that we're just copying the block's data pointer
24898              here, not the actual data.  We're still pointing into the
24899              info_buffer for SYM's objfile; right now we never release
24900              that buffer, but when we do clean up properly this may
24901              need to change.  */
24902           baton->size = DW_BLOCK (attr)->size;
24903           baton->data = DW_BLOCK (attr)->data;
24904         }
24905       else
24906         {
24907           dwarf2_invalid_attrib_class_complaint ("location description",
24908                                                  SYMBOL_NATURAL_NAME (sym));
24909           baton->size = 0;
24910         }
24911
24912       SYMBOL_ACLASS_INDEX (sym) = (is_block
24913                                    ? dwarf2_locexpr_block_index
24914                                    : dwarf2_locexpr_index);
24915       SYMBOL_LOCATION_BATON (sym) = baton;
24916     }
24917 }
24918
24919 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24920    came from a separate debuginfo file, then the master objfile is
24921    returned.  */
24922
24923 struct objfile *
24924 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24925 {
24926   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24927
24928   /* Return the master objfile, so that we can report and look up the
24929      correct file containing this variable.  */
24930   if (objfile->separate_debug_objfile_backlink)
24931     objfile = objfile->separate_debug_objfile_backlink;
24932
24933   return objfile;
24934 }
24935
24936 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24937    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24938    CU_HEADERP first.  */
24939
24940 static const struct comp_unit_head *
24941 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24942                        struct dwarf2_per_cu_data *per_cu)
24943 {
24944   const gdb_byte *info_ptr;
24945
24946   if (per_cu->cu)
24947     return &per_cu->cu->header;
24948
24949   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24950
24951   memset (cu_headerp, 0, sizeof (*cu_headerp));
24952   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24953                        rcuh_kind::COMPILE);
24954
24955   return cu_headerp;
24956 }
24957
24958 /* Return the address size given in the compilation unit header for CU.  */
24959
24960 int
24961 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
24962 {
24963   struct comp_unit_head cu_header_local;
24964   const struct comp_unit_head *cu_headerp;
24965
24966   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24967
24968   return cu_headerp->addr_size;
24969 }
24970
24971 /* Return the offset size given in the compilation unit header for CU.  */
24972
24973 int
24974 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
24975 {
24976   struct comp_unit_head cu_header_local;
24977   const struct comp_unit_head *cu_headerp;
24978
24979   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24980
24981   return cu_headerp->offset_size;
24982 }
24983
24984 /* See its dwarf2loc.h declaration.  */
24985
24986 int
24987 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
24988 {
24989   struct comp_unit_head cu_header_local;
24990   const struct comp_unit_head *cu_headerp;
24991
24992   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24993
24994   if (cu_headerp->version == 2)
24995     return cu_headerp->addr_size;
24996   else
24997     return cu_headerp->offset_size;
24998 }
24999
25000 /* Return the text offset of the CU.  The returned offset comes from
25001    this CU's objfile.  If this objfile came from a separate debuginfo
25002    file, then the offset may be different from the corresponding
25003    offset in the parent objfile.  */
25004
25005 CORE_ADDR
25006 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25007 {
25008   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25009
25010   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25011 }
25012
25013 /* Return DWARF version number of PER_CU.  */
25014
25015 short
25016 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25017 {
25018   return per_cu->dwarf_version;
25019 }
25020
25021 /* Locate the .debug_info compilation unit from CU's objfile which contains
25022    the DIE at OFFSET.  Raises an error on failure.  */
25023
25024 static struct dwarf2_per_cu_data *
25025 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25026                                   unsigned int offset_in_dwz,
25027                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25028 {
25029   struct dwarf2_per_cu_data *this_cu;
25030   int low, high;
25031   const sect_offset *cu_off;
25032
25033   low = 0;
25034   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25035   while (high > low)
25036     {
25037       struct dwarf2_per_cu_data *mid_cu;
25038       int mid = low + (high - low) / 2;
25039
25040       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25041       cu_off = &mid_cu->sect_off;
25042       if (mid_cu->is_dwz > offset_in_dwz
25043           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25044         high = mid;
25045       else
25046         low = mid + 1;
25047     }
25048   gdb_assert (low == high);
25049   this_cu = dwarf2_per_objfile->all_comp_units[low];
25050   cu_off = &this_cu->sect_off;
25051   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25052     {
25053       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25054         error (_("Dwarf Error: could not find partial DIE containing "
25055                "offset %s [in module %s]"),
25056                sect_offset_str (sect_off),
25057                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25058
25059       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25060                   <= sect_off);
25061       return dwarf2_per_objfile->all_comp_units[low-1];
25062     }
25063   else
25064     {
25065       this_cu = dwarf2_per_objfile->all_comp_units[low];
25066       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25067           && sect_off >= this_cu->sect_off + this_cu->length)
25068         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25069       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25070       return this_cu;
25071     }
25072 }
25073
25074 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25075
25076 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25077   : per_cu (per_cu_),
25078     mark (0),
25079     has_loclist (0),
25080     checked_producer (0),
25081     producer_is_gxx_lt_4_6 (0),
25082     producer_is_gcc_lt_4_3 (0),
25083     producer_is_icc_lt_14 (0),
25084     processing_has_namespace_info (0)
25085 {
25086   per_cu->cu = this;
25087 }
25088
25089 /* Destroy a dwarf2_cu.  */
25090
25091 dwarf2_cu::~dwarf2_cu ()
25092 {
25093   per_cu->cu = NULL;
25094 }
25095
25096 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25097
25098 static void
25099 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25100                        enum language pretend_language)
25101 {
25102   struct attribute *attr;
25103
25104   /* Set the language we're debugging.  */
25105   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25106   if (attr)
25107     set_cu_language (DW_UNSND (attr), cu);
25108   else
25109     {
25110       cu->language = pretend_language;
25111       cu->language_defn = language_def (cu->language);
25112     }
25113
25114   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25115 }
25116
25117 /* Increase the age counter on each cached compilation unit, and free
25118    any that are too old.  */
25119
25120 static void
25121 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25122 {
25123   struct dwarf2_per_cu_data *per_cu, **last_chain;
25124
25125   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25126   per_cu = dwarf2_per_objfile->read_in_chain;
25127   while (per_cu != NULL)
25128     {
25129       per_cu->cu->last_used ++;
25130       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25131         dwarf2_mark (per_cu->cu);
25132       per_cu = per_cu->cu->read_in_chain;
25133     }
25134
25135   per_cu = dwarf2_per_objfile->read_in_chain;
25136   last_chain = &dwarf2_per_objfile->read_in_chain;
25137   while (per_cu != NULL)
25138     {
25139       struct dwarf2_per_cu_data *next_cu;
25140
25141       next_cu = per_cu->cu->read_in_chain;
25142
25143       if (!per_cu->cu->mark)
25144         {
25145           delete per_cu->cu;
25146           *last_chain = next_cu;
25147         }
25148       else
25149         last_chain = &per_cu->cu->read_in_chain;
25150
25151       per_cu = next_cu;
25152     }
25153 }
25154
25155 /* Remove a single compilation unit from the cache.  */
25156
25157 static void
25158 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25159 {
25160   struct dwarf2_per_cu_data *per_cu, **last_chain;
25161   struct dwarf2_per_objfile *dwarf2_per_objfile
25162     = target_per_cu->dwarf2_per_objfile;
25163
25164   per_cu = dwarf2_per_objfile->read_in_chain;
25165   last_chain = &dwarf2_per_objfile->read_in_chain;
25166   while (per_cu != NULL)
25167     {
25168       struct dwarf2_per_cu_data *next_cu;
25169
25170       next_cu = per_cu->cu->read_in_chain;
25171
25172       if (per_cu == target_per_cu)
25173         {
25174           delete per_cu->cu;
25175           per_cu->cu = NULL;
25176           *last_chain = next_cu;
25177           break;
25178         }
25179       else
25180         last_chain = &per_cu->cu->read_in_chain;
25181
25182       per_cu = next_cu;
25183     }
25184 }
25185
25186 /* Cleanup function for the dwarf2_per_objfile data.  */
25187
25188 static void
25189 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25190 {
25191   struct dwarf2_per_objfile *dwarf2_per_objfile
25192     = static_cast<struct dwarf2_per_objfile *> (datum);
25193
25194   delete dwarf2_per_objfile;
25195 }
25196
25197 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25198    We store these in a hash table separate from the DIEs, and preserve them
25199    when the DIEs are flushed out of cache.
25200
25201    The CU "per_cu" pointer is needed because offset alone is not enough to
25202    uniquely identify the type.  A file may have multiple .debug_types sections,
25203    or the type may come from a DWO file.  Furthermore, while it's more logical
25204    to use per_cu->section+offset, with Fission the section with the data is in
25205    the DWO file but we don't know that section at the point we need it.
25206    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25207    because we can enter the lookup routine, get_die_type_at_offset, from
25208    outside this file, and thus won't necessarily have PER_CU->cu.
25209    Fortunately, PER_CU is stable for the life of the objfile.  */
25210
25211 struct dwarf2_per_cu_offset_and_type
25212 {
25213   const struct dwarf2_per_cu_data *per_cu;
25214   sect_offset sect_off;
25215   struct type *type;
25216 };
25217
25218 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25219
25220 static hashval_t
25221 per_cu_offset_and_type_hash (const void *item)
25222 {
25223   const struct dwarf2_per_cu_offset_and_type *ofs
25224     = (const struct dwarf2_per_cu_offset_and_type *) item;
25225
25226   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25227 }
25228
25229 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25230
25231 static int
25232 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25233 {
25234   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25235     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25236   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25237     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25238
25239   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25240           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25241 }
25242
25243 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25244    table if necessary.  For convenience, return TYPE.
25245
25246    The DIEs reading must have careful ordering to:
25247     * Not cause infite loops trying to read in DIEs as a prerequisite for
25248       reading current DIE.
25249     * Not trying to dereference contents of still incompletely read in types
25250       while reading in other DIEs.
25251     * Enable referencing still incompletely read in types just by a pointer to
25252       the type without accessing its fields.
25253
25254    Therefore caller should follow these rules:
25255      * Try to fetch any prerequisite types we may need to build this DIE type
25256        before building the type and calling set_die_type.
25257      * After building type call set_die_type for current DIE as soon as
25258        possible before fetching more types to complete the current type.
25259      * Make the type as complete as possible before fetching more types.  */
25260
25261 static struct type *
25262 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25263 {
25264   struct dwarf2_per_objfile *dwarf2_per_objfile
25265     = cu->per_cu->dwarf2_per_objfile;
25266   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25267   struct objfile *objfile = dwarf2_per_objfile->objfile;
25268   struct attribute *attr;
25269   struct dynamic_prop prop;
25270
25271   /* For Ada types, make sure that the gnat-specific data is always
25272      initialized (if not already set).  There are a few types where
25273      we should not be doing so, because the type-specific area is
25274      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25275      where the type-specific area is used to store the floatformat).
25276      But this is not a problem, because the gnat-specific information
25277      is actually not needed for these types.  */
25278   if (need_gnat_info (cu)
25279       && TYPE_CODE (type) != TYPE_CODE_FUNC
25280       && TYPE_CODE (type) != TYPE_CODE_FLT
25281       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25282       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25283       && TYPE_CODE (type) != TYPE_CODE_METHOD
25284       && !HAVE_GNAT_AUX_INFO (type))
25285     INIT_GNAT_SPECIFIC (type);
25286
25287   /* Read DW_AT_allocated and set in type.  */
25288   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25289   if (attr_form_is_block (attr))
25290     {
25291       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25292         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25293     }
25294   else if (attr != NULL)
25295     {
25296       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25297                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25298                  sect_offset_str (die->sect_off));
25299     }
25300
25301   /* Read DW_AT_associated and set in type.  */
25302   attr = dwarf2_attr (die, DW_AT_associated, cu);
25303   if (attr_form_is_block (attr))
25304     {
25305       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25306         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25307     }
25308   else if (attr != NULL)
25309     {
25310       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25311                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25312                  sect_offset_str (die->sect_off));
25313     }
25314
25315   /* Read DW_AT_data_location and set in type.  */
25316   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25317   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25318     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25319
25320   if (dwarf2_per_objfile->die_type_hash == NULL)
25321     {
25322       dwarf2_per_objfile->die_type_hash =
25323         htab_create_alloc_ex (127,
25324                               per_cu_offset_and_type_hash,
25325                               per_cu_offset_and_type_eq,
25326                               NULL,
25327                               &objfile->objfile_obstack,
25328                               hashtab_obstack_allocate,
25329                               dummy_obstack_deallocate);
25330     }
25331
25332   ofs.per_cu = cu->per_cu;
25333   ofs.sect_off = die->sect_off;
25334   ofs.type = type;
25335   slot = (struct dwarf2_per_cu_offset_and_type **)
25336     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25337   if (*slot)
25338     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25339                sect_offset_str (die->sect_off));
25340   *slot = XOBNEW (&objfile->objfile_obstack,
25341                   struct dwarf2_per_cu_offset_and_type);
25342   **slot = ofs;
25343   return type;
25344 }
25345
25346 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25347    or return NULL if the die does not have a saved type.  */
25348
25349 static struct type *
25350 get_die_type_at_offset (sect_offset sect_off,
25351                         struct dwarf2_per_cu_data *per_cu)
25352 {
25353   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25354   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25355
25356   if (dwarf2_per_objfile->die_type_hash == NULL)
25357     return NULL;
25358
25359   ofs.per_cu = per_cu;
25360   ofs.sect_off = sect_off;
25361   slot = ((struct dwarf2_per_cu_offset_and_type *)
25362           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25363   if (slot)
25364     return slot->type;
25365   else
25366     return NULL;
25367 }
25368
25369 /* Look up the type for DIE in CU in die_type_hash,
25370    or return NULL if DIE does not have a saved type.  */
25371
25372 static struct type *
25373 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25374 {
25375   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25376 }
25377
25378 /* Add a dependence relationship from CU to REF_PER_CU.  */
25379
25380 static void
25381 dwarf2_add_dependence (struct dwarf2_cu *cu,
25382                        struct dwarf2_per_cu_data *ref_per_cu)
25383 {
25384   void **slot;
25385
25386   if (cu->dependencies == NULL)
25387     cu->dependencies
25388       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25389                               NULL, &cu->comp_unit_obstack,
25390                               hashtab_obstack_allocate,
25391                               dummy_obstack_deallocate);
25392
25393   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25394   if (*slot == NULL)
25395     *slot = ref_per_cu;
25396 }
25397
25398 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25399    Set the mark field in every compilation unit in the
25400    cache that we must keep because we are keeping CU.  */
25401
25402 static int
25403 dwarf2_mark_helper (void **slot, void *data)
25404 {
25405   struct dwarf2_per_cu_data *per_cu;
25406
25407   per_cu = (struct dwarf2_per_cu_data *) *slot;
25408
25409   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25410      reading of the chain.  As such dependencies remain valid it is not much
25411      useful to track and undo them during QUIT cleanups.  */
25412   if (per_cu->cu == NULL)
25413     return 1;
25414
25415   if (per_cu->cu->mark)
25416     return 1;
25417   per_cu->cu->mark = 1;
25418
25419   if (per_cu->cu->dependencies != NULL)
25420     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25421
25422   return 1;
25423 }
25424
25425 /* Set the mark field in CU and in every other compilation unit in the
25426    cache that we must keep because we are keeping CU.  */
25427
25428 static void
25429 dwarf2_mark (struct dwarf2_cu *cu)
25430 {
25431   if (cu->mark)
25432     return;
25433   cu->mark = 1;
25434   if (cu->dependencies != NULL)
25435     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25436 }
25437
25438 static void
25439 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25440 {
25441   while (per_cu)
25442     {
25443       per_cu->cu->mark = 0;
25444       per_cu = per_cu->cu->read_in_chain;
25445     }
25446 }
25447
25448 /* Trivial hash function for partial_die_info: the hash value of a DIE
25449    is its offset in .debug_info for this objfile.  */
25450
25451 static hashval_t
25452 partial_die_hash (const void *item)
25453 {
25454   const struct partial_die_info *part_die
25455     = (const struct partial_die_info *) item;
25456
25457   return to_underlying (part_die->sect_off);
25458 }
25459
25460 /* Trivial comparison function for partial_die_info structures: two DIEs
25461    are equal if they have the same offset.  */
25462
25463 static int
25464 partial_die_eq (const void *item_lhs, const void *item_rhs)
25465 {
25466   const struct partial_die_info *part_die_lhs
25467     = (const struct partial_die_info *) item_lhs;
25468   const struct partial_die_info *part_die_rhs
25469     = (const struct partial_die_info *) item_rhs;
25470
25471   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25472 }
25473
25474 struct cmd_list_element *set_dwarf_cmdlist;
25475 struct cmd_list_element *show_dwarf_cmdlist;
25476
25477 static void
25478 set_dwarf_cmd (const char *args, int from_tty)
25479 {
25480   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25481              gdb_stdout);
25482 }
25483
25484 static void
25485 show_dwarf_cmd (const char *args, int from_tty)
25486 {
25487   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25488 }
25489
25490 int dwarf_always_disassemble;
25491
25492 static void
25493 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25494                                struct cmd_list_element *c, const char *value)
25495 {
25496   fprintf_filtered (file,
25497                     _("Whether to always disassemble "
25498                       "DWARF expressions is %s.\n"),
25499                     value);
25500 }
25501
25502 static void
25503 show_check_physname (struct ui_file *file, int from_tty,
25504                      struct cmd_list_element *c, const char *value)
25505 {
25506   fprintf_filtered (file,
25507                     _("Whether to check \"physname\" is %s.\n"),
25508                     value);
25509 }
25510
25511 void
25512 _initialize_dwarf2_read (void)
25513 {
25514   dwarf2_objfile_data_key
25515     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25516
25517   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25518 Set DWARF specific variables.\n\
25519 Configure DWARF variables such as the cache size"),
25520                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25521                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25522
25523   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25524 Show DWARF specific variables\n\
25525 Show DWARF variables such as the cache size"),
25526                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25527                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25528
25529   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25530                             &dwarf_max_cache_age, _("\
25531 Set the upper bound on the age of cached DWARF compilation units."), _("\
25532 Show the upper bound on the age of cached DWARF compilation units."), _("\
25533 A higher limit means that cached compilation units will be stored\n\
25534 in memory longer, and more total memory will be used.  Zero disables\n\
25535 caching, which can slow down startup."),
25536                             NULL,
25537                             show_dwarf_max_cache_age,
25538                             &set_dwarf_cmdlist,
25539                             &show_dwarf_cmdlist);
25540
25541   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25542                            &dwarf_always_disassemble, _("\
25543 Set whether `info address' always disassembles DWARF expressions."), _("\
25544 Show whether `info address' always disassembles DWARF expressions."), _("\
25545 When enabled, DWARF expressions are always printed in an assembly-like\n\
25546 syntax.  When disabled, expressions will be printed in a more\n\
25547 conversational style, when possible."),
25548                            NULL,
25549                            show_dwarf_always_disassemble,
25550                            &set_dwarf_cmdlist,
25551                            &show_dwarf_cmdlist);
25552
25553   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25554 Set debugging of the DWARF reader."), _("\
25555 Show debugging of the DWARF reader."), _("\
25556 When enabled (non-zero), debugging messages are printed during DWARF\n\
25557 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25558 information.  A value greater than 1 provides more verbose information."),
25559                             NULL,
25560                             NULL,
25561                             &setdebuglist, &showdebuglist);
25562
25563   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25564 Set debugging of the DWARF DIE reader."), _("\
25565 Show debugging of the DWARF DIE reader."), _("\
25566 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25567 The value is the maximum depth to print."),
25568                              NULL,
25569                              NULL,
25570                              &setdebuglist, &showdebuglist);
25571
25572   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25573 Set debugging of the dwarf line reader."), _("\
25574 Show debugging of the dwarf line reader."), _("\
25575 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25576 A value of 1 (one) provides basic information.\n\
25577 A value greater than 1 provides more verbose information."),
25578                              NULL,
25579                              NULL,
25580                              &setdebuglist, &showdebuglist);
25581
25582   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25583 Set cross-checking of \"physname\" code against demangler."), _("\
25584 Show cross-checking of \"physname\" code against demangler."), _("\
25585 When enabled, GDB's internal \"physname\" code is checked against\n\
25586 the demangler."),
25587                            NULL, show_check_physname,
25588                            &setdebuglist, &showdebuglist);
25589
25590   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25591                            no_class, &use_deprecated_index_sections, _("\
25592 Set whether to use deprecated gdb_index sections."), _("\
25593 Show whether to use deprecated gdb_index sections."), _("\
25594 When enabled, deprecated .gdb_index sections are used anyway.\n\
25595 Normally they are ignored either because of a missing feature or\n\
25596 performance issue.\n\
25597 Warning: This option must be enabled before gdb reads the file."),
25598                            NULL,
25599                            NULL,
25600                            &setlist, &showlist);
25601
25602   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25603                                                         &dwarf2_locexpr_funcs);
25604   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25605                                                         &dwarf2_loclist_funcs);
25606
25607   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25608                                         &dwarf2_block_frame_base_locexpr_funcs);
25609   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25610                                         &dwarf2_block_frame_base_loclist_funcs);
25611
25612 #if GDB_SELF_TEST
25613   selftests::register_test ("dw2_expand_symtabs_matching",
25614                             selftests::dw2_expand_symtabs_matching::run_test);
25615 #endif
25616 }