Remove DEF_VECs from symtab.h
[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   bool producer_is_codewarrior : 1;
556
557   /* When set, the file that we're processing is known to have
558      debugging info for C++ namespaces.  GCC 3.3.x did not produce
559      this information, but later versions do.  */
560
561   unsigned int processing_has_namespace_info : 1;
562
563   struct partial_die_info *find_partial_die (sect_offset sect_off);
564 };
565
566 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
567    This includes type_unit_group and quick_file_names.  */
568
569 struct stmt_list_hash
570 {
571   /* The DWO unit this table is from or NULL if there is none.  */
572   struct dwo_unit *dwo_unit;
573
574   /* Offset in .debug_line or .debug_line.dwo.  */
575   sect_offset line_sect_off;
576 };
577
578 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
579    an object of this type.  */
580
581 struct type_unit_group
582 {
583   /* dwarf2read.c's main "handle" on a TU symtab.
584      To simplify things we create an artificial CU that "includes" all the
585      type units using this stmt_list so that the rest of the code still has
586      a "per_cu" handle on the symtab.
587      This PER_CU is recognized by having no section.  */
588 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
589   struct dwarf2_per_cu_data per_cu;
590
591   /* The TUs that share this DW_AT_stmt_list entry.
592      This is added to while parsing type units to build partial symtabs,
593      and is deleted afterwards and not used again.  */
594   VEC (sig_type_ptr) *tus;
595
596   /* The compunit symtab.
597      Type units in a group needn't all be defined in the same source file,
598      so we create an essentially anonymous symtab as the compunit symtab.  */
599   struct compunit_symtab *compunit_symtab;
600
601   /* The data used to construct the hash key.  */
602   struct stmt_list_hash hash;
603
604   /* The number of symtabs from the line header.
605      The value here must match line_header.num_file_names.  */
606   unsigned int num_symtabs;
607
608   /* The symbol tables for this TU (obtained from the files listed in
609      DW_AT_stmt_list).
610      WARNING: The order of entries here must match the order of entries
611      in the line header.  After the first TU using this type_unit_group, the
612      line header for the subsequent TUs is recreated from this.  This is done
613      because we need to use the same symtabs for each TU using the same
614      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
615      there's no guarantee the line header doesn't have duplicate entries.  */
616   struct symtab **symtabs;
617 };
618
619 /* These sections are what may appear in a (real or virtual) DWO file.  */
620
621 struct dwo_sections
622 {
623   struct dwarf2_section_info abbrev;
624   struct dwarf2_section_info line;
625   struct dwarf2_section_info loc;
626   struct dwarf2_section_info loclists;
627   struct dwarf2_section_info macinfo;
628   struct dwarf2_section_info macro;
629   struct dwarf2_section_info str;
630   struct dwarf2_section_info str_offsets;
631   /* In the case of a virtual DWO file, these two are unused.  */
632   struct dwarf2_section_info info;
633   VEC (dwarf2_section_info_def) *types;
634 };
635
636 /* CUs/TUs in DWP/DWO files.  */
637
638 struct dwo_unit
639 {
640   /* Backlink to the containing struct dwo_file.  */
641   struct dwo_file *dwo_file;
642
643   /* The "id" that distinguishes this CU/TU.
644      .debug_info calls this "dwo_id", .debug_types calls this "signature".
645      Since signatures came first, we stick with it for consistency.  */
646   ULONGEST signature;
647
648   /* The section this CU/TU lives in, in the DWO file.  */
649   struct dwarf2_section_info *section;
650
651   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
652   sect_offset sect_off;
653   unsigned int length;
654
655   /* For types, offset in the type's DIE of the type defined by this TU.  */
656   cu_offset type_offset_in_tu;
657 };
658
659 /* include/dwarf2.h defines the DWP section codes.
660    It defines a max value but it doesn't define a min value, which we
661    use for error checking, so provide one.  */
662
663 enum dwp_v2_section_ids
664 {
665   DW_SECT_MIN = 1
666 };
667
668 /* Data for one DWO file.
669
670    This includes virtual DWO files (a virtual DWO file is a DWO file as it
671    appears in a DWP file).  DWP files don't really have DWO files per se -
672    comdat folding of types "loses" the DWO file they came from, and from
673    a high level view DWP files appear to contain a mass of random types.
674    However, to maintain consistency with the non-DWP case we pretend DWP
675    files contain virtual DWO files, and we assign each TU with one virtual
676    DWO file (generally based on the line and abbrev section offsets -
677    a heuristic that seems to work in practice).  */
678
679 struct dwo_file
680 {
681   /* The DW_AT_GNU_dwo_name attribute.
682      For virtual DWO files the name is constructed from the section offsets
683      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
684      from related CU+TUs.  */
685   const char *dwo_name;
686
687   /* The DW_AT_comp_dir attribute.  */
688   const char *comp_dir;
689
690   /* The bfd, when the file is open.  Otherwise this is NULL.
691      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
692   bfd *dbfd;
693
694   /* The sections that make up this DWO file.
695      Remember that for virtual DWO files in DWP V2, these are virtual
696      sections (for lack of a better name).  */
697   struct dwo_sections sections;
698
699   /* The CUs in the file.
700      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
701      an extension to handle LLVM's Link Time Optimization output (where
702      multiple source files may be compiled into a single object/dwo pair). */
703   htab_t cus;
704
705   /* Table of TUs in the file.
706      Each element is a struct dwo_unit.  */
707   htab_t tus;
708 };
709
710 /* These sections are what may appear in a DWP file.  */
711
712 struct dwp_sections
713 {
714   /* These are used by both DWP version 1 and 2.  */
715   struct dwarf2_section_info str;
716   struct dwarf2_section_info cu_index;
717   struct dwarf2_section_info tu_index;
718
719   /* These are only used by DWP version 2 files.
720      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
721      sections are referenced by section number, and are not recorded here.
722      In DWP version 2 there is at most one copy of all these sections, each
723      section being (effectively) comprised of the concatenation of all of the
724      individual sections that exist in the version 1 format.
725      To keep the code simple we treat each of these concatenated pieces as a
726      section itself (a virtual section?).  */
727   struct dwarf2_section_info abbrev;
728   struct dwarf2_section_info info;
729   struct dwarf2_section_info line;
730   struct dwarf2_section_info loc;
731   struct dwarf2_section_info macinfo;
732   struct dwarf2_section_info macro;
733   struct dwarf2_section_info str_offsets;
734   struct dwarf2_section_info types;
735 };
736
737 /* These sections are what may appear in a virtual DWO file in DWP version 1.
738    A virtual DWO file is a DWO file as it appears in a DWP file.  */
739
740 struct virtual_v1_dwo_sections
741 {
742   struct dwarf2_section_info abbrev;
743   struct dwarf2_section_info line;
744   struct dwarf2_section_info loc;
745   struct dwarf2_section_info macinfo;
746   struct dwarf2_section_info macro;
747   struct dwarf2_section_info str_offsets;
748   /* Each DWP hash table entry records one CU or one TU.
749      That is recorded here, and copied to dwo_unit.section.  */
750   struct dwarf2_section_info info_or_types;
751 };
752
753 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
754    In version 2, the sections of the DWO files are concatenated together
755    and stored in one section of that name.  Thus each ELF section contains
756    several "virtual" sections.  */
757
758 struct virtual_v2_dwo_sections
759 {
760   bfd_size_type abbrev_offset;
761   bfd_size_type abbrev_size;
762
763   bfd_size_type line_offset;
764   bfd_size_type line_size;
765
766   bfd_size_type loc_offset;
767   bfd_size_type loc_size;
768
769   bfd_size_type macinfo_offset;
770   bfd_size_type macinfo_size;
771
772   bfd_size_type macro_offset;
773   bfd_size_type macro_size;
774
775   bfd_size_type str_offsets_offset;
776   bfd_size_type str_offsets_size;
777
778   /* Each DWP hash table entry records one CU or one TU.
779      That is recorded here, and copied to dwo_unit.section.  */
780   bfd_size_type info_or_types_offset;
781   bfd_size_type info_or_types_size;
782 };
783
784 /* Contents of DWP hash tables.  */
785
786 struct dwp_hash_table
787 {
788   uint32_t version, nr_columns;
789   uint32_t nr_units, nr_slots;
790   const gdb_byte *hash_table, *unit_table;
791   union
792   {
793     struct
794     {
795       const gdb_byte *indices;
796     } v1;
797     struct
798     {
799       /* This is indexed by column number and gives the id of the section
800          in that column.  */
801 #define MAX_NR_V2_DWO_SECTIONS \
802   (1 /* .debug_info or .debug_types */ \
803    + 1 /* .debug_abbrev */ \
804    + 1 /* .debug_line */ \
805    + 1 /* .debug_loc */ \
806    + 1 /* .debug_str_offsets */ \
807    + 1 /* .debug_macro or .debug_macinfo */)
808       int section_ids[MAX_NR_V2_DWO_SECTIONS];
809       const gdb_byte *offsets;
810       const gdb_byte *sizes;
811     } v2;
812   } section_pool;
813 };
814
815 /* Data for one DWP file.  */
816
817 struct dwp_file
818 {
819   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
820     : name (name_),
821       dbfd (std::move (abfd))
822   {
823   }
824
825   /* Name of the file.  */
826   const char *name;
827
828   /* File format version.  */
829   int version = 0;
830
831   /* The bfd.  */
832   gdb_bfd_ref_ptr dbfd;
833
834   /* Section info for this file.  */
835   struct dwp_sections sections {};
836
837   /* Table of CUs in the file.  */
838   const struct dwp_hash_table *cus = nullptr;
839
840   /* Table of TUs in the file.  */
841   const struct dwp_hash_table *tus = nullptr;
842
843   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
844   htab_t loaded_cus {};
845   htab_t loaded_tus {};
846
847   /* Table to map ELF section numbers to their sections.
848      This is only needed for the DWP V1 file format.  */
849   unsigned int num_sections = 0;
850   asection **elf_sections = nullptr;
851 };
852
853 /* This represents a '.dwz' file.  */
854
855 struct dwz_file
856 {
857   dwz_file (gdb_bfd_ref_ptr &&bfd)
858     : dwz_bfd (std::move (bfd))
859   {
860   }
861
862   /* A dwz file can only contain a few sections.  */
863   struct dwarf2_section_info abbrev {};
864   struct dwarf2_section_info info {};
865   struct dwarf2_section_info str {};
866   struct dwarf2_section_info line {};
867   struct dwarf2_section_info macro {};
868   struct dwarf2_section_info gdb_index {};
869   struct dwarf2_section_info debug_names {};
870
871   /* The dwz's BFD.  */
872   gdb_bfd_ref_ptr dwz_bfd;
873
874   /* If we loaded the index from an external file, this contains the
875      resources associated to the open file, memory mapping, etc.  */
876   std::unique_ptr<index_cache_resource> index_cache_res;
877 };
878
879 /* Struct used to pass misc. parameters to read_die_and_children, et
880    al.  which are used for both .debug_info and .debug_types dies.
881    All parameters here are unchanging for the life of the call.  This
882    struct exists to abstract away the constant parameters of die reading.  */
883
884 struct die_reader_specs
885 {
886   /* The bfd of die_section.  */
887   bfd* abfd;
888
889   /* The CU of the DIE we are parsing.  */
890   struct dwarf2_cu *cu;
891
892   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
893   struct dwo_file *dwo_file;
894
895   /* The section the die comes from.
896      This is either .debug_info or .debug_types, or the .dwo variants.  */
897   struct dwarf2_section_info *die_section;
898
899   /* die_section->buffer.  */
900   const gdb_byte *buffer;
901
902   /* The end of the buffer.  */
903   const gdb_byte *buffer_end;
904
905   /* The value of the DW_AT_comp_dir attribute.  */
906   const char *comp_dir;
907
908   /* The abbreviation table to use when reading the DIEs.  */
909   struct abbrev_table *abbrev_table;
910 };
911
912 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
913 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
914                                       const gdb_byte *info_ptr,
915                                       struct die_info *comp_unit_die,
916                                       int has_children,
917                                       void *data);
918
919 /* A 1-based directory index.  This is a strong typedef to prevent
920    accidentally using a directory index as a 0-based index into an
921    array/vector.  */
922 enum class dir_index : unsigned int {};
923
924 /* Likewise, a 1-based file name index.  */
925 enum class file_name_index : unsigned int {};
926
927 struct file_entry
928 {
929   file_entry () = default;
930
931   file_entry (const char *name_, dir_index d_index_,
932               unsigned int mod_time_, unsigned int length_)
933     : name (name_),
934       d_index (d_index_),
935       mod_time (mod_time_),
936       length (length_)
937   {}
938
939   /* Return the include directory at D_INDEX stored in LH.  Returns
940      NULL if D_INDEX is out of bounds.  */
941   const char *include_dir (const line_header *lh) const;
942
943   /* The file name.  Note this is an observing pointer.  The memory is
944      owned by debug_line_buffer.  */
945   const char *name {};
946
947   /* The directory index (1-based).  */
948   dir_index d_index {};
949
950   unsigned int mod_time {};
951
952   unsigned int length {};
953
954   /* True if referenced by the Line Number Program.  */
955   bool included_p {};
956
957   /* The associated symbol table, if any.  */
958   struct symtab *symtab {};
959 };
960
961 /* The line number information for a compilation unit (found in the
962    .debug_line section) begins with a "statement program header",
963    which contains the following information.  */
964 struct line_header
965 {
966   line_header ()
967     : offset_in_dwz {}
968   {}
969
970   /* Add an entry to the include directory table.  */
971   void add_include_dir (const char *include_dir);
972
973   /* Add an entry to the file name table.  */
974   void add_file_name (const char *name, dir_index d_index,
975                       unsigned int mod_time, unsigned int length);
976
977   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
978      is out of bounds.  */
979   const char *include_dir_at (dir_index index) const
980   {
981     /* Convert directory index number (1-based) to vector index
982        (0-based).  */
983     size_t vec_index = to_underlying (index) - 1;
984
985     if (vec_index >= include_dirs.size ())
986       return NULL;
987     return include_dirs[vec_index];
988   }
989
990   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
991      is out of bounds.  */
992   file_entry *file_name_at (file_name_index index)
993   {
994     /* Convert file name index number (1-based) to vector index
995        (0-based).  */
996     size_t vec_index = to_underlying (index) - 1;
997
998     if (vec_index >= file_names.size ())
999       return NULL;
1000     return &file_names[vec_index];
1001   }
1002
1003   /* Const version of the above.  */
1004   const file_entry *file_name_at (unsigned int index) const
1005   {
1006     if (index >= file_names.size ())
1007       return NULL;
1008     return &file_names[index];
1009   }
1010
1011   /* Offset of line number information in .debug_line section.  */
1012   sect_offset sect_off {};
1013
1014   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1015   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1016
1017   unsigned int total_length {};
1018   unsigned short version {};
1019   unsigned int header_length {};
1020   unsigned char minimum_instruction_length {};
1021   unsigned char maximum_ops_per_instruction {};
1022   unsigned char default_is_stmt {};
1023   int line_base {};
1024   unsigned char line_range {};
1025   unsigned char opcode_base {};
1026
1027   /* standard_opcode_lengths[i] is the number of operands for the
1028      standard opcode whose value is i.  This means that
1029      standard_opcode_lengths[0] is unused, and the last meaningful
1030      element is standard_opcode_lengths[opcode_base - 1].  */
1031   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1032
1033   /* The include_directories table.  Note these are observing
1034      pointers.  The memory is owned by debug_line_buffer.  */
1035   std::vector<const char *> include_dirs;
1036
1037   /* The file_names table.  */
1038   std::vector<file_entry> file_names;
1039
1040   /* The start and end of the statement program following this
1041      header.  These point into dwarf2_per_objfile->line_buffer.  */
1042   const gdb_byte *statement_program_start {}, *statement_program_end {};
1043 };
1044
1045 typedef std::unique_ptr<line_header> line_header_up;
1046
1047 const char *
1048 file_entry::include_dir (const line_header *lh) const
1049 {
1050   return lh->include_dir_at (d_index);
1051 }
1052
1053 /* When we construct a partial symbol table entry we only
1054    need this much information.  */
1055 struct partial_die_info : public allocate_on_obstack
1056   {
1057     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1058
1059     /* Disable assign but still keep copy ctor, which is needed
1060        load_partial_dies.   */
1061     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1062
1063     /* Adjust the partial die before generating a symbol for it.  This
1064        function may set the is_external flag or change the DIE's
1065        name.  */
1066     void fixup (struct dwarf2_cu *cu);
1067
1068     /* Read a minimal amount of information into the minimal die
1069        structure.  */
1070     const gdb_byte *read (const struct die_reader_specs *reader,
1071                           const struct abbrev_info &abbrev,
1072                           const gdb_byte *info_ptr);
1073
1074     /* Offset of this DIE.  */
1075     const sect_offset sect_off;
1076
1077     /* DWARF-2 tag for this DIE.  */
1078     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1079
1080     /* Assorted flags describing the data found in this DIE.  */
1081     const unsigned int has_children : 1;
1082
1083     unsigned int is_external : 1;
1084     unsigned int is_declaration : 1;
1085     unsigned int has_type : 1;
1086     unsigned int has_specification : 1;
1087     unsigned int has_pc_info : 1;
1088     unsigned int may_be_inlined : 1;
1089
1090     /* This DIE has been marked DW_AT_main_subprogram.  */
1091     unsigned int main_subprogram : 1;
1092
1093     /* Flag set if the SCOPE field of this structure has been
1094        computed.  */
1095     unsigned int scope_set : 1;
1096
1097     /* Flag set if the DIE has a byte_size attribute.  */
1098     unsigned int has_byte_size : 1;
1099
1100     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1101     unsigned int has_const_value : 1;
1102
1103     /* Flag set if any of the DIE's children are template arguments.  */
1104     unsigned int has_template_arguments : 1;
1105
1106     /* Flag set if fixup has been called on this die.  */
1107     unsigned int fixup_called : 1;
1108
1109     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1110     unsigned int is_dwz : 1;
1111
1112     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1113     unsigned int spec_is_dwz : 1;
1114
1115     /* The name of this DIE.  Normally the value of DW_AT_name, but
1116        sometimes a default name for unnamed DIEs.  */
1117     const char *name = nullptr;
1118
1119     /* The linkage name, if present.  */
1120     const char *linkage_name = nullptr;
1121
1122     /* The scope to prepend to our children.  This is generally
1123        allocated on the comp_unit_obstack, so will disappear
1124        when this compilation unit leaves the cache.  */
1125     const char *scope = nullptr;
1126
1127     /* Some data associated with the partial DIE.  The tag determines
1128        which field is live.  */
1129     union
1130     {
1131       /* The location description associated with this DIE, if any.  */
1132       struct dwarf_block *locdesc;
1133       /* The offset of an import, for DW_TAG_imported_unit.  */
1134       sect_offset sect_off;
1135     } d {};
1136
1137     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1138     CORE_ADDR lowpc = 0;
1139     CORE_ADDR highpc = 0;
1140
1141     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1142        DW_AT_sibling, if any.  */
1143     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1144        could return DW_AT_sibling values to its caller load_partial_dies.  */
1145     const gdb_byte *sibling = nullptr;
1146
1147     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1148        DW_AT_specification (or DW_AT_abstract_origin or
1149        DW_AT_extension).  */
1150     sect_offset spec_offset {};
1151
1152     /* Pointers to this DIE's parent, first child, and next sibling,
1153        if any.  */
1154     struct partial_die_info *die_parent = nullptr;
1155     struct partial_die_info *die_child = nullptr;
1156     struct partial_die_info *die_sibling = nullptr;
1157
1158     friend struct partial_die_info *
1159     dwarf2_cu::find_partial_die (sect_offset sect_off);
1160
1161   private:
1162     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1163     partial_die_info (sect_offset sect_off)
1164       : partial_die_info (sect_off, DW_TAG_padding, 0)
1165     {
1166     }
1167
1168     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1169                       int has_children_)
1170       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1171     {
1172       is_external = 0;
1173       is_declaration = 0;
1174       has_type = 0;
1175       has_specification = 0;
1176       has_pc_info = 0;
1177       may_be_inlined = 0;
1178       main_subprogram = 0;
1179       scope_set = 0;
1180       has_byte_size = 0;
1181       has_const_value = 0;
1182       has_template_arguments = 0;
1183       fixup_called = 0;
1184       is_dwz = 0;
1185       spec_is_dwz = 0;
1186     }
1187   };
1188
1189 /* This data structure holds the information of an abbrev.  */
1190 struct abbrev_info
1191   {
1192     unsigned int number;        /* number identifying abbrev */
1193     enum dwarf_tag tag;         /* dwarf tag */
1194     unsigned short has_children;                /* boolean */
1195     unsigned short num_attrs;   /* number of attributes */
1196     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1197     struct abbrev_info *next;   /* next in chain */
1198   };
1199
1200 struct attr_abbrev
1201   {
1202     ENUM_BITFIELD(dwarf_attribute) name : 16;
1203     ENUM_BITFIELD(dwarf_form) form : 16;
1204
1205     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1206     LONGEST implicit_const;
1207   };
1208
1209 /* Size of abbrev_table.abbrev_hash_table.  */
1210 #define ABBREV_HASH_SIZE 121
1211
1212 /* Top level data structure to contain an abbreviation table.  */
1213
1214 struct abbrev_table
1215 {
1216   explicit abbrev_table (sect_offset off)
1217     : sect_off (off)
1218   {
1219     m_abbrevs =
1220       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1221     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1222   }
1223
1224   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1225
1226   /* Allocate space for a struct abbrev_info object in
1227      ABBREV_TABLE.  */
1228   struct abbrev_info *alloc_abbrev ();
1229
1230   /* Add an abbreviation to the table.  */
1231   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1232
1233   /* Look up an abbrev in the table.
1234      Returns NULL if the abbrev is not found.  */
1235
1236   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1237
1238
1239   /* Where the abbrev table came from.
1240      This is used as a sanity check when the table is used.  */
1241   const sect_offset sect_off;
1242
1243   /* Storage for the abbrev table.  */
1244   auto_obstack abbrev_obstack;
1245
1246 private:
1247
1248   /* Hash table of abbrevs.
1249      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1250      It could be statically allocated, but the previous code didn't so we
1251      don't either.  */
1252   struct abbrev_info **m_abbrevs;
1253 };
1254
1255 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1256
1257 /* Attributes have a name and a value.  */
1258 struct attribute
1259   {
1260     ENUM_BITFIELD(dwarf_attribute) name : 16;
1261     ENUM_BITFIELD(dwarf_form) form : 15;
1262
1263     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1264        field should be in u.str (existing only for DW_STRING) but it is kept
1265        here for better struct attribute alignment.  */
1266     unsigned int string_is_canonical : 1;
1267
1268     union
1269       {
1270         const char *str;
1271         struct dwarf_block *blk;
1272         ULONGEST unsnd;
1273         LONGEST snd;
1274         CORE_ADDR addr;
1275         ULONGEST signature;
1276       }
1277     u;
1278   };
1279
1280 /* This data structure holds a complete die structure.  */
1281 struct die_info
1282   {
1283     /* DWARF-2 tag for this DIE.  */
1284     ENUM_BITFIELD(dwarf_tag) tag : 16;
1285
1286     /* Number of attributes */
1287     unsigned char num_attrs;
1288
1289     /* True if we're presently building the full type name for the
1290        type derived from this DIE.  */
1291     unsigned char building_fullname : 1;
1292
1293     /* True if this die is in process.  PR 16581.  */
1294     unsigned char in_process : 1;
1295
1296     /* Abbrev number */
1297     unsigned int abbrev;
1298
1299     /* Offset in .debug_info or .debug_types section.  */
1300     sect_offset sect_off;
1301
1302     /* The dies in a compilation unit form an n-ary tree.  PARENT
1303        points to this die's parent; CHILD points to the first child of
1304        this node; and all the children of a given node are chained
1305        together via their SIBLING fields.  */
1306     struct die_info *child;     /* Its first child, if any.  */
1307     struct die_info *sibling;   /* Its next sibling, if any.  */
1308     struct die_info *parent;    /* Its parent, if any.  */
1309
1310     /* An array of attributes, with NUM_ATTRS elements.  There may be
1311        zero, but it's not common and zero-sized arrays are not
1312        sufficiently portable C.  */
1313     struct attribute attrs[1];
1314   };
1315
1316 /* Get at parts of an attribute structure.  */
1317
1318 #define DW_STRING(attr)    ((attr)->u.str)
1319 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1320 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1321 #define DW_BLOCK(attr)     ((attr)->u.blk)
1322 #define DW_SND(attr)       ((attr)->u.snd)
1323 #define DW_ADDR(attr)      ((attr)->u.addr)
1324 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1325
1326 /* Blocks are a bunch of untyped bytes.  */
1327 struct dwarf_block
1328   {
1329     size_t size;
1330
1331     /* Valid only if SIZE is not zero.  */
1332     const gdb_byte *data;
1333   };
1334
1335 #ifndef ATTR_ALLOC_CHUNK
1336 #define ATTR_ALLOC_CHUNK 4
1337 #endif
1338
1339 /* Allocate fields for structs, unions and enums in this size.  */
1340 #ifndef DW_FIELD_ALLOC_CHUNK
1341 #define DW_FIELD_ALLOC_CHUNK 4
1342 #endif
1343
1344 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1345    but this would require a corresponding change in unpack_field_as_long
1346    and friends.  */
1347 static int bits_per_byte = 8;
1348
1349 /* When reading a variant or variant part, we track a bit more
1350    information about the field, and store it in an object of this
1351    type.  */
1352
1353 struct variant_field
1354 {
1355   /* If we see a DW_TAG_variant, then this will be the discriminant
1356      value.  */
1357   ULONGEST discriminant_value;
1358   /* If we see a DW_TAG_variant, then this will be set if this is the
1359      default branch.  */
1360   bool default_branch;
1361   /* While reading a DW_TAG_variant_part, this will be set if this
1362      field is the discriminant.  */
1363   bool is_discriminant;
1364 };
1365
1366 struct nextfield
1367 {
1368   int accessibility = 0;
1369   int virtuality = 0;
1370   /* Extra information to describe a variant or variant part.  */
1371   struct variant_field variant {};
1372   struct field field {};
1373 };
1374
1375 struct fnfieldlist
1376 {
1377   const char *name = nullptr;
1378   std::vector<struct fn_field> fnfields;
1379 };
1380
1381 /* The routines that read and process dies for a C struct or C++ class
1382    pass lists of data member fields and lists of member function fields
1383    in an instance of a field_info structure, as defined below.  */
1384 struct field_info
1385   {
1386     /* List of data member and baseclasses fields.  */
1387     std::vector<struct nextfield> fields;
1388     std::vector<struct nextfield> baseclasses;
1389
1390     /* Number of fields (including baseclasses).  */
1391     int nfields = 0;
1392
1393     /* Set if the accesibility of one of the fields is not public.  */
1394     int non_public_fields = 0;
1395
1396     /* Member function fieldlist array, contains name of possibly overloaded
1397        member function, number of overloaded member functions and a pointer
1398        to the head of the member function field chain.  */
1399     std::vector<struct fnfieldlist> fnfieldlists;
1400
1401     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1402        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1403     std::vector<struct decl_field> typedef_field_list;
1404
1405     /* Nested types defined by this class and the number of elements in this
1406        list.  */
1407     std::vector<struct decl_field> nested_types_list;
1408   };
1409
1410 /* One item on the queue of compilation units to read in full symbols
1411    for.  */
1412 struct dwarf2_queue_item
1413 {
1414   struct dwarf2_per_cu_data *per_cu;
1415   enum language pretend_language;
1416   struct dwarf2_queue_item *next;
1417 };
1418
1419 /* The current queue.  */
1420 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1421
1422 /* Loaded secondary compilation units are kept in memory until they
1423    have not been referenced for the processing of this many
1424    compilation units.  Set this to zero to disable caching.  Cache
1425    sizes of up to at least twenty will improve startup time for
1426    typical inter-CU-reference binaries, at an obvious memory cost.  */
1427 static int dwarf_max_cache_age = 5;
1428 static void
1429 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1430                           struct cmd_list_element *c, const char *value)
1431 {
1432   fprintf_filtered (file, _("The upper bound on the age of cached "
1433                             "DWARF compilation units is %s.\n"),
1434                     value);
1435 }
1436 \f
1437 /* local function prototypes */
1438
1439 static const char *get_section_name (const struct dwarf2_section_info *);
1440
1441 static const char *get_section_file_name (const struct dwarf2_section_info *);
1442
1443 static void dwarf2_find_base_address (struct die_info *die,
1444                                       struct dwarf2_cu *cu);
1445
1446 static struct partial_symtab *create_partial_symtab
1447   (struct dwarf2_per_cu_data *per_cu, const char *name);
1448
1449 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1450                                         const gdb_byte *info_ptr,
1451                                         struct die_info *type_unit_die,
1452                                         int has_children, void *data);
1453
1454 static void dwarf2_build_psymtabs_hard
1455   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1456
1457 static void scan_partial_symbols (struct partial_die_info *,
1458                                   CORE_ADDR *, CORE_ADDR *,
1459                                   int, struct dwarf2_cu *);
1460
1461 static void add_partial_symbol (struct partial_die_info *,
1462                                 struct dwarf2_cu *);
1463
1464 static void add_partial_namespace (struct partial_die_info *pdi,
1465                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1466                                    int set_addrmap, struct dwarf2_cu *cu);
1467
1468 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1469                                 CORE_ADDR *highpc, int set_addrmap,
1470                                 struct dwarf2_cu *cu);
1471
1472 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1473                                      struct dwarf2_cu *cu);
1474
1475 static void add_partial_subprogram (struct partial_die_info *pdi,
1476                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1477                                     int need_pc, struct dwarf2_cu *cu);
1478
1479 static void dwarf2_read_symtab (struct partial_symtab *,
1480                                 struct objfile *);
1481
1482 static void psymtab_to_symtab_1 (struct partial_symtab *);
1483
1484 static abbrev_table_up abbrev_table_read_table
1485   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1486    sect_offset);
1487
1488 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1489
1490 static struct partial_die_info *load_partial_dies
1491   (const struct die_reader_specs *, const gdb_byte *, int);
1492
1493 static struct partial_die_info *find_partial_die (sect_offset, int,
1494                                                   struct dwarf2_cu *);
1495
1496 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1497                                        struct attribute *, struct attr_abbrev *,
1498                                        const gdb_byte *);
1499
1500 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1501
1502 static int read_1_signed_byte (bfd *, const gdb_byte *);
1503
1504 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1505
1506 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1507
1508 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1509
1510 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1511                                unsigned int *);
1512
1513 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1514
1515 static LONGEST read_checked_initial_length_and_offset
1516   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1517    unsigned int *, unsigned int *);
1518
1519 static LONGEST read_offset (bfd *, const gdb_byte *,
1520                             const struct comp_unit_head *,
1521                             unsigned int *);
1522
1523 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1524
1525 static sect_offset read_abbrev_offset
1526   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1527    struct dwarf2_section_info *, sect_offset);
1528
1529 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1530
1531 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1532
1533 static const char *read_indirect_string
1534   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1535    const struct comp_unit_head *, unsigned int *);
1536
1537 static const char *read_indirect_line_string
1538   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1539    const struct comp_unit_head *, unsigned int *);
1540
1541 static const char *read_indirect_string_at_offset
1542   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1543    LONGEST str_offset);
1544
1545 static const char *read_indirect_string_from_dwz
1546   (struct objfile *objfile, struct dwz_file *, LONGEST);
1547
1548 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1549
1550 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1551                                               const gdb_byte *,
1552                                               unsigned int *);
1553
1554 static const char *read_str_index (const struct die_reader_specs *reader,
1555                                    ULONGEST str_index);
1556
1557 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1558
1559 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1560                                       struct dwarf2_cu *);
1561
1562 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1563                                                 unsigned int);
1564
1565 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1566                                        struct dwarf2_cu *cu);
1567
1568 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1569                                struct dwarf2_cu *cu);
1570
1571 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1572
1573 static struct die_info *die_specification (struct die_info *die,
1574                                            struct dwarf2_cu **);
1575
1576 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1577                                                 struct dwarf2_cu *cu);
1578
1579 static void dwarf_decode_lines (struct line_header *, const char *,
1580                                 struct dwarf2_cu *, struct partial_symtab *,
1581                                 CORE_ADDR, int decode_mapping);
1582
1583 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1584                                   const char *);
1585
1586 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1587                                                     const char *, const char *,
1588                                                     CORE_ADDR);
1589
1590 static struct symbol *new_symbol (struct die_info *, struct type *,
1591                                   struct dwarf2_cu *, struct symbol * = NULL);
1592
1593 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1594                                 struct dwarf2_cu *);
1595
1596 static void dwarf2_const_value_attr (const struct attribute *attr,
1597                                      struct type *type,
1598                                      const char *name,
1599                                      struct obstack *obstack,
1600                                      struct dwarf2_cu *cu, LONGEST *value,
1601                                      const gdb_byte **bytes,
1602                                      struct dwarf2_locexpr_baton **baton);
1603
1604 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1605
1606 static int need_gnat_info (struct dwarf2_cu *);
1607
1608 static struct type *die_descriptive_type (struct die_info *,
1609                                           struct dwarf2_cu *);
1610
1611 static void set_descriptive_type (struct type *, struct die_info *,
1612                                   struct dwarf2_cu *);
1613
1614 static struct type *die_containing_type (struct die_info *,
1615                                          struct dwarf2_cu *);
1616
1617 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1618                                      struct dwarf2_cu *);
1619
1620 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1621
1622 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1623
1624 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1625
1626 static char *typename_concat (struct obstack *obs, const char *prefix,
1627                               const char *suffix, int physname,
1628                               struct dwarf2_cu *cu);
1629
1630 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1631
1632 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1633
1634 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1635
1636 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1637
1638 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1639
1640 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1641
1642 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1643                                struct dwarf2_cu *, struct partial_symtab *);
1644
1645 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1646    values.  Keep the items ordered with increasing constraints compliance.  */
1647 enum pc_bounds_kind
1648 {
1649   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1650   PC_BOUNDS_NOT_PRESENT,
1651
1652   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1653      were present but they do not form a valid range of PC addresses.  */
1654   PC_BOUNDS_INVALID,
1655
1656   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1657   PC_BOUNDS_RANGES,
1658
1659   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1660   PC_BOUNDS_HIGH_LOW,
1661 };
1662
1663 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1664                                                  CORE_ADDR *, CORE_ADDR *,
1665                                                  struct dwarf2_cu *,
1666                                                  struct partial_symtab *);
1667
1668 static void get_scope_pc_bounds (struct die_info *,
1669                                  CORE_ADDR *, CORE_ADDR *,
1670                                  struct dwarf2_cu *);
1671
1672 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1673                                         CORE_ADDR, struct dwarf2_cu *);
1674
1675 static void dwarf2_add_field (struct field_info *, struct die_info *,
1676                               struct dwarf2_cu *);
1677
1678 static void dwarf2_attach_fields_to_type (struct field_info *,
1679                                           struct type *, struct dwarf2_cu *);
1680
1681 static void dwarf2_add_member_fn (struct field_info *,
1682                                   struct die_info *, struct type *,
1683                                   struct dwarf2_cu *);
1684
1685 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1686                                              struct type *,
1687                                              struct dwarf2_cu *);
1688
1689 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1690
1691 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1692
1693 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1694
1695 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1696
1697 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1698
1699 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1700
1701 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1702
1703 static struct type *read_module_type (struct die_info *die,
1704                                       struct dwarf2_cu *cu);
1705
1706 static const char *namespace_name (struct die_info *die,
1707                                    int *is_anonymous, struct dwarf2_cu *);
1708
1709 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1710
1711 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1712
1713 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1714                                                        struct dwarf2_cu *);
1715
1716 static struct die_info *read_die_and_siblings_1
1717   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1718    struct die_info *);
1719
1720 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1721                                                const gdb_byte *info_ptr,
1722                                                const gdb_byte **new_info_ptr,
1723                                                struct die_info *parent);
1724
1725 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1726                                         struct die_info **, const gdb_byte *,
1727                                         int *, int);
1728
1729 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1730                                       struct die_info **, const gdb_byte *,
1731                                       int *);
1732
1733 static void process_die (struct die_info *, struct dwarf2_cu *);
1734
1735 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1736                                              struct obstack *);
1737
1738 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1739
1740 static const char *dwarf2_full_name (const char *name,
1741                                      struct die_info *die,
1742                                      struct dwarf2_cu *cu);
1743
1744 static const char *dwarf2_physname (const char *name, struct die_info *die,
1745                                     struct dwarf2_cu *cu);
1746
1747 static struct die_info *dwarf2_extension (struct die_info *die,
1748                                           struct dwarf2_cu **);
1749
1750 static const char *dwarf_tag_name (unsigned int);
1751
1752 static const char *dwarf_attr_name (unsigned int);
1753
1754 static const char *dwarf_form_name (unsigned int);
1755
1756 static const char *dwarf_bool_name (unsigned int);
1757
1758 static const char *dwarf_type_encoding_name (unsigned int);
1759
1760 static struct die_info *sibling_die (struct die_info *);
1761
1762 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1763
1764 static void dump_die_for_error (struct die_info *);
1765
1766 static void dump_die_1 (struct ui_file *, int level, int max_level,
1767                         struct die_info *);
1768
1769 /*static*/ void dump_die (struct die_info *, int max_level);
1770
1771 static void store_in_ref_table (struct die_info *,
1772                                 struct dwarf2_cu *);
1773
1774 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1775
1776 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1777
1778 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1779                                                const struct attribute *,
1780                                                struct dwarf2_cu **);
1781
1782 static struct die_info *follow_die_ref (struct die_info *,
1783                                         const struct attribute *,
1784                                         struct dwarf2_cu **);
1785
1786 static struct die_info *follow_die_sig (struct die_info *,
1787                                         const struct attribute *,
1788                                         struct dwarf2_cu **);
1789
1790 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1791                                          struct dwarf2_cu *);
1792
1793 static struct type *get_DW_AT_signature_type (struct die_info *,
1794                                               const struct attribute *,
1795                                               struct dwarf2_cu *);
1796
1797 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1798
1799 static void read_signatured_type (struct signatured_type *);
1800
1801 static int attr_to_dynamic_prop (const struct attribute *attr,
1802                                  struct die_info *die, struct dwarf2_cu *cu,
1803                                  struct dynamic_prop *prop);
1804
1805 /* memory allocation interface */
1806
1807 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1808
1809 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1810
1811 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1812
1813 static int attr_form_is_block (const struct attribute *);
1814
1815 static int attr_form_is_section_offset (const struct attribute *);
1816
1817 static int attr_form_is_constant (const struct attribute *);
1818
1819 static int attr_form_is_ref (const struct attribute *);
1820
1821 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1822                                    struct dwarf2_loclist_baton *baton,
1823                                    const struct attribute *attr);
1824
1825 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1826                                          struct symbol *sym,
1827                                          struct dwarf2_cu *cu,
1828                                          int is_block);
1829
1830 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1831                                      const gdb_byte *info_ptr,
1832                                      struct abbrev_info *abbrev);
1833
1834 static hashval_t partial_die_hash (const void *item);
1835
1836 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1837
1838 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1839   (sect_offset sect_off, unsigned int offset_in_dwz,
1840    struct dwarf2_per_objfile *dwarf2_per_objfile);
1841
1842 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1843                                    struct die_info *comp_unit_die,
1844                                    enum language pretend_language);
1845
1846 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1847
1848 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1849
1850 static struct type *set_die_type (struct die_info *, struct type *,
1851                                   struct dwarf2_cu *);
1852
1853 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1854
1855 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1856
1857 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1858                                  enum language);
1859
1860 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1861                                     enum language);
1862
1863 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1864                                     enum language);
1865
1866 static void dwarf2_add_dependence (struct dwarf2_cu *,
1867                                    struct dwarf2_per_cu_data *);
1868
1869 static void dwarf2_mark (struct dwarf2_cu *);
1870
1871 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1872
1873 static struct type *get_die_type_at_offset (sect_offset,
1874                                             struct dwarf2_per_cu_data *);
1875
1876 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1877
1878 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1879                              enum language pretend_language);
1880
1881 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1882
1883 /* Class, the destructor of which frees all allocated queue entries.  This
1884    will only have work to do if an error was thrown while processing the
1885    dwarf.  If no error was thrown then the queue entries should have all
1886    been processed, and freed, as we went along.  */
1887
1888 class dwarf2_queue_guard
1889 {
1890 public:
1891   dwarf2_queue_guard () = default;
1892
1893   /* Free any entries remaining on the queue.  There should only be
1894      entries left if we hit an error while processing the dwarf.  */
1895   ~dwarf2_queue_guard ()
1896   {
1897     struct dwarf2_queue_item *item, *last;
1898
1899     item = dwarf2_queue;
1900     while (item)
1901       {
1902         /* Anything still marked queued is likely to be in an
1903            inconsistent state, so discard it.  */
1904         if (item->per_cu->queued)
1905           {
1906             if (item->per_cu->cu != NULL)
1907               free_one_cached_comp_unit (item->per_cu);
1908             item->per_cu->queued = 0;
1909           }
1910
1911         last = item;
1912         item = item->next;
1913         xfree (last);
1914       }
1915
1916     dwarf2_queue = dwarf2_queue_tail = NULL;
1917   }
1918 };
1919
1920 /* The return type of find_file_and_directory.  Note, the enclosed
1921    string pointers are only valid while this object is valid.  */
1922
1923 struct file_and_directory
1924 {
1925   /* The filename.  This is never NULL.  */
1926   const char *name;
1927
1928   /* The compilation directory.  NULL if not known.  If we needed to
1929      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1930      points directly to the DW_AT_comp_dir string attribute owned by
1931      the obstack that owns the DIE.  */
1932   const char *comp_dir;
1933
1934   /* If we needed to build a new string for comp_dir, this is what
1935      owns the storage.  */
1936   std::string comp_dir_storage;
1937 };
1938
1939 static file_and_directory find_file_and_directory (struct die_info *die,
1940                                                    struct dwarf2_cu *cu);
1941
1942 static char *file_full_name (int file, struct line_header *lh,
1943                              const char *comp_dir);
1944
1945 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1946 enum class rcuh_kind { COMPILE, TYPE };
1947
1948 static const gdb_byte *read_and_check_comp_unit_head
1949   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1950    struct comp_unit_head *header,
1951    struct dwarf2_section_info *section,
1952    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1953    rcuh_kind section_kind);
1954
1955 static void init_cutu_and_read_dies
1956   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1957    int use_existing_cu, int keep, bool skip_partial,
1958    die_reader_func_ftype *die_reader_func, void *data);
1959
1960 static void init_cutu_and_read_dies_simple
1961   (struct dwarf2_per_cu_data *this_cu,
1962    die_reader_func_ftype *die_reader_func, void *data);
1963
1964 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1965
1966 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1967
1968 static struct dwo_unit *lookup_dwo_unit_in_dwp
1969   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1970    struct dwp_file *dwp_file, const char *comp_dir,
1971    ULONGEST signature, int is_debug_types);
1972
1973 static struct dwp_file *get_dwp_file
1974   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1975
1976 static struct dwo_unit *lookup_dwo_comp_unit
1977   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1978
1979 static struct dwo_unit *lookup_dwo_type_unit
1980   (struct signatured_type *, const char *, const char *);
1981
1982 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1983
1984 static void free_dwo_file (struct dwo_file *);
1985
1986 /* A unique_ptr helper to free a dwo_file.  */
1987
1988 struct dwo_file_deleter
1989 {
1990   void operator() (struct dwo_file *df) const
1991   {
1992     free_dwo_file (df);
1993   }
1994 };
1995
1996 /* A unique pointer to a dwo_file.  */
1997
1998 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1999
2000 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2001
2002 static void check_producer (struct dwarf2_cu *cu);
2003
2004 static void free_line_header_voidp (void *arg);
2005 \f
2006 /* Various complaints about symbol reading that don't abort the process.  */
2007
2008 static void
2009 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2010 {
2011   complaint (_("statement list doesn't fit in .debug_line section"));
2012 }
2013
2014 static void
2015 dwarf2_debug_line_missing_file_complaint (void)
2016 {
2017   complaint (_(".debug_line section has line data without a file"));
2018 }
2019
2020 static void
2021 dwarf2_debug_line_missing_end_sequence_complaint (void)
2022 {
2023   complaint (_(".debug_line section has line "
2024                "program sequence without an end"));
2025 }
2026
2027 static void
2028 dwarf2_complex_location_expr_complaint (void)
2029 {
2030   complaint (_("location expression too complex"));
2031 }
2032
2033 static void
2034 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2035                                               int arg3)
2036 {
2037   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2038              arg1, arg2, arg3);
2039 }
2040
2041 static void
2042 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2043 {
2044   complaint (_("debug info runs off end of %s section"
2045                " [in module %s]"),
2046              get_section_name (section),
2047              get_section_file_name (section));
2048 }
2049
2050 static void
2051 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2052 {
2053   complaint (_("macro debug info contains a "
2054                "malformed macro definition:\n`%s'"),
2055              arg1);
2056 }
2057
2058 static void
2059 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2060 {
2061   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2062              arg1, arg2);
2063 }
2064
2065 /* Hash function for line_header_hash.  */
2066
2067 static hashval_t
2068 line_header_hash (const struct line_header *ofs)
2069 {
2070   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2071 }
2072
2073 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2074
2075 static hashval_t
2076 line_header_hash_voidp (const void *item)
2077 {
2078   const struct line_header *ofs = (const struct line_header *) item;
2079
2080   return line_header_hash (ofs);
2081 }
2082
2083 /* Equality function for line_header_hash.  */
2084
2085 static int
2086 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2087 {
2088   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2089   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2090
2091   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2092           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2093 }
2094
2095 \f
2096
2097 /* Read the given attribute value as an address, taking the attribute's
2098    form into account.  */
2099
2100 static CORE_ADDR
2101 attr_value_as_address (struct attribute *attr)
2102 {
2103   CORE_ADDR addr;
2104
2105   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2106     {
2107       /* Aside from a few clearly defined exceptions, attributes that
2108          contain an address must always be in DW_FORM_addr form.
2109          Unfortunately, some compilers happen to be violating this
2110          requirement by encoding addresses using other forms, such
2111          as DW_FORM_data4 for example.  For those broken compilers,
2112          we try to do our best, without any guarantee of success,
2113          to interpret the address correctly.  It would also be nice
2114          to generate a complaint, but that would require us to maintain
2115          a list of legitimate cases where a non-address form is allowed,
2116          as well as update callers to pass in at least the CU's DWARF
2117          version.  This is more overhead than what we're willing to
2118          expand for a pretty rare case.  */
2119       addr = DW_UNSND (attr);
2120     }
2121   else
2122     addr = DW_ADDR (attr);
2123
2124   return addr;
2125 }
2126
2127 /* See declaration.  */
2128
2129 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2130                                         const dwarf2_debug_sections *names)
2131   : objfile (objfile_)
2132 {
2133   if (names == NULL)
2134     names = &dwarf2_elf_names;
2135
2136   bfd *obfd = objfile->obfd;
2137
2138   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2139     locate_sections (obfd, sec, *names);
2140 }
2141
2142 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2143
2144 dwarf2_per_objfile::~dwarf2_per_objfile ()
2145 {
2146   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2147   free_cached_comp_units ();
2148
2149   if (quick_file_names_table)
2150     htab_delete (quick_file_names_table);
2151
2152   if (line_header_hash)
2153     htab_delete (line_header_hash);
2154
2155   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2156     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2157
2158   for (signatured_type *sig_type : all_type_units)
2159     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2160
2161   VEC_free (dwarf2_section_info_def, types);
2162
2163   if (dwo_files != NULL)
2164     free_dwo_files (dwo_files, objfile);
2165
2166   /* Everything else should be on the objfile obstack.  */
2167 }
2168
2169 /* See declaration.  */
2170
2171 void
2172 dwarf2_per_objfile::free_cached_comp_units ()
2173 {
2174   dwarf2_per_cu_data *per_cu = read_in_chain;
2175   dwarf2_per_cu_data **last_chain = &read_in_chain;
2176   while (per_cu != NULL)
2177     {
2178       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2179
2180       delete per_cu->cu;
2181       *last_chain = next_cu;
2182       per_cu = next_cu;
2183     }
2184 }
2185
2186 /* A helper class that calls free_cached_comp_units on
2187    destruction.  */
2188
2189 class free_cached_comp_units
2190 {
2191 public:
2192
2193   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2194     : m_per_objfile (per_objfile)
2195   {
2196   }
2197
2198   ~free_cached_comp_units ()
2199   {
2200     m_per_objfile->free_cached_comp_units ();
2201   }
2202
2203   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2204
2205 private:
2206
2207   dwarf2_per_objfile *m_per_objfile;
2208 };
2209
2210 /* Try to locate the sections we need for DWARF 2 debugging
2211    information and return true if we have enough to do something.
2212    NAMES points to the dwarf2 section names, or is NULL if the standard
2213    ELF names are used.  */
2214
2215 int
2216 dwarf2_has_info (struct objfile *objfile,
2217                  const struct dwarf2_debug_sections *names)
2218 {
2219   if (objfile->flags & OBJF_READNEVER)
2220     return 0;
2221
2222   struct dwarf2_per_objfile *dwarf2_per_objfile
2223     = get_dwarf2_per_objfile (objfile);
2224
2225   if (dwarf2_per_objfile == NULL)
2226     {
2227       /* Initialize per-objfile state.  */
2228       dwarf2_per_objfile
2229         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2230                                                                      names);
2231       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2232     }
2233   return (!dwarf2_per_objfile->info.is_virtual
2234           && dwarf2_per_objfile->info.s.section != NULL
2235           && !dwarf2_per_objfile->abbrev.is_virtual
2236           && dwarf2_per_objfile->abbrev.s.section != NULL);
2237 }
2238
2239 /* Return the containing section of virtual section SECTION.  */
2240
2241 static struct dwarf2_section_info *
2242 get_containing_section (const struct dwarf2_section_info *section)
2243 {
2244   gdb_assert (section->is_virtual);
2245   return section->s.containing_section;
2246 }
2247
2248 /* Return the bfd owner of SECTION.  */
2249
2250 static struct bfd *
2251 get_section_bfd_owner (const struct dwarf2_section_info *section)
2252 {
2253   if (section->is_virtual)
2254     {
2255       section = get_containing_section (section);
2256       gdb_assert (!section->is_virtual);
2257     }
2258   return section->s.section->owner;
2259 }
2260
2261 /* Return the bfd section of SECTION.
2262    Returns NULL if the section is not present.  */
2263
2264 static asection *
2265 get_section_bfd_section (const struct dwarf2_section_info *section)
2266 {
2267   if (section->is_virtual)
2268     {
2269       section = get_containing_section (section);
2270       gdb_assert (!section->is_virtual);
2271     }
2272   return section->s.section;
2273 }
2274
2275 /* Return the name of SECTION.  */
2276
2277 static const char *
2278 get_section_name (const struct dwarf2_section_info *section)
2279 {
2280   asection *sectp = get_section_bfd_section (section);
2281
2282   gdb_assert (sectp != NULL);
2283   return bfd_section_name (get_section_bfd_owner (section), sectp);
2284 }
2285
2286 /* Return the name of the file SECTION is in.  */
2287
2288 static const char *
2289 get_section_file_name (const struct dwarf2_section_info *section)
2290 {
2291   bfd *abfd = get_section_bfd_owner (section);
2292
2293   return bfd_get_filename (abfd);
2294 }
2295
2296 /* Return the id of SECTION.
2297    Returns 0 if SECTION doesn't exist.  */
2298
2299 static int
2300 get_section_id (const struct dwarf2_section_info *section)
2301 {
2302   asection *sectp = get_section_bfd_section (section);
2303
2304   if (sectp == NULL)
2305     return 0;
2306   return sectp->id;
2307 }
2308
2309 /* Return the flags of SECTION.
2310    SECTION (or containing section if this is a virtual section) must exist.  */
2311
2312 static int
2313 get_section_flags (const struct dwarf2_section_info *section)
2314 {
2315   asection *sectp = get_section_bfd_section (section);
2316
2317   gdb_assert (sectp != NULL);
2318   return bfd_get_section_flags (sectp->owner, sectp);
2319 }
2320
2321 /* When loading sections, we look either for uncompressed section or for
2322    compressed section names.  */
2323
2324 static int
2325 section_is_p (const char *section_name,
2326               const struct dwarf2_section_names *names)
2327 {
2328   if (names->normal != NULL
2329       && strcmp (section_name, names->normal) == 0)
2330     return 1;
2331   if (names->compressed != NULL
2332       && strcmp (section_name, names->compressed) == 0)
2333     return 1;
2334   return 0;
2335 }
2336
2337 /* See declaration.  */
2338
2339 void
2340 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2341                                      const dwarf2_debug_sections &names)
2342 {
2343   flagword aflag = bfd_get_section_flags (abfd, sectp);
2344
2345   if ((aflag & SEC_HAS_CONTENTS) == 0)
2346     {
2347     }
2348   else if (section_is_p (sectp->name, &names.info))
2349     {
2350       this->info.s.section = sectp;
2351       this->info.size = bfd_get_section_size (sectp);
2352     }
2353   else if (section_is_p (sectp->name, &names.abbrev))
2354     {
2355       this->abbrev.s.section = sectp;
2356       this->abbrev.size = bfd_get_section_size (sectp);
2357     }
2358   else if (section_is_p (sectp->name, &names.line))
2359     {
2360       this->line.s.section = sectp;
2361       this->line.size = bfd_get_section_size (sectp);
2362     }
2363   else if (section_is_p (sectp->name, &names.loc))
2364     {
2365       this->loc.s.section = sectp;
2366       this->loc.size = bfd_get_section_size (sectp);
2367     }
2368   else if (section_is_p (sectp->name, &names.loclists))
2369     {
2370       this->loclists.s.section = sectp;
2371       this->loclists.size = bfd_get_section_size (sectp);
2372     }
2373   else if (section_is_p (sectp->name, &names.macinfo))
2374     {
2375       this->macinfo.s.section = sectp;
2376       this->macinfo.size = bfd_get_section_size (sectp);
2377     }
2378   else if (section_is_p (sectp->name, &names.macro))
2379     {
2380       this->macro.s.section = sectp;
2381       this->macro.size = bfd_get_section_size (sectp);
2382     }
2383   else if (section_is_p (sectp->name, &names.str))
2384     {
2385       this->str.s.section = sectp;
2386       this->str.size = bfd_get_section_size (sectp);
2387     }
2388   else if (section_is_p (sectp->name, &names.line_str))
2389     {
2390       this->line_str.s.section = sectp;
2391       this->line_str.size = bfd_get_section_size (sectp);
2392     }
2393   else if (section_is_p (sectp->name, &names.addr))
2394     {
2395       this->addr.s.section = sectp;
2396       this->addr.size = bfd_get_section_size (sectp);
2397     }
2398   else if (section_is_p (sectp->name, &names.frame))
2399     {
2400       this->frame.s.section = sectp;
2401       this->frame.size = bfd_get_section_size (sectp);
2402     }
2403   else if (section_is_p (sectp->name, &names.eh_frame))
2404     {
2405       this->eh_frame.s.section = sectp;
2406       this->eh_frame.size = bfd_get_section_size (sectp);
2407     }
2408   else if (section_is_p (sectp->name, &names.ranges))
2409     {
2410       this->ranges.s.section = sectp;
2411       this->ranges.size = bfd_get_section_size (sectp);
2412     }
2413   else if (section_is_p (sectp->name, &names.rnglists))
2414     {
2415       this->rnglists.s.section = sectp;
2416       this->rnglists.size = bfd_get_section_size (sectp);
2417     }
2418   else if (section_is_p (sectp->name, &names.types))
2419     {
2420       struct dwarf2_section_info type_section;
2421
2422       memset (&type_section, 0, sizeof (type_section));
2423       type_section.s.section = sectp;
2424       type_section.size = bfd_get_section_size (sectp);
2425
2426       VEC_safe_push (dwarf2_section_info_def, this->types,
2427                      &type_section);
2428     }
2429   else if (section_is_p (sectp->name, &names.gdb_index))
2430     {
2431       this->gdb_index.s.section = sectp;
2432       this->gdb_index.size = bfd_get_section_size (sectp);
2433     }
2434   else if (section_is_p (sectp->name, &names.debug_names))
2435     {
2436       this->debug_names.s.section = sectp;
2437       this->debug_names.size = bfd_get_section_size (sectp);
2438     }
2439   else if (section_is_p (sectp->name, &names.debug_aranges))
2440     {
2441       this->debug_aranges.s.section = sectp;
2442       this->debug_aranges.size = bfd_get_section_size (sectp);
2443     }
2444
2445   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2446       && bfd_section_vma (abfd, sectp) == 0)
2447     this->has_section_at_zero = true;
2448 }
2449
2450 /* A helper function that decides whether a section is empty,
2451    or not present.  */
2452
2453 static int
2454 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2455 {
2456   if (section->is_virtual)
2457     return section->size == 0;
2458   return section->s.section == NULL || section->size == 0;
2459 }
2460
2461 /* See dwarf2read.h.  */
2462
2463 void
2464 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2465 {
2466   asection *sectp;
2467   bfd *abfd;
2468   gdb_byte *buf, *retbuf;
2469
2470   if (info->readin)
2471     return;
2472   info->buffer = NULL;
2473   info->readin = 1;
2474
2475   if (dwarf2_section_empty_p (info))
2476     return;
2477
2478   sectp = get_section_bfd_section (info);
2479
2480   /* If this is a virtual section we need to read in the real one first.  */
2481   if (info->is_virtual)
2482     {
2483       struct dwarf2_section_info *containing_section =
2484         get_containing_section (info);
2485
2486       gdb_assert (sectp != NULL);
2487       if ((sectp->flags & SEC_RELOC) != 0)
2488         {
2489           error (_("Dwarf Error: DWP format V2 with relocations is not"
2490                    " supported in section %s [in module %s]"),
2491                  get_section_name (info), get_section_file_name (info));
2492         }
2493       dwarf2_read_section (objfile, containing_section);
2494       /* Other code should have already caught virtual sections that don't
2495          fit.  */
2496       gdb_assert (info->virtual_offset + info->size
2497                   <= containing_section->size);
2498       /* If the real section is empty or there was a problem reading the
2499          section we shouldn't get here.  */
2500       gdb_assert (containing_section->buffer != NULL);
2501       info->buffer = containing_section->buffer + info->virtual_offset;
2502       return;
2503     }
2504
2505   /* If the section has relocations, we must read it ourselves.
2506      Otherwise we attach it to the BFD.  */
2507   if ((sectp->flags & SEC_RELOC) == 0)
2508     {
2509       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2510       return;
2511     }
2512
2513   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2514   info->buffer = buf;
2515
2516   /* When debugging .o files, we may need to apply relocations; see
2517      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2518      We never compress sections in .o files, so we only need to
2519      try this when the section is not compressed.  */
2520   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2521   if (retbuf != NULL)
2522     {
2523       info->buffer = retbuf;
2524       return;
2525     }
2526
2527   abfd = get_section_bfd_owner (info);
2528   gdb_assert (abfd != NULL);
2529
2530   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2531       || bfd_bread (buf, info->size, abfd) != info->size)
2532     {
2533       error (_("Dwarf Error: Can't read DWARF data"
2534                " in section %s [in module %s]"),
2535              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2536     }
2537 }
2538
2539 /* A helper function that returns the size of a section in a safe way.
2540    If you are positive that the section has been read before using the
2541    size, then it is safe to refer to the dwarf2_section_info object's
2542    "size" field directly.  In other cases, you must call this
2543    function, because for compressed sections the size field is not set
2544    correctly until the section has been read.  */
2545
2546 static bfd_size_type
2547 dwarf2_section_size (struct objfile *objfile,
2548                      struct dwarf2_section_info *info)
2549 {
2550   if (!info->readin)
2551     dwarf2_read_section (objfile, info);
2552   return info->size;
2553 }
2554
2555 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2556    SECTION_NAME.  */
2557
2558 void
2559 dwarf2_get_section_info (struct objfile *objfile,
2560                          enum dwarf2_section_enum sect,
2561                          asection **sectp, const gdb_byte **bufp,
2562                          bfd_size_type *sizep)
2563 {
2564   struct dwarf2_per_objfile *data
2565     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2566                                                   dwarf2_objfile_data_key);
2567   struct dwarf2_section_info *info;
2568
2569   /* We may see an objfile without any DWARF, in which case we just
2570      return nothing.  */
2571   if (data == NULL)
2572     {
2573       *sectp = NULL;
2574       *bufp = NULL;
2575       *sizep = 0;
2576       return;
2577     }
2578   switch (sect)
2579     {
2580     case DWARF2_DEBUG_FRAME:
2581       info = &data->frame;
2582       break;
2583     case DWARF2_EH_FRAME:
2584       info = &data->eh_frame;
2585       break;
2586     default:
2587       gdb_assert_not_reached ("unexpected section");
2588     }
2589
2590   dwarf2_read_section (objfile, info);
2591
2592   *sectp = get_section_bfd_section (info);
2593   *bufp = info->buffer;
2594   *sizep = info->size;
2595 }
2596
2597 /* A helper function to find the sections for a .dwz file.  */
2598
2599 static void
2600 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2601 {
2602   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2603
2604   /* Note that we only support the standard ELF names, because .dwz
2605      is ELF-only (at the time of writing).  */
2606   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2607     {
2608       dwz_file->abbrev.s.section = sectp;
2609       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2610     }
2611   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2612     {
2613       dwz_file->info.s.section = sectp;
2614       dwz_file->info.size = bfd_get_section_size (sectp);
2615     }
2616   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2617     {
2618       dwz_file->str.s.section = sectp;
2619       dwz_file->str.size = bfd_get_section_size (sectp);
2620     }
2621   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2622     {
2623       dwz_file->line.s.section = sectp;
2624       dwz_file->line.size = bfd_get_section_size (sectp);
2625     }
2626   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2627     {
2628       dwz_file->macro.s.section = sectp;
2629       dwz_file->macro.size = bfd_get_section_size (sectp);
2630     }
2631   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2632     {
2633       dwz_file->gdb_index.s.section = sectp;
2634       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2635     }
2636   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2637     {
2638       dwz_file->debug_names.s.section = sectp;
2639       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2640     }
2641 }
2642
2643 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2644    there is no .gnu_debugaltlink section in the file.  Error if there
2645    is such a section but the file cannot be found.  */
2646
2647 static struct dwz_file *
2648 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2649 {
2650   const char *filename;
2651   bfd_size_type buildid_len_arg;
2652   size_t buildid_len;
2653   bfd_byte *buildid;
2654
2655   if (dwarf2_per_objfile->dwz_file != NULL)
2656     return dwarf2_per_objfile->dwz_file.get ();
2657
2658   bfd_set_error (bfd_error_no_error);
2659   gdb::unique_xmalloc_ptr<char> data
2660     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2661                                   &buildid_len_arg, &buildid));
2662   if (data == NULL)
2663     {
2664       if (bfd_get_error () == bfd_error_no_error)
2665         return NULL;
2666       error (_("could not read '.gnu_debugaltlink' section: %s"),
2667              bfd_errmsg (bfd_get_error ()));
2668     }
2669
2670   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2671
2672   buildid_len = (size_t) buildid_len_arg;
2673
2674   filename = data.get ();
2675
2676   std::string abs_storage;
2677   if (!IS_ABSOLUTE_PATH (filename))
2678     {
2679       gdb::unique_xmalloc_ptr<char> abs
2680         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2681
2682       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2683       filename = abs_storage.c_str ();
2684     }
2685
2686   /* First try the file name given in the section.  If that doesn't
2687      work, try to use the build-id instead.  */
2688   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2689   if (dwz_bfd != NULL)
2690     {
2691       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2692         dwz_bfd.release ();
2693     }
2694
2695   if (dwz_bfd == NULL)
2696     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2697
2698   if (dwz_bfd == NULL)
2699     error (_("could not find '.gnu_debugaltlink' file for %s"),
2700            objfile_name (dwarf2_per_objfile->objfile));
2701
2702   std::unique_ptr<struct dwz_file> result
2703     (new struct dwz_file (std::move (dwz_bfd)));
2704
2705   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2706                          result.get ());
2707
2708   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2709                             result->dwz_bfd.get ());
2710   dwarf2_per_objfile->dwz_file = std::move (result);
2711   return dwarf2_per_objfile->dwz_file.get ();
2712 }
2713 \f
2714 /* DWARF quick_symbols_functions support.  */
2715
2716 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2717    unique line tables, so we maintain a separate table of all .debug_line
2718    derived entries to support the sharing.
2719    All the quick functions need is the list of file names.  We discard the
2720    line_header when we're done and don't need to record it here.  */
2721 struct quick_file_names
2722 {
2723   /* The data used to construct the hash key.  */
2724   struct stmt_list_hash hash;
2725
2726   /* The number of entries in file_names, real_names.  */
2727   unsigned int num_file_names;
2728
2729   /* The file names from the line table, after being run through
2730      file_full_name.  */
2731   const char **file_names;
2732
2733   /* The file names from the line table after being run through
2734      gdb_realpath.  These are computed lazily.  */
2735   const char **real_names;
2736 };
2737
2738 /* When using the index (and thus not using psymtabs), each CU has an
2739    object of this type.  This is used to hold information needed by
2740    the various "quick" methods.  */
2741 struct dwarf2_per_cu_quick_data
2742 {
2743   /* The file table.  This can be NULL if there was no file table
2744      or it's currently not read in.
2745      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2746   struct quick_file_names *file_names;
2747
2748   /* The corresponding symbol table.  This is NULL if symbols for this
2749      CU have not yet been read.  */
2750   struct compunit_symtab *compunit_symtab;
2751
2752   /* A temporary mark bit used when iterating over all CUs in
2753      expand_symtabs_matching.  */
2754   unsigned int mark : 1;
2755
2756   /* True if we've tried to read the file table and found there isn't one.
2757      There will be no point in trying to read it again next time.  */
2758   unsigned int no_file_data : 1;
2759 };
2760
2761 /* Utility hash function for a stmt_list_hash.  */
2762
2763 static hashval_t
2764 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2765 {
2766   hashval_t v = 0;
2767
2768   if (stmt_list_hash->dwo_unit != NULL)
2769     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2770   v += to_underlying (stmt_list_hash->line_sect_off);
2771   return v;
2772 }
2773
2774 /* Utility equality function for a stmt_list_hash.  */
2775
2776 static int
2777 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2778                     const struct stmt_list_hash *rhs)
2779 {
2780   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2781     return 0;
2782   if (lhs->dwo_unit != NULL
2783       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2784     return 0;
2785
2786   return lhs->line_sect_off == rhs->line_sect_off;
2787 }
2788
2789 /* Hash function for a quick_file_names.  */
2790
2791 static hashval_t
2792 hash_file_name_entry (const void *e)
2793 {
2794   const struct quick_file_names *file_data
2795     = (const struct quick_file_names *) e;
2796
2797   return hash_stmt_list_entry (&file_data->hash);
2798 }
2799
2800 /* Equality function for a quick_file_names.  */
2801
2802 static int
2803 eq_file_name_entry (const void *a, const void *b)
2804 {
2805   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2806   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2807
2808   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2809 }
2810
2811 /* Delete function for a quick_file_names.  */
2812
2813 static void
2814 delete_file_name_entry (void *e)
2815 {
2816   struct quick_file_names *file_data = (struct quick_file_names *) e;
2817   int i;
2818
2819   for (i = 0; i < file_data->num_file_names; ++i)
2820     {
2821       xfree ((void*) file_data->file_names[i]);
2822       if (file_data->real_names)
2823         xfree ((void*) file_data->real_names[i]);
2824     }
2825
2826   /* The space for the struct itself lives on objfile_obstack,
2827      so we don't free it here.  */
2828 }
2829
2830 /* Create a quick_file_names hash table.  */
2831
2832 static htab_t
2833 create_quick_file_names_table (unsigned int nr_initial_entries)
2834 {
2835   return htab_create_alloc (nr_initial_entries,
2836                             hash_file_name_entry, eq_file_name_entry,
2837                             delete_file_name_entry, xcalloc, xfree);
2838 }
2839
2840 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2841    have to be created afterwards.  You should call age_cached_comp_units after
2842    processing PER_CU->CU.  dw2_setup must have been already called.  */
2843
2844 static void
2845 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2846 {
2847   if (per_cu->is_debug_types)
2848     load_full_type_unit (per_cu);
2849   else
2850     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2851
2852   if (per_cu->cu == NULL)
2853     return;  /* Dummy CU.  */
2854
2855   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2856 }
2857
2858 /* Read in the symbols for PER_CU.  */
2859
2860 static void
2861 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2862 {
2863   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2864
2865   /* Skip type_unit_groups, reading the type units they contain
2866      is handled elsewhere.  */
2867   if (IS_TYPE_UNIT_GROUP (per_cu))
2868     return;
2869
2870   /* The destructor of dwarf2_queue_guard frees any entries left on
2871      the queue.  After this point we're guaranteed to leave this function
2872      with the dwarf queue empty.  */
2873   dwarf2_queue_guard q_guard;
2874
2875   if (dwarf2_per_objfile->using_index
2876       ? per_cu->v.quick->compunit_symtab == NULL
2877       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2878     {
2879       queue_comp_unit (per_cu, language_minimal);
2880       load_cu (per_cu, skip_partial);
2881
2882       /* If we just loaded a CU from a DWO, and we're working with an index
2883          that may badly handle TUs, load all the TUs in that DWO as well.
2884          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2885       if (!per_cu->is_debug_types
2886           && per_cu->cu != NULL
2887           && per_cu->cu->dwo_unit != NULL
2888           && dwarf2_per_objfile->index_table != NULL
2889           && dwarf2_per_objfile->index_table->version <= 7
2890           /* DWP files aren't supported yet.  */
2891           && get_dwp_file (dwarf2_per_objfile) == NULL)
2892         queue_and_load_all_dwo_tus (per_cu);
2893     }
2894
2895   process_queue (dwarf2_per_objfile);
2896
2897   /* Age the cache, releasing compilation units that have not
2898      been used recently.  */
2899   age_cached_comp_units (dwarf2_per_objfile);
2900 }
2901
2902 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2903    the objfile from which this CU came.  Returns the resulting symbol
2904    table.  */
2905
2906 static struct compunit_symtab *
2907 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2908 {
2909   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2910
2911   gdb_assert (dwarf2_per_objfile->using_index);
2912   if (!per_cu->v.quick->compunit_symtab)
2913     {
2914       free_cached_comp_units freer (dwarf2_per_objfile);
2915       scoped_restore decrementer = increment_reading_symtab ();
2916       dw2_do_instantiate_symtab (per_cu, skip_partial);
2917       process_cu_includes (dwarf2_per_objfile);
2918     }
2919
2920   return per_cu->v.quick->compunit_symtab;
2921 }
2922
2923 /* See declaration.  */
2924
2925 dwarf2_per_cu_data *
2926 dwarf2_per_objfile::get_cutu (int index)
2927 {
2928   if (index >= this->all_comp_units.size ())
2929     {
2930       index -= this->all_comp_units.size ();
2931       gdb_assert (index < this->all_type_units.size ());
2932       return &this->all_type_units[index]->per_cu;
2933     }
2934
2935   return this->all_comp_units[index];
2936 }
2937
2938 /* See declaration.  */
2939
2940 dwarf2_per_cu_data *
2941 dwarf2_per_objfile::get_cu (int index)
2942 {
2943   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2944
2945   return this->all_comp_units[index];
2946 }
2947
2948 /* See declaration.  */
2949
2950 signatured_type *
2951 dwarf2_per_objfile::get_tu (int index)
2952 {
2953   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2954
2955   return this->all_type_units[index];
2956 }
2957
2958 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2959    objfile_obstack, and constructed with the specified field
2960    values.  */
2961
2962 static dwarf2_per_cu_data *
2963 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2964                           struct dwarf2_section_info *section,
2965                           int is_dwz,
2966                           sect_offset sect_off, ULONGEST length)
2967 {
2968   struct objfile *objfile = dwarf2_per_objfile->objfile;
2969   dwarf2_per_cu_data *the_cu
2970     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2971                      struct dwarf2_per_cu_data);
2972   the_cu->sect_off = sect_off;
2973   the_cu->length = length;
2974   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2975   the_cu->section = section;
2976   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2977                                    struct dwarf2_per_cu_quick_data);
2978   the_cu->is_dwz = is_dwz;
2979   return the_cu;
2980 }
2981
2982 /* A helper for create_cus_from_index that handles a given list of
2983    CUs.  */
2984
2985 static void
2986 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2987                             const gdb_byte *cu_list, offset_type n_elements,
2988                             struct dwarf2_section_info *section,
2989                             int is_dwz)
2990 {
2991   for (offset_type i = 0; i < n_elements; i += 2)
2992     {
2993       gdb_static_assert (sizeof (ULONGEST) >= 8);
2994
2995       sect_offset sect_off
2996         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2997       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2998       cu_list += 2 * 8;
2999
3000       dwarf2_per_cu_data *per_cu
3001         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3002                                      sect_off, length);
3003       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3004     }
3005 }
3006
3007 /* Read the CU list from the mapped index, and use it to create all
3008    the CU objects for this objfile.  */
3009
3010 static void
3011 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3012                        const gdb_byte *cu_list, offset_type cu_list_elements,
3013                        const gdb_byte *dwz_list, offset_type dwz_elements)
3014 {
3015   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3016   dwarf2_per_objfile->all_comp_units.reserve
3017     ((cu_list_elements + dwz_elements) / 2);
3018
3019   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3020                               &dwarf2_per_objfile->info, 0);
3021
3022   if (dwz_elements == 0)
3023     return;
3024
3025   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3026   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3027                               &dwz->info, 1);
3028 }
3029
3030 /* Create the signatured type hash table from the index.  */
3031
3032 static void
3033 create_signatured_type_table_from_index
3034   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3035    struct dwarf2_section_info *section,
3036    const gdb_byte *bytes,
3037    offset_type elements)
3038 {
3039   struct objfile *objfile = dwarf2_per_objfile->objfile;
3040
3041   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3042   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3043
3044   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3045
3046   for (offset_type i = 0; i < elements; i += 3)
3047     {
3048       struct signatured_type *sig_type;
3049       ULONGEST signature;
3050       void **slot;
3051       cu_offset type_offset_in_tu;
3052
3053       gdb_static_assert (sizeof (ULONGEST) >= 8);
3054       sect_offset sect_off
3055         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3056       type_offset_in_tu
3057         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3058                                                 BFD_ENDIAN_LITTLE);
3059       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3060       bytes += 3 * 8;
3061
3062       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3063                                  struct signatured_type);
3064       sig_type->signature = signature;
3065       sig_type->type_offset_in_tu = type_offset_in_tu;
3066       sig_type->per_cu.is_debug_types = 1;
3067       sig_type->per_cu.section = section;
3068       sig_type->per_cu.sect_off = sect_off;
3069       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3070       sig_type->per_cu.v.quick
3071         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3072                           struct dwarf2_per_cu_quick_data);
3073
3074       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3075       *slot = sig_type;
3076
3077       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3078     }
3079
3080   dwarf2_per_objfile->signatured_types = sig_types_hash;
3081 }
3082
3083 /* Create the signatured type hash table from .debug_names.  */
3084
3085 static void
3086 create_signatured_type_table_from_debug_names
3087   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3088    const mapped_debug_names &map,
3089    struct dwarf2_section_info *section,
3090    struct dwarf2_section_info *abbrev_section)
3091 {
3092   struct objfile *objfile = dwarf2_per_objfile->objfile;
3093
3094   dwarf2_read_section (objfile, section);
3095   dwarf2_read_section (objfile, abbrev_section);
3096
3097   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3098   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3099
3100   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3101
3102   for (uint32_t i = 0; i < map.tu_count; ++i)
3103     {
3104       struct signatured_type *sig_type;
3105       void **slot;
3106
3107       sect_offset sect_off
3108         = (sect_offset) (extract_unsigned_integer
3109                          (map.tu_table_reordered + i * map.offset_size,
3110                           map.offset_size,
3111                           map.dwarf5_byte_order));
3112
3113       comp_unit_head cu_header;
3114       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3115                                      abbrev_section,
3116                                      section->buffer + to_underlying (sect_off),
3117                                      rcuh_kind::TYPE);
3118
3119       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3120                                  struct signatured_type);
3121       sig_type->signature = cu_header.signature;
3122       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3123       sig_type->per_cu.is_debug_types = 1;
3124       sig_type->per_cu.section = section;
3125       sig_type->per_cu.sect_off = sect_off;
3126       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3127       sig_type->per_cu.v.quick
3128         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3129                           struct dwarf2_per_cu_quick_data);
3130
3131       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3132       *slot = sig_type;
3133
3134       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3135     }
3136
3137   dwarf2_per_objfile->signatured_types = sig_types_hash;
3138 }
3139
3140 /* Read the address map data from the mapped index, and use it to
3141    populate the objfile's psymtabs_addrmap.  */
3142
3143 static void
3144 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3145                            struct mapped_index *index)
3146 {
3147   struct objfile *objfile = dwarf2_per_objfile->objfile;
3148   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3149   const gdb_byte *iter, *end;
3150   struct addrmap *mutable_map;
3151   CORE_ADDR baseaddr;
3152
3153   auto_obstack temp_obstack;
3154
3155   mutable_map = addrmap_create_mutable (&temp_obstack);
3156
3157   iter = index->address_table.data ();
3158   end = iter + index->address_table.size ();
3159
3160   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3161
3162   while (iter < end)
3163     {
3164       ULONGEST hi, lo, cu_index;
3165       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3166       iter += 8;
3167       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3168       iter += 8;
3169       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3170       iter += 4;
3171
3172       if (lo > hi)
3173         {
3174           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3175                      hex_string (lo), hex_string (hi));
3176           continue;
3177         }
3178
3179       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3180         {
3181           complaint (_(".gdb_index address table has invalid CU number %u"),
3182                      (unsigned) cu_index);
3183           continue;
3184         }
3185
3186       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3187       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3188       addrmap_set_empty (mutable_map, lo, hi - 1,
3189                          dwarf2_per_objfile->get_cu (cu_index));
3190     }
3191
3192   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3193                                                     &objfile->objfile_obstack);
3194 }
3195
3196 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3197    populate the objfile's psymtabs_addrmap.  */
3198
3199 static void
3200 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3201                              struct dwarf2_section_info *section)
3202 {
3203   struct objfile *objfile = dwarf2_per_objfile->objfile;
3204   bfd *abfd = objfile->obfd;
3205   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3206   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3207                                        SECT_OFF_TEXT (objfile));
3208
3209   auto_obstack temp_obstack;
3210   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3211
3212   std::unordered_map<sect_offset,
3213                      dwarf2_per_cu_data *,
3214                      gdb::hash_enum<sect_offset>>
3215     debug_info_offset_to_per_cu;
3216   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3217     {
3218       const auto insertpair
3219         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3220       if (!insertpair.second)
3221         {
3222           warning (_("Section .debug_aranges in %s has duplicate "
3223                      "debug_info_offset %s, ignoring .debug_aranges."),
3224                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3225           return;
3226         }
3227     }
3228
3229   dwarf2_read_section (objfile, section);
3230
3231   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3232
3233   const gdb_byte *addr = section->buffer;
3234
3235   while (addr < section->buffer + section->size)
3236     {
3237       const gdb_byte *const entry_addr = addr;
3238       unsigned int bytes_read;
3239
3240       const LONGEST entry_length = read_initial_length (abfd, addr,
3241                                                         &bytes_read);
3242       addr += bytes_read;
3243
3244       const gdb_byte *const entry_end = addr + entry_length;
3245       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3246       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3247       if (addr + entry_length > section->buffer + section->size)
3248         {
3249           warning (_("Section .debug_aranges in %s entry at offset %zu "
3250                      "length %s exceeds section length %s, "
3251                      "ignoring .debug_aranges."),
3252                    objfile_name (objfile), entry_addr - section->buffer,
3253                    plongest (bytes_read + entry_length),
3254                    pulongest (section->size));
3255           return;
3256         }
3257
3258       /* The version number.  */
3259       const uint16_t version = read_2_bytes (abfd, addr);
3260       addr += 2;
3261       if (version != 2)
3262         {
3263           warning (_("Section .debug_aranges in %s entry at offset %zu "
3264                      "has unsupported version %d, ignoring .debug_aranges."),
3265                    objfile_name (objfile), entry_addr - section->buffer,
3266                    version);
3267           return;
3268         }
3269
3270       const uint64_t debug_info_offset
3271         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3272       addr += offset_size;
3273       const auto per_cu_it
3274         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3275       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3276         {
3277           warning (_("Section .debug_aranges in %s entry at offset %zu "
3278                      "debug_info_offset %s does not exists, "
3279                      "ignoring .debug_aranges."),
3280                    objfile_name (objfile), entry_addr - section->buffer,
3281                    pulongest (debug_info_offset));
3282           return;
3283         }
3284       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3285
3286       const uint8_t address_size = *addr++;
3287       if (address_size < 1 || address_size > 8)
3288         {
3289           warning (_("Section .debug_aranges in %s entry at offset %zu "
3290                      "address_size %u is invalid, ignoring .debug_aranges."),
3291                    objfile_name (objfile), entry_addr - section->buffer,
3292                    address_size);
3293           return;
3294         }
3295
3296       const uint8_t segment_selector_size = *addr++;
3297       if (segment_selector_size != 0)
3298         {
3299           warning (_("Section .debug_aranges in %s entry at offset %zu "
3300                      "segment_selector_size %u is not supported, "
3301                      "ignoring .debug_aranges."),
3302                    objfile_name (objfile), entry_addr - section->buffer,
3303                    segment_selector_size);
3304           return;
3305         }
3306
3307       /* Must pad to an alignment boundary that is twice the address
3308          size.  It is undocumented by the DWARF standard but GCC does
3309          use it.  */
3310       for (size_t padding = ((-(addr - section->buffer))
3311                              & (2 * address_size - 1));
3312            padding > 0; padding--)
3313         if (*addr++ != 0)
3314           {
3315             warning (_("Section .debug_aranges in %s entry at offset %zu "
3316                        "padding is not zero, ignoring .debug_aranges."),
3317                      objfile_name (objfile), entry_addr - section->buffer);
3318             return;
3319           }
3320
3321       for (;;)
3322         {
3323           if (addr + 2 * address_size > entry_end)
3324             {
3325               warning (_("Section .debug_aranges in %s entry at offset %zu "
3326                          "address list is not properly terminated, "
3327                          "ignoring .debug_aranges."),
3328                        objfile_name (objfile), entry_addr - section->buffer);
3329               return;
3330             }
3331           ULONGEST start = extract_unsigned_integer (addr, address_size,
3332                                                      dwarf5_byte_order);
3333           addr += address_size;
3334           ULONGEST length = extract_unsigned_integer (addr, address_size,
3335                                                       dwarf5_byte_order);
3336           addr += address_size;
3337           if (start == 0 && length == 0)
3338             break;
3339           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3340             {
3341               /* Symbol was eliminated due to a COMDAT group.  */
3342               continue;
3343             }
3344           ULONGEST end = start + length;
3345           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3346                    - baseaddr);
3347           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3348                  - baseaddr);
3349           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3350         }
3351     }
3352
3353   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3354                                                     &objfile->objfile_obstack);
3355 }
3356
3357 /* Find a slot in the mapped index INDEX for the object named NAME.
3358    If NAME is found, set *VEC_OUT to point to the CU vector in the
3359    constant pool and return true.  If NAME cannot be found, return
3360    false.  */
3361
3362 static bool
3363 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3364                           offset_type **vec_out)
3365 {
3366   offset_type hash;
3367   offset_type slot, step;
3368   int (*cmp) (const char *, const char *);
3369
3370   gdb::unique_xmalloc_ptr<char> without_params;
3371   if (current_language->la_language == language_cplus
3372       || current_language->la_language == language_fortran
3373       || current_language->la_language == language_d)
3374     {
3375       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3376          not contain any.  */
3377
3378       if (strchr (name, '(') != NULL)
3379         {
3380           without_params = cp_remove_params (name);
3381
3382           if (without_params != NULL)
3383             name = without_params.get ();
3384         }
3385     }
3386
3387   /* Index version 4 did not support case insensitive searches.  But the
3388      indices for case insensitive languages are built in lowercase, therefore
3389      simulate our NAME being searched is also lowercased.  */
3390   hash = mapped_index_string_hash ((index->version == 4
3391                                     && case_sensitivity == case_sensitive_off
3392                                     ? 5 : index->version),
3393                                    name);
3394
3395   slot = hash & (index->symbol_table.size () - 1);
3396   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3397   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3398
3399   for (;;)
3400     {
3401       const char *str;
3402
3403       const auto &bucket = index->symbol_table[slot];
3404       if (bucket.name == 0 && bucket.vec == 0)
3405         return false;
3406
3407       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3408       if (!cmp (name, str))
3409         {
3410           *vec_out = (offset_type *) (index->constant_pool
3411                                       + MAYBE_SWAP (bucket.vec));
3412           return true;
3413         }
3414
3415       slot = (slot + step) & (index->symbol_table.size () - 1);
3416     }
3417 }
3418
3419 /* A helper function that reads the .gdb_index from BUFFER and fills
3420    in MAP.  FILENAME is the name of the file containing the data;
3421    it is used for error reporting.  DEPRECATED_OK is true if it is
3422    ok to use deprecated sections.
3423
3424    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3425    out parameters that are filled in with information about the CU and
3426    TU lists in the section.
3427
3428    Returns true if all went well, false otherwise.  */
3429
3430 static bool
3431 read_gdb_index_from_buffer (struct objfile *objfile,
3432                             const char *filename,
3433                             bool deprecated_ok,
3434                             gdb::array_view<const gdb_byte> buffer,
3435                             struct mapped_index *map,
3436                             const gdb_byte **cu_list,
3437                             offset_type *cu_list_elements,
3438                             const gdb_byte **types_list,
3439                             offset_type *types_list_elements)
3440 {
3441   const gdb_byte *addr = &buffer[0];
3442
3443   /* Version check.  */
3444   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3445   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3446      causes the index to behave very poorly for certain requests.  Version 3
3447      contained incomplete addrmap.  So, it seems better to just ignore such
3448      indices.  */
3449   if (version < 4)
3450     {
3451       static int warning_printed = 0;
3452       if (!warning_printed)
3453         {
3454           warning (_("Skipping obsolete .gdb_index section in %s."),
3455                    filename);
3456           warning_printed = 1;
3457         }
3458       return 0;
3459     }
3460   /* Index version 4 uses a different hash function than index version
3461      5 and later.
3462
3463      Versions earlier than 6 did not emit psymbols for inlined
3464      functions.  Using these files will cause GDB not to be able to
3465      set breakpoints on inlined functions by name, so we ignore these
3466      indices unless the user has done
3467      "set use-deprecated-index-sections on".  */
3468   if (version < 6 && !deprecated_ok)
3469     {
3470       static int warning_printed = 0;
3471       if (!warning_printed)
3472         {
3473           warning (_("\
3474 Skipping deprecated .gdb_index section in %s.\n\
3475 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3476 to use the section anyway."),
3477                    filename);
3478           warning_printed = 1;
3479         }
3480       return 0;
3481     }
3482   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3483      of the TU (for symbols coming from TUs),
3484      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3485      Plus gold-generated indices can have duplicate entries for global symbols,
3486      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3487      These are just performance bugs, and we can't distinguish gdb-generated
3488      indices from gold-generated ones, so issue no warning here.  */
3489
3490   /* Indexes with higher version than the one supported by GDB may be no
3491      longer backward compatible.  */
3492   if (version > 8)
3493     return 0;
3494
3495   map->version = version;
3496
3497   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3498
3499   int i = 0;
3500   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3501   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3502                        / 8);
3503   ++i;
3504
3505   *types_list = addr + MAYBE_SWAP (metadata[i]);
3506   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3507                            - MAYBE_SWAP (metadata[i]))
3508                           / 8);
3509   ++i;
3510
3511   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3512   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3513   map->address_table
3514     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3515   ++i;
3516
3517   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3518   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3519   map->symbol_table
3520     = gdb::array_view<mapped_index::symbol_table_slot>
3521        ((mapped_index::symbol_table_slot *) symbol_table,
3522         (mapped_index::symbol_table_slot *) symbol_table_end);
3523
3524   ++i;
3525   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3526
3527   return 1;
3528 }
3529
3530 /* Callback types for dwarf2_read_gdb_index.  */
3531
3532 typedef gdb::function_view
3533     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3534     get_gdb_index_contents_ftype;
3535 typedef gdb::function_view
3536     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3537     get_gdb_index_contents_dwz_ftype;
3538
3539 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3540    elements of all the CUs and return 1.  Otherwise, return 0.  */
3541
3542 static int
3543 dwarf2_read_gdb_index
3544   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3545    get_gdb_index_contents_ftype get_gdb_index_contents,
3546    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3547 {
3548   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3549   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3550   struct dwz_file *dwz;
3551   struct objfile *objfile = dwarf2_per_objfile->objfile;
3552
3553   gdb::array_view<const gdb_byte> main_index_contents
3554     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3555
3556   if (main_index_contents.empty ())
3557     return 0;
3558
3559   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3560   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3561                                    use_deprecated_index_sections,
3562                                    main_index_contents, map.get (), &cu_list,
3563                                    &cu_list_elements, &types_list,
3564                                    &types_list_elements))
3565     return 0;
3566
3567   /* Don't use the index if it's empty.  */
3568   if (map->symbol_table.empty ())
3569     return 0;
3570
3571   /* If there is a .dwz file, read it so we can get its CU list as
3572      well.  */
3573   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3574   if (dwz != NULL)
3575     {
3576       struct mapped_index dwz_map;
3577       const gdb_byte *dwz_types_ignore;
3578       offset_type dwz_types_elements_ignore;
3579
3580       gdb::array_view<const gdb_byte> dwz_index_content
3581         = get_gdb_index_contents_dwz (objfile, dwz);
3582
3583       if (dwz_index_content.empty ())
3584         return 0;
3585
3586       if (!read_gdb_index_from_buffer (objfile,
3587                                        bfd_get_filename (dwz->dwz_bfd), 1,
3588                                        dwz_index_content, &dwz_map,
3589                                        &dwz_list, &dwz_list_elements,
3590                                        &dwz_types_ignore,
3591                                        &dwz_types_elements_ignore))
3592         {
3593           warning (_("could not read '.gdb_index' section from %s; skipping"),
3594                    bfd_get_filename (dwz->dwz_bfd));
3595           return 0;
3596         }
3597     }
3598
3599   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3600                          dwz_list, dwz_list_elements);
3601
3602   if (types_list_elements)
3603     {
3604       struct dwarf2_section_info *section;
3605
3606       /* We can only handle a single .debug_types when we have an
3607          index.  */
3608       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3609         return 0;
3610
3611       section = VEC_index (dwarf2_section_info_def,
3612                            dwarf2_per_objfile->types, 0);
3613
3614       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3615                                                types_list, types_list_elements);
3616     }
3617
3618   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3619
3620   dwarf2_per_objfile->index_table = std::move (map);
3621   dwarf2_per_objfile->using_index = 1;
3622   dwarf2_per_objfile->quick_file_names_table =
3623     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3624
3625   return 1;
3626 }
3627
3628 /* die_reader_func for dw2_get_file_names.  */
3629
3630 static void
3631 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3632                            const gdb_byte *info_ptr,
3633                            struct die_info *comp_unit_die,
3634                            int has_children,
3635                            void *data)
3636 {
3637   struct dwarf2_cu *cu = reader->cu;
3638   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3639   struct dwarf2_per_objfile *dwarf2_per_objfile
3640     = cu->per_cu->dwarf2_per_objfile;
3641   struct objfile *objfile = dwarf2_per_objfile->objfile;
3642   struct dwarf2_per_cu_data *lh_cu;
3643   struct attribute *attr;
3644   int i;
3645   void **slot;
3646   struct quick_file_names *qfn;
3647
3648   gdb_assert (! this_cu->is_debug_types);
3649
3650   /* Our callers never want to match partial units -- instead they
3651      will match the enclosing full CU.  */
3652   if (comp_unit_die->tag == DW_TAG_partial_unit)
3653     {
3654       this_cu->v.quick->no_file_data = 1;
3655       return;
3656     }
3657
3658   lh_cu = this_cu;
3659   slot = NULL;
3660
3661   line_header_up lh;
3662   sect_offset line_offset {};
3663
3664   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3665   if (attr)
3666     {
3667       struct quick_file_names find_entry;
3668
3669       line_offset = (sect_offset) DW_UNSND (attr);
3670
3671       /* We may have already read in this line header (TU line header sharing).
3672          If we have we're done.  */
3673       find_entry.hash.dwo_unit = cu->dwo_unit;
3674       find_entry.hash.line_sect_off = line_offset;
3675       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3676                              &find_entry, INSERT);
3677       if (*slot != NULL)
3678         {
3679           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3680           return;
3681         }
3682
3683       lh = dwarf_decode_line_header (line_offset, cu);
3684     }
3685   if (lh == NULL)
3686     {
3687       lh_cu->v.quick->no_file_data = 1;
3688       return;
3689     }
3690
3691   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3692   qfn->hash.dwo_unit = cu->dwo_unit;
3693   qfn->hash.line_sect_off = line_offset;
3694   gdb_assert (slot != NULL);
3695   *slot = qfn;
3696
3697   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3698
3699   qfn->num_file_names = lh->file_names.size ();
3700   qfn->file_names =
3701     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3702   for (i = 0; i < lh->file_names.size (); ++i)
3703     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3704   qfn->real_names = NULL;
3705
3706   lh_cu->v.quick->file_names = qfn;
3707 }
3708
3709 /* A helper for the "quick" functions which attempts to read the line
3710    table for THIS_CU.  */
3711
3712 static struct quick_file_names *
3713 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3714 {
3715   /* This should never be called for TUs.  */
3716   gdb_assert (! this_cu->is_debug_types);
3717   /* Nor type unit groups.  */
3718   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3719
3720   if (this_cu->v.quick->file_names != NULL)
3721     return this_cu->v.quick->file_names;
3722   /* If we know there is no line data, no point in looking again.  */
3723   if (this_cu->v.quick->no_file_data)
3724     return NULL;
3725
3726   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3727
3728   if (this_cu->v.quick->no_file_data)
3729     return NULL;
3730   return this_cu->v.quick->file_names;
3731 }
3732
3733 /* A helper for the "quick" functions which computes and caches the
3734    real path for a given file name from the line table.  */
3735
3736 static const char *
3737 dw2_get_real_path (struct objfile *objfile,
3738                    struct quick_file_names *qfn, int index)
3739 {
3740   if (qfn->real_names == NULL)
3741     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3742                                       qfn->num_file_names, const char *);
3743
3744   if (qfn->real_names[index] == NULL)
3745     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3746
3747   return qfn->real_names[index];
3748 }
3749
3750 static struct symtab *
3751 dw2_find_last_source_symtab (struct objfile *objfile)
3752 {
3753   struct dwarf2_per_objfile *dwarf2_per_objfile
3754     = get_dwarf2_per_objfile (objfile);
3755   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3756   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3757
3758   if (cust == NULL)
3759     return NULL;
3760
3761   return compunit_primary_filetab (cust);
3762 }
3763
3764 /* Traversal function for dw2_forget_cached_source_info.  */
3765
3766 static int
3767 dw2_free_cached_file_names (void **slot, void *info)
3768 {
3769   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3770
3771   if (file_data->real_names)
3772     {
3773       int i;
3774
3775       for (i = 0; i < file_data->num_file_names; ++i)
3776         {
3777           xfree ((void*) file_data->real_names[i]);
3778           file_data->real_names[i] = NULL;
3779         }
3780     }
3781
3782   return 1;
3783 }
3784
3785 static void
3786 dw2_forget_cached_source_info (struct objfile *objfile)
3787 {
3788   struct dwarf2_per_objfile *dwarf2_per_objfile
3789     = get_dwarf2_per_objfile (objfile);
3790
3791   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3792                           dw2_free_cached_file_names, NULL);
3793 }
3794
3795 /* Helper function for dw2_map_symtabs_matching_filename that expands
3796    the symtabs and calls the iterator.  */
3797
3798 static int
3799 dw2_map_expand_apply (struct objfile *objfile,
3800                       struct dwarf2_per_cu_data *per_cu,
3801                       const char *name, const char *real_path,
3802                       gdb::function_view<bool (symtab *)> callback)
3803 {
3804   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3805
3806   /* Don't visit already-expanded CUs.  */
3807   if (per_cu->v.quick->compunit_symtab)
3808     return 0;
3809
3810   /* This may expand more than one symtab, and we want to iterate over
3811      all of them.  */
3812   dw2_instantiate_symtab (per_cu, false);
3813
3814   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3815                                     last_made, callback);
3816 }
3817
3818 /* Implementation of the map_symtabs_matching_filename method.  */
3819
3820 static bool
3821 dw2_map_symtabs_matching_filename
3822   (struct objfile *objfile, const char *name, const char *real_path,
3823    gdb::function_view<bool (symtab *)> callback)
3824 {
3825   const char *name_basename = lbasename (name);
3826   struct dwarf2_per_objfile *dwarf2_per_objfile
3827     = get_dwarf2_per_objfile (objfile);
3828
3829   /* The rule is CUs specify all the files, including those used by
3830      any TU, so there's no need to scan TUs here.  */
3831
3832   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3833     {
3834       /* We only need to look at symtabs not already expanded.  */
3835       if (per_cu->v.quick->compunit_symtab)
3836         continue;
3837
3838       quick_file_names *file_data = dw2_get_file_names (per_cu);
3839       if (file_data == NULL)
3840         continue;
3841
3842       for (int j = 0; j < file_data->num_file_names; ++j)
3843         {
3844           const char *this_name = file_data->file_names[j];
3845           const char *this_real_name;
3846
3847           if (compare_filenames_for_search (this_name, name))
3848             {
3849               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3850                                         callback))
3851                 return true;
3852               continue;
3853             }
3854
3855           /* Before we invoke realpath, which can get expensive when many
3856              files are involved, do a quick comparison of the basenames.  */
3857           if (! basenames_may_differ
3858               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3859             continue;
3860
3861           this_real_name = dw2_get_real_path (objfile, file_data, j);
3862           if (compare_filenames_for_search (this_real_name, name))
3863             {
3864               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3865                                         callback))
3866                 return true;
3867               continue;
3868             }
3869
3870           if (real_path != NULL)
3871             {
3872               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3873               gdb_assert (IS_ABSOLUTE_PATH (name));
3874               if (this_real_name != NULL
3875                   && FILENAME_CMP (real_path, this_real_name) == 0)
3876                 {
3877                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3878                                             callback))
3879                     return true;
3880                   continue;
3881                 }
3882             }
3883         }
3884     }
3885
3886   return false;
3887 }
3888
3889 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3890
3891 struct dw2_symtab_iterator
3892 {
3893   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3894   struct dwarf2_per_objfile *dwarf2_per_objfile;
3895   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3896   int want_specific_block;
3897   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3898      Unused if !WANT_SPECIFIC_BLOCK.  */
3899   int block_index;
3900   /* The kind of symbol we're looking for.  */
3901   domain_enum domain;
3902   /* The list of CUs from the index entry of the symbol,
3903      or NULL if not found.  */
3904   offset_type *vec;
3905   /* The next element in VEC to look at.  */
3906   int next;
3907   /* The number of elements in VEC, or zero if there is no match.  */
3908   int length;
3909   /* Have we seen a global version of the symbol?
3910      If so we can ignore all further global instances.
3911      This is to work around gold/15646, inefficient gold-generated
3912      indices.  */
3913   int global_seen;
3914 };
3915
3916 /* Initialize the index symtab iterator ITER.
3917    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3918    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3919
3920 static void
3921 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3922                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3923                       int want_specific_block,
3924                       int block_index,
3925                       domain_enum domain,
3926                       const char *name)
3927 {
3928   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3929   iter->want_specific_block = want_specific_block;
3930   iter->block_index = block_index;
3931   iter->domain = domain;
3932   iter->next = 0;
3933   iter->global_seen = 0;
3934
3935   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3936
3937   /* index is NULL if OBJF_READNOW.  */
3938   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3939     iter->length = MAYBE_SWAP (*iter->vec);
3940   else
3941     {
3942       iter->vec = NULL;
3943       iter->length = 0;
3944     }
3945 }
3946
3947 /* Return the next matching CU or NULL if there are no more.  */
3948
3949 static struct dwarf2_per_cu_data *
3950 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3951 {
3952   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3953
3954   for ( ; iter->next < iter->length; ++iter->next)
3955     {
3956       offset_type cu_index_and_attrs =
3957         MAYBE_SWAP (iter->vec[iter->next + 1]);
3958       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3959       int want_static = iter->block_index != GLOBAL_BLOCK;
3960       /* This value is only valid for index versions >= 7.  */
3961       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3962       gdb_index_symbol_kind symbol_kind =
3963         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3964       /* Only check the symbol attributes if they're present.
3965          Indices prior to version 7 don't record them,
3966          and indices >= 7 may elide them for certain symbols
3967          (gold does this).  */
3968       int attrs_valid =
3969         (dwarf2_per_objfile->index_table->version >= 7
3970          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3971
3972       /* Don't crash on bad data.  */
3973       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3974                        + dwarf2_per_objfile->all_type_units.size ()))
3975         {
3976           complaint (_(".gdb_index entry has bad CU index"
3977                        " [in module %s]"),
3978                      objfile_name (dwarf2_per_objfile->objfile));
3979           continue;
3980         }
3981
3982       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3983
3984       /* Skip if already read in.  */
3985       if (per_cu->v.quick->compunit_symtab)
3986         continue;
3987
3988       /* Check static vs global.  */
3989       if (attrs_valid)
3990         {
3991           if (iter->want_specific_block
3992               && want_static != is_static)
3993             continue;
3994           /* Work around gold/15646.  */
3995           if (!is_static && iter->global_seen)
3996             continue;
3997           if (!is_static)
3998             iter->global_seen = 1;
3999         }
4000
4001       /* Only check the symbol's kind if it has one.  */
4002       if (attrs_valid)
4003         {
4004           switch (iter->domain)
4005             {
4006             case VAR_DOMAIN:
4007               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4008                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4009                   /* Some types are also in VAR_DOMAIN.  */
4010                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4011                 continue;
4012               break;
4013             case STRUCT_DOMAIN:
4014               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4015                 continue;
4016               break;
4017             case LABEL_DOMAIN:
4018               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4019                 continue;
4020               break;
4021             default:
4022               break;
4023             }
4024         }
4025
4026       ++iter->next;
4027       return per_cu;
4028     }
4029
4030   return NULL;
4031 }
4032
4033 static struct compunit_symtab *
4034 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4035                    const char *name, domain_enum domain)
4036 {
4037   struct compunit_symtab *stab_best = NULL;
4038   struct dwarf2_per_objfile *dwarf2_per_objfile
4039     = get_dwarf2_per_objfile (objfile);
4040
4041   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4042
4043   struct dw2_symtab_iterator iter;
4044   struct dwarf2_per_cu_data *per_cu;
4045
4046   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4047
4048   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4049     {
4050       struct symbol *sym, *with_opaque = NULL;
4051       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4052       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4053       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4054
4055       sym = block_find_symbol (block, name, domain,
4056                                block_find_non_opaque_type_preferred,
4057                                &with_opaque);
4058
4059       /* Some caution must be observed with overloaded functions
4060          and methods, since the index will not contain any overload
4061          information (but NAME might contain it).  */
4062
4063       if (sym != NULL
4064           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4065         return stab;
4066       if (with_opaque != NULL
4067           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4068         stab_best = stab;
4069
4070       /* Keep looking through other CUs.  */
4071     }
4072
4073   return stab_best;
4074 }
4075
4076 static void
4077 dw2_print_stats (struct objfile *objfile)
4078 {
4079   struct dwarf2_per_objfile *dwarf2_per_objfile
4080     = get_dwarf2_per_objfile (objfile);
4081   int total = (dwarf2_per_objfile->all_comp_units.size ()
4082                + dwarf2_per_objfile->all_type_units.size ());
4083   int count = 0;
4084
4085   for (int i = 0; i < total; ++i)
4086     {
4087       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4088
4089       if (!per_cu->v.quick->compunit_symtab)
4090         ++count;
4091     }
4092   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4093   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4094 }
4095
4096 /* This dumps minimal information about the index.
4097    It is called via "mt print objfiles".
4098    One use is to verify .gdb_index has been loaded by the
4099    gdb.dwarf2/gdb-index.exp testcase.  */
4100
4101 static void
4102 dw2_dump (struct objfile *objfile)
4103 {
4104   struct dwarf2_per_objfile *dwarf2_per_objfile
4105     = get_dwarf2_per_objfile (objfile);
4106
4107   gdb_assert (dwarf2_per_objfile->using_index);
4108   printf_filtered (".gdb_index:");
4109   if (dwarf2_per_objfile->index_table != NULL)
4110     {
4111       printf_filtered (" version %d\n",
4112                        dwarf2_per_objfile->index_table->version);
4113     }
4114   else
4115     printf_filtered (" faked for \"readnow\"\n");
4116   printf_filtered ("\n");
4117 }
4118
4119 static void
4120 dw2_expand_symtabs_for_function (struct objfile *objfile,
4121                                  const char *func_name)
4122 {
4123   struct dwarf2_per_objfile *dwarf2_per_objfile
4124     = get_dwarf2_per_objfile (objfile);
4125
4126   struct dw2_symtab_iterator iter;
4127   struct dwarf2_per_cu_data *per_cu;
4128
4129   /* Note: It doesn't matter what we pass for block_index here.  */
4130   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4131                         func_name);
4132
4133   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4134     dw2_instantiate_symtab (per_cu, false);
4135
4136 }
4137
4138 static void
4139 dw2_expand_all_symtabs (struct objfile *objfile)
4140 {
4141   struct dwarf2_per_objfile *dwarf2_per_objfile
4142     = get_dwarf2_per_objfile (objfile);
4143   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4144                      + dwarf2_per_objfile->all_type_units.size ());
4145
4146   for (int i = 0; i < total_units; ++i)
4147     {
4148       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4149
4150       /* We don't want to directly expand a partial CU, because if we
4151          read it with the wrong language, then assertion failures can
4152          be triggered later on.  See PR symtab/23010.  So, tell
4153          dw2_instantiate_symtab to skip partial CUs -- any important
4154          partial CU will be read via DW_TAG_imported_unit anyway.  */
4155       dw2_instantiate_symtab (per_cu, true);
4156     }
4157 }
4158
4159 static void
4160 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4161                                   const char *fullname)
4162 {
4163   struct dwarf2_per_objfile *dwarf2_per_objfile
4164     = get_dwarf2_per_objfile (objfile);
4165
4166   /* We don't need to consider type units here.
4167      This is only called for examining code, e.g. expand_line_sal.
4168      There can be an order of magnitude (or more) more type units
4169      than comp units, and we avoid them if we can.  */
4170
4171   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4172     {
4173       /* We only need to look at symtabs not already expanded.  */
4174       if (per_cu->v.quick->compunit_symtab)
4175         continue;
4176
4177       quick_file_names *file_data = dw2_get_file_names (per_cu);
4178       if (file_data == NULL)
4179         continue;
4180
4181       for (int j = 0; j < file_data->num_file_names; ++j)
4182         {
4183           const char *this_fullname = file_data->file_names[j];
4184
4185           if (filename_cmp (this_fullname, fullname) == 0)
4186             {
4187               dw2_instantiate_symtab (per_cu, false);
4188               break;
4189             }
4190         }
4191     }
4192 }
4193
4194 static void
4195 dw2_map_matching_symbols (struct objfile *objfile,
4196                           const char * name, domain_enum domain,
4197                           int global,
4198                           int (*callback) (struct block *,
4199                                            struct symbol *, void *),
4200                           void *data, symbol_name_match_type match,
4201                           symbol_compare_ftype *ordered_compare)
4202 {
4203   /* Currently unimplemented; used for Ada.  The function can be called if the
4204      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4205      does not look for non-Ada symbols this function should just return.  */
4206 }
4207
4208 /* Symbol name matcher for .gdb_index names.
4209
4210    Symbol names in .gdb_index have a few particularities:
4211
4212    - There's no indication of which is the language of each symbol.
4213
4214      Since each language has its own symbol name matching algorithm,
4215      and we don't know which language is the right one, we must match
4216      each symbol against all languages.  This would be a potential
4217      performance problem if it were not mitigated by the
4218      mapped_index::name_components lookup table, which significantly
4219      reduces the number of times we need to call into this matcher,
4220      making it a non-issue.
4221
4222    - Symbol names in the index have no overload (parameter)
4223      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4224      appear as "foo" in the index, for example.
4225
4226      This means that the lookup names passed to the symbol name
4227      matcher functions must have no parameter information either
4228      because (e.g.) symbol search name "foo" does not match
4229      lookup-name "foo(int)" [while swapping search name for lookup
4230      name would match].
4231 */
4232 class gdb_index_symbol_name_matcher
4233 {
4234 public:
4235   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4236   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4237
4238   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4239      Returns true if any matcher matches.  */
4240   bool matches (const char *symbol_name);
4241
4242 private:
4243   /* A reference to the lookup name we're matching against.  */
4244   const lookup_name_info &m_lookup_name;
4245
4246   /* A vector holding all the different symbol name matchers, for all
4247      languages.  */
4248   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4249 };
4250
4251 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4252   (const lookup_name_info &lookup_name)
4253     : m_lookup_name (lookup_name)
4254 {
4255   /* Prepare the vector of comparison functions upfront, to avoid
4256      doing the same work for each symbol.  Care is taken to avoid
4257      matching with the same matcher more than once if/when multiple
4258      languages use the same matcher function.  */
4259   auto &matchers = m_symbol_name_matcher_funcs;
4260   matchers.reserve (nr_languages);
4261
4262   matchers.push_back (default_symbol_name_matcher);
4263
4264   for (int i = 0; i < nr_languages; i++)
4265     {
4266       const language_defn *lang = language_def ((enum language) i);
4267       symbol_name_matcher_ftype *name_matcher
4268         = get_symbol_name_matcher (lang, m_lookup_name);
4269
4270       /* Don't insert the same comparison routine more than once.
4271          Note that we do this linear walk instead of a seemingly
4272          cheaper sorted insert, or use a std::set or something like
4273          that, because relative order of function addresses is not
4274          stable.  This is not a problem in practice because the number
4275          of supported languages is low, and the cost here is tiny
4276          compared to the number of searches we'll do afterwards using
4277          this object.  */
4278       if (name_matcher != default_symbol_name_matcher
4279           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4280               == matchers.end ()))
4281         matchers.push_back (name_matcher);
4282     }
4283 }
4284
4285 bool
4286 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4287 {
4288   for (auto matches_name : m_symbol_name_matcher_funcs)
4289     if (matches_name (symbol_name, m_lookup_name, NULL))
4290       return true;
4291
4292   return false;
4293 }
4294
4295 /* Starting from a search name, return the string that finds the upper
4296    bound of all strings that start with SEARCH_NAME in a sorted name
4297    list.  Returns the empty string to indicate that the upper bound is
4298    the end of the list.  */
4299
4300 static std::string
4301 make_sort_after_prefix_name (const char *search_name)
4302 {
4303   /* When looking to complete "func", we find the upper bound of all
4304      symbols that start with "func" by looking for where we'd insert
4305      the closest string that would follow "func" in lexicographical
4306      order.  Usually, that's "func"-with-last-character-incremented,
4307      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4308      will be UTF-8 multi-byte sequences, but we can't be certain.
4309      Especially mind the 0xff character, which is a valid character in
4310      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4311      rule out compilers allowing it in identifiers.  Note that
4312      conveniently, strcmp/strcasecmp are specified to compare
4313      characters interpreted as unsigned char.  So what we do is treat
4314      the whole string as a base 256 number composed of a sequence of
4315      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4316      to 0, and carries 1 to the following more-significant position.
4317      If the very first character in SEARCH_NAME ends up incremented
4318      and carries/overflows, then the upper bound is the end of the
4319      list.  The string after the empty string is also the empty
4320      string.
4321
4322      Some examples of this operation:
4323
4324        SEARCH_NAME  => "+1" RESULT
4325
4326        "abc"              => "abd"
4327        "ab\xff"           => "ac"
4328        "\xff" "a" "\xff"  => "\xff" "b"
4329        "\xff"             => ""
4330        "\xff\xff"         => ""
4331        ""                 => ""
4332
4333      Then, with these symbols for example:
4334
4335       func
4336       func1
4337       fund
4338
4339      completing "func" looks for symbols between "func" and
4340      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4341      which finds "func" and "func1", but not "fund".
4342
4343      And with:
4344
4345       funcÿ     (Latin1 'ÿ' [0xff])
4346       funcÿ1
4347       fund
4348
4349      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4350      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4351
4352      And with:
4353
4354       ÿÿ        (Latin1 'ÿ' [0xff])
4355       ÿÿ1
4356
4357      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4358      the end of the list.
4359   */
4360   std::string after = search_name;
4361   while (!after.empty () && (unsigned char) after.back () == 0xff)
4362     after.pop_back ();
4363   if (!after.empty ())
4364     after.back () = (unsigned char) after.back () + 1;
4365   return after;
4366 }
4367
4368 /* See declaration.  */
4369
4370 std::pair<std::vector<name_component>::const_iterator,
4371           std::vector<name_component>::const_iterator>
4372 mapped_index_base::find_name_components_bounds
4373   (const lookup_name_info &lookup_name_without_params) const
4374 {
4375   auto *name_cmp
4376     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4377
4378   const char *cplus
4379     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4380
4381   /* Comparison function object for lower_bound that matches against a
4382      given symbol name.  */
4383   auto lookup_compare_lower = [&] (const name_component &elem,
4384                                    const char *name)
4385     {
4386       const char *elem_qualified = this->symbol_name_at (elem.idx);
4387       const char *elem_name = elem_qualified + elem.name_offset;
4388       return name_cmp (elem_name, name) < 0;
4389     };
4390
4391   /* Comparison function object for upper_bound that matches against a
4392      given symbol name.  */
4393   auto lookup_compare_upper = [&] (const char *name,
4394                                    const name_component &elem)
4395     {
4396       const char *elem_qualified = this->symbol_name_at (elem.idx);
4397       const char *elem_name = elem_qualified + elem.name_offset;
4398       return name_cmp (name, elem_name) < 0;
4399     };
4400
4401   auto begin = this->name_components.begin ();
4402   auto end = this->name_components.end ();
4403
4404   /* Find the lower bound.  */
4405   auto lower = [&] ()
4406     {
4407       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4408         return begin;
4409       else
4410         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4411     } ();
4412
4413   /* Find the upper bound.  */
4414   auto upper = [&] ()
4415     {
4416       if (lookup_name_without_params.completion_mode ())
4417         {
4418           /* In completion mode, we want UPPER to point past all
4419              symbols names that have the same prefix.  I.e., with
4420              these symbols, and completing "func":
4421
4422               function        << lower bound
4423               function1
4424               other_function  << upper bound
4425
4426              We find the upper bound by looking for the insertion
4427              point of "func"-with-last-character-incremented,
4428              i.e. "fund".  */
4429           std::string after = make_sort_after_prefix_name (cplus);
4430           if (after.empty ())
4431             return end;
4432           return std::lower_bound (lower, end, after.c_str (),
4433                                    lookup_compare_lower);
4434         }
4435       else
4436         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4437     } ();
4438
4439   return {lower, upper};
4440 }
4441
4442 /* See declaration.  */
4443
4444 void
4445 mapped_index_base::build_name_components ()
4446 {
4447   if (!this->name_components.empty ())
4448     return;
4449
4450   this->name_components_casing = case_sensitivity;
4451   auto *name_cmp
4452     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4453
4454   /* The code below only knows how to break apart components of C++
4455      symbol names (and other languages that use '::' as
4456      namespace/module separator).  If we add support for wild matching
4457      to some language that uses some other operator (E.g., Ada, Go and
4458      D use '.'), then we'll need to try splitting the symbol name
4459      according to that language too.  Note that Ada does support wild
4460      matching, but doesn't currently support .gdb_index.  */
4461   auto count = this->symbol_name_count ();
4462   for (offset_type idx = 0; idx < count; idx++)
4463     {
4464       if (this->symbol_name_slot_invalid (idx))
4465         continue;
4466
4467       const char *name = this->symbol_name_at (idx);
4468
4469       /* Add each name component to the name component table.  */
4470       unsigned int previous_len = 0;
4471       for (unsigned int current_len = cp_find_first_component (name);
4472            name[current_len] != '\0';
4473            current_len += cp_find_first_component (name + current_len))
4474         {
4475           gdb_assert (name[current_len] == ':');
4476           this->name_components.push_back ({previous_len, idx});
4477           /* Skip the '::'.  */
4478           current_len += 2;
4479           previous_len = current_len;
4480         }
4481       this->name_components.push_back ({previous_len, idx});
4482     }
4483
4484   /* Sort name_components elements by name.  */
4485   auto name_comp_compare = [&] (const name_component &left,
4486                                 const name_component &right)
4487     {
4488       const char *left_qualified = this->symbol_name_at (left.idx);
4489       const char *right_qualified = this->symbol_name_at (right.idx);
4490
4491       const char *left_name = left_qualified + left.name_offset;
4492       const char *right_name = right_qualified + right.name_offset;
4493
4494       return name_cmp (left_name, right_name) < 0;
4495     };
4496
4497   std::sort (this->name_components.begin (),
4498              this->name_components.end (),
4499              name_comp_compare);
4500 }
4501
4502 /* Helper for dw2_expand_symtabs_matching that works with a
4503    mapped_index_base instead of the containing objfile.  This is split
4504    to a separate function in order to be able to unit test the
4505    name_components matching using a mock mapped_index_base.  For each
4506    symbol name that matches, calls MATCH_CALLBACK, passing it the
4507    symbol's index in the mapped_index_base symbol table.  */
4508
4509 static void
4510 dw2_expand_symtabs_matching_symbol
4511   (mapped_index_base &index,
4512    const lookup_name_info &lookup_name_in,
4513    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4514    enum search_domain kind,
4515    gdb::function_view<void (offset_type)> match_callback)
4516 {
4517   lookup_name_info lookup_name_without_params
4518     = lookup_name_in.make_ignore_params ();
4519   gdb_index_symbol_name_matcher lookup_name_matcher
4520     (lookup_name_without_params);
4521
4522   /* Build the symbol name component sorted vector, if we haven't
4523      yet.  */
4524   index.build_name_components ();
4525
4526   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4527
4528   /* Now for each symbol name in range, check to see if we have a name
4529      match, and if so, call the MATCH_CALLBACK callback.  */
4530
4531   /* The same symbol may appear more than once in the range though.
4532      E.g., if we're looking for symbols that complete "w", and we have
4533      a symbol named "w1::w2", we'll find the two name components for
4534      that same symbol in the range.  To be sure we only call the
4535      callback once per symbol, we first collect the symbol name
4536      indexes that matched in a temporary vector and ignore
4537      duplicates.  */
4538   std::vector<offset_type> matches;
4539   matches.reserve (std::distance (bounds.first, bounds.second));
4540
4541   for (; bounds.first != bounds.second; ++bounds.first)
4542     {
4543       const char *qualified = index.symbol_name_at (bounds.first->idx);
4544
4545       if (!lookup_name_matcher.matches (qualified)
4546           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4547         continue;
4548
4549       matches.push_back (bounds.first->idx);
4550     }
4551
4552   std::sort (matches.begin (), matches.end ());
4553
4554   /* Finally call the callback, once per match.  */
4555   ULONGEST prev = -1;
4556   for (offset_type idx : matches)
4557     {
4558       if (prev != idx)
4559         {
4560           match_callback (idx);
4561           prev = idx;
4562         }
4563     }
4564
4565   /* Above we use a type wider than idx's for 'prev', since 0 and
4566      (offset_type)-1 are both possible values.  */
4567   static_assert (sizeof (prev) > sizeof (offset_type), "");
4568 }
4569
4570 #if GDB_SELF_TEST
4571
4572 namespace selftests { namespace dw2_expand_symtabs_matching {
4573
4574 /* A mock .gdb_index/.debug_names-like name index table, enough to
4575    exercise dw2_expand_symtabs_matching_symbol, which works with the
4576    mapped_index_base interface.  Builds an index from the symbol list
4577    passed as parameter to the constructor.  */
4578 class mock_mapped_index : public mapped_index_base
4579 {
4580 public:
4581   mock_mapped_index (gdb::array_view<const char *> symbols)
4582     : m_symbol_table (symbols)
4583   {}
4584
4585   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4586
4587   /* Return the number of names in the symbol table.  */
4588   size_t symbol_name_count () const override
4589   {
4590     return m_symbol_table.size ();
4591   }
4592
4593   /* Get the name of the symbol at IDX in the symbol table.  */
4594   const char *symbol_name_at (offset_type idx) const override
4595   {
4596     return m_symbol_table[idx];
4597   }
4598
4599 private:
4600   gdb::array_view<const char *> m_symbol_table;
4601 };
4602
4603 /* Convenience function that converts a NULL pointer to a "<null>"
4604    string, to pass to print routines.  */
4605
4606 static const char *
4607 string_or_null (const char *str)
4608 {
4609   return str != NULL ? str : "<null>";
4610 }
4611
4612 /* Check if a lookup_name_info built from
4613    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4614    index.  EXPECTED_LIST is the list of expected matches, in expected
4615    matching order.  If no match expected, then an empty list is
4616    specified.  Returns true on success.  On failure prints a warning
4617    indicating the file:line that failed, and returns false.  */
4618
4619 static bool
4620 check_match (const char *file, int line,
4621              mock_mapped_index &mock_index,
4622              const char *name, symbol_name_match_type match_type,
4623              bool completion_mode,
4624              std::initializer_list<const char *> expected_list)
4625 {
4626   lookup_name_info lookup_name (name, match_type, completion_mode);
4627
4628   bool matched = true;
4629
4630   auto mismatch = [&] (const char *expected_str,
4631                        const char *got)
4632   {
4633     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4634                "expected=\"%s\", got=\"%s\"\n"),
4635              file, line,
4636              (match_type == symbol_name_match_type::FULL
4637               ? "FULL" : "WILD"),
4638              name, string_or_null (expected_str), string_or_null (got));
4639     matched = false;
4640   };
4641
4642   auto expected_it = expected_list.begin ();
4643   auto expected_end = expected_list.end ();
4644
4645   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4646                                       NULL, ALL_DOMAIN,
4647                                       [&] (offset_type idx)
4648   {
4649     const char *matched_name = mock_index.symbol_name_at (idx);
4650     const char *expected_str
4651       = expected_it == expected_end ? NULL : *expected_it++;
4652
4653     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4654       mismatch (expected_str, matched_name);
4655   });
4656
4657   const char *expected_str
4658   = expected_it == expected_end ? NULL : *expected_it++;
4659   if (expected_str != NULL)
4660     mismatch (expected_str, NULL);
4661
4662   return matched;
4663 }
4664
4665 /* The symbols added to the mock mapped_index for testing (in
4666    canonical form).  */
4667 static const char *test_symbols[] = {
4668   "function",
4669   "std::bar",
4670   "std::zfunction",
4671   "std::zfunction2",
4672   "w1::w2",
4673   "ns::foo<char*>",
4674   "ns::foo<int>",
4675   "ns::foo<long>",
4676   "ns2::tmpl<int>::foo2",
4677   "(anonymous namespace)::A::B::C",
4678
4679   /* These are used to check that the increment-last-char in the
4680      matching algorithm for completion doesn't match "t1_fund" when
4681      completing "t1_func".  */
4682   "t1_func",
4683   "t1_func1",
4684   "t1_fund",
4685   "t1_fund1",
4686
4687   /* A UTF-8 name with multi-byte sequences to make sure that
4688      cp-name-parser understands this as a single identifier ("função"
4689      is "function" in PT).  */
4690   u8"u8função",
4691
4692   /* \377 (0xff) is Latin1 'ÿ'.  */
4693   "yfunc\377",
4694
4695   /* \377 (0xff) is Latin1 'ÿ'.  */
4696   "\377",
4697   "\377\377123",
4698
4699   /* A name with all sorts of complications.  Starts with "z" to make
4700      it easier for the completion tests below.  */
4701 #define Z_SYM_NAME \
4702   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4703     "::tuple<(anonymous namespace)::ui*, " \
4704     "std::default_delete<(anonymous namespace)::ui>, void>"
4705
4706   Z_SYM_NAME
4707 };
4708
4709 /* Returns true if the mapped_index_base::find_name_component_bounds
4710    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4711    in completion mode.  */
4712
4713 static bool
4714 check_find_bounds_finds (mapped_index_base &index,
4715                          const char *search_name,
4716                          gdb::array_view<const char *> expected_syms)
4717 {
4718   lookup_name_info lookup_name (search_name,
4719                                 symbol_name_match_type::FULL, true);
4720
4721   auto bounds = index.find_name_components_bounds (lookup_name);
4722
4723   size_t distance = std::distance (bounds.first, bounds.second);
4724   if (distance != expected_syms.size ())
4725     return false;
4726
4727   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4728     {
4729       auto nc_elem = bounds.first + exp_elem;
4730       const char *qualified = index.symbol_name_at (nc_elem->idx);
4731       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4732         return false;
4733     }
4734
4735   return true;
4736 }
4737
4738 /* Test the lower-level mapped_index::find_name_component_bounds
4739    method.  */
4740
4741 static void
4742 test_mapped_index_find_name_component_bounds ()
4743 {
4744   mock_mapped_index mock_index (test_symbols);
4745
4746   mock_index.build_name_components ();
4747
4748   /* Test the lower-level mapped_index::find_name_component_bounds
4749      method in completion mode.  */
4750   {
4751     static const char *expected_syms[] = {
4752       "t1_func",
4753       "t1_func1",
4754     };
4755
4756     SELF_CHECK (check_find_bounds_finds (mock_index,
4757                                          "t1_func", expected_syms));
4758   }
4759
4760   /* Check that the increment-last-char in the name matching algorithm
4761      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4762   {
4763     static const char *expected_syms1[] = {
4764       "\377",
4765       "\377\377123",
4766     };
4767     SELF_CHECK (check_find_bounds_finds (mock_index,
4768                                          "\377", expected_syms1));
4769
4770     static const char *expected_syms2[] = {
4771       "\377\377123",
4772     };
4773     SELF_CHECK (check_find_bounds_finds (mock_index,
4774                                          "\377\377", expected_syms2));
4775   }
4776 }
4777
4778 /* Test dw2_expand_symtabs_matching_symbol.  */
4779
4780 static void
4781 test_dw2_expand_symtabs_matching_symbol ()
4782 {
4783   mock_mapped_index mock_index (test_symbols);
4784
4785   /* We let all tests run until the end even if some fails, for debug
4786      convenience.  */
4787   bool any_mismatch = false;
4788
4789   /* Create the expected symbols list (an initializer_list).  Needed
4790      because lists have commas, and we need to pass them to CHECK,
4791      which is a macro.  */
4792 #define EXPECT(...) { __VA_ARGS__ }
4793
4794   /* Wrapper for check_match that passes down the current
4795      __FILE__/__LINE__.  */
4796 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4797   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4798                                 mock_index,                             \
4799                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4800                                 EXPECTED_LIST)
4801
4802   /* Identity checks.  */
4803   for (const char *sym : test_symbols)
4804     {
4805       /* Should be able to match all existing symbols.  */
4806       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4807                    EXPECT (sym));
4808
4809       /* Should be able to match all existing symbols with
4810          parameters.  */
4811       std::string with_params = std::string (sym) + "(int)";
4812       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4813                    EXPECT (sym));
4814
4815       /* Should be able to match all existing symbols with
4816          parameters and qualifiers.  */
4817       with_params = std::string (sym) + " ( int ) const";
4818       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4819                    EXPECT (sym));
4820
4821       /* This should really find sym, but cp-name-parser.y doesn't
4822          know about lvalue/rvalue qualifiers yet.  */
4823       with_params = std::string (sym) + " ( int ) &&";
4824       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4825                    {});
4826     }
4827
4828   /* Check that the name matching algorithm for completion doesn't get
4829      confused with Latin1 'ÿ' / 0xff.  */
4830   {
4831     static const char str[] = "\377";
4832     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4833                  EXPECT ("\377", "\377\377123"));
4834   }
4835
4836   /* Check that the increment-last-char in the matching algorithm for
4837      completion doesn't match "t1_fund" when completing "t1_func".  */
4838   {
4839     static const char str[] = "t1_func";
4840     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4841                  EXPECT ("t1_func", "t1_func1"));
4842   }
4843
4844   /* Check that completion mode works at each prefix of the expected
4845      symbol name.  */
4846   {
4847     static const char str[] = "function(int)";
4848     size_t len = strlen (str);
4849     std::string lookup;
4850
4851     for (size_t i = 1; i < len; i++)
4852       {
4853         lookup.assign (str, i);
4854         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4855                      EXPECT ("function"));
4856       }
4857   }
4858
4859   /* While "w" is a prefix of both components, the match function
4860      should still only be called once.  */
4861   {
4862     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4863                  EXPECT ("w1::w2"));
4864     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4865                  EXPECT ("w1::w2"));
4866   }
4867
4868   /* Same, with a "complicated" symbol.  */
4869   {
4870     static const char str[] = Z_SYM_NAME;
4871     size_t len = strlen (str);
4872     std::string lookup;
4873
4874     for (size_t i = 1; i < len; i++)
4875       {
4876         lookup.assign (str, i);
4877         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4878                      EXPECT (Z_SYM_NAME));
4879       }
4880   }
4881
4882   /* In FULL mode, an incomplete symbol doesn't match.  */
4883   {
4884     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4885                  {});
4886   }
4887
4888   /* A complete symbol with parameters matches any overload, since the
4889      index has no overload info.  */
4890   {
4891     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4892                  EXPECT ("std::zfunction", "std::zfunction2"));
4893     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4894                  EXPECT ("std::zfunction", "std::zfunction2"));
4895     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4896                  EXPECT ("std::zfunction", "std::zfunction2"));
4897   }
4898
4899   /* Check that whitespace is ignored appropriately.  A symbol with a
4900      template argument list. */
4901   {
4902     static const char expected[] = "ns::foo<int>";
4903     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4904                  EXPECT (expected));
4905     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4906                  EXPECT (expected));
4907   }
4908
4909   /* Check that whitespace is ignored appropriately.  A symbol with a
4910      template argument list that includes a pointer.  */
4911   {
4912     static const char expected[] = "ns::foo<char*>";
4913     /* Try both completion and non-completion modes.  */
4914     static const bool completion_mode[2] = {false, true};
4915     for (size_t i = 0; i < 2; i++)
4916       {
4917         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4918                      completion_mode[i], EXPECT (expected));
4919         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4920                      completion_mode[i], EXPECT (expected));
4921
4922         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4923                      completion_mode[i], EXPECT (expected));
4924         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4925                      completion_mode[i], EXPECT (expected));
4926       }
4927   }
4928
4929   {
4930     /* Check method qualifiers are ignored.  */
4931     static const char expected[] = "ns::foo<char*>";
4932     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4933                  symbol_name_match_type::FULL, true, EXPECT (expected));
4934     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4935                  symbol_name_match_type::FULL, true, EXPECT (expected));
4936     CHECK_MATCH ("foo < char * >  ( int ) const",
4937                  symbol_name_match_type::WILD, true, EXPECT (expected));
4938     CHECK_MATCH ("foo < char * >  ( int ) &&",
4939                  symbol_name_match_type::WILD, true, EXPECT (expected));
4940   }
4941
4942   /* Test lookup names that don't match anything.  */
4943   {
4944     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4945                  {});
4946
4947     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4948                  {});
4949   }
4950
4951   /* Some wild matching tests, exercising "(anonymous namespace)",
4952      which should not be confused with a parameter list.  */
4953   {
4954     static const char *syms[] = {
4955       "A::B::C",
4956       "B::C",
4957       "C",
4958       "A :: B :: C ( int )",
4959       "B :: C ( int )",
4960       "C ( int )",
4961     };
4962
4963     for (const char *s : syms)
4964       {
4965         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4966                      EXPECT ("(anonymous namespace)::A::B::C"));
4967       }
4968   }
4969
4970   {
4971     static const char expected[] = "ns2::tmpl<int>::foo2";
4972     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4973                  EXPECT (expected));
4974     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4975                  EXPECT (expected));
4976   }
4977
4978   SELF_CHECK (!any_mismatch);
4979
4980 #undef EXPECT
4981 #undef CHECK_MATCH
4982 }
4983
4984 static void
4985 run_test ()
4986 {
4987   test_mapped_index_find_name_component_bounds ();
4988   test_dw2_expand_symtabs_matching_symbol ();
4989 }
4990
4991 }} // namespace selftests::dw2_expand_symtabs_matching
4992
4993 #endif /* GDB_SELF_TEST */
4994
4995 /* If FILE_MATCHER is NULL or if PER_CU has
4996    dwarf2_per_cu_quick_data::MARK set (see
4997    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4998    EXPANSION_NOTIFY on it.  */
4999
5000 static void
5001 dw2_expand_symtabs_matching_one
5002   (struct dwarf2_per_cu_data *per_cu,
5003    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5004    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5005 {
5006   if (file_matcher == NULL || per_cu->v.quick->mark)
5007     {
5008       bool symtab_was_null
5009         = (per_cu->v.quick->compunit_symtab == NULL);
5010
5011       dw2_instantiate_symtab (per_cu, false);
5012
5013       if (expansion_notify != NULL
5014           && symtab_was_null
5015           && per_cu->v.quick->compunit_symtab != NULL)
5016         expansion_notify (per_cu->v.quick->compunit_symtab);
5017     }
5018 }
5019
5020 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5021    matched, to expand corresponding CUs that were marked.  IDX is the
5022    index of the symbol name that matched.  */
5023
5024 static void
5025 dw2_expand_marked_cus
5026   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5027    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5028    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5029    search_domain kind)
5030 {
5031   offset_type *vec, vec_len, vec_idx;
5032   bool global_seen = false;
5033   mapped_index &index = *dwarf2_per_objfile->index_table;
5034
5035   vec = (offset_type *) (index.constant_pool
5036                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5037   vec_len = MAYBE_SWAP (vec[0]);
5038   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5039     {
5040       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5041       /* This value is only valid for index versions >= 7.  */
5042       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5043       gdb_index_symbol_kind symbol_kind =
5044         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5045       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5046       /* Only check the symbol attributes if they're present.
5047          Indices prior to version 7 don't record them,
5048          and indices >= 7 may elide them for certain symbols
5049          (gold does this).  */
5050       int attrs_valid =
5051         (index.version >= 7
5052          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5053
5054       /* Work around gold/15646.  */
5055       if (attrs_valid)
5056         {
5057           if (!is_static && global_seen)
5058             continue;
5059           if (!is_static)
5060             global_seen = true;
5061         }
5062
5063       /* Only check the symbol's kind if it has one.  */
5064       if (attrs_valid)
5065         {
5066           switch (kind)
5067             {
5068             case VARIABLES_DOMAIN:
5069               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5070                 continue;
5071               break;
5072             case FUNCTIONS_DOMAIN:
5073               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5074                 continue;
5075               break;
5076             case TYPES_DOMAIN:
5077               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5078                 continue;
5079               break;
5080             default:
5081               break;
5082             }
5083         }
5084
5085       /* Don't crash on bad data.  */
5086       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5087                        + dwarf2_per_objfile->all_type_units.size ()))
5088         {
5089           complaint (_(".gdb_index entry has bad CU index"
5090                        " [in module %s]"),
5091                        objfile_name (dwarf2_per_objfile->objfile));
5092           continue;
5093         }
5094
5095       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5096       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5097                                        expansion_notify);
5098     }
5099 }
5100
5101 /* If FILE_MATCHER is non-NULL, set all the
5102    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5103    that match FILE_MATCHER.  */
5104
5105 static void
5106 dw_expand_symtabs_matching_file_matcher
5107   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5108    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5109 {
5110   if (file_matcher == NULL)
5111     return;
5112
5113   objfile *const objfile = dwarf2_per_objfile->objfile;
5114
5115   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5116                                             htab_eq_pointer,
5117                                             NULL, xcalloc, xfree));
5118   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5119                                                 htab_eq_pointer,
5120                                                 NULL, xcalloc, xfree));
5121
5122   /* The rule is CUs specify all the files, including those used by
5123      any TU, so there's no need to scan TUs here.  */
5124
5125   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5126     {
5127       QUIT;
5128
5129       per_cu->v.quick->mark = 0;
5130
5131       /* We only need to look at symtabs not already expanded.  */
5132       if (per_cu->v.quick->compunit_symtab)
5133         continue;
5134
5135       quick_file_names *file_data = dw2_get_file_names (per_cu);
5136       if (file_data == NULL)
5137         continue;
5138
5139       if (htab_find (visited_not_found.get (), file_data) != NULL)
5140         continue;
5141       else if (htab_find (visited_found.get (), file_data) != NULL)
5142         {
5143           per_cu->v.quick->mark = 1;
5144           continue;
5145         }
5146
5147       for (int j = 0; j < file_data->num_file_names; ++j)
5148         {
5149           const char *this_real_name;
5150
5151           if (file_matcher (file_data->file_names[j], false))
5152             {
5153               per_cu->v.quick->mark = 1;
5154               break;
5155             }
5156
5157           /* Before we invoke realpath, which can get expensive when many
5158              files are involved, do a quick comparison of the basenames.  */
5159           if (!basenames_may_differ
5160               && !file_matcher (lbasename (file_data->file_names[j]),
5161                                 true))
5162             continue;
5163
5164           this_real_name = dw2_get_real_path (objfile, file_data, j);
5165           if (file_matcher (this_real_name, false))
5166             {
5167               per_cu->v.quick->mark = 1;
5168               break;
5169             }
5170         }
5171
5172       void **slot = htab_find_slot (per_cu->v.quick->mark
5173                                     ? visited_found.get ()
5174                                     : visited_not_found.get (),
5175                                     file_data, INSERT);
5176       *slot = file_data;
5177     }
5178 }
5179
5180 static void
5181 dw2_expand_symtabs_matching
5182   (struct objfile *objfile,
5183    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5184    const lookup_name_info &lookup_name,
5185    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5186    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5187    enum search_domain kind)
5188 {
5189   struct dwarf2_per_objfile *dwarf2_per_objfile
5190     = get_dwarf2_per_objfile (objfile);
5191
5192   /* index_table is NULL if OBJF_READNOW.  */
5193   if (!dwarf2_per_objfile->index_table)
5194     return;
5195
5196   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5197
5198   mapped_index &index = *dwarf2_per_objfile->index_table;
5199
5200   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5201                                       symbol_matcher,
5202                                       kind, [&] (offset_type idx)
5203     {
5204       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5205                              expansion_notify, kind);
5206     });
5207 }
5208
5209 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5210    symtab.  */
5211
5212 static struct compunit_symtab *
5213 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5214                                           CORE_ADDR pc)
5215 {
5216   int i;
5217
5218   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5219       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5220     return cust;
5221
5222   if (cust->includes == NULL)
5223     return NULL;
5224
5225   for (i = 0; cust->includes[i]; ++i)
5226     {
5227       struct compunit_symtab *s = cust->includes[i];
5228
5229       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5230       if (s != NULL)
5231         return s;
5232     }
5233
5234   return NULL;
5235 }
5236
5237 static struct compunit_symtab *
5238 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5239                                   struct bound_minimal_symbol msymbol,
5240                                   CORE_ADDR pc,
5241                                   struct obj_section *section,
5242                                   int warn_if_readin)
5243 {
5244   struct dwarf2_per_cu_data *data;
5245   struct compunit_symtab *result;
5246
5247   if (!objfile->psymtabs_addrmap)
5248     return NULL;
5249
5250   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5251                                  SECT_OFF_TEXT (objfile));
5252   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5253                                                      pc - baseaddr);
5254   if (!data)
5255     return NULL;
5256
5257   if (warn_if_readin && data->v.quick->compunit_symtab)
5258     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5259              paddress (get_objfile_arch (objfile), pc));
5260
5261   result
5262     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5263                                                                         false),
5264                                                 pc);
5265   gdb_assert (result != NULL);
5266   return result;
5267 }
5268
5269 static void
5270 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5271                           void *data, int need_fullname)
5272 {
5273   struct dwarf2_per_objfile *dwarf2_per_objfile
5274     = get_dwarf2_per_objfile (objfile);
5275
5276   if (!dwarf2_per_objfile->filenames_cache)
5277     {
5278       dwarf2_per_objfile->filenames_cache.emplace ();
5279
5280       htab_up visited (htab_create_alloc (10,
5281                                           htab_hash_pointer, htab_eq_pointer,
5282                                           NULL, xcalloc, xfree));
5283
5284       /* The rule is CUs specify all the files, including those used
5285          by any TU, so there's no need to scan TUs here.  We can
5286          ignore file names coming from already-expanded CUs.  */
5287
5288       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5289         {
5290           if (per_cu->v.quick->compunit_symtab)
5291             {
5292               void **slot = htab_find_slot (visited.get (),
5293                                             per_cu->v.quick->file_names,
5294                                             INSERT);
5295
5296               *slot = per_cu->v.quick->file_names;
5297             }
5298         }
5299
5300       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5301         {
5302           /* We only need to look at symtabs not already expanded.  */
5303           if (per_cu->v.quick->compunit_symtab)
5304             continue;
5305
5306           quick_file_names *file_data = dw2_get_file_names (per_cu);
5307           if (file_data == NULL)
5308             continue;
5309
5310           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5311           if (*slot)
5312             {
5313               /* Already visited.  */
5314               continue;
5315             }
5316           *slot = file_data;
5317
5318           for (int j = 0; j < file_data->num_file_names; ++j)
5319             {
5320               const char *filename = file_data->file_names[j];
5321               dwarf2_per_objfile->filenames_cache->seen (filename);
5322             }
5323         }
5324     }
5325
5326   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5327     {
5328       gdb::unique_xmalloc_ptr<char> this_real_name;
5329
5330       if (need_fullname)
5331         this_real_name = gdb_realpath (filename);
5332       (*fun) (filename, this_real_name.get (), data);
5333     });
5334 }
5335
5336 static int
5337 dw2_has_symbols (struct objfile *objfile)
5338 {
5339   return 1;
5340 }
5341
5342 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5343 {
5344   dw2_has_symbols,
5345   dw2_find_last_source_symtab,
5346   dw2_forget_cached_source_info,
5347   dw2_map_symtabs_matching_filename,
5348   dw2_lookup_symbol,
5349   dw2_print_stats,
5350   dw2_dump,
5351   dw2_expand_symtabs_for_function,
5352   dw2_expand_all_symtabs,
5353   dw2_expand_symtabs_with_fullname,
5354   dw2_map_matching_symbols,
5355   dw2_expand_symtabs_matching,
5356   dw2_find_pc_sect_compunit_symtab,
5357   NULL,
5358   dw2_map_symbol_filenames
5359 };
5360
5361 /* DWARF-5 debug_names reader.  */
5362
5363 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5364 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5365
5366 /* A helper function that reads the .debug_names section in SECTION
5367    and fills in MAP.  FILENAME is the name of the file containing the
5368    section; it is used for error reporting.
5369
5370    Returns true if all went well, false otherwise.  */
5371
5372 static bool
5373 read_debug_names_from_section (struct objfile *objfile,
5374                                const char *filename,
5375                                struct dwarf2_section_info *section,
5376                                mapped_debug_names &map)
5377 {
5378   if (dwarf2_section_empty_p (section))
5379     return false;
5380
5381   /* Older elfutils strip versions could keep the section in the main
5382      executable while splitting it for the separate debug info file.  */
5383   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5384     return false;
5385
5386   dwarf2_read_section (objfile, section);
5387
5388   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5389
5390   const gdb_byte *addr = section->buffer;
5391
5392   bfd *const abfd = get_section_bfd_owner (section);
5393
5394   unsigned int bytes_read;
5395   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5396   addr += bytes_read;
5397
5398   map.dwarf5_is_dwarf64 = bytes_read != 4;
5399   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5400   if (bytes_read + length != section->size)
5401     {
5402       /* There may be multiple per-CU indices.  */
5403       warning (_("Section .debug_names in %s length %s does not match "
5404                  "section length %s, ignoring .debug_names."),
5405                filename, plongest (bytes_read + length),
5406                pulongest (section->size));
5407       return false;
5408     }
5409
5410   /* The version number.  */
5411   uint16_t version = read_2_bytes (abfd, addr);
5412   addr += 2;
5413   if (version != 5)
5414     {
5415       warning (_("Section .debug_names in %s has unsupported version %d, "
5416                  "ignoring .debug_names."),
5417                filename, version);
5418       return false;
5419     }
5420
5421   /* Padding.  */
5422   uint16_t padding = read_2_bytes (abfd, addr);
5423   addr += 2;
5424   if (padding != 0)
5425     {
5426       warning (_("Section .debug_names in %s has unsupported padding %d, "
5427                  "ignoring .debug_names."),
5428                filename, padding);
5429       return false;
5430     }
5431
5432   /* comp_unit_count - The number of CUs in the CU list.  */
5433   map.cu_count = read_4_bytes (abfd, addr);
5434   addr += 4;
5435
5436   /* local_type_unit_count - The number of TUs in the local TU
5437      list.  */
5438   map.tu_count = read_4_bytes (abfd, addr);
5439   addr += 4;
5440
5441   /* foreign_type_unit_count - The number of TUs in the foreign TU
5442      list.  */
5443   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5444   addr += 4;
5445   if (foreign_tu_count != 0)
5446     {
5447       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5448                  "ignoring .debug_names."),
5449                filename, static_cast<unsigned long> (foreign_tu_count));
5450       return false;
5451     }
5452
5453   /* bucket_count - The number of hash buckets in the hash lookup
5454      table.  */
5455   map.bucket_count = read_4_bytes (abfd, addr);
5456   addr += 4;
5457
5458   /* name_count - The number of unique names in the index.  */
5459   map.name_count = read_4_bytes (abfd, addr);
5460   addr += 4;
5461
5462   /* abbrev_table_size - The size in bytes of the abbreviations
5463      table.  */
5464   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5465   addr += 4;
5466
5467   /* augmentation_string_size - The size in bytes of the augmentation
5468      string.  This value is rounded up to a multiple of 4.  */
5469   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5470   addr += 4;
5471   map.augmentation_is_gdb = ((augmentation_string_size
5472                               == sizeof (dwarf5_augmentation))
5473                              && memcmp (addr, dwarf5_augmentation,
5474                                         sizeof (dwarf5_augmentation)) == 0);
5475   augmentation_string_size += (-augmentation_string_size) & 3;
5476   addr += augmentation_string_size;
5477
5478   /* List of CUs */
5479   map.cu_table_reordered = addr;
5480   addr += map.cu_count * map.offset_size;
5481
5482   /* List of Local TUs */
5483   map.tu_table_reordered = addr;
5484   addr += map.tu_count * map.offset_size;
5485
5486   /* Hash Lookup Table */
5487   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5488   addr += map.bucket_count * 4;
5489   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5490   addr += map.name_count * 4;
5491
5492   /* Name Table */
5493   map.name_table_string_offs_reordered = addr;
5494   addr += map.name_count * map.offset_size;
5495   map.name_table_entry_offs_reordered = addr;
5496   addr += map.name_count * map.offset_size;
5497
5498   const gdb_byte *abbrev_table_start = addr;
5499   for (;;)
5500     {
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     fprintf_unfiltered (gdb_stdlog,
8083                         "Psymtab for %s unit @%s: %s - %s"
8084                         ", %d global, %d static syms\n",
8085                         per_cu->is_debug_types ? "type" : "comp",
8086                         sect_offset_str (per_cu->sect_off),
8087                         paddress (gdbarch, pst->text_low (objfile)),
8088                         paddress (gdbarch, pst->text_high (objfile)),
8089                         pst->n_global_syms, pst->n_static_syms);
8090 }
8091
8092 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8093    Process compilation unit THIS_CU for a psymtab.  */
8094
8095 static void
8096 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8097                            int want_partial_unit,
8098                            enum language pretend_language)
8099 {
8100   /* If this compilation unit was already read in, free the
8101      cached copy in order to read it in again.  This is
8102      necessary because we skipped some symbols when we first
8103      read in the compilation unit (see load_partial_dies).
8104      This problem could be avoided, but the benefit is unclear.  */
8105   if (this_cu->cu != NULL)
8106     free_one_cached_comp_unit (this_cu);
8107
8108   if (this_cu->is_debug_types)
8109     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8110                              build_type_psymtabs_reader, NULL);
8111   else
8112     {
8113       process_psymtab_comp_unit_data info;
8114       info.want_partial_unit = want_partial_unit;
8115       info.pretend_language = pretend_language;
8116       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8117                                process_psymtab_comp_unit_reader, &info);
8118     }
8119
8120   /* Age out any secondary CUs.  */
8121   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8122 }
8123
8124 /* Reader function for build_type_psymtabs.  */
8125
8126 static void
8127 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8128                             const gdb_byte *info_ptr,
8129                             struct die_info *type_unit_die,
8130                             int has_children,
8131                             void *data)
8132 {
8133   struct dwarf2_per_objfile *dwarf2_per_objfile
8134     = reader->cu->per_cu->dwarf2_per_objfile;
8135   struct objfile *objfile = dwarf2_per_objfile->objfile;
8136   struct dwarf2_cu *cu = reader->cu;
8137   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8138   struct signatured_type *sig_type;
8139   struct type_unit_group *tu_group;
8140   struct attribute *attr;
8141   struct partial_die_info *first_die;
8142   CORE_ADDR lowpc, highpc;
8143   struct partial_symtab *pst;
8144
8145   gdb_assert (data == NULL);
8146   gdb_assert (per_cu->is_debug_types);
8147   sig_type = (struct signatured_type *) per_cu;
8148
8149   if (! has_children)
8150     return;
8151
8152   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8153   tu_group = get_type_unit_group (cu, attr);
8154
8155   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8156
8157   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8158   pst = create_partial_symtab (per_cu, "");
8159   pst->anonymous = 1;
8160
8161   first_die = load_partial_dies (reader, info_ptr, 1);
8162
8163   lowpc = (CORE_ADDR) -1;
8164   highpc = (CORE_ADDR) 0;
8165   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8166
8167   end_psymtab_common (objfile, pst);
8168 }
8169
8170 /* Struct used to sort TUs by their abbreviation table offset.  */
8171
8172 struct tu_abbrev_offset
8173 {
8174   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8175   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8176   {}
8177
8178   signatured_type *sig_type;
8179   sect_offset abbrev_offset;
8180 };
8181
8182 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8183
8184 static bool
8185 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8186                           const struct tu_abbrev_offset &b)
8187 {
8188   return a.abbrev_offset < b.abbrev_offset;
8189 }
8190
8191 /* Efficiently read all the type units.
8192    This does the bulk of the work for build_type_psymtabs.
8193
8194    The efficiency is because we sort TUs by the abbrev table they use and
8195    only read each abbrev table once.  In one program there are 200K TUs
8196    sharing 8K abbrev tables.
8197
8198    The main purpose of this function is to support building the
8199    dwarf2_per_objfile->type_unit_groups table.
8200    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8201    can collapse the search space by grouping them by stmt_list.
8202    The savings can be significant, in the same program from above the 200K TUs
8203    share 8K stmt_list tables.
8204
8205    FUNC is expected to call get_type_unit_group, which will create the
8206    struct type_unit_group if necessary and add it to
8207    dwarf2_per_objfile->type_unit_groups.  */
8208
8209 static void
8210 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8211 {
8212   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8213   abbrev_table_up abbrev_table;
8214   sect_offset abbrev_offset;
8215
8216   /* It's up to the caller to not call us multiple times.  */
8217   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8218
8219   if (dwarf2_per_objfile->all_type_units.empty ())
8220     return;
8221
8222   /* TUs typically share abbrev tables, and there can be way more TUs than
8223      abbrev tables.  Sort by abbrev table to reduce the number of times we
8224      read each abbrev table in.
8225      Alternatives are to punt or to maintain a cache of abbrev tables.
8226      This is simpler and efficient enough for now.
8227
8228      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8229      symtab to use).  Typically TUs with the same abbrev offset have the same
8230      stmt_list value too so in practice this should work well.
8231
8232      The basic algorithm here is:
8233
8234       sort TUs by abbrev table
8235       for each TU with same abbrev table:
8236         read abbrev table if first user
8237         read TU top level DIE
8238           [IWBN if DWO skeletons had DW_AT_stmt_list]
8239         call FUNC  */
8240
8241   if (dwarf_read_debug)
8242     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8243
8244   /* Sort in a separate table to maintain the order of all_type_units
8245      for .gdb_index: TU indices directly index all_type_units.  */
8246   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8247   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8248
8249   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8250     sorted_by_abbrev.emplace_back
8251       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8252                                      sig_type->per_cu.section,
8253                                      sig_type->per_cu.sect_off));
8254
8255   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8256              sort_tu_by_abbrev_offset);
8257
8258   abbrev_offset = (sect_offset) ~(unsigned) 0;
8259
8260   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8261     {
8262       /* Switch to the next abbrev table if necessary.  */
8263       if (abbrev_table == NULL
8264           || tu.abbrev_offset != abbrev_offset)
8265         {
8266           abbrev_offset = tu.abbrev_offset;
8267           abbrev_table =
8268             abbrev_table_read_table (dwarf2_per_objfile,
8269                                      &dwarf2_per_objfile->abbrev,
8270                                      abbrev_offset);
8271           ++tu_stats->nr_uniq_abbrev_tables;
8272         }
8273
8274       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8275                                0, 0, false, build_type_psymtabs_reader, NULL);
8276     }
8277 }
8278
8279 /* Print collected type unit statistics.  */
8280
8281 static void
8282 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8283 {
8284   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8285
8286   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8287   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8288                       dwarf2_per_objfile->all_type_units.size ());
8289   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8290                       tu_stats->nr_uniq_abbrev_tables);
8291   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8292                       tu_stats->nr_symtabs);
8293   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8294                       tu_stats->nr_symtab_sharers);
8295   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8296                       tu_stats->nr_stmt_less_type_units);
8297   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8298                       tu_stats->nr_all_type_units_reallocs);
8299 }
8300
8301 /* Traversal function for build_type_psymtabs.  */
8302
8303 static int
8304 build_type_psymtab_dependencies (void **slot, void *info)
8305 {
8306   struct dwarf2_per_objfile *dwarf2_per_objfile
8307     = (struct dwarf2_per_objfile *) info;
8308   struct objfile *objfile = dwarf2_per_objfile->objfile;
8309   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8310   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8311   struct partial_symtab *pst = per_cu->v.psymtab;
8312   int len = VEC_length (sig_type_ptr, tu_group->tus);
8313   struct signatured_type *iter;
8314   int i;
8315
8316   gdb_assert (len > 0);
8317   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8318
8319   pst->number_of_dependencies = len;
8320   pst->dependencies =
8321     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8322   for (i = 0;
8323        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8324        ++i)
8325     {
8326       gdb_assert (iter->per_cu.is_debug_types);
8327       pst->dependencies[i] = iter->per_cu.v.psymtab;
8328       iter->type_unit_group = tu_group;
8329     }
8330
8331   VEC_free (sig_type_ptr, tu_group->tus);
8332
8333   return 1;
8334 }
8335
8336 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8337    Build partial symbol tables for the .debug_types comp-units.  */
8338
8339 static void
8340 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8341 {
8342   if (! create_all_type_units (dwarf2_per_objfile))
8343     return;
8344
8345   build_type_psymtabs_1 (dwarf2_per_objfile);
8346 }
8347
8348 /* Traversal function for process_skeletonless_type_unit.
8349    Read a TU in a DWO file and build partial symbols for it.  */
8350
8351 static int
8352 process_skeletonless_type_unit (void **slot, void *info)
8353 {
8354   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8355   struct dwarf2_per_objfile *dwarf2_per_objfile
8356     = (struct dwarf2_per_objfile *) info;
8357   struct signatured_type find_entry, *entry;
8358
8359   /* If this TU doesn't exist in the global table, add it and read it in.  */
8360
8361   if (dwarf2_per_objfile->signatured_types == NULL)
8362     {
8363       dwarf2_per_objfile->signatured_types
8364         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8365     }
8366
8367   find_entry.signature = dwo_unit->signature;
8368   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8369                          INSERT);
8370   /* If we've already seen this type there's nothing to do.  What's happening
8371      is we're doing our own version of comdat-folding here.  */
8372   if (*slot != NULL)
8373     return 1;
8374
8375   /* This does the job that create_all_type_units would have done for
8376      this TU.  */
8377   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8378   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8379   *slot = entry;
8380
8381   /* This does the job that build_type_psymtabs_1 would have done.  */
8382   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8383                            build_type_psymtabs_reader, NULL);
8384
8385   return 1;
8386 }
8387
8388 /* Traversal function for process_skeletonless_type_units.  */
8389
8390 static int
8391 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8392 {
8393   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8394
8395   if (dwo_file->tus != NULL)
8396     {
8397       htab_traverse_noresize (dwo_file->tus,
8398                               process_skeletonless_type_unit, info);
8399     }
8400
8401   return 1;
8402 }
8403
8404 /* Scan all TUs of DWO files, verifying we've processed them.
8405    This is needed in case a TU was emitted without its skeleton.
8406    Note: This can't be done until we know what all the DWO files are.  */
8407
8408 static void
8409 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8410 {
8411   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8412   if (get_dwp_file (dwarf2_per_objfile) == NULL
8413       && dwarf2_per_objfile->dwo_files != NULL)
8414     {
8415       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8416                               process_dwo_file_for_skeletonless_type_units,
8417                               dwarf2_per_objfile);
8418     }
8419 }
8420
8421 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8422
8423 static void
8424 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8425 {
8426   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8427     {
8428       struct partial_symtab *pst = per_cu->v.psymtab;
8429
8430       if (pst == NULL)
8431         continue;
8432
8433       for (int j = 0; j < pst->number_of_dependencies; ++j)
8434         {
8435           /* Set the 'user' field only if it is not already set.  */
8436           if (pst->dependencies[j]->user == NULL)
8437             pst->dependencies[j]->user = pst;
8438         }
8439     }
8440 }
8441
8442 /* Build the partial symbol table by doing a quick pass through the
8443    .debug_info and .debug_abbrev sections.  */
8444
8445 static void
8446 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8447 {
8448   struct objfile *objfile = dwarf2_per_objfile->objfile;
8449
8450   if (dwarf_read_debug)
8451     {
8452       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8453                           objfile_name (objfile));
8454     }
8455
8456   dwarf2_per_objfile->reading_partial_symbols = 1;
8457
8458   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8459
8460   /* Any cached compilation units will be linked by the per-objfile
8461      read_in_chain.  Make sure to free them when we're done.  */
8462   free_cached_comp_units freer (dwarf2_per_objfile);
8463
8464   build_type_psymtabs (dwarf2_per_objfile);
8465
8466   create_all_comp_units (dwarf2_per_objfile);
8467
8468   /* Create a temporary address map on a temporary obstack.  We later
8469      copy this to the final obstack.  */
8470   auto_obstack temp_obstack;
8471
8472   scoped_restore save_psymtabs_addrmap
8473     = make_scoped_restore (&objfile->psymtabs_addrmap,
8474                            addrmap_create_mutable (&temp_obstack));
8475
8476   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8477     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8478
8479   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8480   process_skeletonless_type_units (dwarf2_per_objfile);
8481
8482   /* Now that all TUs have been processed we can fill in the dependencies.  */
8483   if (dwarf2_per_objfile->type_unit_groups != NULL)
8484     {
8485       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8486                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8487     }
8488
8489   if (dwarf_read_debug)
8490     print_tu_stats (dwarf2_per_objfile);
8491
8492   set_partial_user (dwarf2_per_objfile);
8493
8494   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8495                                                     &objfile->objfile_obstack);
8496   /* At this point we want to keep the address map.  */
8497   save_psymtabs_addrmap.release ();
8498
8499   if (dwarf_read_debug)
8500     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8501                         objfile_name (objfile));
8502 }
8503
8504 /* die_reader_func for load_partial_comp_unit.  */
8505
8506 static void
8507 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8508                                const gdb_byte *info_ptr,
8509                                struct die_info *comp_unit_die,
8510                                int has_children,
8511                                void *data)
8512 {
8513   struct dwarf2_cu *cu = reader->cu;
8514
8515   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8516
8517   /* Check if comp unit has_children.
8518      If so, read the rest of the partial symbols from this comp unit.
8519      If not, there's no more debug_info for this comp unit.  */
8520   if (has_children)
8521     load_partial_dies (reader, info_ptr, 0);
8522 }
8523
8524 /* Load the partial DIEs for a secondary CU into memory.
8525    This is also used when rereading a primary CU with load_all_dies.  */
8526
8527 static void
8528 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8529 {
8530   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8531                            load_partial_comp_unit_reader, NULL);
8532 }
8533
8534 static void
8535 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8536                               struct dwarf2_section_info *section,
8537                               struct dwarf2_section_info *abbrev_section,
8538                               unsigned int is_dwz)
8539 {
8540   const gdb_byte *info_ptr;
8541   struct objfile *objfile = dwarf2_per_objfile->objfile;
8542
8543   if (dwarf_read_debug)
8544     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8545                         get_section_name (section),
8546                         get_section_file_name (section));
8547
8548   dwarf2_read_section (objfile, section);
8549
8550   info_ptr = section->buffer;
8551
8552   while (info_ptr < section->buffer + section->size)
8553     {
8554       struct dwarf2_per_cu_data *this_cu;
8555
8556       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8557
8558       comp_unit_head cu_header;
8559       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8560                                      abbrev_section, info_ptr,
8561                                      rcuh_kind::COMPILE);
8562
8563       /* Save the compilation unit for later lookup.  */
8564       if (cu_header.unit_type != DW_UT_type)
8565         {
8566           this_cu = XOBNEW (&objfile->objfile_obstack,
8567                             struct dwarf2_per_cu_data);
8568           memset (this_cu, 0, sizeof (*this_cu));
8569         }
8570       else
8571         {
8572           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8573                                   struct signatured_type);
8574           memset (sig_type, 0, sizeof (*sig_type));
8575           sig_type->signature = cu_header.signature;
8576           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8577           this_cu = &sig_type->per_cu;
8578         }
8579       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8580       this_cu->sect_off = sect_off;
8581       this_cu->length = cu_header.length + cu_header.initial_length_size;
8582       this_cu->is_dwz = is_dwz;
8583       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8584       this_cu->section = section;
8585
8586       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8587
8588       info_ptr = info_ptr + this_cu->length;
8589     }
8590 }
8591
8592 /* Create a list of all compilation units in OBJFILE.
8593    This is only done for -readnow and building partial symtabs.  */
8594
8595 static void
8596 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8597 {
8598   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8599   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8600                                 &dwarf2_per_objfile->abbrev, 0);
8601
8602   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8603   if (dwz != NULL)
8604     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8605                                   1);
8606 }
8607
8608 /* Process all loaded DIEs for compilation unit CU, starting at
8609    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8610    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8611    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8612    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8613
8614 static void
8615 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8616                       CORE_ADDR *highpc, int set_addrmap,
8617                       struct dwarf2_cu *cu)
8618 {
8619   struct partial_die_info *pdi;
8620
8621   /* Now, march along the PDI's, descending into ones which have
8622      interesting children but skipping the children of the other ones,
8623      until we reach the end of the compilation unit.  */
8624
8625   pdi = first_die;
8626
8627   while (pdi != NULL)
8628     {
8629       pdi->fixup (cu);
8630
8631       /* Anonymous namespaces or modules have no name but have interesting
8632          children, so we need to look at them.  Ditto for anonymous
8633          enums.  */
8634
8635       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8636           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8637           || pdi->tag == DW_TAG_imported_unit
8638           || pdi->tag == DW_TAG_inlined_subroutine)
8639         {
8640           switch (pdi->tag)
8641             {
8642             case DW_TAG_subprogram:
8643             case DW_TAG_inlined_subroutine:
8644               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8645               break;
8646             case DW_TAG_constant:
8647             case DW_TAG_variable:
8648             case DW_TAG_typedef:
8649             case DW_TAG_union_type:
8650               if (!pdi->is_declaration)
8651                 {
8652                   add_partial_symbol (pdi, cu);
8653                 }
8654               break;
8655             case DW_TAG_class_type:
8656             case DW_TAG_interface_type:
8657             case DW_TAG_structure_type:
8658               if (!pdi->is_declaration)
8659                 {
8660                   add_partial_symbol (pdi, cu);
8661                 }
8662               if ((cu->language == language_rust
8663                    || cu->language == language_cplus) && pdi->has_children)
8664                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8665                                       set_addrmap, cu);
8666               break;
8667             case DW_TAG_enumeration_type:
8668               if (!pdi->is_declaration)
8669                 add_partial_enumeration (pdi, cu);
8670               break;
8671             case DW_TAG_base_type:
8672             case DW_TAG_subrange_type:
8673               /* File scope base type definitions are added to the partial
8674                  symbol table.  */
8675               add_partial_symbol (pdi, cu);
8676               break;
8677             case DW_TAG_namespace:
8678               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8679               break;
8680             case DW_TAG_module:
8681               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8682               break;
8683             case DW_TAG_imported_unit:
8684               {
8685                 struct dwarf2_per_cu_data *per_cu;
8686
8687                 /* For now we don't handle imported units in type units.  */
8688                 if (cu->per_cu->is_debug_types)
8689                   {
8690                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8691                              " supported in type units [in module %s]"),
8692                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8693                   }
8694
8695                 per_cu = dwarf2_find_containing_comp_unit
8696                            (pdi->d.sect_off, pdi->is_dwz,
8697                             cu->per_cu->dwarf2_per_objfile);
8698
8699                 /* Go read the partial unit, if needed.  */
8700                 if (per_cu->v.psymtab == NULL)
8701                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8702
8703                 VEC_safe_push (dwarf2_per_cu_ptr,
8704                                cu->per_cu->imported_symtabs, per_cu);
8705               }
8706               break;
8707             case DW_TAG_imported_declaration:
8708               add_partial_symbol (pdi, cu);
8709               break;
8710             default:
8711               break;
8712             }
8713         }
8714
8715       /* If the die has a sibling, skip to the sibling.  */
8716
8717       pdi = pdi->die_sibling;
8718     }
8719 }
8720
8721 /* Functions used to compute the fully scoped name of a partial DIE.
8722
8723    Normally, this is simple.  For C++, the parent DIE's fully scoped
8724    name is concatenated with "::" and the partial DIE's name.
8725    Enumerators are an exception; they use the scope of their parent
8726    enumeration type, i.e. the name of the enumeration type is not
8727    prepended to the enumerator.
8728
8729    There are two complexities.  One is DW_AT_specification; in this
8730    case "parent" means the parent of the target of the specification,
8731    instead of the direct parent of the DIE.  The other is compilers
8732    which do not emit DW_TAG_namespace; in this case we try to guess
8733    the fully qualified name of structure types from their members'
8734    linkage names.  This must be done using the DIE's children rather
8735    than the children of any DW_AT_specification target.  We only need
8736    to do this for structures at the top level, i.e. if the target of
8737    any DW_AT_specification (if any; otherwise the DIE itself) does not
8738    have a parent.  */
8739
8740 /* Compute the scope prefix associated with PDI's parent, in
8741    compilation unit CU.  The result will be allocated on CU's
8742    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8743    field.  NULL is returned if no prefix is necessary.  */
8744 static const char *
8745 partial_die_parent_scope (struct partial_die_info *pdi,
8746                           struct dwarf2_cu *cu)
8747 {
8748   const char *grandparent_scope;
8749   struct partial_die_info *parent, *real_pdi;
8750
8751   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8752      then this means the parent of the specification DIE.  */
8753
8754   real_pdi = pdi;
8755   while (real_pdi->has_specification)
8756     real_pdi = find_partial_die (real_pdi->spec_offset,
8757                                  real_pdi->spec_is_dwz, cu);
8758
8759   parent = real_pdi->die_parent;
8760   if (parent == NULL)
8761     return NULL;
8762
8763   if (parent->scope_set)
8764     return parent->scope;
8765
8766   parent->fixup (cu);
8767
8768   grandparent_scope = partial_die_parent_scope (parent, cu);
8769
8770   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8771      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8772      Work around this problem here.  */
8773   if (cu->language == language_cplus
8774       && parent->tag == DW_TAG_namespace
8775       && strcmp (parent->name, "::") == 0
8776       && grandparent_scope == NULL)
8777     {
8778       parent->scope = NULL;
8779       parent->scope_set = 1;
8780       return NULL;
8781     }
8782
8783   if (pdi->tag == DW_TAG_enumerator)
8784     /* Enumerators should not get the name of the enumeration as a prefix.  */
8785     parent->scope = grandparent_scope;
8786   else if (parent->tag == DW_TAG_namespace
8787       || parent->tag == DW_TAG_module
8788       || parent->tag == DW_TAG_structure_type
8789       || parent->tag == DW_TAG_class_type
8790       || parent->tag == DW_TAG_interface_type
8791       || parent->tag == DW_TAG_union_type
8792       || parent->tag == DW_TAG_enumeration_type)
8793     {
8794       if (grandparent_scope == NULL)
8795         parent->scope = parent->name;
8796       else
8797         parent->scope = typename_concat (&cu->comp_unit_obstack,
8798                                          grandparent_scope,
8799                                          parent->name, 0, cu);
8800     }
8801   else
8802     {
8803       /* FIXME drow/2004-04-01: What should we be doing with
8804          function-local names?  For partial symbols, we should probably be
8805          ignoring them.  */
8806       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8807                  parent->tag, sect_offset_str (pdi->sect_off));
8808       parent->scope = grandparent_scope;
8809     }
8810
8811   parent->scope_set = 1;
8812   return parent->scope;
8813 }
8814
8815 /* Return the fully scoped name associated with PDI, from compilation unit
8816    CU.  The result will be allocated with malloc.  */
8817
8818 static char *
8819 partial_die_full_name (struct partial_die_info *pdi,
8820                        struct dwarf2_cu *cu)
8821 {
8822   const char *parent_scope;
8823
8824   /* If this is a template instantiation, we can not work out the
8825      template arguments from partial DIEs.  So, unfortunately, we have
8826      to go through the full DIEs.  At least any work we do building
8827      types here will be reused if full symbols are loaded later.  */
8828   if (pdi->has_template_arguments)
8829     {
8830       pdi->fixup (cu);
8831
8832       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8833         {
8834           struct die_info *die;
8835           struct attribute attr;
8836           struct dwarf2_cu *ref_cu = cu;
8837
8838           /* DW_FORM_ref_addr is using section offset.  */
8839           attr.name = (enum dwarf_attribute) 0;
8840           attr.form = DW_FORM_ref_addr;
8841           attr.u.unsnd = to_underlying (pdi->sect_off);
8842           die = follow_die_ref (NULL, &attr, &ref_cu);
8843
8844           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8845         }
8846     }
8847
8848   parent_scope = partial_die_parent_scope (pdi, cu);
8849   if (parent_scope == NULL)
8850     return NULL;
8851   else
8852     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8853 }
8854
8855 static void
8856 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8857 {
8858   struct dwarf2_per_objfile *dwarf2_per_objfile
8859     = cu->per_cu->dwarf2_per_objfile;
8860   struct objfile *objfile = dwarf2_per_objfile->objfile;
8861   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8862   CORE_ADDR addr = 0;
8863   const char *actual_name = NULL;
8864   CORE_ADDR baseaddr;
8865   char *built_actual_name;
8866
8867   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8868
8869   built_actual_name = partial_die_full_name (pdi, cu);
8870   if (built_actual_name != NULL)
8871     actual_name = built_actual_name;
8872
8873   if (actual_name == NULL)
8874     actual_name = pdi->name;
8875
8876   switch (pdi->tag)
8877     {
8878     case DW_TAG_inlined_subroutine:
8879     case DW_TAG_subprogram:
8880       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8881               - baseaddr);
8882       if (pdi->is_external || cu->language == language_ada)
8883         {
8884           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8885              of the global scope.  But in Ada, we want to be able to access
8886              nested procedures globally.  So all Ada subprograms are stored
8887              in the global scope.  */
8888           add_psymbol_to_list (actual_name, strlen (actual_name),
8889                                built_actual_name != NULL,
8890                                VAR_DOMAIN, LOC_BLOCK,
8891                                SECT_OFF_TEXT (objfile),
8892                                &objfile->global_psymbols,
8893                                addr,
8894                                cu->language, objfile);
8895         }
8896       else
8897         {
8898           add_psymbol_to_list (actual_name, strlen (actual_name),
8899                                built_actual_name != NULL,
8900                                VAR_DOMAIN, LOC_BLOCK,
8901                                SECT_OFF_TEXT (objfile),
8902                                &objfile->static_psymbols,
8903                                addr, cu->language, objfile);
8904         }
8905
8906       if (pdi->main_subprogram && actual_name != NULL)
8907         set_objfile_main_name (objfile, actual_name, cu->language);
8908       break;
8909     case DW_TAG_constant:
8910       {
8911         std::vector<partial_symbol *> *list;
8912
8913         if (pdi->is_external)
8914           list = &objfile->global_psymbols;
8915         else
8916           list = &objfile->static_psymbols;
8917         add_psymbol_to_list (actual_name, strlen (actual_name),
8918                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8919                              -1, list, 0, cu->language, objfile);
8920       }
8921       break;
8922     case DW_TAG_variable:
8923       if (pdi->d.locdesc)
8924         addr = decode_locdesc (pdi->d.locdesc, cu);
8925
8926       if (pdi->d.locdesc
8927           && addr == 0
8928           && !dwarf2_per_objfile->has_section_at_zero)
8929         {
8930           /* A global or static variable may also have been stripped
8931              out by the linker if unused, in which case its address
8932              will be nullified; do not add such variables into partial
8933              symbol table then.  */
8934         }
8935       else if (pdi->is_external)
8936         {
8937           /* Global Variable.
8938              Don't enter into the minimal symbol tables as there is
8939              a minimal symbol table entry from the ELF symbols already.
8940              Enter into partial symbol table if it has a location
8941              descriptor or a type.
8942              If the location descriptor is missing, new_symbol will create
8943              a LOC_UNRESOLVED symbol, the address of the variable will then
8944              be determined from the minimal symbol table whenever the variable
8945              is referenced.
8946              The address for the partial symbol table entry is not
8947              used by GDB, but it comes in handy for debugging partial symbol
8948              table building.  */
8949
8950           if (pdi->d.locdesc || pdi->has_type)
8951             add_psymbol_to_list (actual_name, strlen (actual_name),
8952                                  built_actual_name != NULL,
8953                                  VAR_DOMAIN, LOC_STATIC,
8954                                  SECT_OFF_TEXT (objfile),
8955                                  &objfile->global_psymbols,
8956                                  addr, cu->language, objfile);
8957         }
8958       else
8959         {
8960           int has_loc = pdi->d.locdesc != NULL;
8961
8962           /* Static Variable.  Skip symbols whose value we cannot know (those
8963              without location descriptors or constant values).  */
8964           if (!has_loc && !pdi->has_const_value)
8965             {
8966               xfree (built_actual_name);
8967               return;
8968             }
8969
8970           add_psymbol_to_list (actual_name, strlen (actual_name),
8971                                built_actual_name != NULL,
8972                                VAR_DOMAIN, LOC_STATIC,
8973                                SECT_OFF_TEXT (objfile),
8974                                &objfile->static_psymbols,
8975                                has_loc ? addr : 0,
8976                                cu->language, objfile);
8977         }
8978       break;
8979     case DW_TAG_typedef:
8980     case DW_TAG_base_type:
8981     case DW_TAG_subrange_type:
8982       add_psymbol_to_list (actual_name, strlen (actual_name),
8983                            built_actual_name != NULL,
8984                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8985                            &objfile->static_psymbols,
8986                            0, cu->language, objfile);
8987       break;
8988     case DW_TAG_imported_declaration:
8989     case DW_TAG_namespace:
8990       add_psymbol_to_list (actual_name, strlen (actual_name),
8991                            built_actual_name != NULL,
8992                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8993                            &objfile->global_psymbols,
8994                            0, cu->language, objfile);
8995       break;
8996     case DW_TAG_module:
8997       add_psymbol_to_list (actual_name, strlen (actual_name),
8998                            built_actual_name != NULL,
8999                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9000                            &objfile->global_psymbols,
9001                            0, cu->language, objfile);
9002       break;
9003     case DW_TAG_class_type:
9004     case DW_TAG_interface_type:
9005     case DW_TAG_structure_type:
9006     case DW_TAG_union_type:
9007     case DW_TAG_enumeration_type:
9008       /* Skip external references.  The DWARF standard says in the section
9009          about "Structure, Union, and Class Type Entries": "An incomplete
9010          structure, union or class type is represented by a structure,
9011          union or class entry that does not have a byte size attribute
9012          and that has a DW_AT_declaration attribute."  */
9013       if (!pdi->has_byte_size && pdi->is_declaration)
9014         {
9015           xfree (built_actual_name);
9016           return;
9017         }
9018
9019       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9020          static vs. global.  */
9021       add_psymbol_to_list (actual_name, strlen (actual_name),
9022                            built_actual_name != NULL,
9023                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9024                            cu->language == language_cplus
9025                            ? &objfile->global_psymbols
9026                            : &objfile->static_psymbols,
9027                            0, cu->language, objfile);
9028
9029       break;
9030     case DW_TAG_enumerator:
9031       add_psymbol_to_list (actual_name, strlen (actual_name),
9032                            built_actual_name != NULL,
9033                            VAR_DOMAIN, LOC_CONST, -1,
9034                            cu->language == language_cplus
9035                            ? &objfile->global_psymbols
9036                            : &objfile->static_psymbols,
9037                            0, cu->language, objfile);
9038       break;
9039     default:
9040       break;
9041     }
9042
9043   xfree (built_actual_name);
9044 }
9045
9046 /* Read a partial die corresponding to a namespace; also, add a symbol
9047    corresponding to that namespace to the symbol table.  NAMESPACE is
9048    the name of the enclosing namespace.  */
9049
9050 static void
9051 add_partial_namespace (struct partial_die_info *pdi,
9052                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9053                        int set_addrmap, struct dwarf2_cu *cu)
9054 {
9055   /* Add a symbol for the namespace.  */
9056
9057   add_partial_symbol (pdi, cu);
9058
9059   /* Now scan partial symbols in that namespace.  */
9060
9061   if (pdi->has_children)
9062     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9063 }
9064
9065 /* Read a partial die corresponding to a Fortran module.  */
9066
9067 static void
9068 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9069                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9070 {
9071   /* Add a symbol for the namespace.  */
9072
9073   add_partial_symbol (pdi, cu);
9074
9075   /* Now scan partial symbols in that module.  */
9076
9077   if (pdi->has_children)
9078     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9079 }
9080
9081 /* Read a partial die corresponding to a subprogram or an inlined
9082    subprogram and create a partial symbol for that subprogram.
9083    When the CU language allows it, this routine also defines a partial
9084    symbol for each nested subprogram that this subprogram contains.
9085    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9086    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9087
9088    PDI may also be a lexical block, in which case we simply search
9089    recursively for subprograms defined inside that lexical block.
9090    Again, this is only performed when the CU language allows this
9091    type of definitions.  */
9092
9093 static void
9094 add_partial_subprogram (struct partial_die_info *pdi,
9095                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9096                         int set_addrmap, struct dwarf2_cu *cu)
9097 {
9098   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9099     {
9100       if (pdi->has_pc_info)
9101         {
9102           if (pdi->lowpc < *lowpc)
9103             *lowpc = pdi->lowpc;
9104           if (pdi->highpc > *highpc)
9105             *highpc = pdi->highpc;
9106           if (set_addrmap)
9107             {
9108               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9109               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9110               CORE_ADDR baseaddr;
9111               CORE_ADDR this_highpc;
9112               CORE_ADDR this_lowpc;
9113
9114               baseaddr = ANOFFSET (objfile->section_offsets,
9115                                    SECT_OFF_TEXT (objfile));
9116               this_lowpc
9117                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9118                                                pdi->lowpc + baseaddr)
9119                    - baseaddr);
9120               this_highpc
9121                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9122                                                pdi->highpc + baseaddr)
9123                    - baseaddr);
9124               addrmap_set_empty (objfile->psymtabs_addrmap,
9125                                  this_lowpc, this_highpc - 1,
9126                                  cu->per_cu->v.psymtab);
9127             }
9128         }
9129
9130       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9131         {
9132           if (!pdi->is_declaration)
9133             /* Ignore subprogram DIEs that do not have a name, they are
9134                illegal.  Do not emit a complaint at this point, we will
9135                do so when we convert this psymtab into a symtab.  */
9136             if (pdi->name)
9137               add_partial_symbol (pdi, cu);
9138         }
9139     }
9140
9141   if (! pdi->has_children)
9142     return;
9143
9144   if (cu->language == language_ada)
9145     {
9146       pdi = pdi->die_child;
9147       while (pdi != NULL)
9148         {
9149           pdi->fixup (cu);
9150           if (pdi->tag == DW_TAG_subprogram
9151               || pdi->tag == DW_TAG_inlined_subroutine
9152               || pdi->tag == DW_TAG_lexical_block)
9153             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9154           pdi = pdi->die_sibling;
9155         }
9156     }
9157 }
9158
9159 /* Read a partial die corresponding to an enumeration type.  */
9160
9161 static void
9162 add_partial_enumeration (struct partial_die_info *enum_pdi,
9163                          struct dwarf2_cu *cu)
9164 {
9165   struct partial_die_info *pdi;
9166
9167   if (enum_pdi->name != NULL)
9168     add_partial_symbol (enum_pdi, cu);
9169
9170   pdi = enum_pdi->die_child;
9171   while (pdi)
9172     {
9173       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9174         complaint (_("malformed enumerator DIE ignored"));
9175       else
9176         add_partial_symbol (pdi, cu);
9177       pdi = pdi->die_sibling;
9178     }
9179 }
9180
9181 /* Return the initial uleb128 in the die at INFO_PTR.  */
9182
9183 static unsigned int
9184 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9185 {
9186   unsigned int bytes_read;
9187
9188   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9189 }
9190
9191 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9192    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9193
9194    Return the corresponding abbrev, or NULL if the number is zero (indicating
9195    an empty DIE).  In either case *BYTES_READ will be set to the length of
9196    the initial number.  */
9197
9198 static struct abbrev_info *
9199 peek_die_abbrev (const die_reader_specs &reader,
9200                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9201 {
9202   dwarf2_cu *cu = reader.cu;
9203   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9204   unsigned int abbrev_number
9205     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9206
9207   if (abbrev_number == 0)
9208     return NULL;
9209
9210   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9211   if (!abbrev)
9212     {
9213       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9214                " at offset %s [in module %s]"),
9215              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9216              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9217     }
9218
9219   return abbrev;
9220 }
9221
9222 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9223    Returns a pointer to the end of a series of DIEs, terminated by an empty
9224    DIE.  Any children of the skipped DIEs will also be skipped.  */
9225
9226 static const gdb_byte *
9227 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9228 {
9229   while (1)
9230     {
9231       unsigned int bytes_read;
9232       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9233
9234       if (abbrev == NULL)
9235         return info_ptr + bytes_read;
9236       else
9237         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9238     }
9239 }
9240
9241 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9242    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9243    abbrev corresponding to that skipped uleb128 should be passed in
9244    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9245    children.  */
9246
9247 static const gdb_byte *
9248 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9249               struct abbrev_info *abbrev)
9250 {
9251   unsigned int bytes_read;
9252   struct attribute attr;
9253   bfd *abfd = reader->abfd;
9254   struct dwarf2_cu *cu = reader->cu;
9255   const gdb_byte *buffer = reader->buffer;
9256   const gdb_byte *buffer_end = reader->buffer_end;
9257   unsigned int form, i;
9258
9259   for (i = 0; i < abbrev->num_attrs; i++)
9260     {
9261       /* The only abbrev we care about is DW_AT_sibling.  */
9262       if (abbrev->attrs[i].name == DW_AT_sibling)
9263         {
9264           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9265           if (attr.form == DW_FORM_ref_addr)
9266             complaint (_("ignoring absolute DW_AT_sibling"));
9267           else
9268             {
9269               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9270               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9271
9272               if (sibling_ptr < info_ptr)
9273                 complaint (_("DW_AT_sibling points backwards"));
9274               else if (sibling_ptr > reader->buffer_end)
9275                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9276               else
9277                 return sibling_ptr;
9278             }
9279         }
9280
9281       /* If it isn't DW_AT_sibling, skip this attribute.  */
9282       form = abbrev->attrs[i].form;
9283     skip_attribute:
9284       switch (form)
9285         {
9286         case DW_FORM_ref_addr:
9287           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9288              and later it is offset sized.  */
9289           if (cu->header.version == 2)
9290             info_ptr += cu->header.addr_size;
9291           else
9292             info_ptr += cu->header.offset_size;
9293           break;
9294         case DW_FORM_GNU_ref_alt:
9295           info_ptr += cu->header.offset_size;
9296           break;
9297         case DW_FORM_addr:
9298           info_ptr += cu->header.addr_size;
9299           break;
9300         case DW_FORM_data1:
9301         case DW_FORM_ref1:
9302         case DW_FORM_flag:
9303           info_ptr += 1;
9304           break;
9305         case DW_FORM_flag_present:
9306         case DW_FORM_implicit_const:
9307           break;
9308         case DW_FORM_data2:
9309         case DW_FORM_ref2:
9310           info_ptr += 2;
9311           break;
9312         case DW_FORM_data4:
9313         case DW_FORM_ref4:
9314           info_ptr += 4;
9315           break;
9316         case DW_FORM_data8:
9317         case DW_FORM_ref8:
9318         case DW_FORM_ref_sig8:
9319           info_ptr += 8;
9320           break;
9321         case DW_FORM_data16:
9322           info_ptr += 16;
9323           break;
9324         case DW_FORM_string:
9325           read_direct_string (abfd, info_ptr, &bytes_read);
9326           info_ptr += bytes_read;
9327           break;
9328         case DW_FORM_sec_offset:
9329         case DW_FORM_strp:
9330         case DW_FORM_GNU_strp_alt:
9331           info_ptr += cu->header.offset_size;
9332           break;
9333         case DW_FORM_exprloc:
9334         case DW_FORM_block:
9335           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9336           info_ptr += bytes_read;
9337           break;
9338         case DW_FORM_block1:
9339           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9340           break;
9341         case DW_FORM_block2:
9342           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9343           break;
9344         case DW_FORM_block4:
9345           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9346           break;
9347         case DW_FORM_sdata:
9348         case DW_FORM_udata:
9349         case DW_FORM_ref_udata:
9350         case DW_FORM_GNU_addr_index:
9351         case DW_FORM_GNU_str_index:
9352           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9353           break;
9354         case DW_FORM_indirect:
9355           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9356           info_ptr += bytes_read;
9357           /* We need to continue parsing from here, so just go back to
9358              the top.  */
9359           goto skip_attribute;
9360
9361         default:
9362           error (_("Dwarf Error: Cannot handle %s "
9363                    "in DWARF reader [in module %s]"),
9364                  dwarf_form_name (form),
9365                  bfd_get_filename (abfd));
9366         }
9367     }
9368
9369   if (abbrev->has_children)
9370     return skip_children (reader, info_ptr);
9371   else
9372     return info_ptr;
9373 }
9374
9375 /* Locate ORIG_PDI's sibling.
9376    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9377
9378 static const gdb_byte *
9379 locate_pdi_sibling (const struct die_reader_specs *reader,
9380                     struct partial_die_info *orig_pdi,
9381                     const gdb_byte *info_ptr)
9382 {
9383   /* Do we know the sibling already?  */
9384
9385   if (orig_pdi->sibling)
9386     return orig_pdi->sibling;
9387
9388   /* Are there any children to deal with?  */
9389
9390   if (!orig_pdi->has_children)
9391     return info_ptr;
9392
9393   /* Skip the children the long way.  */
9394
9395   return skip_children (reader, info_ptr);
9396 }
9397
9398 /* Expand this partial symbol table into a full symbol table.  SELF is
9399    not NULL.  */
9400
9401 static void
9402 dwarf2_read_symtab (struct partial_symtab *self,
9403                     struct objfile *objfile)
9404 {
9405   struct dwarf2_per_objfile *dwarf2_per_objfile
9406     = get_dwarf2_per_objfile (objfile);
9407
9408   if (self->readin)
9409     {
9410       warning (_("bug: psymtab for %s is already read in."),
9411                self->filename);
9412     }
9413   else
9414     {
9415       if (info_verbose)
9416         {
9417           printf_filtered (_("Reading in symbols for %s..."),
9418                            self->filename);
9419           gdb_flush (gdb_stdout);
9420         }
9421
9422       /* If this psymtab is constructed from a debug-only objfile, the
9423          has_section_at_zero flag will not necessarily be correct.  We
9424          can get the correct value for this flag by looking at the data
9425          associated with the (presumably stripped) associated objfile.  */
9426       if (objfile->separate_debug_objfile_backlink)
9427         {
9428           struct dwarf2_per_objfile *dpo_backlink
9429             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9430
9431           dwarf2_per_objfile->has_section_at_zero
9432             = dpo_backlink->has_section_at_zero;
9433         }
9434
9435       dwarf2_per_objfile->reading_partial_symbols = 0;
9436
9437       psymtab_to_symtab_1 (self);
9438
9439       /* Finish up the debug error message.  */
9440       if (info_verbose)
9441         printf_filtered (_("done.\n"));
9442     }
9443
9444   process_cu_includes (dwarf2_per_objfile);
9445 }
9446 \f
9447 /* Reading in full CUs.  */
9448
9449 /* Add PER_CU to the queue.  */
9450
9451 static void
9452 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9453                  enum language pretend_language)
9454 {
9455   struct dwarf2_queue_item *item;
9456
9457   per_cu->queued = 1;
9458   item = XNEW (struct dwarf2_queue_item);
9459   item->per_cu = per_cu;
9460   item->pretend_language = pretend_language;
9461   item->next = NULL;
9462
9463   if (dwarf2_queue == NULL)
9464     dwarf2_queue = item;
9465   else
9466     dwarf2_queue_tail->next = item;
9467
9468   dwarf2_queue_tail = item;
9469 }
9470
9471 /* If PER_CU is not yet queued, add it to the queue.
9472    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9473    dependency.
9474    The result is non-zero if PER_CU was queued, otherwise the result is zero
9475    meaning either PER_CU is already queued or it is already loaded.
9476
9477    N.B. There is an invariant here that if a CU is queued then it is loaded.
9478    The caller is required to load PER_CU if we return non-zero.  */
9479
9480 static int
9481 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9482                        struct dwarf2_per_cu_data *per_cu,
9483                        enum language pretend_language)
9484 {
9485   /* We may arrive here during partial symbol reading, if we need full
9486      DIEs to process an unusual case (e.g. template arguments).  Do
9487      not queue PER_CU, just tell our caller to load its DIEs.  */
9488   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9489     {
9490       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9491         return 1;
9492       return 0;
9493     }
9494
9495   /* Mark the dependence relation so that we don't flush PER_CU
9496      too early.  */
9497   if (dependent_cu != NULL)
9498     dwarf2_add_dependence (dependent_cu, per_cu);
9499
9500   /* If it's already on the queue, we have nothing to do.  */
9501   if (per_cu->queued)
9502     return 0;
9503
9504   /* If the compilation unit is already loaded, just mark it as
9505      used.  */
9506   if (per_cu->cu != NULL)
9507     {
9508       per_cu->cu->last_used = 0;
9509       return 0;
9510     }
9511
9512   /* Add it to the queue.  */
9513   queue_comp_unit (per_cu, pretend_language);
9514
9515   return 1;
9516 }
9517
9518 /* Process the queue.  */
9519
9520 static void
9521 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9522 {
9523   struct dwarf2_queue_item *item, *next_item;
9524
9525   if (dwarf_read_debug)
9526     {
9527       fprintf_unfiltered (gdb_stdlog,
9528                           "Expanding one or more symtabs of objfile %s ...\n",
9529                           objfile_name (dwarf2_per_objfile->objfile));
9530     }
9531
9532   /* The queue starts out with one item, but following a DIE reference
9533      may load a new CU, adding it to the end of the queue.  */
9534   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9535     {
9536       if ((dwarf2_per_objfile->using_index
9537            ? !item->per_cu->v.quick->compunit_symtab
9538            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9539           /* Skip dummy CUs.  */
9540           && item->per_cu->cu != NULL)
9541         {
9542           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9543           unsigned int debug_print_threshold;
9544           char buf[100];
9545
9546           if (per_cu->is_debug_types)
9547             {
9548               struct signatured_type *sig_type =
9549                 (struct signatured_type *) per_cu;
9550
9551               sprintf (buf, "TU %s at offset %s",
9552                        hex_string (sig_type->signature),
9553                        sect_offset_str (per_cu->sect_off));
9554               /* There can be 100s of TUs.
9555                  Only print them in verbose mode.  */
9556               debug_print_threshold = 2;
9557             }
9558           else
9559             {
9560               sprintf (buf, "CU at offset %s",
9561                        sect_offset_str (per_cu->sect_off));
9562               debug_print_threshold = 1;
9563             }
9564
9565           if (dwarf_read_debug >= debug_print_threshold)
9566             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9567
9568           if (per_cu->is_debug_types)
9569             process_full_type_unit (per_cu, item->pretend_language);
9570           else
9571             process_full_comp_unit (per_cu, item->pretend_language);
9572
9573           if (dwarf_read_debug >= debug_print_threshold)
9574             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9575         }
9576
9577       item->per_cu->queued = 0;
9578       next_item = item->next;
9579       xfree (item);
9580     }
9581
9582   dwarf2_queue_tail = NULL;
9583
9584   if (dwarf_read_debug)
9585     {
9586       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9587                           objfile_name (dwarf2_per_objfile->objfile));
9588     }
9589 }
9590
9591 /* Read in full symbols for PST, and anything it depends on.  */
9592
9593 static void
9594 psymtab_to_symtab_1 (struct partial_symtab *pst)
9595 {
9596   struct dwarf2_per_cu_data *per_cu;
9597   int i;
9598
9599   if (pst->readin)
9600     return;
9601
9602   for (i = 0; i < pst->number_of_dependencies; i++)
9603     if (!pst->dependencies[i]->readin
9604         && pst->dependencies[i]->user == NULL)
9605       {
9606         /* Inform about additional files that need to be read in.  */
9607         if (info_verbose)
9608           {
9609             /* FIXME: i18n: Need to make this a single string.  */
9610             fputs_filtered (" ", gdb_stdout);
9611             wrap_here ("");
9612             fputs_filtered ("and ", gdb_stdout);
9613             wrap_here ("");
9614             printf_filtered ("%s...", pst->dependencies[i]->filename);
9615             wrap_here ("");     /* Flush output.  */
9616             gdb_flush (gdb_stdout);
9617           }
9618         psymtab_to_symtab_1 (pst->dependencies[i]);
9619       }
9620
9621   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9622
9623   if (per_cu == NULL)
9624     {
9625       /* It's an include file, no symbols to read for it.
9626          Everything is in the parent symtab.  */
9627       pst->readin = 1;
9628       return;
9629     }
9630
9631   dw2_do_instantiate_symtab (per_cu, false);
9632 }
9633
9634 /* Trivial hash function for die_info: the hash value of a DIE
9635    is its offset in .debug_info for this objfile.  */
9636
9637 static hashval_t
9638 die_hash (const void *item)
9639 {
9640   const struct die_info *die = (const struct die_info *) item;
9641
9642   return to_underlying (die->sect_off);
9643 }
9644
9645 /* Trivial comparison function for die_info structures: two DIEs
9646    are equal if they have the same offset.  */
9647
9648 static int
9649 die_eq (const void *item_lhs, const void *item_rhs)
9650 {
9651   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9652   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9653
9654   return die_lhs->sect_off == die_rhs->sect_off;
9655 }
9656
9657 /* die_reader_func for load_full_comp_unit.
9658    This is identical to read_signatured_type_reader,
9659    but is kept separate for now.  */
9660
9661 static void
9662 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9663                             const gdb_byte *info_ptr,
9664                             struct die_info *comp_unit_die,
9665                             int has_children,
9666                             void *data)
9667 {
9668   struct dwarf2_cu *cu = reader->cu;
9669   enum language *language_ptr = (enum language *) data;
9670
9671   gdb_assert (cu->die_hash == NULL);
9672   cu->die_hash =
9673     htab_create_alloc_ex (cu->header.length / 12,
9674                           die_hash,
9675                           die_eq,
9676                           NULL,
9677                           &cu->comp_unit_obstack,
9678                           hashtab_obstack_allocate,
9679                           dummy_obstack_deallocate);
9680
9681   if (has_children)
9682     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9683                                                   &info_ptr, comp_unit_die);
9684   cu->dies = comp_unit_die;
9685   /* comp_unit_die is not stored in die_hash, no need.  */
9686
9687   /* We try not to read any attributes in this function, because not
9688      all CUs needed for references have been loaded yet, and symbol
9689      table processing isn't initialized.  But we have to set the CU language,
9690      or we won't be able to build types correctly.
9691      Similarly, if we do not read the producer, we can not apply
9692      producer-specific interpretation.  */
9693   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9694 }
9695
9696 /* Load the DIEs associated with PER_CU into memory.  */
9697
9698 static void
9699 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9700                      bool skip_partial,
9701                      enum language pretend_language)
9702 {
9703   gdb_assert (! this_cu->is_debug_types);
9704
9705   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9706                            load_full_comp_unit_reader, &pretend_language);
9707 }
9708
9709 /* Add a DIE to the delayed physname list.  */
9710
9711 static void
9712 add_to_method_list (struct type *type, int fnfield_index, int index,
9713                     const char *name, struct die_info *die,
9714                     struct dwarf2_cu *cu)
9715 {
9716   struct delayed_method_info mi;
9717   mi.type = type;
9718   mi.fnfield_index = fnfield_index;
9719   mi.index = index;
9720   mi.name = name;
9721   mi.die = die;
9722   cu->method_list.push_back (mi);
9723 }
9724
9725 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9726    "const" / "volatile".  If so, decrements LEN by the length of the
9727    modifier and return true.  Otherwise return false.  */
9728
9729 template<size_t N>
9730 static bool
9731 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9732 {
9733   size_t mod_len = sizeof (mod) - 1;
9734   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9735     {
9736       len -= mod_len;
9737       return true;
9738     }
9739   return false;
9740 }
9741
9742 /* Compute the physnames of any methods on the CU's method list.
9743
9744    The computation of method physnames is delayed in order to avoid the
9745    (bad) condition that one of the method's formal parameters is of an as yet
9746    incomplete type.  */
9747
9748 static void
9749 compute_delayed_physnames (struct dwarf2_cu *cu)
9750 {
9751   /* Only C++ delays computing physnames.  */
9752   if (cu->method_list.empty ())
9753     return;
9754   gdb_assert (cu->language == language_cplus);
9755
9756   for (const delayed_method_info &mi : cu->method_list)
9757     {
9758       const char *physname;
9759       struct fn_fieldlist *fn_flp
9760         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9761       physname = dwarf2_physname (mi.name, mi.die, cu);
9762       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9763         = physname ? physname : "";
9764
9765       /* Since there's no tag to indicate whether a method is a
9766          const/volatile overload, extract that information out of the
9767          demangled name.  */
9768       if (physname != NULL)
9769         {
9770           size_t len = strlen (physname);
9771
9772           while (1)
9773             {
9774               if (physname[len] == ')') /* shortcut */
9775                 break;
9776               else if (check_modifier (physname, len, " const"))
9777                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9778               else if (check_modifier (physname, len, " volatile"))
9779                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9780               else
9781                 break;
9782             }
9783         }
9784     }
9785
9786   /* The list is no longer needed.  */
9787   cu->method_list.clear ();
9788 }
9789
9790 /* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9791    the same as all other symbols in LISTHEAD.  If a new symbol is added
9792    with a different language, this function asserts.  */
9793
9794 static inline void
9795 dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9796 {
9797   /* Only assert if LISTHEAD already contains symbols of a different
9798      language (dict_create_hashed/insert_symbol_hashed requires that all
9799      symbols in this list are of the same language).  */
9800   gdb_assert ((*listhead) == NULL
9801               || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9802                   == SYMBOL_LANGUAGE (symbol)));
9803
9804   add_symbol_to_list (symbol, listhead);
9805 }
9806
9807 /* Go objects should be embedded in a DW_TAG_module DIE,
9808    and it's not clear if/how imported objects will appear.
9809    To keep Go support simple until that's worked out,
9810    go back through what we've read and create something usable.
9811    We could do this while processing each DIE, and feels kinda cleaner,
9812    but that way is more invasive.
9813    This is to, for example, allow the user to type "p var" or "b main"
9814    without having to specify the package name, and allow lookups
9815    of module.object to work in contexts that use the expression
9816    parser.  */
9817
9818 static void
9819 fixup_go_packaging (struct dwarf2_cu *cu)
9820 {
9821   char *package_name = NULL;
9822   struct pending *list;
9823   int i;
9824
9825   for (list = *cu->builder->get_global_symbols ();
9826        list != NULL;
9827        list = list->next)
9828     {
9829       for (i = 0; i < list->nsyms; ++i)
9830         {
9831           struct symbol *sym = list->symbol[i];
9832
9833           if (SYMBOL_LANGUAGE (sym) == language_go
9834               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9835             {
9836               char *this_package_name = go_symbol_package_name (sym);
9837
9838               if (this_package_name == NULL)
9839                 continue;
9840               if (package_name == NULL)
9841                 package_name = this_package_name;
9842               else
9843                 {
9844                   struct objfile *objfile
9845                     = cu->per_cu->dwarf2_per_objfile->objfile;
9846                   if (strcmp (package_name, this_package_name) != 0)
9847                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9848                                (symbol_symtab (sym) != NULL
9849                                 ? symtab_to_filename_for_display
9850                                     (symbol_symtab (sym))
9851                                 : objfile_name (objfile)),
9852                                this_package_name, package_name);
9853                   xfree (this_package_name);
9854                 }
9855             }
9856         }
9857     }
9858
9859   if (package_name != NULL)
9860     {
9861       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9862       const char *saved_package_name
9863         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9864                                         package_name,
9865                                         strlen (package_name));
9866       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9867                                      saved_package_name);
9868       struct symbol *sym;
9869
9870       sym = allocate_symbol (objfile);
9871       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9872       SYMBOL_SET_NAMES (sym, saved_package_name,
9873                         strlen (saved_package_name), 0, objfile);
9874       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9875          e.g., "main" finds the "main" module and not C's main().  */
9876       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9877       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9878       SYMBOL_TYPE (sym) = type;
9879
9880       dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
9881
9882       xfree (package_name);
9883     }
9884 }
9885
9886 /* Allocate a fully-qualified name consisting of the two parts on the
9887    obstack.  */
9888
9889 static const char *
9890 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9891 {
9892   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9893 }
9894
9895 /* A helper that allocates a struct discriminant_info to attach to a
9896    union type.  */
9897
9898 static struct discriminant_info *
9899 alloc_discriminant_info (struct type *type, int discriminant_index,
9900                          int default_index)
9901 {
9902   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9903   gdb_assert (discriminant_index == -1
9904               || (discriminant_index >= 0
9905                   && discriminant_index < TYPE_NFIELDS (type)));
9906   gdb_assert (default_index == -1
9907               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9908
9909   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9910
9911   struct discriminant_info *disc
9912     = ((struct discriminant_info *)
9913        TYPE_ZALLOC (type,
9914                     offsetof (struct discriminant_info, discriminants)
9915                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9916   disc->default_index = default_index;
9917   disc->discriminant_index = discriminant_index;
9918
9919   struct dynamic_prop prop;
9920   prop.kind = PROP_UNDEFINED;
9921   prop.data.baton = disc;
9922
9923   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9924
9925   return disc;
9926 }
9927
9928 /* Some versions of rustc emitted enums in an unusual way.
9929
9930    Ordinary enums were emitted as unions.  The first element of each
9931    structure in the union was named "RUST$ENUM$DISR".  This element
9932    held the discriminant.
9933
9934    These versions of Rust also implemented the "non-zero"
9935    optimization.  When the enum had two values, and one is empty and
9936    the other holds a pointer that cannot be zero, the pointer is used
9937    as the discriminant, with a zero value meaning the empty variant.
9938    Here, the union's first member is of the form
9939    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9940    where the fieldnos are the indices of the fields that should be
9941    traversed in order to find the field (which may be several fields deep)
9942    and the variantname is the name of the variant of the case when the
9943    field is zero.
9944
9945    This function recognizes whether TYPE is of one of these forms,
9946    and, if so, smashes it to be a variant type.  */
9947
9948 static void
9949 quirk_rust_enum (struct type *type, struct objfile *objfile)
9950 {
9951   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9952
9953   /* We don't need to deal with empty enums.  */
9954   if (TYPE_NFIELDS (type) == 0)
9955     return;
9956
9957 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9958   if (TYPE_NFIELDS (type) == 1
9959       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9960     {
9961       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9962
9963       /* Decode the field name to find the offset of the
9964          discriminant.  */
9965       ULONGEST bit_offset = 0;
9966       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9967       while (name[0] >= '0' && name[0] <= '9')
9968         {
9969           char *tail;
9970           unsigned long index = strtoul (name, &tail, 10);
9971           name = tail;
9972           if (*name != '$'
9973               || index >= TYPE_NFIELDS (field_type)
9974               || (TYPE_FIELD_LOC_KIND (field_type, index)
9975                   != FIELD_LOC_KIND_BITPOS))
9976             {
9977               complaint (_("Could not parse Rust enum encoding string \"%s\""
9978                            "[in module %s]"),
9979                          TYPE_FIELD_NAME (type, 0),
9980                          objfile_name (objfile));
9981               return;
9982             }
9983           ++name;
9984
9985           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9986           field_type = TYPE_FIELD_TYPE (field_type, index);
9987         }
9988
9989       /* Make a union to hold the variants.  */
9990       struct type *union_type = alloc_type (objfile);
9991       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9992       TYPE_NFIELDS (union_type) = 3;
9993       TYPE_FIELDS (union_type)
9994         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9995       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9996       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9997
9998       /* Put the discriminant must at index 0.  */
9999       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10000       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10001       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10002       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10003
10004       /* The order of fields doesn't really matter, so put the real
10005          field at index 1 and the data-less field at index 2.  */
10006       struct discriminant_info *disc
10007         = alloc_discriminant_info (union_type, 0, 1);
10008       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10009       TYPE_FIELD_NAME (union_type, 1)
10010         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10011       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10012         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10013                               TYPE_FIELD_NAME (union_type, 1));
10014
10015       const char *dataless_name
10016         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10017                               name);
10018       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10019                                               dataless_name);
10020       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10021       /* NAME points into the original discriminant name, which
10022          already has the correct lifetime.  */
10023       TYPE_FIELD_NAME (union_type, 2) = name;
10024       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10025       disc->discriminants[2] = 0;
10026
10027       /* Smash this type to be a structure type.  We have to do this
10028          because the type has already been recorded.  */
10029       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10030       TYPE_NFIELDS (type) = 1;
10031       TYPE_FIELDS (type)
10032         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10033
10034       /* Install the variant part.  */
10035       TYPE_FIELD_TYPE (type, 0) = union_type;
10036       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10037       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10038     }
10039   else if (TYPE_NFIELDS (type) == 1)
10040     {
10041       /* We assume that a union with a single field is a univariant
10042          enum.  */
10043       /* Smash this type to be a structure type.  We have to do this
10044          because the type has already been recorded.  */
10045       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10046
10047       /* Make a union to hold the variants.  */
10048       struct type *union_type = alloc_type (objfile);
10049       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10050       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10051       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10052       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10053       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10054
10055       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10056       const char *variant_name
10057         = rust_last_path_segment (TYPE_NAME (field_type));
10058       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10059       TYPE_NAME (field_type)
10060         = rust_fully_qualify (&objfile->objfile_obstack,
10061                               TYPE_NAME (type), variant_name);
10062
10063       /* Install the union in the outer struct type.  */
10064       TYPE_NFIELDS (type) = 1;
10065       TYPE_FIELDS (type)
10066         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10067       TYPE_FIELD_TYPE (type, 0) = union_type;
10068       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10069       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10070
10071       alloc_discriminant_info (union_type, -1, 0);
10072     }
10073   else
10074     {
10075       struct type *disr_type = nullptr;
10076       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10077         {
10078           disr_type = TYPE_FIELD_TYPE (type, i);
10079
10080           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10081             {
10082               /* All fields of a true enum will be structs.  */
10083               return;
10084             }
10085           else if (TYPE_NFIELDS (disr_type) == 0)
10086             {
10087               /* Could be data-less variant, so keep going.  */
10088               disr_type = nullptr;
10089             }
10090           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10091                            "RUST$ENUM$DISR") != 0)
10092             {
10093               /* Not a Rust enum.  */
10094               return;
10095             }
10096           else
10097             {
10098               /* Found one.  */
10099               break;
10100             }
10101         }
10102
10103       /* If we got here without a discriminant, then it's probably
10104          just a union.  */
10105       if (disr_type == nullptr)
10106         return;
10107
10108       /* Smash this type to be a structure type.  We have to do this
10109          because the type has already been recorded.  */
10110       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10111
10112       /* Make a union to hold the variants.  */
10113       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10114       struct type *union_type = alloc_type (objfile);
10115       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10116       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10117       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10118       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10119       TYPE_FIELDS (union_type)
10120         = (struct field *) TYPE_ZALLOC (union_type,
10121                                         (TYPE_NFIELDS (union_type)
10122                                          * sizeof (struct field)));
10123
10124       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10125               TYPE_NFIELDS (type) * sizeof (struct field));
10126
10127       /* Install the discriminant at index 0 in the union.  */
10128       TYPE_FIELD (union_type, 0) = *disr_field;
10129       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10130       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10131
10132       /* Install the union in the outer struct type.  */
10133       TYPE_FIELD_TYPE (type, 0) = union_type;
10134       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10135       TYPE_NFIELDS (type) = 1;
10136
10137       /* Set the size and offset of the union type.  */
10138       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10139
10140       /* We need a way to find the correct discriminant given a
10141          variant name.  For convenience we build a map here.  */
10142       struct type *enum_type = FIELD_TYPE (*disr_field);
10143       std::unordered_map<std::string, ULONGEST> discriminant_map;
10144       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10145         {
10146           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10147             {
10148               const char *name
10149                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10150               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10151             }
10152         }
10153
10154       int n_fields = TYPE_NFIELDS (union_type);
10155       struct discriminant_info *disc
10156         = alloc_discriminant_info (union_type, 0, -1);
10157       /* Skip the discriminant here.  */
10158       for (int i = 1; i < n_fields; ++i)
10159         {
10160           /* Find the final word in the name of this variant's type.
10161              That name can be used to look up the correct
10162              discriminant.  */
10163           const char *variant_name
10164             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10165                                                                   i)));
10166
10167           auto iter = discriminant_map.find (variant_name);
10168           if (iter != discriminant_map.end ())
10169             disc->discriminants[i] = iter->second;
10170
10171           /* Remove the discriminant field, if it exists.  */
10172           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10173           if (TYPE_NFIELDS (sub_type) > 0)
10174             {
10175               --TYPE_NFIELDS (sub_type);
10176               ++TYPE_FIELDS (sub_type);
10177             }
10178           TYPE_FIELD_NAME (union_type, i) = variant_name;
10179           TYPE_NAME (sub_type)
10180             = rust_fully_qualify (&objfile->objfile_obstack,
10181                                   TYPE_NAME (type), variant_name);
10182         }
10183     }
10184 }
10185
10186 /* Rewrite some Rust unions to be structures with variants parts.  */
10187
10188 static void
10189 rust_union_quirks (struct dwarf2_cu *cu)
10190 {
10191   gdb_assert (cu->language == language_rust);
10192   for (type *type_ : cu->rust_unions)
10193     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10194   /* We don't need this any more.  */
10195   cu->rust_unions.clear ();
10196 }
10197
10198 /* Return the symtab for PER_CU.  This works properly regardless of
10199    whether we're using the index or psymtabs.  */
10200
10201 static struct compunit_symtab *
10202 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10203 {
10204   return (per_cu->dwarf2_per_objfile->using_index
10205           ? per_cu->v.quick->compunit_symtab
10206           : per_cu->v.psymtab->compunit_symtab);
10207 }
10208
10209 /* A helper function for computing the list of all symbol tables
10210    included by PER_CU.  */
10211
10212 static void
10213 recursively_compute_inclusions (std::vector<compunit_symtab *> *result,
10214                                 htab_t all_children, htab_t all_type_symtabs,
10215                                 struct dwarf2_per_cu_data *per_cu,
10216                                 struct compunit_symtab *immediate_parent)
10217 {
10218   void **slot;
10219   int ix;
10220   struct compunit_symtab *cust;
10221   struct dwarf2_per_cu_data *iter;
10222
10223   slot = htab_find_slot (all_children, per_cu, INSERT);
10224   if (*slot != NULL)
10225     {
10226       /* This inclusion and its children have been processed.  */
10227       return;
10228     }
10229
10230   *slot = per_cu;
10231   /* Only add a CU if it has a symbol table.  */
10232   cust = get_compunit_symtab (per_cu);
10233   if (cust != NULL)
10234     {
10235       /* If this is a type unit only add its symbol table if we haven't
10236          seen it yet (type unit per_cu's can share symtabs).  */
10237       if (per_cu->is_debug_types)
10238         {
10239           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10240           if (*slot == NULL)
10241             {
10242               *slot = cust;
10243               result->push_back (cust);
10244               if (cust->user == NULL)
10245                 cust->user = immediate_parent;
10246             }
10247         }
10248       else
10249         {
10250           result->push_back (cust);
10251           if (cust->user == NULL)
10252             cust->user = immediate_parent;
10253         }
10254     }
10255
10256   for (ix = 0;
10257        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10258        ++ix)
10259     {
10260       recursively_compute_inclusions (result, all_children,
10261                                       all_type_symtabs, iter, cust);
10262     }
10263 }
10264
10265 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10266    PER_CU.  */
10267
10268 static void
10269 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10270 {
10271   gdb_assert (! per_cu->is_debug_types);
10272
10273   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10274     {
10275       int ix, len;
10276       struct dwarf2_per_cu_data *per_cu_iter;
10277       std::vector<compunit_symtab *> result_symtabs;
10278       htab_t all_children, all_type_symtabs;
10279       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10280
10281       /* If we don't have a symtab, we can just skip this case.  */
10282       if (cust == NULL)
10283         return;
10284
10285       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10286                                         NULL, xcalloc, xfree);
10287       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10288                                             NULL, xcalloc, xfree);
10289
10290       for (ix = 0;
10291            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10292                         ix, per_cu_iter);
10293            ++ix)
10294         {
10295           recursively_compute_inclusions (&result_symtabs, all_children,
10296                                           all_type_symtabs, per_cu_iter,
10297                                           cust);
10298         }
10299
10300       /* Now we have a transitive closure of all the included symtabs.  */
10301       len = result_symtabs.size ();
10302       cust->includes
10303         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10304                      struct compunit_symtab *, len + 1);
10305       memcpy (cust->includes, result_symtabs.data (),
10306               len * sizeof (compunit_symtab *));
10307       cust->includes[len] = NULL;
10308
10309       htab_delete (all_children);
10310       htab_delete (all_type_symtabs);
10311     }
10312 }
10313
10314 /* Compute the 'includes' field for the symtabs of all the CUs we just
10315    read.  */
10316
10317 static void
10318 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10319 {
10320   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10321     {
10322       if (! iter->is_debug_types)
10323         compute_compunit_symtab_includes (iter);
10324     }
10325
10326   dwarf2_per_objfile->just_read_cus.clear ();
10327 }
10328
10329 /* Generate full symbol information for PER_CU, whose DIEs have
10330    already been loaded into memory.  */
10331
10332 static void
10333 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10334                         enum language pretend_language)
10335 {
10336   struct dwarf2_cu *cu = per_cu->cu;
10337   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10338   struct objfile *objfile = dwarf2_per_objfile->objfile;
10339   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10340   CORE_ADDR lowpc, highpc;
10341   struct compunit_symtab *cust;
10342   CORE_ADDR baseaddr;
10343   struct block *static_block;
10344   CORE_ADDR addr;
10345
10346   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10347
10348   /* Clear the list here in case something was left over.  */
10349   cu->method_list.clear ();
10350
10351   cu->language = pretend_language;
10352   cu->language_defn = language_def (cu->language);
10353
10354   /* Do line number decoding in read_file_scope () */
10355   process_die (cu->dies, cu);
10356
10357   /* For now fudge the Go package.  */
10358   if (cu->language == language_go)
10359     fixup_go_packaging (cu);
10360
10361   /* Now that we have processed all the DIEs in the CU, all the types 
10362      should be complete, and it should now be safe to compute all of the
10363      physnames.  */
10364   compute_delayed_physnames (cu);
10365
10366   if (cu->language == language_rust)
10367     rust_union_quirks (cu);
10368
10369   /* Some compilers don't define a DW_AT_high_pc attribute for the
10370      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10371      it, by scanning the DIE's below the compilation unit.  */
10372   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10373
10374   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10375   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10376
10377   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10378      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10379      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10380      addrmap to help ensure it has an accurate map of pc values belonging to
10381      this comp unit.  */
10382   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10383
10384   cust = cu->builder->end_symtab_from_static_block (static_block,
10385                                                     SECT_OFF_TEXT (objfile),
10386                                                     0);
10387
10388   if (cust != NULL)
10389     {
10390       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10391
10392       /* Set symtab language to language from DW_AT_language.  If the
10393          compilation is from a C file generated by language preprocessors, do
10394          not set the language if it was already deduced by start_subfile.  */
10395       if (!(cu->language == language_c
10396             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10397         COMPUNIT_FILETABS (cust)->language = cu->language;
10398
10399       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10400          produce DW_AT_location with location lists but it can be possibly
10401          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10402          there were bugs in prologue debug info, fixed later in GCC-4.5
10403          by "unwind info for epilogues" patch (which is not directly related).
10404
10405          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10406          needed, it would be wrong due to missing DW_AT_producer there.
10407
10408          Still one can confuse GDB by using non-standard GCC compilation
10409          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10410          */ 
10411       if (cu->has_loclist && gcc_4_minor >= 5)
10412         cust->locations_valid = 1;
10413
10414       if (gcc_4_minor >= 5)
10415         cust->epilogue_unwind_valid = 1;
10416
10417       cust->call_site_htab = cu->call_site_htab;
10418     }
10419
10420   if (dwarf2_per_objfile->using_index)
10421     per_cu->v.quick->compunit_symtab = cust;
10422   else
10423     {
10424       struct partial_symtab *pst = per_cu->v.psymtab;
10425       pst->compunit_symtab = cust;
10426       pst->readin = 1;
10427     }
10428
10429   /* Push it for inclusion processing later.  */
10430   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10431
10432   /* Not needed any more.  */
10433   cu->builder.reset ();
10434 }
10435
10436 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10437    already been loaded into memory.  */
10438
10439 static void
10440 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10441                         enum language pretend_language)
10442 {
10443   struct dwarf2_cu *cu = per_cu->cu;
10444   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10445   struct objfile *objfile = dwarf2_per_objfile->objfile;
10446   struct compunit_symtab *cust;
10447   struct signatured_type *sig_type;
10448
10449   gdb_assert (per_cu->is_debug_types);
10450   sig_type = (struct signatured_type *) per_cu;
10451
10452   /* Clear the list here in case something was left over.  */
10453   cu->method_list.clear ();
10454
10455   cu->language = pretend_language;
10456   cu->language_defn = language_def (cu->language);
10457
10458   /* The symbol tables are set up in read_type_unit_scope.  */
10459   process_die (cu->dies, cu);
10460
10461   /* For now fudge the Go package.  */
10462   if (cu->language == language_go)
10463     fixup_go_packaging (cu);
10464
10465   /* Now that we have processed all the DIEs in the CU, all the types 
10466      should be complete, and it should now be safe to compute all of the
10467      physnames.  */
10468   compute_delayed_physnames (cu);
10469
10470   if (cu->language == language_rust)
10471     rust_union_quirks (cu);
10472
10473   /* TUs share symbol tables.
10474      If this is the first TU to use this symtab, complete the construction
10475      of it with end_expandable_symtab.  Otherwise, complete the addition of
10476      this TU's symbols to the existing symtab.  */
10477   if (sig_type->type_unit_group->compunit_symtab == NULL)
10478     {
10479       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10480       sig_type->type_unit_group->compunit_symtab = cust;
10481
10482       if (cust != NULL)
10483         {
10484           /* Set symtab language to language from DW_AT_language.  If the
10485              compilation is from a C file generated by language preprocessors,
10486              do not set the language if it was already deduced by
10487              start_subfile.  */
10488           if (!(cu->language == language_c
10489                 && COMPUNIT_FILETABS (cust)->language != language_c))
10490             COMPUNIT_FILETABS (cust)->language = cu->language;
10491         }
10492     }
10493   else
10494     {
10495       cu->builder->augment_type_symtab ();
10496       cust = sig_type->type_unit_group->compunit_symtab;
10497     }
10498
10499   if (dwarf2_per_objfile->using_index)
10500     per_cu->v.quick->compunit_symtab = cust;
10501   else
10502     {
10503       struct partial_symtab *pst = per_cu->v.psymtab;
10504       pst->compunit_symtab = cust;
10505       pst->readin = 1;
10506     }
10507
10508   /* Not needed any more.  */
10509   cu->builder.reset ();
10510 }
10511
10512 /* Process an imported unit DIE.  */
10513
10514 static void
10515 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10516 {
10517   struct attribute *attr;
10518
10519   /* For now we don't handle imported units in type units.  */
10520   if (cu->per_cu->is_debug_types)
10521     {
10522       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10523                " supported in type units [in module %s]"),
10524              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10525     }
10526
10527   attr = dwarf2_attr (die, DW_AT_import, cu);
10528   if (attr != NULL)
10529     {
10530       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10531       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10532       dwarf2_per_cu_data *per_cu
10533         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10534                                             cu->per_cu->dwarf2_per_objfile);
10535
10536       /* If necessary, add it to the queue and load its DIEs.  */
10537       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10538         load_full_comp_unit (per_cu, false, cu->language);
10539
10540       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10541                      per_cu);
10542     }
10543 }
10544
10545 /* RAII object that represents a process_die scope: i.e.,
10546    starts/finishes processing a DIE.  */
10547 class process_die_scope
10548 {
10549 public:
10550   process_die_scope (die_info *die, dwarf2_cu *cu)
10551     : m_die (die), m_cu (cu)
10552   {
10553     /* We should only be processing DIEs not already in process.  */
10554     gdb_assert (!m_die->in_process);
10555     m_die->in_process = true;
10556   }
10557
10558   ~process_die_scope ()
10559   {
10560     m_die->in_process = false;
10561
10562     /* If we're done processing the DIE for the CU that owns the line
10563        header, we don't need the line header anymore.  */
10564     if (m_cu->line_header_die_owner == m_die)
10565       {
10566         delete m_cu->line_header;
10567         m_cu->line_header = NULL;
10568         m_cu->line_header_die_owner = NULL;
10569       }
10570   }
10571
10572 private:
10573   die_info *m_die;
10574   dwarf2_cu *m_cu;
10575 };
10576
10577 /* Process a die and its children.  */
10578
10579 static void
10580 process_die (struct die_info *die, struct dwarf2_cu *cu)
10581 {
10582   process_die_scope scope (die, cu);
10583
10584   switch (die->tag)
10585     {
10586     case DW_TAG_padding:
10587       break;
10588     case DW_TAG_compile_unit:
10589     case DW_TAG_partial_unit:
10590       read_file_scope (die, cu);
10591       break;
10592     case DW_TAG_type_unit:
10593       read_type_unit_scope (die, cu);
10594       break;
10595     case DW_TAG_subprogram:
10596     case DW_TAG_inlined_subroutine:
10597       read_func_scope (die, cu);
10598       break;
10599     case DW_TAG_lexical_block:
10600     case DW_TAG_try_block:
10601     case DW_TAG_catch_block:
10602       read_lexical_block_scope (die, cu);
10603       break;
10604     case DW_TAG_call_site:
10605     case DW_TAG_GNU_call_site:
10606       read_call_site_scope (die, cu);
10607       break;
10608     case DW_TAG_class_type:
10609     case DW_TAG_interface_type:
10610     case DW_TAG_structure_type:
10611     case DW_TAG_union_type:
10612       process_structure_scope (die, cu);
10613       break;
10614     case DW_TAG_enumeration_type:
10615       process_enumeration_scope (die, cu);
10616       break;
10617
10618     /* These dies have a type, but processing them does not create
10619        a symbol or recurse to process the children.  Therefore we can
10620        read them on-demand through read_type_die.  */
10621     case DW_TAG_subroutine_type:
10622     case DW_TAG_set_type:
10623     case DW_TAG_array_type:
10624     case DW_TAG_pointer_type:
10625     case DW_TAG_ptr_to_member_type:
10626     case DW_TAG_reference_type:
10627     case DW_TAG_rvalue_reference_type:
10628     case DW_TAG_string_type:
10629       break;
10630
10631     case DW_TAG_base_type:
10632     case DW_TAG_subrange_type:
10633     case DW_TAG_typedef:
10634       /* Add a typedef symbol for the type definition, if it has a
10635          DW_AT_name.  */
10636       new_symbol (die, read_type_die (die, cu), cu);
10637       break;
10638     case DW_TAG_common_block:
10639       read_common_block (die, cu);
10640       break;
10641     case DW_TAG_common_inclusion:
10642       break;
10643     case DW_TAG_namespace:
10644       cu->processing_has_namespace_info = 1;
10645       read_namespace (die, cu);
10646       break;
10647     case DW_TAG_module:
10648       cu->processing_has_namespace_info = 1;
10649       read_module (die, cu);
10650       break;
10651     case DW_TAG_imported_declaration:
10652       cu->processing_has_namespace_info = 1;
10653       if (read_namespace_alias (die, cu))
10654         break;
10655       /* The declaration is not a global namespace alias.  */
10656       /* Fall through.  */
10657     case DW_TAG_imported_module:
10658       cu->processing_has_namespace_info = 1;
10659       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10660                                  || cu->language != language_fortran))
10661         complaint (_("Tag '%s' has unexpected children"),
10662                    dwarf_tag_name (die->tag));
10663       read_import_statement (die, cu);
10664       break;
10665
10666     case DW_TAG_imported_unit:
10667       process_imported_unit_die (die, cu);
10668       break;
10669
10670     case DW_TAG_variable:
10671       read_variable (die, cu);
10672       break;
10673
10674     default:
10675       new_symbol (die, NULL, cu);
10676       break;
10677     }
10678 }
10679 \f
10680 /* DWARF name computation.  */
10681
10682 /* A helper function for dwarf2_compute_name which determines whether DIE
10683    needs to have the name of the scope prepended to the name listed in the
10684    die.  */
10685
10686 static int
10687 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10688 {
10689   struct attribute *attr;
10690
10691   switch (die->tag)
10692     {
10693     case DW_TAG_namespace:
10694     case DW_TAG_typedef:
10695     case DW_TAG_class_type:
10696     case DW_TAG_interface_type:
10697     case DW_TAG_structure_type:
10698     case DW_TAG_union_type:
10699     case DW_TAG_enumeration_type:
10700     case DW_TAG_enumerator:
10701     case DW_TAG_subprogram:
10702     case DW_TAG_inlined_subroutine:
10703     case DW_TAG_member:
10704     case DW_TAG_imported_declaration:
10705       return 1;
10706
10707     case DW_TAG_variable:
10708     case DW_TAG_constant:
10709       /* We only need to prefix "globally" visible variables.  These include
10710          any variable marked with DW_AT_external or any variable that
10711          lives in a namespace.  [Variables in anonymous namespaces
10712          require prefixing, but they are not DW_AT_external.]  */
10713
10714       if (dwarf2_attr (die, DW_AT_specification, cu))
10715         {
10716           struct dwarf2_cu *spec_cu = cu;
10717
10718           return die_needs_namespace (die_specification (die, &spec_cu),
10719                                       spec_cu);
10720         }
10721
10722       attr = dwarf2_attr (die, DW_AT_external, cu);
10723       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10724           && die->parent->tag != DW_TAG_module)
10725         return 0;
10726       /* A variable in a lexical block of some kind does not need a
10727          namespace, even though in C++ such variables may be external
10728          and have a mangled name.  */
10729       if (die->parent->tag ==  DW_TAG_lexical_block
10730           || die->parent->tag ==  DW_TAG_try_block
10731           || die->parent->tag ==  DW_TAG_catch_block
10732           || die->parent->tag == DW_TAG_subprogram)
10733         return 0;
10734       return 1;
10735
10736     default:
10737       return 0;
10738     }
10739 }
10740
10741 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10742    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10743    defined for the given DIE.  */
10744
10745 static struct attribute *
10746 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10747 {
10748   struct attribute *attr;
10749
10750   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10751   if (attr == NULL)
10752     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10753
10754   return attr;
10755 }
10756
10757 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10758    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10759    defined for the given DIE.  */
10760
10761 static const char *
10762 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10763 {
10764   const char *linkage_name;
10765
10766   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10767   if (linkage_name == NULL)
10768     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10769
10770   return linkage_name;
10771 }
10772
10773 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10774    compute the physname for the object, which include a method's:
10775    - formal parameters (C++),
10776    - receiver type (Go),
10777
10778    The term "physname" is a bit confusing.
10779    For C++, for example, it is the demangled name.
10780    For Go, for example, it's the mangled name.
10781
10782    For Ada, return the DIE's linkage name rather than the fully qualified
10783    name.  PHYSNAME is ignored..
10784
10785    The result is allocated on the objfile_obstack and canonicalized.  */
10786
10787 static const char *
10788 dwarf2_compute_name (const char *name,
10789                      struct die_info *die, struct dwarf2_cu *cu,
10790                      int physname)
10791 {
10792   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10793
10794   if (name == NULL)
10795     name = dwarf2_name (die, cu);
10796
10797   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10798      but otherwise compute it by typename_concat inside GDB.
10799      FIXME: Actually this is not really true, or at least not always true.
10800      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10801      Fortran names because there is no mangling standard.  So new_symbol
10802      will set the demangled name to the result of dwarf2_full_name, and it is
10803      the demangled name that GDB uses if it exists.  */
10804   if (cu->language == language_ada
10805       || (cu->language == language_fortran && physname))
10806     {
10807       /* For Ada unit, we prefer the linkage name over the name, as
10808          the former contains the exported name, which the user expects
10809          to be able to reference.  Ideally, we want the user to be able
10810          to reference this entity using either natural or linkage name,
10811          but we haven't started looking at this enhancement yet.  */
10812       const char *linkage_name = dw2_linkage_name (die, cu);
10813
10814       if (linkage_name != NULL)
10815         return linkage_name;
10816     }
10817
10818   /* These are the only languages we know how to qualify names in.  */
10819   if (name != NULL
10820       && (cu->language == language_cplus
10821           || cu->language == language_fortran || cu->language == language_d
10822           || cu->language == language_rust))
10823     {
10824       if (die_needs_namespace (die, cu))
10825         {
10826           const char *prefix;
10827           const char *canonical_name = NULL;
10828
10829           string_file buf;
10830
10831           prefix = determine_prefix (die, cu);
10832           if (*prefix != '\0')
10833             {
10834               char *prefixed_name = typename_concat (NULL, prefix, name,
10835                                                      physname, cu);
10836
10837               buf.puts (prefixed_name);
10838               xfree (prefixed_name);
10839             }
10840           else
10841             buf.puts (name);
10842
10843           /* Template parameters may be specified in the DIE's DW_AT_name, or
10844              as children with DW_TAG_template_type_param or
10845              DW_TAG_value_type_param.  If the latter, add them to the name
10846              here.  If the name already has template parameters, then
10847              skip this step; some versions of GCC emit both, and
10848              it is more efficient to use the pre-computed name.
10849
10850              Something to keep in mind about this process: it is very
10851              unlikely, or in some cases downright impossible, to produce
10852              something that will match the mangled name of a function.
10853              If the definition of the function has the same debug info,
10854              we should be able to match up with it anyway.  But fallbacks
10855              using the minimal symbol, for instance to find a method
10856              implemented in a stripped copy of libstdc++, will not work.
10857              If we do not have debug info for the definition, we will have to
10858              match them up some other way.
10859
10860              When we do name matching there is a related problem with function
10861              templates; two instantiated function templates are allowed to
10862              differ only by their return types, which we do not add here.  */
10863
10864           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10865             {
10866               struct attribute *attr;
10867               struct die_info *child;
10868               int first = 1;
10869
10870               die->building_fullname = 1;
10871
10872               for (child = die->child; child != NULL; child = child->sibling)
10873                 {
10874                   struct type *type;
10875                   LONGEST value;
10876                   const gdb_byte *bytes;
10877                   struct dwarf2_locexpr_baton *baton;
10878                   struct value *v;
10879
10880                   if (child->tag != DW_TAG_template_type_param
10881                       && child->tag != DW_TAG_template_value_param)
10882                     continue;
10883
10884                   if (first)
10885                     {
10886                       buf.puts ("<");
10887                       first = 0;
10888                     }
10889                   else
10890                     buf.puts (", ");
10891
10892                   attr = dwarf2_attr (child, DW_AT_type, cu);
10893                   if (attr == NULL)
10894                     {
10895                       complaint (_("template parameter missing DW_AT_type"));
10896                       buf.puts ("UNKNOWN_TYPE");
10897                       continue;
10898                     }
10899                   type = die_type (child, cu);
10900
10901                   if (child->tag == DW_TAG_template_type_param)
10902                     {
10903                       c_print_type (type, "", &buf, -1, 0, cu->language,
10904                                     &type_print_raw_options);
10905                       continue;
10906                     }
10907
10908                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10909                   if (attr == NULL)
10910                     {
10911                       complaint (_("template parameter missing "
10912                                    "DW_AT_const_value"));
10913                       buf.puts ("UNKNOWN_VALUE");
10914                       continue;
10915                     }
10916
10917                   dwarf2_const_value_attr (attr, type, name,
10918                                            &cu->comp_unit_obstack, cu,
10919                                            &value, &bytes, &baton);
10920
10921                   if (TYPE_NOSIGN (type))
10922                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10923                        changed, this can use value_print instead.  */
10924                     c_printchar (value, type, &buf);
10925                   else
10926                     {
10927                       struct value_print_options opts;
10928
10929                       if (baton != NULL)
10930                         v = dwarf2_evaluate_loc_desc (type, NULL,
10931                                                       baton->data,
10932                                                       baton->size,
10933                                                       baton->per_cu);
10934                       else if (bytes != NULL)
10935                         {
10936                           v = allocate_value (type);
10937                           memcpy (value_contents_writeable (v), bytes,
10938                                   TYPE_LENGTH (type));
10939                         }
10940                       else
10941                         v = value_from_longest (type, value);
10942
10943                       /* Specify decimal so that we do not depend on
10944                          the radix.  */
10945                       get_formatted_print_options (&opts, 'd');
10946                       opts.raw = 1;
10947                       value_print (v, &buf, &opts);
10948                       release_value (v);
10949                     }
10950                 }
10951
10952               die->building_fullname = 0;
10953
10954               if (!first)
10955                 {
10956                   /* Close the argument list, with a space if necessary
10957                      (nested templates).  */
10958                   if (!buf.empty () && buf.string ().back () == '>')
10959                     buf.puts (" >");
10960                   else
10961                     buf.puts (">");
10962                 }
10963             }
10964
10965           /* For C++ methods, append formal parameter type
10966              information, if PHYSNAME.  */
10967
10968           if (physname && die->tag == DW_TAG_subprogram
10969               && cu->language == language_cplus)
10970             {
10971               struct type *type = read_type_die (die, cu);
10972
10973               c_type_print_args (type, &buf, 1, cu->language,
10974                                  &type_print_raw_options);
10975
10976               if (cu->language == language_cplus)
10977                 {
10978                   /* Assume that an artificial first parameter is
10979                      "this", but do not crash if it is not.  RealView
10980                      marks unnamed (and thus unused) parameters as
10981                      artificial; there is no way to differentiate
10982                      the two cases.  */
10983                   if (TYPE_NFIELDS (type) > 0
10984                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10985                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10986                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10987                                                                         0))))
10988                     buf.puts (" const");
10989                 }
10990             }
10991
10992           const std::string &intermediate_name = buf.string ();
10993
10994           if (cu->language == language_cplus)
10995             canonical_name
10996               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
10997                                           &objfile->per_bfd->storage_obstack);
10998
10999           /* If we only computed INTERMEDIATE_NAME, or if
11000              INTERMEDIATE_NAME is already canonical, then we need to
11001              copy it to the appropriate obstack.  */
11002           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11003             name = ((const char *)
11004                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11005                                    intermediate_name.c_str (),
11006                                    intermediate_name.length ()));
11007           else
11008             name = canonical_name;
11009         }
11010     }
11011
11012   return name;
11013 }
11014
11015 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11016    If scope qualifiers are appropriate they will be added.  The result
11017    will be allocated on the storage_obstack, or NULL if the DIE does
11018    not have a name.  NAME may either be from a previous call to
11019    dwarf2_name or NULL.
11020
11021    The output string will be canonicalized (if C++).  */
11022
11023 static const char *
11024 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11025 {
11026   return dwarf2_compute_name (name, die, cu, 0);
11027 }
11028
11029 /* Construct a physname for the given DIE in CU.  NAME may either be
11030    from a previous call to dwarf2_name or NULL.  The result will be
11031    allocated on the objfile_objstack or NULL if the DIE does not have a
11032    name.
11033
11034    The output string will be canonicalized (if C++).  */
11035
11036 static const char *
11037 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11038 {
11039   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11040   const char *retval, *mangled = NULL, *canon = NULL;
11041   int need_copy = 1;
11042
11043   /* In this case dwarf2_compute_name is just a shortcut not building anything
11044      on its own.  */
11045   if (!die_needs_namespace (die, cu))
11046     return dwarf2_compute_name (name, die, cu, 1);
11047
11048   mangled = dw2_linkage_name (die, cu);
11049
11050   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11051      See https://github.com/rust-lang/rust/issues/32925.  */
11052   if (cu->language == language_rust && mangled != NULL
11053       && strchr (mangled, '{') != NULL)
11054     mangled = NULL;
11055
11056   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11057      has computed.  */
11058   gdb::unique_xmalloc_ptr<char> demangled;
11059   if (mangled != NULL)
11060     {
11061
11062       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11063         {
11064           /* Do nothing (do not demangle the symbol name).  */
11065         }
11066       else if (cu->language == language_go)
11067         {
11068           /* This is a lie, but we already lie to the caller new_symbol.
11069              new_symbol assumes we return the mangled name.
11070              This just undoes that lie until things are cleaned up.  */
11071         }
11072       else
11073         {
11074           /* Use DMGL_RET_DROP for C++ template functions to suppress
11075              their return type.  It is easier for GDB users to search
11076              for such functions as `name(params)' than `long name(params)'.
11077              In such case the minimal symbol names do not match the full
11078              symbol names but for template functions there is never a need
11079              to look up their definition from their declaration so
11080              the only disadvantage remains the minimal symbol variant
11081              `long name(params)' does not have the proper inferior type.  */
11082           demangled.reset (gdb_demangle (mangled,
11083                                          (DMGL_PARAMS | DMGL_ANSI
11084                                           | DMGL_RET_DROP)));
11085         }
11086       if (demangled)
11087         canon = demangled.get ();
11088       else
11089         {
11090           canon = mangled;
11091           need_copy = 0;
11092         }
11093     }
11094
11095   if (canon == NULL || check_physname)
11096     {
11097       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11098
11099       if (canon != NULL && strcmp (physname, canon) != 0)
11100         {
11101           /* It may not mean a bug in GDB.  The compiler could also
11102              compute DW_AT_linkage_name incorrectly.  But in such case
11103              GDB would need to be bug-to-bug compatible.  */
11104
11105           complaint (_("Computed physname <%s> does not match demangled <%s> "
11106                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11107                      physname, canon, mangled, sect_offset_str (die->sect_off),
11108                      objfile_name (objfile));
11109
11110           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11111              is available here - over computed PHYSNAME.  It is safer
11112              against both buggy GDB and buggy compilers.  */
11113
11114           retval = canon;
11115         }
11116       else
11117         {
11118           retval = physname;
11119           need_copy = 0;
11120         }
11121     }
11122   else
11123     retval = canon;
11124
11125   if (need_copy)
11126     retval = ((const char *)
11127               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11128                              retval, strlen (retval)));
11129
11130   return retval;
11131 }
11132
11133 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11134    a new symbol for it.
11135
11136    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11137
11138 static int
11139 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11140 {
11141   struct attribute *attr;
11142
11143   /* If the die does not have a name, this is not a namespace
11144      alias.  */
11145   attr = dwarf2_attr (die, DW_AT_name, cu);
11146   if (attr != NULL)
11147     {
11148       int num;
11149       struct die_info *d = die;
11150       struct dwarf2_cu *imported_cu = cu;
11151
11152       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11153          keep inspecting DIEs until we hit the underlying import.  */
11154 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11155       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11156         {
11157           attr = dwarf2_attr (d, DW_AT_import, cu);
11158           if (attr == NULL)
11159             break;
11160
11161           d = follow_die_ref (d, attr, &imported_cu);
11162           if (d->tag != DW_TAG_imported_declaration)
11163             break;
11164         }
11165
11166       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11167         {
11168           complaint (_("DIE at %s has too many recursively imported "
11169                        "declarations"), sect_offset_str (d->sect_off));
11170           return 0;
11171         }
11172
11173       if (attr != NULL)
11174         {
11175           struct type *type;
11176           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11177
11178           type = get_die_type_at_offset (sect_off, cu->per_cu);
11179           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11180             {
11181               /* This declaration is a global namespace alias.  Add
11182                  a symbol for it whose type is the aliased namespace.  */
11183               new_symbol (die, type, cu);
11184               return 1;
11185             }
11186         }
11187     }
11188
11189   return 0;
11190 }
11191
11192 /* Return the using directives repository (global or local?) to use in the
11193    current context for CU.
11194
11195    For Ada, imported declarations can materialize renamings, which *may* be
11196    global.  However it is impossible (for now?) in DWARF to distinguish
11197    "external" imported declarations and "static" ones.  As all imported
11198    declarations seem to be static in all other languages, make them all CU-wide
11199    global only in Ada.  */
11200
11201 static struct using_direct **
11202 using_directives (struct dwarf2_cu *cu)
11203 {
11204   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11205     return cu->builder->get_global_using_directives ();
11206   else
11207     return cu->builder->get_local_using_directives ();
11208 }
11209
11210 /* Read the import statement specified by the given die and record it.  */
11211
11212 static void
11213 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11214 {
11215   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11216   struct attribute *import_attr;
11217   struct die_info *imported_die, *child_die;
11218   struct dwarf2_cu *imported_cu;
11219   const char *imported_name;
11220   const char *imported_name_prefix;
11221   const char *canonical_name;
11222   const char *import_alias;
11223   const char *imported_declaration = NULL;
11224   const char *import_prefix;
11225   std::vector<const char *> excludes;
11226
11227   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11228   if (import_attr == NULL)
11229     {
11230       complaint (_("Tag '%s' has no DW_AT_import"),
11231                  dwarf_tag_name (die->tag));
11232       return;
11233     }
11234
11235   imported_cu = cu;
11236   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11237   imported_name = dwarf2_name (imported_die, imported_cu);
11238   if (imported_name == NULL)
11239     {
11240       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11241
11242         The import in the following code:
11243         namespace A
11244           {
11245             typedef int B;
11246           }
11247
11248         int main ()
11249           {
11250             using A::B;
11251             B b;
11252             return b;
11253           }
11254
11255         ...
11256          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11257             <52>   DW_AT_decl_file   : 1
11258             <53>   DW_AT_decl_line   : 6
11259             <54>   DW_AT_import      : <0x75>
11260          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11261             <59>   DW_AT_name        : B
11262             <5b>   DW_AT_decl_file   : 1
11263             <5c>   DW_AT_decl_line   : 2
11264             <5d>   DW_AT_type        : <0x6e>
11265         ...
11266          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11267             <76>   DW_AT_byte_size   : 4
11268             <77>   DW_AT_encoding    : 5        (signed)
11269
11270         imports the wrong die ( 0x75 instead of 0x58 ).
11271         This case will be ignored until the gcc bug is fixed.  */
11272       return;
11273     }
11274
11275   /* Figure out the local name after import.  */
11276   import_alias = dwarf2_name (die, cu);
11277
11278   /* Figure out where the statement is being imported to.  */
11279   import_prefix = determine_prefix (die, cu);
11280
11281   /* Figure out what the scope of the imported die is and prepend it
11282      to the name of the imported die.  */
11283   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11284
11285   if (imported_die->tag != DW_TAG_namespace
11286       && imported_die->tag != DW_TAG_module)
11287     {
11288       imported_declaration = imported_name;
11289       canonical_name = imported_name_prefix;
11290     }
11291   else if (strlen (imported_name_prefix) > 0)
11292     canonical_name = obconcat (&objfile->objfile_obstack,
11293                                imported_name_prefix,
11294                                (cu->language == language_d ? "." : "::"),
11295                                imported_name, (char *) NULL);
11296   else
11297     canonical_name = imported_name;
11298
11299   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11300     for (child_die = die->child; child_die && child_die->tag;
11301          child_die = sibling_die (child_die))
11302       {
11303         /* DWARF-4: A Fortran use statement with a “rename list” may be
11304            represented by an imported module entry with an import attribute
11305            referring to the module and owned entries corresponding to those
11306            entities that are renamed as part of being imported.  */
11307
11308         if (child_die->tag != DW_TAG_imported_declaration)
11309           {
11310             complaint (_("child DW_TAG_imported_declaration expected "
11311                          "- DIE at %s [in module %s]"),
11312                        sect_offset_str (child_die->sect_off),
11313                        objfile_name (objfile));
11314             continue;
11315           }
11316
11317         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11318         if (import_attr == NULL)
11319           {
11320             complaint (_("Tag '%s' has no DW_AT_import"),
11321                        dwarf_tag_name (child_die->tag));
11322             continue;
11323           }
11324
11325         imported_cu = cu;
11326         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11327                                               &imported_cu);
11328         imported_name = dwarf2_name (imported_die, imported_cu);
11329         if (imported_name == NULL)
11330           {
11331             complaint (_("child DW_TAG_imported_declaration has unknown "
11332                          "imported name - DIE at %s [in module %s]"),
11333                        sect_offset_str (child_die->sect_off),
11334                        objfile_name (objfile));
11335             continue;
11336           }
11337
11338         excludes.push_back (imported_name);
11339
11340         process_die (child_die, cu);
11341       }
11342
11343   add_using_directive (using_directives (cu),
11344                        import_prefix,
11345                        canonical_name,
11346                        import_alias,
11347                        imported_declaration,
11348                        excludes,
11349                        0,
11350                        &objfile->objfile_obstack);
11351 }
11352
11353 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11354    types, but gives them a size of zero.  Starting with version 14,
11355    ICC is compatible with GCC.  */
11356
11357 static int
11358 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11359 {
11360   if (!cu->checked_producer)
11361     check_producer (cu);
11362
11363   return cu->producer_is_icc_lt_14;
11364 }
11365
11366 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11367    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11368    this, it was first present in GCC release 4.3.0.  */
11369
11370 static int
11371 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11372 {
11373   if (!cu->checked_producer)
11374     check_producer (cu);
11375
11376   return cu->producer_is_gcc_lt_4_3;
11377 }
11378
11379 static file_and_directory
11380 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11381 {
11382   file_and_directory res;
11383
11384   /* Find the filename.  Do not use dwarf2_name here, since the filename
11385      is not a source language identifier.  */
11386   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11387   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11388
11389   if (res.comp_dir == NULL
11390       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11391       && IS_ABSOLUTE_PATH (res.name))
11392     {
11393       res.comp_dir_storage = ldirname (res.name);
11394       if (!res.comp_dir_storage.empty ())
11395         res.comp_dir = res.comp_dir_storage.c_str ();
11396     }
11397   if (res.comp_dir != NULL)
11398     {
11399       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11400          directory, get rid of it.  */
11401       const char *cp = strchr (res.comp_dir, ':');
11402
11403       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11404         res.comp_dir = cp + 1;
11405     }
11406
11407   if (res.name == NULL)
11408     res.name = "<unknown>";
11409
11410   return res;
11411 }
11412
11413 /* Handle DW_AT_stmt_list for a compilation unit.
11414    DIE is the DW_TAG_compile_unit die for CU.
11415    COMP_DIR is the compilation directory.  LOWPC is passed to
11416    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11417
11418 static void
11419 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11420                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11421 {
11422   struct dwarf2_per_objfile *dwarf2_per_objfile
11423     = cu->per_cu->dwarf2_per_objfile;
11424   struct objfile *objfile = dwarf2_per_objfile->objfile;
11425   struct attribute *attr;
11426   struct line_header line_header_local;
11427   hashval_t line_header_local_hash;
11428   void **slot;
11429   int decode_mapping;
11430
11431   gdb_assert (! cu->per_cu->is_debug_types);
11432
11433   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11434   if (attr == NULL)
11435     return;
11436
11437   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11438
11439   /* The line header hash table is only created if needed (it exists to
11440      prevent redundant reading of the line table for partial_units).
11441      If we're given a partial_unit, we'll need it.  If we're given a
11442      compile_unit, then use the line header hash table if it's already
11443      created, but don't create one just yet.  */
11444
11445   if (dwarf2_per_objfile->line_header_hash == NULL
11446       && die->tag == DW_TAG_partial_unit)
11447     {
11448       dwarf2_per_objfile->line_header_hash
11449         = htab_create_alloc_ex (127, line_header_hash_voidp,
11450                                 line_header_eq_voidp,
11451                                 free_line_header_voidp,
11452                                 &objfile->objfile_obstack,
11453                                 hashtab_obstack_allocate,
11454                                 dummy_obstack_deallocate);
11455     }
11456
11457   line_header_local.sect_off = line_offset;
11458   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11459   line_header_local_hash = line_header_hash (&line_header_local);
11460   if (dwarf2_per_objfile->line_header_hash != NULL)
11461     {
11462       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11463                                        &line_header_local,
11464                                        line_header_local_hash, NO_INSERT);
11465
11466       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11467          is not present in *SLOT (since if there is something in *SLOT then
11468          it will be for a partial_unit).  */
11469       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11470         {
11471           gdb_assert (*slot != NULL);
11472           cu->line_header = (struct line_header *) *slot;
11473           return;
11474         }
11475     }
11476
11477   /* dwarf_decode_line_header does not yet provide sufficient information.
11478      We always have to call also dwarf_decode_lines for it.  */
11479   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11480   if (lh == NULL)
11481     return;
11482
11483   cu->line_header = lh.release ();
11484   cu->line_header_die_owner = die;
11485
11486   if (dwarf2_per_objfile->line_header_hash == NULL)
11487     slot = NULL;
11488   else
11489     {
11490       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11491                                        &line_header_local,
11492                                        line_header_local_hash, INSERT);
11493       gdb_assert (slot != NULL);
11494     }
11495   if (slot != NULL && *slot == NULL)
11496     {
11497       /* This newly decoded line number information unit will be owned
11498          by line_header_hash hash table.  */
11499       *slot = cu->line_header;
11500       cu->line_header_die_owner = NULL;
11501     }
11502   else
11503     {
11504       /* We cannot free any current entry in (*slot) as that struct line_header
11505          may be already used by multiple CUs.  Create only temporary decoded
11506          line_header for this CU - it may happen at most once for each line
11507          number information unit.  And if we're not using line_header_hash
11508          then this is what we want as well.  */
11509       gdb_assert (die->tag != DW_TAG_partial_unit);
11510     }
11511   decode_mapping = (die->tag != DW_TAG_partial_unit);
11512   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11513                       decode_mapping);
11514
11515 }
11516
11517 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11518
11519 static void
11520 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11521 {
11522   struct dwarf2_per_objfile *dwarf2_per_objfile
11523     = cu->per_cu->dwarf2_per_objfile;
11524   struct objfile *objfile = dwarf2_per_objfile->objfile;
11525   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11526   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11527   CORE_ADDR highpc = ((CORE_ADDR) 0);
11528   struct attribute *attr;
11529   struct die_info *child_die;
11530   CORE_ADDR baseaddr;
11531
11532   prepare_one_comp_unit (cu, die, cu->language);
11533   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11534
11535   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11536
11537   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11538      from finish_block.  */
11539   if (lowpc == ((CORE_ADDR) -1))
11540     lowpc = highpc;
11541   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11542
11543   file_and_directory fnd = find_file_and_directory (die, cu);
11544
11545   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11546      standardised yet.  As a workaround for the language detection we fall
11547      back to the DW_AT_producer string.  */
11548   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11549     cu->language = language_opencl;
11550
11551   /* Similar hack for Go.  */
11552   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11553     set_cu_language (DW_LANG_Go, cu);
11554
11555   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11556
11557   /* Decode line number information if present.  We do this before
11558      processing child DIEs, so that the line header table is available
11559      for DW_AT_decl_file.  */
11560   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11561
11562   /* Process all dies in compilation unit.  */
11563   if (die->child != NULL)
11564     {
11565       child_die = die->child;
11566       while (child_die && child_die->tag)
11567         {
11568           process_die (child_die, cu);
11569           child_die = sibling_die (child_die);
11570         }
11571     }
11572
11573   /* Decode macro information, if present.  Dwarf 2 macro information
11574      refers to information in the line number info statement program
11575      header, so we can only read it if we've read the header
11576      successfully.  */
11577   attr = dwarf2_attr (die, DW_AT_macros, cu);
11578   if (attr == NULL)
11579     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11580   if (attr && cu->line_header)
11581     {
11582       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11583         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11584
11585       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11586     }
11587   else
11588     {
11589       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11590       if (attr && cu->line_header)
11591         {
11592           unsigned int macro_offset = DW_UNSND (attr);
11593
11594           dwarf_decode_macros (cu, macro_offset, 0);
11595         }
11596     }
11597 }
11598
11599 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11600    Create the set of symtabs used by this TU, or if this TU is sharing
11601    symtabs with another TU and the symtabs have already been created
11602    then restore those symtabs in the line header.
11603    We don't need the pc/line-number mapping for type units.  */
11604
11605 static void
11606 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11607 {
11608   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11609   struct type_unit_group *tu_group;
11610   int first_time;
11611   struct attribute *attr;
11612   unsigned int i;
11613   struct signatured_type *sig_type;
11614
11615   gdb_assert (per_cu->is_debug_types);
11616   sig_type = (struct signatured_type *) per_cu;
11617
11618   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11619
11620   /* If we're using .gdb_index (includes -readnow) then
11621      per_cu->type_unit_group may not have been set up yet.  */
11622   if (sig_type->type_unit_group == NULL)
11623     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11624   tu_group = sig_type->type_unit_group;
11625
11626   /* If we've already processed this stmt_list there's no real need to
11627      do it again, we could fake it and just recreate the part we need
11628      (file name,index -> symtab mapping).  If data shows this optimization
11629      is useful we can do it then.  */
11630   first_time = tu_group->compunit_symtab == NULL;
11631
11632   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11633      debug info.  */
11634   line_header_up lh;
11635   if (attr != NULL)
11636     {
11637       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11638       lh = dwarf_decode_line_header (line_offset, cu);
11639     }
11640   if (lh == NULL)
11641     {
11642       if (first_time)
11643         dwarf2_start_symtab (cu, "", NULL, 0);
11644       else
11645         {
11646           gdb_assert (tu_group->symtabs == NULL);
11647           gdb_assert (cu->builder == nullptr);
11648           struct compunit_symtab *cust = tu_group->compunit_symtab;
11649           cu->builder.reset (new struct buildsym_compunit
11650                              (COMPUNIT_OBJFILE (cust), "",
11651                               COMPUNIT_DIRNAME (cust),
11652                               compunit_language (cust),
11653                               0, cust));
11654         }
11655       return;
11656     }
11657
11658   cu->line_header = lh.release ();
11659   cu->line_header_die_owner = die;
11660
11661   if (first_time)
11662     {
11663       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11664
11665       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11666          still initializing it, and our caller (a few levels up)
11667          process_full_type_unit still needs to know if this is the first
11668          time.  */
11669
11670       tu_group->num_symtabs = cu->line_header->file_names.size ();
11671       tu_group->symtabs = XNEWVEC (struct symtab *,
11672                                    cu->line_header->file_names.size ());
11673
11674       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11675         {
11676           file_entry &fe = cu->line_header->file_names[i];
11677
11678           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11679
11680           if (cu->builder->get_current_subfile ()->symtab == NULL)
11681             {
11682               /* NOTE: start_subfile will recognize when it's been
11683                  passed a file it has already seen.  So we can't
11684                  assume there's a simple mapping from
11685                  cu->line_header->file_names to subfiles, plus
11686                  cu->line_header->file_names may contain dups.  */
11687               cu->builder->get_current_subfile ()->symtab
11688                 = allocate_symtab (cust,
11689                                    cu->builder->get_current_subfile ()->name);
11690             }
11691
11692           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11693           tu_group->symtabs[i] = fe.symtab;
11694         }
11695     }
11696   else
11697     {
11698       gdb_assert (cu->builder == nullptr);
11699       struct compunit_symtab *cust = tu_group->compunit_symtab;
11700       cu->builder.reset (new struct buildsym_compunit
11701                          (COMPUNIT_OBJFILE (cust), "",
11702                           COMPUNIT_DIRNAME (cust),
11703                           compunit_language (cust),
11704                           0, cust));
11705
11706       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11707         {
11708           file_entry &fe = cu->line_header->file_names[i];
11709
11710           fe.symtab = tu_group->symtabs[i];
11711         }
11712     }
11713
11714   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11715      so they don't have a "real" (so to speak) symtab anyway.
11716      There is later code that will assign the main symtab to all symbols
11717      that don't have one.  We need to handle the case of a symbol with a
11718      missing symtab (DW_AT_decl_file) anyway.  */
11719 }
11720
11721 /* Process DW_TAG_type_unit.
11722    For TUs we want to skip the first top level sibling if it's not the
11723    actual type being defined by this TU.  In this case the first top
11724    level sibling is there to provide context only.  */
11725
11726 static void
11727 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11728 {
11729   struct die_info *child_die;
11730
11731   prepare_one_comp_unit (cu, die, language_minimal);
11732
11733   /* Initialize (or reinitialize) the machinery for building symtabs.
11734      We do this before processing child DIEs, so that the line header table
11735      is available for DW_AT_decl_file.  */
11736   setup_type_unit_groups (die, cu);
11737
11738   if (die->child != NULL)
11739     {
11740       child_die = die->child;
11741       while (child_die && child_die->tag)
11742         {
11743           process_die (child_die, cu);
11744           child_die = sibling_die (child_die);
11745         }
11746     }
11747 }
11748 \f
11749 /* DWO/DWP files.
11750
11751    http://gcc.gnu.org/wiki/DebugFission
11752    http://gcc.gnu.org/wiki/DebugFissionDWP
11753
11754    To simplify handling of both DWO files ("object" files with the DWARF info)
11755    and DWP files (a file with the DWOs packaged up into one file), we treat
11756    DWP files as having a collection of virtual DWO files.  */
11757
11758 static hashval_t
11759 hash_dwo_file (const void *item)
11760 {
11761   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11762   hashval_t hash;
11763
11764   hash = htab_hash_string (dwo_file->dwo_name);
11765   if (dwo_file->comp_dir != NULL)
11766     hash += htab_hash_string (dwo_file->comp_dir);
11767   return hash;
11768 }
11769
11770 static int
11771 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11772 {
11773   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11774   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11775
11776   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11777     return 0;
11778   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11779     return lhs->comp_dir == rhs->comp_dir;
11780   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11781 }
11782
11783 /* Allocate a hash table for DWO files.  */
11784
11785 static htab_t
11786 allocate_dwo_file_hash_table (struct objfile *objfile)
11787 {
11788   return htab_create_alloc_ex (41,
11789                                hash_dwo_file,
11790                                eq_dwo_file,
11791                                NULL,
11792                                &objfile->objfile_obstack,
11793                                hashtab_obstack_allocate,
11794                                dummy_obstack_deallocate);
11795 }
11796
11797 /* Lookup DWO file DWO_NAME.  */
11798
11799 static void **
11800 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11801                       const char *dwo_name,
11802                       const char *comp_dir)
11803 {
11804   struct dwo_file find_entry;
11805   void **slot;
11806
11807   if (dwarf2_per_objfile->dwo_files == NULL)
11808     dwarf2_per_objfile->dwo_files
11809       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11810
11811   memset (&find_entry, 0, sizeof (find_entry));
11812   find_entry.dwo_name = dwo_name;
11813   find_entry.comp_dir = comp_dir;
11814   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11815
11816   return slot;
11817 }
11818
11819 static hashval_t
11820 hash_dwo_unit (const void *item)
11821 {
11822   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11823
11824   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11825   return dwo_unit->signature;
11826 }
11827
11828 static int
11829 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11830 {
11831   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11832   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11833
11834   /* The signature is assumed to be unique within the DWO file.
11835      So while object file CU dwo_id's always have the value zero,
11836      that's OK, assuming each object file DWO file has only one CU,
11837      and that's the rule for now.  */
11838   return lhs->signature == rhs->signature;
11839 }
11840
11841 /* Allocate a hash table for DWO CUs,TUs.
11842    There is one of these tables for each of CUs,TUs for each DWO file.  */
11843
11844 static htab_t
11845 allocate_dwo_unit_table (struct objfile *objfile)
11846 {
11847   /* Start out with a pretty small number.
11848      Generally DWO files contain only one CU and maybe some TUs.  */
11849   return htab_create_alloc_ex (3,
11850                                hash_dwo_unit,
11851                                eq_dwo_unit,
11852                                NULL,
11853                                &objfile->objfile_obstack,
11854                                hashtab_obstack_allocate,
11855                                dummy_obstack_deallocate);
11856 }
11857
11858 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11859
11860 struct create_dwo_cu_data
11861 {
11862   struct dwo_file *dwo_file;
11863   struct dwo_unit dwo_unit;
11864 };
11865
11866 /* die_reader_func for create_dwo_cu.  */
11867
11868 static void
11869 create_dwo_cu_reader (const struct die_reader_specs *reader,
11870                       const gdb_byte *info_ptr,
11871                       struct die_info *comp_unit_die,
11872                       int has_children,
11873                       void *datap)
11874 {
11875   struct dwarf2_cu *cu = reader->cu;
11876   sect_offset sect_off = cu->per_cu->sect_off;
11877   struct dwarf2_section_info *section = cu->per_cu->section;
11878   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11879   struct dwo_file *dwo_file = data->dwo_file;
11880   struct dwo_unit *dwo_unit = &data->dwo_unit;
11881   struct attribute *attr;
11882
11883   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11884   if (attr == NULL)
11885     {
11886       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11887                    " its dwo_id [in module %s]"),
11888                  sect_offset_str (sect_off), dwo_file->dwo_name);
11889       return;
11890     }
11891
11892   dwo_unit->dwo_file = dwo_file;
11893   dwo_unit->signature = DW_UNSND (attr);
11894   dwo_unit->section = section;
11895   dwo_unit->sect_off = sect_off;
11896   dwo_unit->length = cu->per_cu->length;
11897
11898   if (dwarf_read_debug)
11899     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11900                         sect_offset_str (sect_off),
11901                         hex_string (dwo_unit->signature));
11902 }
11903
11904 /* Create the dwo_units for the CUs in a DWO_FILE.
11905    Note: This function processes DWO files only, not DWP files.  */
11906
11907 static void
11908 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11909                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11910                        htab_t &cus_htab)
11911 {
11912   struct objfile *objfile = dwarf2_per_objfile->objfile;
11913   const gdb_byte *info_ptr, *end_ptr;
11914
11915   dwarf2_read_section (objfile, &section);
11916   info_ptr = section.buffer;
11917
11918   if (info_ptr == NULL)
11919     return;
11920
11921   if (dwarf_read_debug)
11922     {
11923       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11924                           get_section_name (&section),
11925                           get_section_file_name (&section));
11926     }
11927
11928   end_ptr = info_ptr + section.size;
11929   while (info_ptr < end_ptr)
11930     {
11931       struct dwarf2_per_cu_data per_cu;
11932       struct create_dwo_cu_data create_dwo_cu_data;
11933       struct dwo_unit *dwo_unit;
11934       void **slot;
11935       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11936
11937       memset (&create_dwo_cu_data.dwo_unit, 0,
11938               sizeof (create_dwo_cu_data.dwo_unit));
11939       memset (&per_cu, 0, sizeof (per_cu));
11940       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11941       per_cu.is_debug_types = 0;
11942       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11943       per_cu.section = &section;
11944       create_dwo_cu_data.dwo_file = &dwo_file;
11945
11946       init_cutu_and_read_dies_no_follow (
11947           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11948       info_ptr += per_cu.length;
11949
11950       // If the unit could not be parsed, skip it.
11951       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11952         continue;
11953
11954       if (cus_htab == NULL)
11955         cus_htab = allocate_dwo_unit_table (objfile);
11956
11957       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11958       *dwo_unit = create_dwo_cu_data.dwo_unit;
11959       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11960       gdb_assert (slot != NULL);
11961       if (*slot != NULL)
11962         {
11963           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11964           sect_offset dup_sect_off = dup_cu->sect_off;
11965
11966           complaint (_("debug cu entry at offset %s is duplicate to"
11967                        " the entry at offset %s, signature %s"),
11968                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11969                      hex_string (dwo_unit->signature));
11970         }
11971       *slot = (void *)dwo_unit;
11972     }
11973 }
11974
11975 /* DWP file .debug_{cu,tu}_index section format:
11976    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11977
11978    DWP Version 1:
11979
11980    Both index sections have the same format, and serve to map a 64-bit
11981    signature to a set of section numbers.  Each section begins with a header,
11982    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11983    indexes, and a pool of 32-bit section numbers.  The index sections will be
11984    aligned at 8-byte boundaries in the file.
11985
11986    The index section header consists of:
11987
11988     V, 32 bit version number
11989     -, 32 bits unused
11990     N, 32 bit number of compilation units or type units in the index
11991     M, 32 bit number of slots in the hash table
11992
11993    Numbers are recorded using the byte order of the application binary.
11994
11995    The hash table begins at offset 16 in the section, and consists of an array
11996    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
11997    order of the application binary).  Unused slots in the hash table are 0.
11998    (We rely on the extreme unlikeliness of a signature being exactly 0.)
11999
12000    The parallel table begins immediately after the hash table
12001    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12002    array of 32-bit indexes (using the byte order of the application binary),
12003    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12004    table contains a 32-bit index into the pool of section numbers.  For unused
12005    hash table slots, the corresponding entry in the parallel table will be 0.
12006
12007    The pool of section numbers begins immediately following the hash table
12008    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12009    section numbers consists of an array of 32-bit words (using the byte order
12010    of the application binary).  Each item in the array is indexed starting
12011    from 0.  The hash table entry provides the index of the first section
12012    number in the set.  Additional section numbers in the set follow, and the
12013    set is terminated by a 0 entry (section number 0 is not used in ELF).
12014
12015    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12016    section must be the first entry in the set, and the .debug_abbrev.dwo must
12017    be the second entry. Other members of the set may follow in any order.
12018
12019    ---
12020
12021    DWP Version 2:
12022
12023    DWP Version 2 combines all the .debug_info, etc. sections into one,
12024    and the entries in the index tables are now offsets into these sections.
12025    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12026    section.
12027
12028    Index Section Contents:
12029     Header
12030     Hash Table of Signatures   dwp_hash_table.hash_table
12031     Parallel Table of Indices  dwp_hash_table.unit_table
12032     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12033     Table of Section Sizes     dwp_hash_table.v2.sizes
12034
12035    The index section header consists of:
12036
12037     V, 32 bit version number
12038     L, 32 bit number of columns in the table of section offsets
12039     N, 32 bit number of compilation units or type units in the index
12040     M, 32 bit number of slots in the hash table
12041
12042    Numbers are recorded using the byte order of the application binary.
12043
12044    The hash table has the same format as version 1.
12045    The parallel table of indices has the same format as version 1,
12046    except that the entries are origin-1 indices into the table of sections
12047    offsets and the table of section sizes.
12048
12049    The table of offsets begins immediately following the parallel table
12050    (at offset 16 + 12 * M from the beginning of the section).  The table is
12051    a two-dimensional array of 32-bit words (using the byte order of the
12052    application binary), with L columns and N+1 rows, in row-major order.
12053    Each row in the array is indexed starting from 0.  The first row provides
12054    a key to the remaining rows: each column in this row provides an identifier
12055    for a debug section, and the offsets in the same column of subsequent rows
12056    refer to that section.  The section identifiers are:
12057
12058     DW_SECT_INFO         1  .debug_info.dwo
12059     DW_SECT_TYPES        2  .debug_types.dwo
12060     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12061     DW_SECT_LINE         4  .debug_line.dwo
12062     DW_SECT_LOC          5  .debug_loc.dwo
12063     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12064     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12065     DW_SECT_MACRO        8  .debug_macro.dwo
12066
12067    The offsets provided by the CU and TU index sections are the base offsets
12068    for the contributions made by each CU or TU to the corresponding section
12069    in the package file.  Each CU and TU header contains an abbrev_offset
12070    field, used to find the abbreviations table for that CU or TU within the
12071    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12072    be interpreted as relative to the base offset given in the index section.
12073    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12074    should be interpreted as relative to the base offset for .debug_line.dwo,
12075    and offsets into other debug sections obtained from DWARF attributes should
12076    also be interpreted as relative to the corresponding base offset.
12077
12078    The table of sizes begins immediately following the table of offsets.
12079    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12080    with L columns and N rows, in row-major order.  Each row in the array is
12081    indexed starting from 1 (row 0 is shared by the two tables).
12082
12083    ---
12084
12085    Hash table lookup is handled the same in version 1 and 2:
12086
12087    We assume that N and M will not exceed 2^32 - 1.
12088    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12089
12090    Given a 64-bit compilation unit signature or a type signature S, an entry
12091    in the hash table is located as follows:
12092
12093    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12094       the low-order k bits all set to 1.
12095
12096    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12097
12098    3) If the hash table entry at index H matches the signature, use that
12099       entry.  If the hash table entry at index H is unused (all zeroes),
12100       terminate the search: the signature is not present in the table.
12101
12102    4) Let H = (H + H') modulo M. Repeat at Step 3.
12103
12104    Because M > N and H' and M are relatively prime, the search is guaranteed
12105    to stop at an unused slot or find the match.  */
12106
12107 /* Create a hash table to map DWO IDs to their CU/TU entry in
12108    .debug_{info,types}.dwo in DWP_FILE.
12109    Returns NULL if there isn't one.
12110    Note: This function processes DWP files only, not DWO files.  */
12111
12112 static struct dwp_hash_table *
12113 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12114                        struct dwp_file *dwp_file, int is_debug_types)
12115 {
12116   struct objfile *objfile = dwarf2_per_objfile->objfile;
12117   bfd *dbfd = dwp_file->dbfd.get ();
12118   const gdb_byte *index_ptr, *index_end;
12119   struct dwarf2_section_info *index;
12120   uint32_t version, nr_columns, nr_units, nr_slots;
12121   struct dwp_hash_table *htab;
12122
12123   if (is_debug_types)
12124     index = &dwp_file->sections.tu_index;
12125   else
12126     index = &dwp_file->sections.cu_index;
12127
12128   if (dwarf2_section_empty_p (index))
12129     return NULL;
12130   dwarf2_read_section (objfile, index);
12131
12132   index_ptr = index->buffer;
12133   index_end = index_ptr + index->size;
12134
12135   version = read_4_bytes (dbfd, index_ptr);
12136   index_ptr += 4;
12137   if (version == 2)
12138     nr_columns = read_4_bytes (dbfd, index_ptr);
12139   else
12140     nr_columns = 0;
12141   index_ptr += 4;
12142   nr_units = read_4_bytes (dbfd, index_ptr);
12143   index_ptr += 4;
12144   nr_slots = read_4_bytes (dbfd, index_ptr);
12145   index_ptr += 4;
12146
12147   if (version != 1 && version != 2)
12148     {
12149       error (_("Dwarf Error: unsupported DWP file version (%s)"
12150                " [in module %s]"),
12151              pulongest (version), dwp_file->name);
12152     }
12153   if (nr_slots != (nr_slots & -nr_slots))
12154     {
12155       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12156                " is not power of 2 [in module %s]"),
12157              pulongest (nr_slots), dwp_file->name);
12158     }
12159
12160   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12161   htab->version = version;
12162   htab->nr_columns = nr_columns;
12163   htab->nr_units = nr_units;
12164   htab->nr_slots = nr_slots;
12165   htab->hash_table = index_ptr;
12166   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12167
12168   /* Exit early if the table is empty.  */
12169   if (nr_slots == 0 || nr_units == 0
12170       || (version == 2 && nr_columns == 0))
12171     {
12172       /* All must be zero.  */
12173       if (nr_slots != 0 || nr_units != 0
12174           || (version == 2 && nr_columns != 0))
12175         {
12176           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12177                        " all zero [in modules %s]"),
12178                      dwp_file->name);
12179         }
12180       return htab;
12181     }
12182
12183   if (version == 1)
12184     {
12185       htab->section_pool.v1.indices =
12186         htab->unit_table + sizeof (uint32_t) * nr_slots;
12187       /* It's harder to decide whether the section is too small in v1.
12188          V1 is deprecated anyway so we punt.  */
12189     }
12190   else
12191     {
12192       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12193       int *ids = htab->section_pool.v2.section_ids;
12194       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12195       /* Reverse map for error checking.  */
12196       int ids_seen[DW_SECT_MAX + 1];
12197       int i;
12198
12199       if (nr_columns < 2)
12200         {
12201           error (_("Dwarf Error: bad DWP hash table, too few columns"
12202                    " in section table [in module %s]"),
12203                  dwp_file->name);
12204         }
12205       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12206         {
12207           error (_("Dwarf Error: bad DWP hash table, too many columns"
12208                    " in section table [in module %s]"),
12209                  dwp_file->name);
12210         }
12211       memset (ids, 255, sizeof_ids);
12212       memset (ids_seen, 255, sizeof (ids_seen));
12213       for (i = 0; i < nr_columns; ++i)
12214         {
12215           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12216
12217           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12218             {
12219               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12220                        " in section table [in module %s]"),
12221                      id, dwp_file->name);
12222             }
12223           if (ids_seen[id] != -1)
12224             {
12225               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12226                        " id %d in section table [in module %s]"),
12227                      id, dwp_file->name);
12228             }
12229           ids_seen[id] = i;
12230           ids[i] = id;
12231         }
12232       /* Must have exactly one info or types section.  */
12233       if (((ids_seen[DW_SECT_INFO] != -1)
12234            + (ids_seen[DW_SECT_TYPES] != -1))
12235           != 1)
12236         {
12237           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12238                    " DWO info/types section [in module %s]"),
12239                  dwp_file->name);
12240         }
12241       /* Must have an abbrev section.  */
12242       if (ids_seen[DW_SECT_ABBREV] == -1)
12243         {
12244           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12245                    " section [in module %s]"),
12246                  dwp_file->name);
12247         }
12248       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12249       htab->section_pool.v2.sizes =
12250         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12251                                          * nr_units * nr_columns);
12252       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12253                                           * nr_units * nr_columns))
12254           > index_end)
12255         {
12256           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12257                    " [in module %s]"),
12258                  dwp_file->name);
12259         }
12260     }
12261
12262   return htab;
12263 }
12264
12265 /* Update SECTIONS with the data from SECTP.
12266
12267    This function is like the other "locate" section routines that are
12268    passed to bfd_map_over_sections, but in this context the sections to
12269    read comes from the DWP V1 hash table, not the full ELF section table.
12270
12271    The result is non-zero for success, or zero if an error was found.  */
12272
12273 static int
12274 locate_v1_virtual_dwo_sections (asection *sectp,
12275                                 struct virtual_v1_dwo_sections *sections)
12276 {
12277   const struct dwop_section_names *names = &dwop_section_names;
12278
12279   if (section_is_p (sectp->name, &names->abbrev_dwo))
12280     {
12281       /* There can be only one.  */
12282       if (sections->abbrev.s.section != NULL)
12283         return 0;
12284       sections->abbrev.s.section = sectp;
12285       sections->abbrev.size = bfd_get_section_size (sectp);
12286     }
12287   else if (section_is_p (sectp->name, &names->info_dwo)
12288            || section_is_p (sectp->name, &names->types_dwo))
12289     {
12290       /* There can be only one.  */
12291       if (sections->info_or_types.s.section != NULL)
12292         return 0;
12293       sections->info_or_types.s.section = sectp;
12294       sections->info_or_types.size = bfd_get_section_size (sectp);
12295     }
12296   else if (section_is_p (sectp->name, &names->line_dwo))
12297     {
12298       /* There can be only one.  */
12299       if (sections->line.s.section != NULL)
12300         return 0;
12301       sections->line.s.section = sectp;
12302       sections->line.size = bfd_get_section_size (sectp);
12303     }
12304   else if (section_is_p (sectp->name, &names->loc_dwo))
12305     {
12306       /* There can be only one.  */
12307       if (sections->loc.s.section != NULL)
12308         return 0;
12309       sections->loc.s.section = sectp;
12310       sections->loc.size = bfd_get_section_size (sectp);
12311     }
12312   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12313     {
12314       /* There can be only one.  */
12315       if (sections->macinfo.s.section != NULL)
12316         return 0;
12317       sections->macinfo.s.section = sectp;
12318       sections->macinfo.size = bfd_get_section_size (sectp);
12319     }
12320   else if (section_is_p (sectp->name, &names->macro_dwo))
12321     {
12322       /* There can be only one.  */
12323       if (sections->macro.s.section != NULL)
12324         return 0;
12325       sections->macro.s.section = sectp;
12326       sections->macro.size = bfd_get_section_size (sectp);
12327     }
12328   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12329     {
12330       /* There can be only one.  */
12331       if (sections->str_offsets.s.section != NULL)
12332         return 0;
12333       sections->str_offsets.s.section = sectp;
12334       sections->str_offsets.size = bfd_get_section_size (sectp);
12335     }
12336   else
12337     {
12338       /* No other kind of section is valid.  */
12339       return 0;
12340     }
12341
12342   return 1;
12343 }
12344
12345 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12346    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12347    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12348    This is for DWP version 1 files.  */
12349
12350 static struct dwo_unit *
12351 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12352                            struct dwp_file *dwp_file,
12353                            uint32_t unit_index,
12354                            const char *comp_dir,
12355                            ULONGEST signature, int is_debug_types)
12356 {
12357   struct objfile *objfile = dwarf2_per_objfile->objfile;
12358   const struct dwp_hash_table *dwp_htab =
12359     is_debug_types ? dwp_file->tus : dwp_file->cus;
12360   bfd *dbfd = dwp_file->dbfd.get ();
12361   const char *kind = is_debug_types ? "TU" : "CU";
12362   struct dwo_file *dwo_file;
12363   struct dwo_unit *dwo_unit;
12364   struct virtual_v1_dwo_sections sections;
12365   void **dwo_file_slot;
12366   int i;
12367
12368   gdb_assert (dwp_file->version == 1);
12369
12370   if (dwarf_read_debug)
12371     {
12372       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12373                           kind,
12374                           pulongest (unit_index), hex_string (signature),
12375                           dwp_file->name);
12376     }
12377
12378   /* Fetch the sections of this DWO unit.
12379      Put a limit on the number of sections we look for so that bad data
12380      doesn't cause us to loop forever.  */
12381
12382 #define MAX_NR_V1_DWO_SECTIONS \
12383   (1 /* .debug_info or .debug_types */ \
12384    + 1 /* .debug_abbrev */ \
12385    + 1 /* .debug_line */ \
12386    + 1 /* .debug_loc */ \
12387    + 1 /* .debug_str_offsets */ \
12388    + 1 /* .debug_macro or .debug_macinfo */ \
12389    + 1 /* trailing zero */)
12390
12391   memset (&sections, 0, sizeof (sections));
12392
12393   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12394     {
12395       asection *sectp;
12396       uint32_t section_nr =
12397         read_4_bytes (dbfd,
12398                       dwp_htab->section_pool.v1.indices
12399                       + (unit_index + i) * sizeof (uint32_t));
12400
12401       if (section_nr == 0)
12402         break;
12403       if (section_nr >= dwp_file->num_sections)
12404         {
12405           error (_("Dwarf Error: bad DWP hash table, section number too large"
12406                    " [in module %s]"),
12407                  dwp_file->name);
12408         }
12409
12410       sectp = dwp_file->elf_sections[section_nr];
12411       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12412         {
12413           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12414                    " [in module %s]"),
12415                  dwp_file->name);
12416         }
12417     }
12418
12419   if (i < 2
12420       || dwarf2_section_empty_p (&sections.info_or_types)
12421       || dwarf2_section_empty_p (&sections.abbrev))
12422     {
12423       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12424                " [in module %s]"),
12425              dwp_file->name);
12426     }
12427   if (i == MAX_NR_V1_DWO_SECTIONS)
12428     {
12429       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12430                " [in module %s]"),
12431              dwp_file->name);
12432     }
12433
12434   /* It's easier for the rest of the code if we fake a struct dwo_file and
12435      have dwo_unit "live" in that.  At least for now.
12436
12437      The DWP file can be made up of a random collection of CUs and TUs.
12438      However, for each CU + set of TUs that came from the same original DWO
12439      file, we can combine them back into a virtual DWO file to save space
12440      (fewer struct dwo_file objects to allocate).  Remember that for really
12441      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12442
12443   std::string virtual_dwo_name =
12444     string_printf ("virtual-dwo/%d-%d-%d-%d",
12445                    get_section_id (&sections.abbrev),
12446                    get_section_id (&sections.line),
12447                    get_section_id (&sections.loc),
12448                    get_section_id (&sections.str_offsets));
12449   /* Can we use an existing virtual DWO file?  */
12450   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12451                                         virtual_dwo_name.c_str (),
12452                                         comp_dir);
12453   /* Create one if necessary.  */
12454   if (*dwo_file_slot == NULL)
12455     {
12456       if (dwarf_read_debug)
12457         {
12458           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12459                               virtual_dwo_name.c_str ());
12460         }
12461       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12462       dwo_file->dwo_name
12463         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12464                                         virtual_dwo_name.c_str (),
12465                                         virtual_dwo_name.size ());
12466       dwo_file->comp_dir = comp_dir;
12467       dwo_file->sections.abbrev = sections.abbrev;
12468       dwo_file->sections.line = sections.line;
12469       dwo_file->sections.loc = sections.loc;
12470       dwo_file->sections.macinfo = sections.macinfo;
12471       dwo_file->sections.macro = sections.macro;
12472       dwo_file->sections.str_offsets = sections.str_offsets;
12473       /* The "str" section is global to the entire DWP file.  */
12474       dwo_file->sections.str = dwp_file->sections.str;
12475       /* The info or types section is assigned below to dwo_unit,
12476          there's no need to record it in dwo_file.
12477          Also, we can't simply record type sections in dwo_file because
12478          we record a pointer into the vector in dwo_unit.  As we collect more
12479          types we'll grow the vector and eventually have to reallocate space
12480          for it, invalidating all copies of pointers into the previous
12481          contents.  */
12482       *dwo_file_slot = dwo_file;
12483     }
12484   else
12485     {
12486       if (dwarf_read_debug)
12487         {
12488           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12489                               virtual_dwo_name.c_str ());
12490         }
12491       dwo_file = (struct dwo_file *) *dwo_file_slot;
12492     }
12493
12494   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12495   dwo_unit->dwo_file = dwo_file;
12496   dwo_unit->signature = signature;
12497   dwo_unit->section =
12498     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12499   *dwo_unit->section = sections.info_or_types;
12500   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12501
12502   return dwo_unit;
12503 }
12504
12505 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12506    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12507    piece within that section used by a TU/CU, return a virtual section
12508    of just that piece.  */
12509
12510 static struct dwarf2_section_info
12511 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12512                        struct dwarf2_section_info *section,
12513                        bfd_size_type offset, bfd_size_type size)
12514 {
12515   struct dwarf2_section_info result;
12516   asection *sectp;
12517
12518   gdb_assert (section != NULL);
12519   gdb_assert (!section->is_virtual);
12520
12521   memset (&result, 0, sizeof (result));
12522   result.s.containing_section = section;
12523   result.is_virtual = 1;
12524
12525   if (size == 0)
12526     return result;
12527
12528   sectp = get_section_bfd_section (section);
12529
12530   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12531      bounds of the real section.  This is a pretty-rare event, so just
12532      flag an error (easier) instead of a warning and trying to cope.  */
12533   if (sectp == NULL
12534       || offset + size > bfd_get_section_size (sectp))
12535     {
12536       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12537                " in section %s [in module %s]"),
12538              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12539              objfile_name (dwarf2_per_objfile->objfile));
12540     }
12541
12542   result.virtual_offset = offset;
12543   result.size = size;
12544   return result;
12545 }
12546
12547 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12548    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12549    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12550    This is for DWP version 2 files.  */
12551
12552 static struct dwo_unit *
12553 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12554                            struct dwp_file *dwp_file,
12555                            uint32_t unit_index,
12556                            const char *comp_dir,
12557                            ULONGEST signature, int is_debug_types)
12558 {
12559   struct objfile *objfile = dwarf2_per_objfile->objfile;
12560   const struct dwp_hash_table *dwp_htab =
12561     is_debug_types ? dwp_file->tus : dwp_file->cus;
12562   bfd *dbfd = dwp_file->dbfd.get ();
12563   const char *kind = is_debug_types ? "TU" : "CU";
12564   struct dwo_file *dwo_file;
12565   struct dwo_unit *dwo_unit;
12566   struct virtual_v2_dwo_sections sections;
12567   void **dwo_file_slot;
12568   int i;
12569
12570   gdb_assert (dwp_file->version == 2);
12571
12572   if (dwarf_read_debug)
12573     {
12574       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12575                           kind,
12576                           pulongest (unit_index), hex_string (signature),
12577                           dwp_file->name);
12578     }
12579
12580   /* Fetch the section offsets of this DWO unit.  */
12581
12582   memset (&sections, 0, sizeof (sections));
12583
12584   for (i = 0; i < dwp_htab->nr_columns; ++i)
12585     {
12586       uint32_t offset = read_4_bytes (dbfd,
12587                                       dwp_htab->section_pool.v2.offsets
12588                                       + (((unit_index - 1) * dwp_htab->nr_columns
12589                                           + i)
12590                                          * sizeof (uint32_t)));
12591       uint32_t size = read_4_bytes (dbfd,
12592                                     dwp_htab->section_pool.v2.sizes
12593                                     + (((unit_index - 1) * dwp_htab->nr_columns
12594                                         + i)
12595                                        * sizeof (uint32_t)));
12596
12597       switch (dwp_htab->section_pool.v2.section_ids[i])
12598         {
12599         case DW_SECT_INFO:
12600         case DW_SECT_TYPES:
12601           sections.info_or_types_offset = offset;
12602           sections.info_or_types_size = size;
12603           break;
12604         case DW_SECT_ABBREV:
12605           sections.abbrev_offset = offset;
12606           sections.abbrev_size = size;
12607           break;
12608         case DW_SECT_LINE:
12609           sections.line_offset = offset;
12610           sections.line_size = size;
12611           break;
12612         case DW_SECT_LOC:
12613           sections.loc_offset = offset;
12614           sections.loc_size = size;
12615           break;
12616         case DW_SECT_STR_OFFSETS:
12617           sections.str_offsets_offset = offset;
12618           sections.str_offsets_size = size;
12619           break;
12620         case DW_SECT_MACINFO:
12621           sections.macinfo_offset = offset;
12622           sections.macinfo_size = size;
12623           break;
12624         case DW_SECT_MACRO:
12625           sections.macro_offset = offset;
12626           sections.macro_size = size;
12627           break;
12628         }
12629     }
12630
12631   /* It's easier for the rest of the code if we fake a struct dwo_file and
12632      have dwo_unit "live" in that.  At least for now.
12633
12634      The DWP file can be made up of a random collection of CUs and TUs.
12635      However, for each CU + set of TUs that came from the same original DWO
12636      file, we can combine them back into a virtual DWO file to save space
12637      (fewer struct dwo_file objects to allocate).  Remember that for really
12638      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12639
12640   std::string virtual_dwo_name =
12641     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12642                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12643                    (long) (sections.line_size ? sections.line_offset : 0),
12644                    (long) (sections.loc_size ? sections.loc_offset : 0),
12645                    (long) (sections.str_offsets_size
12646                            ? sections.str_offsets_offset : 0));
12647   /* Can we use an existing virtual DWO file?  */
12648   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12649                                         virtual_dwo_name.c_str (),
12650                                         comp_dir);
12651   /* Create one if necessary.  */
12652   if (*dwo_file_slot == NULL)
12653     {
12654       if (dwarf_read_debug)
12655         {
12656           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12657                               virtual_dwo_name.c_str ());
12658         }
12659       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12660       dwo_file->dwo_name
12661         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12662                                         virtual_dwo_name.c_str (),
12663                                         virtual_dwo_name.size ());
12664       dwo_file->comp_dir = comp_dir;
12665       dwo_file->sections.abbrev =
12666         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12667                                sections.abbrev_offset, sections.abbrev_size);
12668       dwo_file->sections.line =
12669         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12670                                sections.line_offset, sections.line_size);
12671       dwo_file->sections.loc =
12672         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12673                                sections.loc_offset, sections.loc_size);
12674       dwo_file->sections.macinfo =
12675         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12676                                sections.macinfo_offset, sections.macinfo_size);
12677       dwo_file->sections.macro =
12678         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12679                                sections.macro_offset, sections.macro_size);
12680       dwo_file->sections.str_offsets =
12681         create_dwp_v2_section (dwarf2_per_objfile,
12682                                &dwp_file->sections.str_offsets,
12683                                sections.str_offsets_offset,
12684                                sections.str_offsets_size);
12685       /* The "str" section is global to the entire DWP file.  */
12686       dwo_file->sections.str = dwp_file->sections.str;
12687       /* The info or types section is assigned below to dwo_unit,
12688          there's no need to record it in dwo_file.
12689          Also, we can't simply record type sections in dwo_file because
12690          we record a pointer into the vector in dwo_unit.  As we collect more
12691          types we'll grow the vector and eventually have to reallocate space
12692          for it, invalidating all copies of pointers into the previous
12693          contents.  */
12694       *dwo_file_slot = dwo_file;
12695     }
12696   else
12697     {
12698       if (dwarf_read_debug)
12699         {
12700           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12701                               virtual_dwo_name.c_str ());
12702         }
12703       dwo_file = (struct dwo_file *) *dwo_file_slot;
12704     }
12705
12706   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12707   dwo_unit->dwo_file = dwo_file;
12708   dwo_unit->signature = signature;
12709   dwo_unit->section =
12710     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12711   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12712                                               is_debug_types
12713                                               ? &dwp_file->sections.types
12714                                               : &dwp_file->sections.info,
12715                                               sections.info_or_types_offset,
12716                                               sections.info_or_types_size);
12717   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12718
12719   return dwo_unit;
12720 }
12721
12722 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12723    Returns NULL if the signature isn't found.  */
12724
12725 static struct dwo_unit *
12726 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12727                         struct dwp_file *dwp_file, const char *comp_dir,
12728                         ULONGEST signature, int is_debug_types)
12729 {
12730   const struct dwp_hash_table *dwp_htab =
12731     is_debug_types ? dwp_file->tus : dwp_file->cus;
12732   bfd *dbfd = dwp_file->dbfd.get ();
12733   uint32_t mask = dwp_htab->nr_slots - 1;
12734   uint32_t hash = signature & mask;
12735   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12736   unsigned int i;
12737   void **slot;
12738   struct dwo_unit find_dwo_cu;
12739
12740   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12741   find_dwo_cu.signature = signature;
12742   slot = htab_find_slot (is_debug_types
12743                          ? dwp_file->loaded_tus
12744                          : dwp_file->loaded_cus,
12745                          &find_dwo_cu, INSERT);
12746
12747   if (*slot != NULL)
12748     return (struct dwo_unit *) *slot;
12749
12750   /* Use a for loop so that we don't loop forever on bad debug info.  */
12751   for (i = 0; i < dwp_htab->nr_slots; ++i)
12752     {
12753       ULONGEST signature_in_table;
12754
12755       signature_in_table =
12756         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12757       if (signature_in_table == signature)
12758         {
12759           uint32_t unit_index =
12760             read_4_bytes (dbfd,
12761                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12762
12763           if (dwp_file->version == 1)
12764             {
12765               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12766                                                  dwp_file, unit_index,
12767                                                  comp_dir, signature,
12768                                                  is_debug_types);
12769             }
12770           else
12771             {
12772               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12773                                                  dwp_file, unit_index,
12774                                                  comp_dir, signature,
12775                                                  is_debug_types);
12776             }
12777           return (struct dwo_unit *) *slot;
12778         }
12779       if (signature_in_table == 0)
12780         return NULL;
12781       hash = (hash + hash2) & mask;
12782     }
12783
12784   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12785            " [in module %s]"),
12786          dwp_file->name);
12787 }
12788
12789 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12790    Open the file specified by FILE_NAME and hand it off to BFD for
12791    preliminary analysis.  Return a newly initialized bfd *, which
12792    includes a canonicalized copy of FILE_NAME.
12793    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12794    SEARCH_CWD is true if the current directory is to be searched.
12795    It will be searched before debug-file-directory.
12796    If successful, the file is added to the bfd include table of the
12797    objfile's bfd (see gdb_bfd_record_inclusion).
12798    If unable to find/open the file, return NULL.
12799    NOTE: This function is derived from symfile_bfd_open.  */
12800
12801 static gdb_bfd_ref_ptr
12802 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12803                     const char *file_name, int is_dwp, int search_cwd)
12804 {
12805   int desc;
12806   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12807      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12808      to debug_file_directory.  */
12809   const char *search_path;
12810   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12811
12812   gdb::unique_xmalloc_ptr<char> search_path_holder;
12813   if (search_cwd)
12814     {
12815       if (*debug_file_directory != '\0')
12816         {
12817           search_path_holder.reset (concat (".", dirname_separator_string,
12818                                             debug_file_directory,
12819                                             (char *) NULL));
12820           search_path = search_path_holder.get ();
12821         }
12822       else
12823         search_path = ".";
12824     }
12825   else
12826     search_path = debug_file_directory;
12827
12828   openp_flags flags = OPF_RETURN_REALPATH;
12829   if (is_dwp)
12830     flags |= OPF_SEARCH_IN_PATH;
12831
12832   gdb::unique_xmalloc_ptr<char> absolute_name;
12833   desc = openp (search_path, flags, file_name,
12834                 O_RDONLY | O_BINARY, &absolute_name);
12835   if (desc < 0)
12836     return NULL;
12837
12838   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12839                                          gnutarget, desc));
12840   if (sym_bfd == NULL)
12841     return NULL;
12842   bfd_set_cacheable (sym_bfd.get (), 1);
12843
12844   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12845     return NULL;
12846
12847   /* Success.  Record the bfd as having been included by the objfile's bfd.
12848      This is important because things like demangled_names_hash lives in the
12849      objfile's per_bfd space and may have references to things like symbol
12850      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12851   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12852
12853   return sym_bfd;
12854 }
12855
12856 /* Try to open DWO file FILE_NAME.
12857    COMP_DIR is the DW_AT_comp_dir attribute.
12858    The result is the bfd handle of the file.
12859    If there is a problem finding or opening the file, return NULL.
12860    Upon success, the canonicalized path of the file is stored in the bfd,
12861    same as symfile_bfd_open.  */
12862
12863 static gdb_bfd_ref_ptr
12864 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12865                const char *file_name, const char *comp_dir)
12866 {
12867   if (IS_ABSOLUTE_PATH (file_name))
12868     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12869                                0 /*is_dwp*/, 0 /*search_cwd*/);
12870
12871   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12872
12873   if (comp_dir != NULL)
12874     {
12875       char *path_to_try = concat (comp_dir, SLASH_STRING,
12876                                   file_name, (char *) NULL);
12877
12878       /* NOTE: If comp_dir is a relative path, this will also try the
12879          search path, which seems useful.  */
12880       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12881                                                 path_to_try,
12882                                                 0 /*is_dwp*/,
12883                                                 1 /*search_cwd*/));
12884       xfree (path_to_try);
12885       if (abfd != NULL)
12886         return abfd;
12887     }
12888
12889   /* That didn't work, try debug-file-directory, which, despite its name,
12890      is a list of paths.  */
12891
12892   if (*debug_file_directory == '\0')
12893     return NULL;
12894
12895   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12896                              0 /*is_dwp*/, 1 /*search_cwd*/);
12897 }
12898
12899 /* This function is mapped across the sections and remembers the offset and
12900    size of each of the DWO debugging sections we are interested in.  */
12901
12902 static void
12903 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12904 {
12905   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12906   const struct dwop_section_names *names = &dwop_section_names;
12907
12908   if (section_is_p (sectp->name, &names->abbrev_dwo))
12909     {
12910       dwo_sections->abbrev.s.section = sectp;
12911       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12912     }
12913   else if (section_is_p (sectp->name, &names->info_dwo))
12914     {
12915       dwo_sections->info.s.section = sectp;
12916       dwo_sections->info.size = bfd_get_section_size (sectp);
12917     }
12918   else if (section_is_p (sectp->name, &names->line_dwo))
12919     {
12920       dwo_sections->line.s.section = sectp;
12921       dwo_sections->line.size = bfd_get_section_size (sectp);
12922     }
12923   else if (section_is_p (sectp->name, &names->loc_dwo))
12924     {
12925       dwo_sections->loc.s.section = sectp;
12926       dwo_sections->loc.size = bfd_get_section_size (sectp);
12927     }
12928   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12929     {
12930       dwo_sections->macinfo.s.section = sectp;
12931       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12932     }
12933   else if (section_is_p (sectp->name, &names->macro_dwo))
12934     {
12935       dwo_sections->macro.s.section = sectp;
12936       dwo_sections->macro.size = bfd_get_section_size (sectp);
12937     }
12938   else if (section_is_p (sectp->name, &names->str_dwo))
12939     {
12940       dwo_sections->str.s.section = sectp;
12941       dwo_sections->str.size = bfd_get_section_size (sectp);
12942     }
12943   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12944     {
12945       dwo_sections->str_offsets.s.section = sectp;
12946       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12947     }
12948   else if (section_is_p (sectp->name, &names->types_dwo))
12949     {
12950       struct dwarf2_section_info type_section;
12951
12952       memset (&type_section, 0, sizeof (type_section));
12953       type_section.s.section = sectp;
12954       type_section.size = bfd_get_section_size (sectp);
12955       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12956                      &type_section);
12957     }
12958 }
12959
12960 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12961    by PER_CU.  This is for the non-DWP case.
12962    The result is NULL if DWO_NAME can't be found.  */
12963
12964 static struct dwo_file *
12965 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12966                         const char *dwo_name, const char *comp_dir)
12967 {
12968   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12969   struct objfile *objfile = dwarf2_per_objfile->objfile;
12970
12971   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12972   if (dbfd == NULL)
12973     {
12974       if (dwarf_read_debug)
12975         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12976       return NULL;
12977     }
12978
12979   /* We use a unique pointer here, despite the obstack allocation,
12980      because a dwo_file needs some cleanup if it is abandoned.  */
12981   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12982                                         struct dwo_file));
12983   dwo_file->dwo_name = dwo_name;
12984   dwo_file->comp_dir = comp_dir;
12985   dwo_file->dbfd = dbfd.release ();
12986
12987   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12988                          &dwo_file->sections);
12989
12990   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12991                          dwo_file->cus);
12992
12993   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12994                                  dwo_file->sections.types, dwo_file->tus);
12995
12996   if (dwarf_read_debug)
12997     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
12998
12999   return dwo_file.release ();
13000 }
13001
13002 /* This function is mapped across the sections and remembers the offset and
13003    size of each of the DWP debugging sections common to version 1 and 2 that
13004    we are interested in.  */
13005
13006 static void
13007 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13008                                    void *dwp_file_ptr)
13009 {
13010   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13011   const struct dwop_section_names *names = &dwop_section_names;
13012   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13013
13014   /* Record the ELF section number for later lookup: this is what the
13015      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13016   gdb_assert (elf_section_nr < dwp_file->num_sections);
13017   dwp_file->elf_sections[elf_section_nr] = sectp;
13018
13019   /* Look for specific sections that we need.  */
13020   if (section_is_p (sectp->name, &names->str_dwo))
13021     {
13022       dwp_file->sections.str.s.section = sectp;
13023       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13024     }
13025   else if (section_is_p (sectp->name, &names->cu_index))
13026     {
13027       dwp_file->sections.cu_index.s.section = sectp;
13028       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13029     }
13030   else if (section_is_p (sectp->name, &names->tu_index))
13031     {
13032       dwp_file->sections.tu_index.s.section = sectp;
13033       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13034     }
13035 }
13036
13037 /* This function is mapped across the sections and remembers the offset and
13038    size of each of the DWP version 2 debugging sections that we are interested
13039    in.  This is split into a separate function because we don't know if we
13040    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13041
13042 static void
13043 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13044 {
13045   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13046   const struct dwop_section_names *names = &dwop_section_names;
13047   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13048
13049   /* Record the ELF section number for later lookup: this is what the
13050      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13051   gdb_assert (elf_section_nr < dwp_file->num_sections);
13052   dwp_file->elf_sections[elf_section_nr] = sectp;
13053
13054   /* Look for specific sections that we need.  */
13055   if (section_is_p (sectp->name, &names->abbrev_dwo))
13056     {
13057       dwp_file->sections.abbrev.s.section = sectp;
13058       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13059     }
13060   else if (section_is_p (sectp->name, &names->info_dwo))
13061     {
13062       dwp_file->sections.info.s.section = sectp;
13063       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13064     }
13065   else if (section_is_p (sectp->name, &names->line_dwo))
13066     {
13067       dwp_file->sections.line.s.section = sectp;
13068       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13069     }
13070   else if (section_is_p (sectp->name, &names->loc_dwo))
13071     {
13072       dwp_file->sections.loc.s.section = sectp;
13073       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13074     }
13075   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13076     {
13077       dwp_file->sections.macinfo.s.section = sectp;
13078       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13079     }
13080   else if (section_is_p (sectp->name, &names->macro_dwo))
13081     {
13082       dwp_file->sections.macro.s.section = sectp;
13083       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13084     }
13085   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13086     {
13087       dwp_file->sections.str_offsets.s.section = sectp;
13088       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13089     }
13090   else if (section_is_p (sectp->name, &names->types_dwo))
13091     {
13092       dwp_file->sections.types.s.section = sectp;
13093       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13094     }
13095 }
13096
13097 /* Hash function for dwp_file loaded CUs/TUs.  */
13098
13099 static hashval_t
13100 hash_dwp_loaded_cutus (const void *item)
13101 {
13102   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13103
13104   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13105   return dwo_unit->signature;
13106 }
13107
13108 /* Equality function for dwp_file loaded CUs/TUs.  */
13109
13110 static int
13111 eq_dwp_loaded_cutus (const void *a, const void *b)
13112 {
13113   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13114   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13115
13116   return dua->signature == dub->signature;
13117 }
13118
13119 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13120
13121 static htab_t
13122 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13123 {
13124   return htab_create_alloc_ex (3,
13125                                hash_dwp_loaded_cutus,
13126                                eq_dwp_loaded_cutus,
13127                                NULL,
13128                                &objfile->objfile_obstack,
13129                                hashtab_obstack_allocate,
13130                                dummy_obstack_deallocate);
13131 }
13132
13133 /* Try to open DWP file FILE_NAME.
13134    The result is the bfd handle of the file.
13135    If there is a problem finding or opening the file, return NULL.
13136    Upon success, the canonicalized path of the file is stored in the bfd,
13137    same as symfile_bfd_open.  */
13138
13139 static gdb_bfd_ref_ptr
13140 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13141                const char *file_name)
13142 {
13143   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13144                                             1 /*is_dwp*/,
13145                                             1 /*search_cwd*/));
13146   if (abfd != NULL)
13147     return abfd;
13148
13149   /* Work around upstream bug 15652.
13150      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13151      [Whether that's a "bug" is debatable, but it is getting in our way.]
13152      We have no real idea where the dwp file is, because gdb's realpath-ing
13153      of the executable's path may have discarded the needed info.
13154      [IWBN if the dwp file name was recorded in the executable, akin to
13155      .gnu_debuglink, but that doesn't exist yet.]
13156      Strip the directory from FILE_NAME and search again.  */
13157   if (*debug_file_directory != '\0')
13158     {
13159       /* Don't implicitly search the current directory here.
13160          If the user wants to search "." to handle this case,
13161          it must be added to debug-file-directory.  */
13162       return try_open_dwop_file (dwarf2_per_objfile,
13163                                  lbasename (file_name), 1 /*is_dwp*/,
13164                                  0 /*search_cwd*/);
13165     }
13166
13167   return NULL;
13168 }
13169
13170 /* Initialize the use of the DWP file for the current objfile.
13171    By convention the name of the DWP file is ${objfile}.dwp.
13172    The result is NULL if it can't be found.  */
13173
13174 static std::unique_ptr<struct dwp_file>
13175 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13176 {
13177   struct objfile *objfile = dwarf2_per_objfile->objfile;
13178
13179   /* Try to find first .dwp for the binary file before any symbolic links
13180      resolving.  */
13181
13182   /* If the objfile is a debug file, find the name of the real binary
13183      file and get the name of dwp file from there.  */
13184   std::string dwp_name;
13185   if (objfile->separate_debug_objfile_backlink != NULL)
13186     {
13187       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13188       const char *backlink_basename = lbasename (backlink->original_name);
13189
13190       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13191     }
13192   else
13193     dwp_name = objfile->original_name;
13194
13195   dwp_name += ".dwp";
13196
13197   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13198   if (dbfd == NULL
13199       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13200     {
13201       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13202       dwp_name = objfile_name (objfile);
13203       dwp_name += ".dwp";
13204       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13205     }
13206
13207   if (dbfd == NULL)
13208     {
13209       if (dwarf_read_debug)
13210         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13211       return std::unique_ptr<dwp_file> ();
13212     }
13213
13214   const char *name = bfd_get_filename (dbfd.get ());
13215   std::unique_ptr<struct dwp_file> dwp_file
13216     (new struct dwp_file (name, std::move (dbfd)));
13217
13218   /* +1: section 0 is unused */
13219   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13220   dwp_file->elf_sections =
13221     OBSTACK_CALLOC (&objfile->objfile_obstack,
13222                     dwp_file->num_sections, asection *);
13223
13224   bfd_map_over_sections (dwp_file->dbfd.get (),
13225                          dwarf2_locate_common_dwp_sections,
13226                          dwp_file.get ());
13227
13228   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13229                                          0);
13230
13231   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13232                                          1);
13233
13234   /* The DWP file version is stored in the hash table.  Oh well.  */
13235   if (dwp_file->cus && dwp_file->tus
13236       && dwp_file->cus->version != dwp_file->tus->version)
13237     {
13238       /* Technically speaking, we should try to limp along, but this is
13239          pretty bizarre.  We use pulongest here because that's the established
13240          portability solution (e.g, we cannot use %u for uint32_t).  */
13241       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13242                " TU version %s [in DWP file %s]"),
13243              pulongest (dwp_file->cus->version),
13244              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13245     }
13246
13247   if (dwp_file->cus)
13248     dwp_file->version = dwp_file->cus->version;
13249   else if (dwp_file->tus)
13250     dwp_file->version = dwp_file->tus->version;
13251   else
13252     dwp_file->version = 2;
13253
13254   if (dwp_file->version == 2)
13255     bfd_map_over_sections (dwp_file->dbfd.get (),
13256                            dwarf2_locate_v2_dwp_sections,
13257                            dwp_file.get ());
13258
13259   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13260   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13261
13262   if (dwarf_read_debug)
13263     {
13264       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13265       fprintf_unfiltered (gdb_stdlog,
13266                           "    %s CUs, %s TUs\n",
13267                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13268                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13269     }
13270
13271   return dwp_file;
13272 }
13273
13274 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13275
13276 static struct dwp_file *
13277 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13278 {
13279   if (! dwarf2_per_objfile->dwp_checked)
13280     {
13281       dwarf2_per_objfile->dwp_file
13282         = open_and_init_dwp_file (dwarf2_per_objfile);
13283       dwarf2_per_objfile->dwp_checked = 1;
13284     }
13285   return dwarf2_per_objfile->dwp_file.get ();
13286 }
13287
13288 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13289    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13290    or in the DWP file for the objfile, referenced by THIS_UNIT.
13291    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13292    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13293
13294    This is called, for example, when wanting to read a variable with a
13295    complex location.  Therefore we don't want to do file i/o for every call.
13296    Therefore we don't want to look for a DWO file on every call.
13297    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13298    then we check if we've already seen DWO_NAME, and only THEN do we check
13299    for a DWO file.
13300
13301    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13302    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13303
13304 static struct dwo_unit *
13305 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13306                  const char *dwo_name, const char *comp_dir,
13307                  ULONGEST signature, int is_debug_types)
13308 {
13309   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13310   struct objfile *objfile = dwarf2_per_objfile->objfile;
13311   const char *kind = is_debug_types ? "TU" : "CU";
13312   void **dwo_file_slot;
13313   struct dwo_file *dwo_file;
13314   struct dwp_file *dwp_file;
13315
13316   /* First see if there's a DWP file.
13317      If we have a DWP file but didn't find the DWO inside it, don't
13318      look for the original DWO file.  It makes gdb behave differently
13319      depending on whether one is debugging in the build tree.  */
13320
13321   dwp_file = get_dwp_file (dwarf2_per_objfile);
13322   if (dwp_file != NULL)
13323     {
13324       const struct dwp_hash_table *dwp_htab =
13325         is_debug_types ? dwp_file->tus : dwp_file->cus;
13326
13327       if (dwp_htab != NULL)
13328         {
13329           struct dwo_unit *dwo_cutu =
13330             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13331                                     signature, is_debug_types);
13332
13333           if (dwo_cutu != NULL)
13334             {
13335               if (dwarf_read_debug)
13336                 {
13337                   fprintf_unfiltered (gdb_stdlog,
13338                                       "Virtual DWO %s %s found: @%s\n",
13339                                       kind, hex_string (signature),
13340                                       host_address_to_string (dwo_cutu));
13341                 }
13342               return dwo_cutu;
13343             }
13344         }
13345     }
13346   else
13347     {
13348       /* No DWP file, look for the DWO file.  */
13349
13350       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13351                                             dwo_name, comp_dir);
13352       if (*dwo_file_slot == NULL)
13353         {
13354           /* Read in the file and build a table of the CUs/TUs it contains.  */
13355           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13356         }
13357       /* NOTE: This will be NULL if unable to open the file.  */
13358       dwo_file = (struct dwo_file *) *dwo_file_slot;
13359
13360       if (dwo_file != NULL)
13361         {
13362           struct dwo_unit *dwo_cutu = NULL;
13363
13364           if (is_debug_types && dwo_file->tus)
13365             {
13366               struct dwo_unit find_dwo_cutu;
13367
13368               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13369               find_dwo_cutu.signature = signature;
13370               dwo_cutu
13371                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13372             }
13373           else if (!is_debug_types && dwo_file->cus)
13374             {
13375               struct dwo_unit find_dwo_cutu;
13376
13377               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13378               find_dwo_cutu.signature = signature;
13379               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13380                                                        &find_dwo_cutu);
13381             }
13382
13383           if (dwo_cutu != NULL)
13384             {
13385               if (dwarf_read_debug)
13386                 {
13387                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13388                                       kind, dwo_name, hex_string (signature),
13389                                       host_address_to_string (dwo_cutu));
13390                 }
13391               return dwo_cutu;
13392             }
13393         }
13394     }
13395
13396   /* We didn't find it.  This could mean a dwo_id mismatch, or
13397      someone deleted the DWO/DWP file, or the search path isn't set up
13398      correctly to find the file.  */
13399
13400   if (dwarf_read_debug)
13401     {
13402       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13403                           kind, dwo_name, hex_string (signature));
13404     }
13405
13406   /* This is a warning and not a complaint because it can be caused by
13407      pilot error (e.g., user accidentally deleting the DWO).  */
13408   {
13409     /* Print the name of the DWP file if we looked there, helps the user
13410        better diagnose the problem.  */
13411     std::string dwp_text;
13412
13413     if (dwp_file != NULL)
13414       dwp_text = string_printf (" [in DWP file %s]",
13415                                 lbasename (dwp_file->name));
13416
13417     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13418                " [in module %s]"),
13419              kind, dwo_name, hex_string (signature),
13420              dwp_text.c_str (),
13421              this_unit->is_debug_types ? "TU" : "CU",
13422              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13423   }
13424   return NULL;
13425 }
13426
13427 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13428    See lookup_dwo_cutu_unit for details.  */
13429
13430 static struct dwo_unit *
13431 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13432                       const char *dwo_name, const char *comp_dir,
13433                       ULONGEST signature)
13434 {
13435   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13436 }
13437
13438 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13439    See lookup_dwo_cutu_unit for details.  */
13440
13441 static struct dwo_unit *
13442 lookup_dwo_type_unit (struct signatured_type *this_tu,
13443                       const char *dwo_name, const char *comp_dir)
13444 {
13445   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13446 }
13447
13448 /* Traversal function for queue_and_load_all_dwo_tus.  */
13449
13450 static int
13451 queue_and_load_dwo_tu (void **slot, void *info)
13452 {
13453   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13454   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13455   ULONGEST signature = dwo_unit->signature;
13456   struct signatured_type *sig_type =
13457     lookup_dwo_signatured_type (per_cu->cu, signature);
13458
13459   if (sig_type != NULL)
13460     {
13461       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13462
13463       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13464          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13465          while processing PER_CU.  */
13466       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13467         load_full_type_unit (sig_cu);
13468       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13469     }
13470
13471   return 1;
13472 }
13473
13474 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13475    The DWO may have the only definition of the type, though it may not be
13476    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13477    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13478
13479 static void
13480 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13481 {
13482   struct dwo_unit *dwo_unit;
13483   struct dwo_file *dwo_file;
13484
13485   gdb_assert (!per_cu->is_debug_types);
13486   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13487   gdb_assert (per_cu->cu != NULL);
13488
13489   dwo_unit = per_cu->cu->dwo_unit;
13490   gdb_assert (dwo_unit != NULL);
13491
13492   dwo_file = dwo_unit->dwo_file;
13493   if (dwo_file->tus != NULL)
13494     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13495 }
13496
13497 /* Free all resources associated with DWO_FILE.
13498    Close the DWO file and munmap the sections.  */
13499
13500 static void
13501 free_dwo_file (struct dwo_file *dwo_file)
13502 {
13503   /* Note: dbfd is NULL for virtual DWO files.  */
13504   gdb_bfd_unref (dwo_file->dbfd);
13505
13506   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13507 }
13508
13509 /* Traversal function for free_dwo_files.  */
13510
13511 static int
13512 free_dwo_file_from_slot (void **slot, void *info)
13513 {
13514   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13515
13516   free_dwo_file (dwo_file);
13517
13518   return 1;
13519 }
13520
13521 /* Free all resources associated with DWO_FILES.  */
13522
13523 static void
13524 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13525 {
13526   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13527 }
13528 \f
13529 /* Read in various DIEs.  */
13530
13531 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13532    Inherit only the children of the DW_AT_abstract_origin DIE not being
13533    already referenced by DW_AT_abstract_origin from the children of the
13534    current DIE.  */
13535
13536 static void
13537 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13538 {
13539   struct die_info *child_die;
13540   sect_offset *offsetp;
13541   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13542   struct die_info *origin_die;
13543   /* Iterator of the ORIGIN_DIE children.  */
13544   struct die_info *origin_child_die;
13545   struct attribute *attr;
13546   struct dwarf2_cu *origin_cu;
13547   struct pending **origin_previous_list_in_scope;
13548
13549   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13550   if (!attr)
13551     return;
13552
13553   /* Note that following die references may follow to a die in a
13554      different cu.  */
13555
13556   origin_cu = cu;
13557   origin_die = follow_die_ref (die, attr, &origin_cu);
13558
13559   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13560      symbols in.  */
13561   origin_previous_list_in_scope = origin_cu->list_in_scope;
13562   origin_cu->list_in_scope = cu->list_in_scope;
13563
13564   if (die->tag != origin_die->tag
13565       && !(die->tag == DW_TAG_inlined_subroutine
13566            && origin_die->tag == DW_TAG_subprogram))
13567     complaint (_("DIE %s and its abstract origin %s have different tags"),
13568                sect_offset_str (die->sect_off),
13569                sect_offset_str (origin_die->sect_off));
13570
13571   std::vector<sect_offset> offsets;
13572
13573   for (child_die = die->child;
13574        child_die && child_die->tag;
13575        child_die = sibling_die (child_die))
13576     {
13577       struct die_info *child_origin_die;
13578       struct dwarf2_cu *child_origin_cu;
13579
13580       /* We are trying to process concrete instance entries:
13581          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13582          it's not relevant to our analysis here. i.e. detecting DIEs that are
13583          present in the abstract instance but not referenced in the concrete
13584          one.  */
13585       if (child_die->tag == DW_TAG_call_site
13586           || child_die->tag == DW_TAG_GNU_call_site)
13587         continue;
13588
13589       /* For each CHILD_DIE, find the corresponding child of
13590          ORIGIN_DIE.  If there is more than one layer of
13591          DW_AT_abstract_origin, follow them all; there shouldn't be,
13592          but GCC versions at least through 4.4 generate this (GCC PR
13593          40573).  */
13594       child_origin_die = child_die;
13595       child_origin_cu = cu;
13596       while (1)
13597         {
13598           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13599                               child_origin_cu);
13600           if (attr == NULL)
13601             break;
13602           child_origin_die = follow_die_ref (child_origin_die, attr,
13603                                              &child_origin_cu);
13604         }
13605
13606       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13607          counterpart may exist.  */
13608       if (child_origin_die != child_die)
13609         {
13610           if (child_die->tag != child_origin_die->tag
13611               && !(child_die->tag == DW_TAG_inlined_subroutine
13612                    && child_origin_die->tag == DW_TAG_subprogram))
13613             complaint (_("Child DIE %s and its abstract origin %s have "
13614                          "different tags"),
13615                        sect_offset_str (child_die->sect_off),
13616                        sect_offset_str (child_origin_die->sect_off));
13617           if (child_origin_die->parent != origin_die)
13618             complaint (_("Child DIE %s and its abstract origin %s have "
13619                          "different parents"),
13620                        sect_offset_str (child_die->sect_off),
13621                        sect_offset_str (child_origin_die->sect_off));
13622           else
13623             offsets.push_back (child_origin_die->sect_off);
13624         }
13625     }
13626   std::sort (offsets.begin (), offsets.end ());
13627   sect_offset *offsets_end = offsets.data () + offsets.size ();
13628   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13629     if (offsetp[-1] == *offsetp)
13630       complaint (_("Multiple children of DIE %s refer "
13631                    "to DIE %s as their abstract origin"),
13632                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13633
13634   offsetp = offsets.data ();
13635   origin_child_die = origin_die->child;
13636   while (origin_child_die && origin_child_die->tag)
13637     {
13638       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13639       while (offsetp < offsets_end
13640              && *offsetp < origin_child_die->sect_off)
13641         offsetp++;
13642       if (offsetp >= offsets_end
13643           || *offsetp > origin_child_die->sect_off)
13644         {
13645           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13646              Check whether we're already processing ORIGIN_CHILD_DIE.
13647              This can happen with mutually referenced abstract_origins.
13648              PR 16581.  */
13649           if (!origin_child_die->in_process)
13650             process_die (origin_child_die, origin_cu);
13651         }
13652       origin_child_die = sibling_die (origin_child_die);
13653     }
13654   origin_cu->list_in_scope = origin_previous_list_in_scope;
13655 }
13656
13657 static void
13658 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13659 {
13660   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13661   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13662   struct context_stack *newobj;
13663   CORE_ADDR lowpc;
13664   CORE_ADDR highpc;
13665   struct die_info *child_die;
13666   struct attribute *attr, *call_line, *call_file;
13667   const char *name;
13668   CORE_ADDR baseaddr;
13669   struct block *block;
13670   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13671   std::vector<struct symbol *> template_args;
13672   struct template_symbol *templ_func = NULL;
13673
13674   if (inlined_func)
13675     {
13676       /* If we do not have call site information, we can't show the
13677          caller of this inlined function.  That's too confusing, so
13678          only use the scope for local variables.  */
13679       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13680       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13681       if (call_line == NULL || call_file == NULL)
13682         {
13683           read_lexical_block_scope (die, cu);
13684           return;
13685         }
13686     }
13687
13688   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13689
13690   name = dwarf2_name (die, cu);
13691
13692   /* Ignore functions with missing or empty names.  These are actually
13693      illegal according to the DWARF standard.  */
13694   if (name == NULL)
13695     {
13696       complaint (_("missing name for subprogram DIE at %s"),
13697                  sect_offset_str (die->sect_off));
13698       return;
13699     }
13700
13701   /* Ignore functions with missing or invalid low and high pc attributes.  */
13702   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13703       <= PC_BOUNDS_INVALID)
13704     {
13705       attr = dwarf2_attr (die, DW_AT_external, cu);
13706       if (!attr || !DW_UNSND (attr))
13707         complaint (_("cannot get low and high bounds "
13708                      "for subprogram DIE at %s"),
13709                    sect_offset_str (die->sect_off));
13710       return;
13711     }
13712
13713   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13714   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13715
13716   /* If we have any template arguments, then we must allocate a
13717      different sort of symbol.  */
13718   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13719     {
13720       if (child_die->tag == DW_TAG_template_type_param
13721           || child_die->tag == DW_TAG_template_value_param)
13722         {
13723           templ_func = allocate_template_symbol (objfile);
13724           templ_func->subclass = SYMBOL_TEMPLATE;
13725           break;
13726         }
13727     }
13728
13729   newobj = cu->builder->push_context (0, lowpc);
13730   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13731                              (struct symbol *) templ_func);
13732
13733   /* If there is a location expression for DW_AT_frame_base, record
13734      it.  */
13735   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13736   if (attr)
13737     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13738
13739   /* If there is a location for the static link, record it.  */
13740   newobj->static_link = NULL;
13741   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13742   if (attr)
13743     {
13744       newobj->static_link
13745         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13746       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13747     }
13748
13749   cu->list_in_scope = cu->builder->get_local_symbols ();
13750
13751   if (die->child != NULL)
13752     {
13753       child_die = die->child;
13754       while (child_die && child_die->tag)
13755         {
13756           if (child_die->tag == DW_TAG_template_type_param
13757               || child_die->tag == DW_TAG_template_value_param)
13758             {
13759               struct symbol *arg = new_symbol (child_die, NULL, cu);
13760
13761               if (arg != NULL)
13762                 template_args.push_back (arg);
13763             }
13764           else
13765             process_die (child_die, cu);
13766           child_die = sibling_die (child_die);
13767         }
13768     }
13769
13770   inherit_abstract_dies (die, cu);
13771
13772   /* If we have a DW_AT_specification, we might need to import using
13773      directives from the context of the specification DIE.  See the
13774      comment in determine_prefix.  */
13775   if (cu->language == language_cplus
13776       && dwarf2_attr (die, DW_AT_specification, cu))
13777     {
13778       struct dwarf2_cu *spec_cu = cu;
13779       struct die_info *spec_die = die_specification (die, &spec_cu);
13780
13781       while (spec_die)
13782         {
13783           child_die = spec_die->child;
13784           while (child_die && child_die->tag)
13785             {
13786               if (child_die->tag == DW_TAG_imported_module)
13787                 process_die (child_die, spec_cu);
13788               child_die = sibling_die (child_die);
13789             }
13790
13791           /* In some cases, GCC generates specification DIEs that
13792              themselves contain DW_AT_specification attributes.  */
13793           spec_die = die_specification (spec_die, &spec_cu);
13794         }
13795     }
13796
13797   struct context_stack cstk = cu->builder->pop_context ();
13798   /* Make a block for the local symbols within.  */
13799   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13800                                      cstk.static_link, lowpc, highpc);
13801
13802   /* For C++, set the block's scope.  */
13803   if ((cu->language == language_cplus
13804        || cu->language == language_fortran
13805        || cu->language == language_d
13806        || cu->language == language_rust)
13807       && cu->processing_has_namespace_info)
13808     block_set_scope (block, determine_prefix (die, cu),
13809                      &objfile->objfile_obstack);
13810
13811   /* If we have address ranges, record them.  */
13812   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13813
13814   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13815
13816   /* Attach template arguments to function.  */
13817   if (!template_args.empty ())
13818     {
13819       gdb_assert (templ_func != NULL);
13820
13821       templ_func->n_template_arguments = template_args.size ();
13822       templ_func->template_arguments
13823         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13824                      templ_func->n_template_arguments);
13825       memcpy (templ_func->template_arguments,
13826               template_args.data (),
13827               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13828
13829       /* Make sure that the symtab is set on the new symbols.  Even
13830          though they don't appear in this symtab directly, other parts
13831          of gdb assume that symbols do, and this is reasonably
13832          true.  */
13833       for (symbol *sym : template_args)
13834         symbol_set_symtab (sym, symbol_symtab (templ_func));
13835     }
13836
13837   /* In C++, we can have functions nested inside functions (e.g., when
13838      a function declares a class that has methods).  This means that
13839      when we finish processing a function scope, we may need to go
13840      back to building a containing block's symbol lists.  */
13841   *cu->builder->get_local_symbols () = cstk.locals;
13842   cu->builder->set_local_using_directives (cstk.local_using_directives);
13843
13844   /* If we've finished processing a top-level function, subsequent
13845      symbols go in the file symbol list.  */
13846   if (cu->builder->outermost_context_p ())
13847     cu->list_in_scope = cu->builder->get_file_symbols ();
13848 }
13849
13850 /* Process all the DIES contained within a lexical block scope.  Start
13851    a new scope, process the dies, and then close the scope.  */
13852
13853 static void
13854 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13855 {
13856   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13857   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13858   CORE_ADDR lowpc, highpc;
13859   struct die_info *child_die;
13860   CORE_ADDR baseaddr;
13861
13862   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13863
13864   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13865   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13866      as multiple lexical blocks?  Handling children in a sane way would
13867      be nasty.  Might be easier to properly extend generic blocks to
13868      describe ranges.  */
13869   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13870     {
13871     case PC_BOUNDS_NOT_PRESENT:
13872       /* DW_TAG_lexical_block has no attributes, process its children as if
13873          there was no wrapping by that DW_TAG_lexical_block.
13874          GCC does no longer produces such DWARF since GCC r224161.  */
13875       for (child_die = die->child;
13876            child_die != NULL && child_die->tag;
13877            child_die = sibling_die (child_die))
13878         process_die (child_die, cu);
13879       return;
13880     case PC_BOUNDS_INVALID:
13881       return;
13882     }
13883   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13884   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13885
13886   cu->builder->push_context (0, lowpc);
13887   if (die->child != NULL)
13888     {
13889       child_die = die->child;
13890       while (child_die && child_die->tag)
13891         {
13892           process_die (child_die, cu);
13893           child_die = sibling_die (child_die);
13894         }
13895     }
13896   inherit_abstract_dies (die, cu);
13897   struct context_stack cstk = cu->builder->pop_context ();
13898
13899   if (*cu->builder->get_local_symbols () != NULL
13900       || (*cu->builder->get_local_using_directives ()) != NULL)
13901     {
13902       struct block *block
13903         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13904                                      cstk.start_addr, highpc);
13905
13906       /* Note that recording ranges after traversing children, as we
13907          do here, means that recording a parent's ranges entails
13908          walking across all its children's ranges as they appear in
13909          the address map, which is quadratic behavior.
13910
13911          It would be nicer to record the parent's ranges before
13912          traversing its children, simply overriding whatever you find
13913          there.  But since we don't even decide whether to create a
13914          block until after we've traversed its children, that's hard
13915          to do.  */
13916       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13917     }
13918   *cu->builder->get_local_symbols () = cstk.locals;
13919   cu->builder->set_local_using_directives (cstk.local_using_directives);
13920 }
13921
13922 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13923
13924 static void
13925 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13926 {
13927   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13928   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13929   CORE_ADDR pc, baseaddr;
13930   struct attribute *attr;
13931   struct call_site *call_site, call_site_local;
13932   void **slot;
13933   int nparams;
13934   struct die_info *child_die;
13935
13936   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13937
13938   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13939   if (attr == NULL)
13940     {
13941       /* This was a pre-DWARF-5 GNU extension alias
13942          for DW_AT_call_return_pc.  */
13943       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13944     }
13945   if (!attr)
13946     {
13947       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13948                    "DIE %s [in module %s]"),
13949                  sect_offset_str (die->sect_off), objfile_name (objfile));
13950       return;
13951     }
13952   pc = attr_value_as_address (attr) + baseaddr;
13953   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13954
13955   if (cu->call_site_htab == NULL)
13956     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13957                                                NULL, &objfile->objfile_obstack,
13958                                                hashtab_obstack_allocate, NULL);
13959   call_site_local.pc = pc;
13960   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13961   if (*slot != NULL)
13962     {
13963       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13964                    "DIE %s [in module %s]"),
13965                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13966                  objfile_name (objfile));
13967       return;
13968     }
13969
13970   /* Count parameters at the caller.  */
13971
13972   nparams = 0;
13973   for (child_die = die->child; child_die && child_die->tag;
13974        child_die = sibling_die (child_die))
13975     {
13976       if (child_die->tag != DW_TAG_call_site_parameter
13977           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13978         {
13979           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13980                        "DW_TAG_call_site child DIE %s [in module %s]"),
13981                      child_die->tag, sect_offset_str (child_die->sect_off),
13982                      objfile_name (objfile));
13983           continue;
13984         }
13985
13986       nparams++;
13987     }
13988
13989   call_site
13990     = ((struct call_site *)
13991        obstack_alloc (&objfile->objfile_obstack,
13992                       sizeof (*call_site)
13993                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13994   *slot = call_site;
13995   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13996   call_site->pc = pc;
13997
13998   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
13999       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14000     {
14001       struct die_info *func_die;
14002
14003       /* Skip also over DW_TAG_inlined_subroutine.  */
14004       for (func_die = die->parent;
14005            func_die && func_die->tag != DW_TAG_subprogram
14006            && func_die->tag != DW_TAG_subroutine_type;
14007            func_die = func_die->parent);
14008
14009       /* DW_AT_call_all_calls is a superset
14010          of DW_AT_call_all_tail_calls.  */
14011       if (func_die
14012           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14013           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14014           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14015           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14016         {
14017           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14018              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14019              both the initial caller containing the real return address PC and
14020              the final callee containing the current PC of a chain of tail
14021              calls do not need to have the tail call list complete.  But any
14022              function candidate for a virtual tail call frame searched via
14023              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14024              determined unambiguously.  */
14025         }
14026       else
14027         {
14028           struct type *func_type = NULL;
14029
14030           if (func_die)
14031             func_type = get_die_type (func_die, cu);
14032           if (func_type != NULL)
14033             {
14034               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14035
14036               /* Enlist this call site to the function.  */
14037               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14038               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14039             }
14040           else
14041             complaint (_("Cannot find function owning DW_TAG_call_site "
14042                          "DIE %s [in module %s]"),
14043                        sect_offset_str (die->sect_off), objfile_name (objfile));
14044         }
14045     }
14046
14047   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14048   if (attr == NULL)
14049     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14050   if (attr == NULL)
14051     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14052   if (attr == NULL)
14053     {
14054       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14055       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14056     }
14057   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14058   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14059     /* Keep NULL DWARF_BLOCK.  */;
14060   else if (attr_form_is_block (attr))
14061     {
14062       struct dwarf2_locexpr_baton *dlbaton;
14063
14064       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14065       dlbaton->data = DW_BLOCK (attr)->data;
14066       dlbaton->size = DW_BLOCK (attr)->size;
14067       dlbaton->per_cu = cu->per_cu;
14068
14069       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14070     }
14071   else if (attr_form_is_ref (attr))
14072     {
14073       struct dwarf2_cu *target_cu = cu;
14074       struct die_info *target_die;
14075
14076       target_die = follow_die_ref (die, attr, &target_cu);
14077       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14078       if (die_is_declaration (target_die, target_cu))
14079         {
14080           const char *target_physname;
14081
14082           /* Prefer the mangled name; otherwise compute the demangled one.  */
14083           target_physname = dw2_linkage_name (target_die, target_cu);
14084           if (target_physname == NULL)
14085             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14086           if (target_physname == NULL)
14087             complaint (_("DW_AT_call_target target DIE has invalid "
14088                          "physname, for referencing DIE %s [in module %s]"),
14089                        sect_offset_str (die->sect_off), objfile_name (objfile));
14090           else
14091             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14092         }
14093       else
14094         {
14095           CORE_ADDR lowpc;
14096
14097           /* DW_AT_entry_pc should be preferred.  */
14098           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14099               <= PC_BOUNDS_INVALID)
14100             complaint (_("DW_AT_call_target target DIE has invalid "
14101                          "low pc, for referencing DIE %s [in module %s]"),
14102                        sect_offset_str (die->sect_off), objfile_name (objfile));
14103           else
14104             {
14105               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14106               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14107             }
14108         }
14109     }
14110   else
14111     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14112                  "block nor reference, for DIE %s [in module %s]"),
14113                sect_offset_str (die->sect_off), objfile_name (objfile));
14114
14115   call_site->per_cu = cu->per_cu;
14116
14117   for (child_die = die->child;
14118        child_die && child_die->tag;
14119        child_die = sibling_die (child_die))
14120     {
14121       struct call_site_parameter *parameter;
14122       struct attribute *loc, *origin;
14123
14124       if (child_die->tag != DW_TAG_call_site_parameter
14125           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14126         {
14127           /* Already printed the complaint above.  */
14128           continue;
14129         }
14130
14131       gdb_assert (call_site->parameter_count < nparams);
14132       parameter = &call_site->parameter[call_site->parameter_count];
14133
14134       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14135          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14136          register is contained in DW_AT_call_value.  */
14137
14138       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14139       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14140       if (origin == NULL)
14141         {
14142           /* This was a pre-DWARF-5 GNU extension alias
14143              for DW_AT_call_parameter.  */
14144           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14145         }
14146       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14147         {
14148           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14149
14150           sect_offset sect_off
14151             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14152           if (!offset_in_cu_p (&cu->header, sect_off))
14153             {
14154               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14155                  binding can be done only inside one CU.  Such referenced DIE
14156                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14157               complaint (_("DW_AT_call_parameter offset is not in CU for "
14158                            "DW_TAG_call_site child DIE %s [in module %s]"),
14159                          sect_offset_str (child_die->sect_off),
14160                          objfile_name (objfile));
14161               continue;
14162             }
14163           parameter->u.param_cu_off
14164             = (cu_offset) (sect_off - cu->header.sect_off);
14165         }
14166       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14167         {
14168           complaint (_("No DW_FORM_block* DW_AT_location for "
14169                        "DW_TAG_call_site child DIE %s [in module %s]"),
14170                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14171           continue;
14172         }
14173       else
14174         {
14175           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14176             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14177           if (parameter->u.dwarf_reg != -1)
14178             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14179           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14180                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14181                                              &parameter->u.fb_offset))
14182             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14183           else
14184             {
14185               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14186                            "for DW_FORM_block* DW_AT_location is supported for "
14187                            "DW_TAG_call_site child DIE %s "
14188                            "[in module %s]"),
14189                          sect_offset_str (child_die->sect_off),
14190                          objfile_name (objfile));
14191               continue;
14192             }
14193         }
14194
14195       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14196       if (attr == NULL)
14197         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14198       if (!attr_form_is_block (attr))
14199         {
14200           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14201                        "DW_TAG_call_site child DIE %s [in module %s]"),
14202                      sect_offset_str (child_die->sect_off),
14203                      objfile_name (objfile));
14204           continue;
14205         }
14206       parameter->value = DW_BLOCK (attr)->data;
14207       parameter->value_size = DW_BLOCK (attr)->size;
14208
14209       /* Parameters are not pre-cleared by memset above.  */
14210       parameter->data_value = NULL;
14211       parameter->data_value_size = 0;
14212       call_site->parameter_count++;
14213
14214       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14215       if (attr == NULL)
14216         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14217       if (attr)
14218         {
14219           if (!attr_form_is_block (attr))
14220             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14221                          "DW_TAG_call_site child DIE %s [in module %s]"),
14222                        sect_offset_str (child_die->sect_off),
14223                        objfile_name (objfile));
14224           else
14225             {
14226               parameter->data_value = DW_BLOCK (attr)->data;
14227               parameter->data_value_size = DW_BLOCK (attr)->size;
14228             }
14229         }
14230     }
14231 }
14232
14233 /* Helper function for read_variable.  If DIE represents a virtual
14234    table, then return the type of the concrete object that is
14235    associated with the virtual table.  Otherwise, return NULL.  */
14236
14237 static struct type *
14238 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14239 {
14240   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14241   if (attr == NULL)
14242     return NULL;
14243
14244   /* Find the type DIE.  */
14245   struct die_info *type_die = NULL;
14246   struct dwarf2_cu *type_cu = cu;
14247
14248   if (attr_form_is_ref (attr))
14249     type_die = follow_die_ref (die, attr, &type_cu);
14250   if (type_die == NULL)
14251     return NULL;
14252
14253   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14254     return NULL;
14255   return die_containing_type (type_die, type_cu);
14256 }
14257
14258 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14259
14260 static void
14261 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14262 {
14263   struct rust_vtable_symbol *storage = NULL;
14264
14265   if (cu->language == language_rust)
14266     {
14267       struct type *containing_type = rust_containing_type (die, cu);
14268
14269       if (containing_type != NULL)
14270         {
14271           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14272
14273           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14274                                     struct rust_vtable_symbol);
14275           initialize_objfile_symbol (storage);
14276           storage->concrete_type = containing_type;
14277           storage->subclass = SYMBOL_RUST_VTABLE;
14278         }
14279     }
14280
14281   struct symbol *res = new_symbol (die, NULL, cu, storage);
14282   struct attribute *abstract_origin
14283     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14284   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14285   if (res == NULL && loc && abstract_origin)
14286     {
14287       /* We have a variable without a name, but with a location and an abstract
14288          origin.  This may be a concrete instance of an abstract variable
14289          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14290          later.  */
14291       struct dwarf2_cu *origin_cu = cu;
14292       struct die_info *origin_die
14293         = follow_die_ref (die, abstract_origin, &origin_cu);
14294       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14295       dpo->abstract_to_concrete[origin_die].push_back (die);
14296     }
14297 }
14298
14299 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14300    reading .debug_rnglists.
14301    Callback's type should be:
14302     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14303    Return true if the attributes are present and valid, otherwise,
14304    return false.  */
14305
14306 template <typename Callback>
14307 static bool
14308 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14309                          Callback &&callback)
14310 {
14311   struct dwarf2_per_objfile *dwarf2_per_objfile
14312     = cu->per_cu->dwarf2_per_objfile;
14313   struct objfile *objfile = dwarf2_per_objfile->objfile;
14314   bfd *obfd = objfile->obfd;
14315   /* Base address selection entry.  */
14316   CORE_ADDR base;
14317   int found_base;
14318   const gdb_byte *buffer;
14319   CORE_ADDR baseaddr;
14320   bool overflow = false;
14321
14322   found_base = cu->base_known;
14323   base = cu->base_address;
14324
14325   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14326   if (offset >= dwarf2_per_objfile->rnglists.size)
14327     {
14328       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14329                  offset);
14330       return false;
14331     }
14332   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14333
14334   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14335
14336   while (1)
14337     {
14338       /* Initialize it due to a false compiler warning.  */
14339       CORE_ADDR range_beginning = 0, range_end = 0;
14340       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14341                                  + dwarf2_per_objfile->rnglists.size);
14342       unsigned int bytes_read;
14343
14344       if (buffer == buf_end)
14345         {
14346           overflow = true;
14347           break;
14348         }
14349       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14350       switch (rlet)
14351         {
14352         case DW_RLE_end_of_list:
14353           break;
14354         case DW_RLE_base_address:
14355           if (buffer + cu->header.addr_size > buf_end)
14356             {
14357               overflow = true;
14358               break;
14359             }
14360           base = read_address (obfd, buffer, cu, &bytes_read);
14361           found_base = 1;
14362           buffer += bytes_read;
14363           break;
14364         case DW_RLE_start_length:
14365           if (buffer + cu->header.addr_size > buf_end)
14366             {
14367               overflow = true;
14368               break;
14369             }
14370           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14371           buffer += bytes_read;
14372           range_end = (range_beginning
14373                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14374           buffer += bytes_read;
14375           if (buffer > buf_end)
14376             {
14377               overflow = true;
14378               break;
14379             }
14380           break;
14381         case DW_RLE_offset_pair:
14382           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14383           buffer += bytes_read;
14384           if (buffer > buf_end)
14385             {
14386               overflow = true;
14387               break;
14388             }
14389           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14390           buffer += bytes_read;
14391           if (buffer > buf_end)
14392             {
14393               overflow = true;
14394               break;
14395             }
14396           break;
14397         case DW_RLE_start_end:
14398           if (buffer + 2 * cu->header.addr_size > buf_end)
14399             {
14400               overflow = true;
14401               break;
14402             }
14403           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14404           buffer += bytes_read;
14405           range_end = read_address (obfd, buffer, cu, &bytes_read);
14406           buffer += bytes_read;
14407           break;
14408         default:
14409           complaint (_("Invalid .debug_rnglists data (no base address)"));
14410           return false;
14411         }
14412       if (rlet == DW_RLE_end_of_list || overflow)
14413         break;
14414       if (rlet == DW_RLE_base_address)
14415         continue;
14416
14417       if (!found_base)
14418         {
14419           /* We have no valid base address for the ranges
14420              data.  */
14421           complaint (_("Invalid .debug_rnglists data (no base address)"));
14422           return false;
14423         }
14424
14425       if (range_beginning > range_end)
14426         {
14427           /* Inverted range entries are invalid.  */
14428           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14429           return false;
14430         }
14431
14432       /* Empty range entries have no effect.  */
14433       if (range_beginning == range_end)
14434         continue;
14435
14436       range_beginning += base;
14437       range_end += base;
14438
14439       /* A not-uncommon case of bad debug info.
14440          Don't pollute the addrmap with bad data.  */
14441       if (range_beginning + baseaddr == 0
14442           && !dwarf2_per_objfile->has_section_at_zero)
14443         {
14444           complaint (_(".debug_rnglists entry has start address of zero"
14445                        " [in module %s]"), objfile_name (objfile));
14446           continue;
14447         }
14448
14449       callback (range_beginning, range_end);
14450     }
14451
14452   if (overflow)
14453     {
14454       complaint (_("Offset %d is not terminated "
14455                    "for DW_AT_ranges attribute"),
14456                  offset);
14457       return false;
14458     }
14459
14460   return true;
14461 }
14462
14463 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14464    Callback's type should be:
14465     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14466    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14467
14468 template <typename Callback>
14469 static int
14470 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14471                        Callback &&callback)
14472 {
14473   struct dwarf2_per_objfile *dwarf2_per_objfile
14474       = cu->per_cu->dwarf2_per_objfile;
14475   struct objfile *objfile = dwarf2_per_objfile->objfile;
14476   struct comp_unit_head *cu_header = &cu->header;
14477   bfd *obfd = objfile->obfd;
14478   unsigned int addr_size = cu_header->addr_size;
14479   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14480   /* Base address selection entry.  */
14481   CORE_ADDR base;
14482   int found_base;
14483   unsigned int dummy;
14484   const gdb_byte *buffer;
14485   CORE_ADDR baseaddr;
14486
14487   if (cu_header->version >= 5)
14488     return dwarf2_rnglists_process (offset, cu, callback);
14489
14490   found_base = cu->base_known;
14491   base = cu->base_address;
14492
14493   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14494   if (offset >= dwarf2_per_objfile->ranges.size)
14495     {
14496       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14497                  offset);
14498       return 0;
14499     }
14500   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14501
14502   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14503
14504   while (1)
14505     {
14506       CORE_ADDR range_beginning, range_end;
14507
14508       range_beginning = read_address (obfd, buffer, cu, &dummy);
14509       buffer += addr_size;
14510       range_end = read_address (obfd, buffer, cu, &dummy);
14511       buffer += addr_size;
14512       offset += 2 * addr_size;
14513
14514       /* An end of list marker is a pair of zero addresses.  */
14515       if (range_beginning == 0 && range_end == 0)
14516         /* Found the end of list entry.  */
14517         break;
14518
14519       /* Each base address selection entry is a pair of 2 values.
14520          The first is the largest possible address, the second is
14521          the base address.  Check for a base address here.  */
14522       if ((range_beginning & mask) == mask)
14523         {
14524           /* If we found the largest possible address, then we already
14525              have the base address in range_end.  */
14526           base = range_end;
14527           found_base = 1;
14528           continue;
14529         }
14530
14531       if (!found_base)
14532         {
14533           /* We have no valid base address for the ranges
14534              data.  */
14535           complaint (_("Invalid .debug_ranges data (no base address)"));
14536           return 0;
14537         }
14538
14539       if (range_beginning > range_end)
14540         {
14541           /* Inverted range entries are invalid.  */
14542           complaint (_("Invalid .debug_ranges data (inverted range)"));
14543           return 0;
14544         }
14545
14546       /* Empty range entries have no effect.  */
14547       if (range_beginning == range_end)
14548         continue;
14549
14550       range_beginning += base;
14551       range_end += base;
14552
14553       /* A not-uncommon case of bad debug info.
14554          Don't pollute the addrmap with bad data.  */
14555       if (range_beginning + baseaddr == 0
14556           && !dwarf2_per_objfile->has_section_at_zero)
14557         {
14558           complaint (_(".debug_ranges entry has start address of zero"
14559                        " [in module %s]"), objfile_name (objfile));
14560           continue;
14561         }
14562
14563       callback (range_beginning, range_end);
14564     }
14565
14566   return 1;
14567 }
14568
14569 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14570    Return 1 if the attributes are present and valid, otherwise, return 0.
14571    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14572
14573 static int
14574 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14575                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14576                     struct partial_symtab *ranges_pst)
14577 {
14578   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14579   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14580   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14581                                        SECT_OFF_TEXT (objfile));
14582   int low_set = 0;
14583   CORE_ADDR low = 0;
14584   CORE_ADDR high = 0;
14585   int retval;
14586
14587   retval = dwarf2_ranges_process (offset, cu,
14588     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14589     {
14590       if (ranges_pst != NULL)
14591         {
14592           CORE_ADDR lowpc;
14593           CORE_ADDR highpc;
14594
14595           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14596                                                range_beginning + baseaddr)
14597                    - baseaddr);
14598           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14599                                                 range_end + baseaddr)
14600                     - baseaddr);
14601           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14602                              ranges_pst);
14603         }
14604
14605       /* FIXME: This is recording everything as a low-high
14606          segment of consecutive addresses.  We should have a
14607          data structure for discontiguous block ranges
14608          instead.  */
14609       if (! low_set)
14610         {
14611           low = range_beginning;
14612           high = range_end;
14613           low_set = 1;
14614         }
14615       else
14616         {
14617           if (range_beginning < low)
14618             low = range_beginning;
14619           if (range_end > high)
14620             high = range_end;
14621         }
14622     });
14623   if (!retval)
14624     return 0;
14625
14626   if (! low_set)
14627     /* If the first entry is an end-of-list marker, the range
14628        describes an empty scope, i.e. no instructions.  */
14629     return 0;
14630
14631   if (low_return)
14632     *low_return = low;
14633   if (high_return)
14634     *high_return = high;
14635   return 1;
14636 }
14637
14638 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14639    definition for the return value.  *LOWPC and *HIGHPC are set iff
14640    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14641
14642 static enum pc_bounds_kind
14643 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14644                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14645                       struct partial_symtab *pst)
14646 {
14647   struct dwarf2_per_objfile *dwarf2_per_objfile
14648     = cu->per_cu->dwarf2_per_objfile;
14649   struct attribute *attr;
14650   struct attribute *attr_high;
14651   CORE_ADDR low = 0;
14652   CORE_ADDR high = 0;
14653   enum pc_bounds_kind ret;
14654
14655   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14656   if (attr_high)
14657     {
14658       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14659       if (attr)
14660         {
14661           low = attr_value_as_address (attr);
14662           high = attr_value_as_address (attr_high);
14663           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14664             high += low;
14665         }
14666       else
14667         /* Found high w/o low attribute.  */
14668         return PC_BOUNDS_INVALID;
14669
14670       /* Found consecutive range of addresses.  */
14671       ret = PC_BOUNDS_HIGH_LOW;
14672     }
14673   else
14674     {
14675       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14676       if (attr != NULL)
14677         {
14678           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14679              We take advantage of the fact that DW_AT_ranges does not appear
14680              in DW_TAG_compile_unit of DWO files.  */
14681           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14682           unsigned int ranges_offset = (DW_UNSND (attr)
14683                                         + (need_ranges_base
14684                                            ? cu->ranges_base
14685                                            : 0));
14686
14687           /* Value of the DW_AT_ranges attribute is the offset in the
14688              .debug_ranges section.  */
14689           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14690             return PC_BOUNDS_INVALID;
14691           /* Found discontinuous range of addresses.  */
14692           ret = PC_BOUNDS_RANGES;
14693         }
14694       else
14695         return PC_BOUNDS_NOT_PRESENT;
14696     }
14697
14698   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14699   if (high <= low)
14700     return PC_BOUNDS_INVALID;
14701
14702   /* When using the GNU linker, .gnu.linkonce. sections are used to
14703      eliminate duplicate copies of functions and vtables and such.
14704      The linker will arbitrarily choose one and discard the others.
14705      The AT_*_pc values for such functions refer to local labels in
14706      these sections.  If the section from that file was discarded, the
14707      labels are not in the output, so the relocs get a value of 0.
14708      If this is a discarded function, mark the pc bounds as invalid,
14709      so that GDB will ignore it.  */
14710   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14711     return PC_BOUNDS_INVALID;
14712
14713   *lowpc = low;
14714   if (highpc)
14715     *highpc = high;
14716   return ret;
14717 }
14718
14719 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14720    its low and high PC addresses.  Do nothing if these addresses could not
14721    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14722    and HIGHPC to the high address if greater than HIGHPC.  */
14723
14724 static void
14725 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14726                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14727                                  struct dwarf2_cu *cu)
14728 {
14729   CORE_ADDR low, high;
14730   struct die_info *child = die->child;
14731
14732   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14733     {
14734       *lowpc = std::min (*lowpc, low);
14735       *highpc = std::max (*highpc, high);
14736     }
14737
14738   /* If the language does not allow nested subprograms (either inside
14739      subprograms or lexical blocks), we're done.  */
14740   if (cu->language != language_ada)
14741     return;
14742
14743   /* Check all the children of the given DIE.  If it contains nested
14744      subprograms, then check their pc bounds.  Likewise, we need to
14745      check lexical blocks as well, as they may also contain subprogram
14746      definitions.  */
14747   while (child && child->tag)
14748     {
14749       if (child->tag == DW_TAG_subprogram
14750           || child->tag == DW_TAG_lexical_block)
14751         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14752       child = sibling_die (child);
14753     }
14754 }
14755
14756 /* Get the low and high pc's represented by the scope DIE, and store
14757    them in *LOWPC and *HIGHPC.  If the correct values can't be
14758    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14759
14760 static void
14761 get_scope_pc_bounds (struct die_info *die,
14762                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14763                      struct dwarf2_cu *cu)
14764 {
14765   CORE_ADDR best_low = (CORE_ADDR) -1;
14766   CORE_ADDR best_high = (CORE_ADDR) 0;
14767   CORE_ADDR current_low, current_high;
14768
14769   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14770       >= PC_BOUNDS_RANGES)
14771     {
14772       best_low = current_low;
14773       best_high = current_high;
14774     }
14775   else
14776     {
14777       struct die_info *child = die->child;
14778
14779       while (child && child->tag)
14780         {
14781           switch (child->tag) {
14782           case DW_TAG_subprogram:
14783             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14784             break;
14785           case DW_TAG_namespace:
14786           case DW_TAG_module:
14787             /* FIXME: carlton/2004-01-16: Should we do this for
14788                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14789                that current GCC's always emit the DIEs corresponding
14790                to definitions of methods of classes as children of a
14791                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14792                the DIEs giving the declarations, which could be
14793                anywhere).  But I don't see any reason why the
14794                standards says that they have to be there.  */
14795             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14796
14797             if (current_low != ((CORE_ADDR) -1))
14798               {
14799                 best_low = std::min (best_low, current_low);
14800                 best_high = std::max (best_high, current_high);
14801               }
14802             break;
14803           default:
14804             /* Ignore.  */
14805             break;
14806           }
14807
14808           child = sibling_die (child);
14809         }
14810     }
14811
14812   *lowpc = best_low;
14813   *highpc = best_high;
14814 }
14815
14816 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14817    in DIE.  */
14818
14819 static void
14820 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14821                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14822 {
14823   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14824   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14825   struct attribute *attr;
14826   struct attribute *attr_high;
14827
14828   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14829   if (attr_high)
14830     {
14831       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14832       if (attr)
14833         {
14834           CORE_ADDR low = attr_value_as_address (attr);
14835           CORE_ADDR high = attr_value_as_address (attr_high);
14836
14837           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14838             high += low;
14839
14840           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14841           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14842           cu->builder->record_block_range (block, low, high - 1);
14843         }
14844     }
14845
14846   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14847   if (attr)
14848     {
14849       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14850          We take advantage of the fact that DW_AT_ranges does not appear
14851          in DW_TAG_compile_unit of DWO files.  */
14852       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14853
14854       /* The value of the DW_AT_ranges attribute is the offset of the
14855          address range list in the .debug_ranges section.  */
14856       unsigned long offset = (DW_UNSND (attr)
14857                               + (need_ranges_base ? cu->ranges_base : 0));
14858
14859       std::vector<blockrange> blockvec;
14860       dwarf2_ranges_process (offset, cu,
14861         [&] (CORE_ADDR start, CORE_ADDR end)
14862         {
14863           start += baseaddr;
14864           end += baseaddr;
14865           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14866           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14867           cu->builder->record_block_range (block, start, end - 1);
14868           blockvec.emplace_back (start, end);
14869         });
14870
14871       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14872     }
14873 }
14874
14875 /* Check whether the producer field indicates either of GCC < 4.6, or the
14876    Intel C/C++ compiler, and cache the result in CU.  */
14877
14878 static void
14879 check_producer (struct dwarf2_cu *cu)
14880 {
14881   int major, minor;
14882
14883   if (cu->producer == NULL)
14884     {
14885       /* For unknown compilers expect their behavior is DWARF version
14886          compliant.
14887
14888          GCC started to support .debug_types sections by -gdwarf-4 since
14889          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14890          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14891          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14892          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14893     }
14894   else if (producer_is_gcc (cu->producer, &major, &minor))
14895     {
14896       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14897       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14898     }
14899   else if (producer_is_icc (cu->producer, &major, &minor))
14900     cu->producer_is_icc_lt_14 = major < 14;
14901   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14902     cu->producer_is_codewarrior = true;
14903   else
14904     {
14905       /* For other non-GCC compilers, expect their behavior is DWARF version
14906          compliant.  */
14907     }
14908
14909   cu->checked_producer = 1;
14910 }
14911
14912 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14913    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14914    during 4.6.0 experimental.  */
14915
14916 static int
14917 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14918 {
14919   if (!cu->checked_producer)
14920     check_producer (cu);
14921
14922   return cu->producer_is_gxx_lt_4_6;
14923 }
14924
14925
14926 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14927    with incorrect is_stmt attributes.  */
14928
14929 static bool
14930 producer_is_codewarrior (struct dwarf2_cu *cu)
14931 {
14932   if (!cu->checked_producer)
14933     check_producer (cu);
14934
14935   return cu->producer_is_codewarrior;
14936 }
14937
14938 /* Return the default accessibility type if it is not overriden by
14939    DW_AT_accessibility.  */
14940
14941 static enum dwarf_access_attribute
14942 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14943 {
14944   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14945     {
14946       /* The default DWARF 2 accessibility for members is public, the default
14947          accessibility for inheritance is private.  */
14948
14949       if (die->tag != DW_TAG_inheritance)
14950         return DW_ACCESS_public;
14951       else
14952         return DW_ACCESS_private;
14953     }
14954   else
14955     {
14956       /* DWARF 3+ defines the default accessibility a different way.  The same
14957          rules apply now for DW_TAG_inheritance as for the members and it only
14958          depends on the container kind.  */
14959
14960       if (die->parent->tag == DW_TAG_class_type)
14961         return DW_ACCESS_private;
14962       else
14963         return DW_ACCESS_public;
14964     }
14965 }
14966
14967 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14968    offset.  If the attribute was not found return 0, otherwise return
14969    1.  If it was found but could not properly be handled, set *OFFSET
14970    to 0.  */
14971
14972 static int
14973 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14974                              LONGEST *offset)
14975 {
14976   struct attribute *attr;
14977
14978   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14979   if (attr != NULL)
14980     {
14981       *offset = 0;
14982
14983       /* Note that we do not check for a section offset first here.
14984          This is because DW_AT_data_member_location is new in DWARF 4,
14985          so if we see it, we can assume that a constant form is really
14986          a constant and not a section offset.  */
14987       if (attr_form_is_constant (attr))
14988         *offset = dwarf2_get_attr_constant_value (attr, 0);
14989       else if (attr_form_is_section_offset (attr))
14990         dwarf2_complex_location_expr_complaint ();
14991       else if (attr_form_is_block (attr))
14992         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14993       else
14994         dwarf2_complex_location_expr_complaint ();
14995
14996       return 1;
14997     }
14998
14999   return 0;
15000 }
15001
15002 /* Add an aggregate field to the field list.  */
15003
15004 static void
15005 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15006                   struct dwarf2_cu *cu)
15007 {
15008   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15009   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15010   struct nextfield *new_field;
15011   struct attribute *attr;
15012   struct field *fp;
15013   const char *fieldname = "";
15014
15015   if (die->tag == DW_TAG_inheritance)
15016     {
15017       fip->baseclasses.emplace_back ();
15018       new_field = &fip->baseclasses.back ();
15019     }
15020   else
15021     {
15022       fip->fields.emplace_back ();
15023       new_field = &fip->fields.back ();
15024     }
15025
15026   fip->nfields++;
15027
15028   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15029   if (attr)
15030     new_field->accessibility = DW_UNSND (attr);
15031   else
15032     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15033   if (new_field->accessibility != DW_ACCESS_public)
15034     fip->non_public_fields = 1;
15035
15036   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15037   if (attr)
15038     new_field->virtuality = DW_UNSND (attr);
15039   else
15040     new_field->virtuality = DW_VIRTUALITY_none;
15041
15042   fp = &new_field->field;
15043
15044   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15045     {
15046       LONGEST offset;
15047
15048       /* Data member other than a C++ static data member.  */
15049
15050       /* Get type of field.  */
15051       fp->type = die_type (die, cu);
15052
15053       SET_FIELD_BITPOS (*fp, 0);
15054
15055       /* Get bit size of field (zero if none).  */
15056       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15057       if (attr)
15058         {
15059           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15060         }
15061       else
15062         {
15063           FIELD_BITSIZE (*fp) = 0;
15064         }
15065
15066       /* Get bit offset of field.  */
15067       if (handle_data_member_location (die, cu, &offset))
15068         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15069       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15070       if (attr)
15071         {
15072           if (gdbarch_bits_big_endian (gdbarch))
15073             {
15074               /* For big endian bits, the DW_AT_bit_offset gives the
15075                  additional bit offset from the MSB of the containing
15076                  anonymous object to the MSB of the field.  We don't
15077                  have to do anything special since we don't need to
15078                  know the size of the anonymous object.  */
15079               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15080             }
15081           else
15082             {
15083               /* For little endian bits, compute the bit offset to the
15084                  MSB of the anonymous object, subtract off the number of
15085                  bits from the MSB of the field to the MSB of the
15086                  object, and then subtract off the number of bits of
15087                  the field itself.  The result is the bit offset of
15088                  the LSB of the field.  */
15089               int anonymous_size;
15090               int bit_offset = DW_UNSND (attr);
15091
15092               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15093               if (attr)
15094                 {
15095                   /* The size of the anonymous object containing
15096                      the bit field is explicit, so use the
15097                      indicated size (in bytes).  */
15098                   anonymous_size = DW_UNSND (attr);
15099                 }
15100               else
15101                 {
15102                   /* The size of the anonymous object containing
15103                      the bit field must be inferred from the type
15104                      attribute of the data member containing the
15105                      bit field.  */
15106                   anonymous_size = TYPE_LENGTH (fp->type);
15107                 }
15108               SET_FIELD_BITPOS (*fp,
15109                                 (FIELD_BITPOS (*fp)
15110                                  + anonymous_size * bits_per_byte
15111                                  - bit_offset - FIELD_BITSIZE (*fp)));
15112             }
15113         }
15114       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15115       if (attr != NULL)
15116         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15117                                 + dwarf2_get_attr_constant_value (attr, 0)));
15118
15119       /* Get name of field.  */
15120       fieldname = dwarf2_name (die, cu);
15121       if (fieldname == NULL)
15122         fieldname = "";
15123
15124       /* The name is already allocated along with this objfile, so we don't
15125          need to duplicate it for the type.  */
15126       fp->name = fieldname;
15127
15128       /* Change accessibility for artificial fields (e.g. virtual table
15129          pointer or virtual base class pointer) to private.  */
15130       if (dwarf2_attr (die, DW_AT_artificial, cu))
15131         {
15132           FIELD_ARTIFICIAL (*fp) = 1;
15133           new_field->accessibility = DW_ACCESS_private;
15134           fip->non_public_fields = 1;
15135         }
15136     }
15137   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15138     {
15139       /* C++ static member.  */
15140
15141       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15142          is a declaration, but all versions of G++ as of this writing
15143          (so through at least 3.2.1) incorrectly generate
15144          DW_TAG_variable tags.  */
15145
15146       const char *physname;
15147
15148       /* Get name of field.  */
15149       fieldname = dwarf2_name (die, cu);
15150       if (fieldname == NULL)
15151         return;
15152
15153       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15154       if (attr
15155           /* Only create a symbol if this is an external value.
15156              new_symbol checks this and puts the value in the global symbol
15157              table, which we want.  If it is not external, new_symbol
15158              will try to put the value in cu->list_in_scope which is wrong.  */
15159           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15160         {
15161           /* A static const member, not much different than an enum as far as
15162              we're concerned, except that we can support more types.  */
15163           new_symbol (die, NULL, cu);
15164         }
15165
15166       /* Get physical name.  */
15167       physname = dwarf2_physname (fieldname, die, cu);
15168
15169       /* The name is already allocated along with this objfile, so we don't
15170          need to duplicate it for the type.  */
15171       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15172       FIELD_TYPE (*fp) = die_type (die, cu);
15173       FIELD_NAME (*fp) = fieldname;
15174     }
15175   else if (die->tag == DW_TAG_inheritance)
15176     {
15177       LONGEST offset;
15178
15179       /* C++ base class field.  */
15180       if (handle_data_member_location (die, cu, &offset))
15181         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15182       FIELD_BITSIZE (*fp) = 0;
15183       FIELD_TYPE (*fp) = die_type (die, cu);
15184       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15185     }
15186   else if (die->tag == DW_TAG_variant_part)
15187     {
15188       /* process_structure_scope will treat this DIE as a union.  */
15189       process_structure_scope (die, cu);
15190
15191       /* The variant part is relative to the start of the enclosing
15192          structure.  */
15193       SET_FIELD_BITPOS (*fp, 0);
15194       fp->type = get_die_type (die, cu);
15195       fp->artificial = 1;
15196       fp->name = "<<variant>>";
15197
15198       /* Normally a DW_TAG_variant_part won't have a size, but our
15199          representation requires one, so set it to the maximum of the
15200          child sizes.  */
15201       if (TYPE_LENGTH (fp->type) == 0)
15202         {
15203           unsigned max = 0;
15204           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15205             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15206               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15207           TYPE_LENGTH (fp->type) = max;
15208         }
15209     }
15210   else
15211     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15212 }
15213
15214 /* Can the type given by DIE define another type?  */
15215
15216 static bool
15217 type_can_define_types (const struct die_info *die)
15218 {
15219   switch (die->tag)
15220     {
15221     case DW_TAG_typedef:
15222     case DW_TAG_class_type:
15223     case DW_TAG_structure_type:
15224     case DW_TAG_union_type:
15225     case DW_TAG_enumeration_type:
15226       return true;
15227
15228     default:
15229       return false;
15230     }
15231 }
15232
15233 /* Add a type definition defined in the scope of the FIP's class.  */
15234
15235 static void
15236 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15237                       struct dwarf2_cu *cu)
15238 {
15239   struct decl_field fp;
15240   memset (&fp, 0, sizeof (fp));
15241
15242   gdb_assert (type_can_define_types (die));
15243
15244   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15245   fp.name = dwarf2_name (die, cu);
15246   fp.type = read_type_die (die, cu);
15247
15248   /* Save accessibility.  */
15249   enum dwarf_access_attribute accessibility;
15250   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15251   if (attr != NULL)
15252     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15253   else
15254     accessibility = dwarf2_default_access_attribute (die, cu);
15255   switch (accessibility)
15256     {
15257     case DW_ACCESS_public:
15258       /* The assumed value if neither private nor protected.  */
15259       break;
15260     case DW_ACCESS_private:
15261       fp.is_private = 1;
15262       break;
15263     case DW_ACCESS_protected:
15264       fp.is_protected = 1;
15265       break;
15266     default:
15267       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15268     }
15269
15270   if (die->tag == DW_TAG_typedef)
15271     fip->typedef_field_list.push_back (fp);
15272   else
15273     fip->nested_types_list.push_back (fp);
15274 }
15275
15276 /* Create the vector of fields, and attach it to the type.  */
15277
15278 static void
15279 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15280                               struct dwarf2_cu *cu)
15281 {
15282   int nfields = fip->nfields;
15283
15284   /* Record the field count, allocate space for the array of fields,
15285      and create blank accessibility bitfields if necessary.  */
15286   TYPE_NFIELDS (type) = nfields;
15287   TYPE_FIELDS (type) = (struct field *)
15288     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15289
15290   if (fip->non_public_fields && cu->language != language_ada)
15291     {
15292       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15293
15294       TYPE_FIELD_PRIVATE_BITS (type) =
15295         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15296       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15297
15298       TYPE_FIELD_PROTECTED_BITS (type) =
15299         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15300       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15301
15302       TYPE_FIELD_IGNORE_BITS (type) =
15303         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15304       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15305     }
15306
15307   /* If the type has baseclasses, allocate and clear a bit vector for
15308      TYPE_FIELD_VIRTUAL_BITS.  */
15309   if (!fip->baseclasses.empty () && cu->language != language_ada)
15310     {
15311       int num_bytes = B_BYTES (fip->baseclasses.size ());
15312       unsigned char *pointer;
15313
15314       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15315       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15316       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15317       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15318       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15319     }
15320
15321   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15322     {
15323       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15324
15325       for (int index = 0; index < nfields; ++index)
15326         {
15327           struct nextfield &field = fip->fields[index];
15328
15329           if (field.variant.is_discriminant)
15330             di->discriminant_index = index;
15331           else if (field.variant.default_branch)
15332             di->default_index = index;
15333           else
15334             di->discriminants[index] = field.variant.discriminant_value;
15335         }
15336     }
15337
15338   /* Copy the saved-up fields into the field vector.  */
15339   for (int i = 0; i < nfields; ++i)
15340     {
15341       struct nextfield &field
15342         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15343            : fip->fields[i - fip->baseclasses.size ()]);
15344
15345       TYPE_FIELD (type, i) = field.field;
15346       switch (field.accessibility)
15347         {
15348         case DW_ACCESS_private:
15349           if (cu->language != language_ada)
15350             SET_TYPE_FIELD_PRIVATE (type, i);
15351           break;
15352
15353         case DW_ACCESS_protected:
15354           if (cu->language != language_ada)
15355             SET_TYPE_FIELD_PROTECTED (type, i);
15356           break;
15357
15358         case DW_ACCESS_public:
15359           break;
15360
15361         default:
15362           /* Unknown accessibility.  Complain and treat it as public.  */
15363           {
15364             complaint (_("unsupported accessibility %d"),
15365                        field.accessibility);
15366           }
15367           break;
15368         }
15369       if (i < fip->baseclasses.size ())
15370         {
15371           switch (field.virtuality)
15372             {
15373             case DW_VIRTUALITY_virtual:
15374             case DW_VIRTUALITY_pure_virtual:
15375               if (cu->language == language_ada)
15376                 error (_("unexpected virtuality in component of Ada type"));
15377               SET_TYPE_FIELD_VIRTUAL (type, i);
15378               break;
15379             }
15380         }
15381     }
15382 }
15383
15384 /* Return true if this member function is a constructor, false
15385    otherwise.  */
15386
15387 static int
15388 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15389 {
15390   const char *fieldname;
15391   const char *type_name;
15392   int len;
15393
15394   if (die->parent == NULL)
15395     return 0;
15396
15397   if (die->parent->tag != DW_TAG_structure_type
15398       && die->parent->tag != DW_TAG_union_type
15399       && die->parent->tag != DW_TAG_class_type)
15400     return 0;
15401
15402   fieldname = dwarf2_name (die, cu);
15403   type_name = dwarf2_name (die->parent, cu);
15404   if (fieldname == NULL || type_name == NULL)
15405     return 0;
15406
15407   len = strlen (fieldname);
15408   return (strncmp (fieldname, type_name, len) == 0
15409           && (type_name[len] == '\0' || type_name[len] == '<'));
15410 }
15411
15412 /* Add a member function to the proper fieldlist.  */
15413
15414 static void
15415 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15416                       struct type *type, struct dwarf2_cu *cu)
15417 {
15418   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15419   struct attribute *attr;
15420   int i;
15421   struct fnfieldlist *flp = nullptr;
15422   struct fn_field *fnp;
15423   const char *fieldname;
15424   struct type *this_type;
15425   enum dwarf_access_attribute accessibility;
15426
15427   if (cu->language == language_ada)
15428     error (_("unexpected member function in Ada type"));
15429
15430   /* Get name of member function.  */
15431   fieldname = dwarf2_name (die, cu);
15432   if (fieldname == NULL)
15433     return;
15434
15435   /* Look up member function name in fieldlist.  */
15436   for (i = 0; i < fip->fnfieldlists.size (); i++)
15437     {
15438       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15439         {
15440           flp = &fip->fnfieldlists[i];
15441           break;
15442         }
15443     }
15444
15445   /* Create a new fnfieldlist if necessary.  */
15446   if (flp == nullptr)
15447     {
15448       fip->fnfieldlists.emplace_back ();
15449       flp = &fip->fnfieldlists.back ();
15450       flp->name = fieldname;
15451       i = fip->fnfieldlists.size () - 1;
15452     }
15453
15454   /* Create a new member function field and add it to the vector of
15455      fnfieldlists.  */
15456   flp->fnfields.emplace_back ();
15457   fnp = &flp->fnfields.back ();
15458
15459   /* Delay processing of the physname until later.  */
15460   if (cu->language == language_cplus)
15461     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15462                         die, cu);
15463   else
15464     {
15465       const char *physname = dwarf2_physname (fieldname, die, cu);
15466       fnp->physname = physname ? physname : "";
15467     }
15468
15469   fnp->type = alloc_type (objfile);
15470   this_type = read_type_die (die, cu);
15471   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15472     {
15473       int nparams = TYPE_NFIELDS (this_type);
15474
15475       /* TYPE is the domain of this method, and THIS_TYPE is the type
15476            of the method itself (TYPE_CODE_METHOD).  */
15477       smash_to_method_type (fnp->type, type,
15478                             TYPE_TARGET_TYPE (this_type),
15479                             TYPE_FIELDS (this_type),
15480                             TYPE_NFIELDS (this_type),
15481                             TYPE_VARARGS (this_type));
15482
15483       /* Handle static member functions.
15484          Dwarf2 has no clean way to discern C++ static and non-static
15485          member functions.  G++ helps GDB by marking the first
15486          parameter for non-static member functions (which is the this
15487          pointer) as artificial.  We obtain this information from
15488          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15489       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15490         fnp->voffset = VOFFSET_STATIC;
15491     }
15492   else
15493     complaint (_("member function type missing for '%s'"),
15494                dwarf2_full_name (fieldname, die, cu));
15495
15496   /* Get fcontext from DW_AT_containing_type if present.  */
15497   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15498     fnp->fcontext = die_containing_type (die, cu);
15499
15500   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15501      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15502
15503   /* Get accessibility.  */
15504   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15505   if (attr)
15506     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15507   else
15508     accessibility = dwarf2_default_access_attribute (die, cu);
15509   switch (accessibility)
15510     {
15511     case DW_ACCESS_private:
15512       fnp->is_private = 1;
15513       break;
15514     case DW_ACCESS_protected:
15515       fnp->is_protected = 1;
15516       break;
15517     }
15518
15519   /* Check for artificial methods.  */
15520   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15521   if (attr && DW_UNSND (attr) != 0)
15522     fnp->is_artificial = 1;
15523
15524   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15525
15526   /* Get index in virtual function table if it is a virtual member
15527      function.  For older versions of GCC, this is an offset in the
15528      appropriate virtual table, as specified by DW_AT_containing_type.
15529      For everyone else, it is an expression to be evaluated relative
15530      to the object address.  */
15531
15532   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15533   if (attr)
15534     {
15535       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15536         {
15537           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15538             {
15539               /* Old-style GCC.  */
15540               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15541             }
15542           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15543                    || (DW_BLOCK (attr)->size > 1
15544                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15545                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15546             {
15547               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15548               if ((fnp->voffset % cu->header.addr_size) != 0)
15549                 dwarf2_complex_location_expr_complaint ();
15550               else
15551                 fnp->voffset /= cu->header.addr_size;
15552               fnp->voffset += 2;
15553             }
15554           else
15555             dwarf2_complex_location_expr_complaint ();
15556
15557           if (!fnp->fcontext)
15558             {
15559               /* If there is no `this' field and no DW_AT_containing_type,
15560                  we cannot actually find a base class context for the
15561                  vtable!  */
15562               if (TYPE_NFIELDS (this_type) == 0
15563                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15564                 {
15565                   complaint (_("cannot determine context for virtual member "
15566                                "function \"%s\" (offset %s)"),
15567                              fieldname, sect_offset_str (die->sect_off));
15568                 }
15569               else
15570                 {
15571                   fnp->fcontext
15572                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15573                 }
15574             }
15575         }
15576       else if (attr_form_is_section_offset (attr))
15577         {
15578           dwarf2_complex_location_expr_complaint ();
15579         }
15580       else
15581         {
15582           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15583                                                  fieldname);
15584         }
15585     }
15586   else
15587     {
15588       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15589       if (attr && DW_UNSND (attr))
15590         {
15591           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15592           complaint (_("Member function \"%s\" (offset %s) is virtual "
15593                        "but the vtable offset is not specified"),
15594                      fieldname, sect_offset_str (die->sect_off));
15595           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15596           TYPE_CPLUS_DYNAMIC (type) = 1;
15597         }
15598     }
15599 }
15600
15601 /* Create the vector of member function fields, and attach it to the type.  */
15602
15603 static void
15604 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15605                                  struct dwarf2_cu *cu)
15606 {
15607   if (cu->language == language_ada)
15608     error (_("unexpected member functions in Ada type"));
15609
15610   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15611   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15612     TYPE_ALLOC (type,
15613                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15614
15615   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15616     {
15617       struct fnfieldlist &nf = fip->fnfieldlists[i];
15618       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15619
15620       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15621       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15622       fn_flp->fn_fields = (struct fn_field *)
15623         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15624
15625       for (int k = 0; k < nf.fnfields.size (); ++k)
15626         fn_flp->fn_fields[k] = nf.fnfields[k];
15627     }
15628
15629   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15630 }
15631
15632 /* Returns non-zero if NAME is the name of a vtable member in CU's
15633    language, zero otherwise.  */
15634 static int
15635 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15636 {
15637   static const char vptr[] = "_vptr";
15638
15639   /* Look for the C++ form of the vtable.  */
15640   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15641     return 1;
15642
15643   return 0;
15644 }
15645
15646 /* GCC outputs unnamed structures that are really pointers to member
15647    functions, with the ABI-specified layout.  If TYPE describes
15648    such a structure, smash it into a member function type.
15649
15650    GCC shouldn't do this; it should just output pointer to member DIEs.
15651    This is GCC PR debug/28767.  */
15652
15653 static void
15654 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15655 {
15656   struct type *pfn_type, *self_type, *new_type;
15657
15658   /* Check for a structure with no name and two children.  */
15659   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15660     return;
15661
15662   /* Check for __pfn and __delta members.  */
15663   if (TYPE_FIELD_NAME (type, 0) == NULL
15664       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15665       || TYPE_FIELD_NAME (type, 1) == NULL
15666       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15667     return;
15668
15669   /* Find the type of the method.  */
15670   pfn_type = TYPE_FIELD_TYPE (type, 0);
15671   if (pfn_type == NULL
15672       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15673       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15674     return;
15675
15676   /* Look for the "this" argument.  */
15677   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15678   if (TYPE_NFIELDS (pfn_type) == 0
15679       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15680       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15681     return;
15682
15683   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15684   new_type = alloc_type (objfile);
15685   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15686                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15687                         TYPE_VARARGS (pfn_type));
15688   smash_to_methodptr_type (type, new_type);
15689 }
15690
15691 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15692    appropriate error checking and issuing complaints if there is a
15693    problem.  */
15694
15695 static ULONGEST
15696 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15697 {
15698   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15699
15700   if (attr == nullptr)
15701     return 0;
15702
15703   if (!attr_form_is_constant (attr))
15704     {
15705       complaint (_("DW_AT_alignment must have constant form"
15706                    " - DIE at %s [in module %s]"),
15707                  sect_offset_str (die->sect_off),
15708                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15709       return 0;
15710     }
15711
15712   ULONGEST align;
15713   if (attr->form == DW_FORM_sdata)
15714     {
15715       LONGEST val = DW_SND (attr);
15716       if (val < 0)
15717         {
15718           complaint (_("DW_AT_alignment value must not be negative"
15719                        " - DIE at %s [in module %s]"),
15720                      sect_offset_str (die->sect_off),
15721                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15722           return 0;
15723         }
15724       align = val;
15725     }
15726   else
15727     align = DW_UNSND (attr);
15728
15729   if (align == 0)
15730     {
15731       complaint (_("DW_AT_alignment value must not be zero"
15732                    " - DIE at %s [in module %s]"),
15733                  sect_offset_str (die->sect_off),
15734                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15735       return 0;
15736     }
15737   if ((align & (align - 1)) != 0)
15738     {
15739       complaint (_("DW_AT_alignment value must be a power of 2"
15740                    " - DIE at %s [in module %s]"),
15741                  sect_offset_str (die->sect_off),
15742                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15743       return 0;
15744     }
15745
15746   return align;
15747 }
15748
15749 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15750    the alignment for TYPE.  */
15751
15752 static void
15753 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15754                      struct type *type)
15755 {
15756   if (!set_type_align (type, get_alignment (cu, die)))
15757     complaint (_("DW_AT_alignment value too large"
15758                  " - DIE at %s [in module %s]"),
15759                sect_offset_str (die->sect_off),
15760                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15761 }
15762
15763 /* Called when we find the DIE that starts a structure or union scope
15764    (definition) to create a type for the structure or union.  Fill in
15765    the type's name and general properties; the members will not be
15766    processed until process_structure_scope.  A symbol table entry for
15767    the type will also not be done until process_structure_scope (assuming
15768    the type has a name).
15769
15770    NOTE: we need to call these functions regardless of whether or not the
15771    DIE has a DW_AT_name attribute, since it might be an anonymous
15772    structure or union.  This gets the type entered into our set of
15773    user defined types.  */
15774
15775 static struct type *
15776 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15777 {
15778   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15779   struct type *type;
15780   struct attribute *attr;
15781   const char *name;
15782
15783   /* If the definition of this type lives in .debug_types, read that type.
15784      Don't follow DW_AT_specification though, that will take us back up
15785      the chain and we want to go down.  */
15786   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15787   if (attr)
15788     {
15789       type = get_DW_AT_signature_type (die, attr, cu);
15790
15791       /* The type's CU may not be the same as CU.
15792          Ensure TYPE is recorded with CU in die_type_hash.  */
15793       return set_die_type (die, type, cu);
15794     }
15795
15796   type = alloc_type (objfile);
15797   INIT_CPLUS_SPECIFIC (type);
15798
15799   name = dwarf2_name (die, cu);
15800   if (name != NULL)
15801     {
15802       if (cu->language == language_cplus
15803           || cu->language == language_d
15804           || cu->language == language_rust)
15805         {
15806           const char *full_name = dwarf2_full_name (name, die, cu);
15807
15808           /* dwarf2_full_name might have already finished building the DIE's
15809              type.  If so, there is no need to continue.  */
15810           if (get_die_type (die, cu) != NULL)
15811             return get_die_type (die, cu);
15812
15813           TYPE_NAME (type) = full_name;
15814         }
15815       else
15816         {
15817           /* The name is already allocated along with this objfile, so
15818              we don't need to duplicate it for the type.  */
15819           TYPE_NAME (type) = name;
15820         }
15821     }
15822
15823   if (die->tag == DW_TAG_structure_type)
15824     {
15825       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15826     }
15827   else if (die->tag == DW_TAG_union_type)
15828     {
15829       TYPE_CODE (type) = TYPE_CODE_UNION;
15830     }
15831   else if (die->tag == DW_TAG_variant_part)
15832     {
15833       TYPE_CODE (type) = TYPE_CODE_UNION;
15834       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15835     }
15836   else
15837     {
15838       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15839     }
15840
15841   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15842     TYPE_DECLARED_CLASS (type) = 1;
15843
15844   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15845   if (attr)
15846     {
15847       if (attr_form_is_constant (attr))
15848         TYPE_LENGTH (type) = DW_UNSND (attr);
15849       else
15850         {
15851           /* For the moment, dynamic type sizes are not supported
15852              by GDB's struct type.  The actual size is determined
15853              on-demand when resolving the type of a given object,
15854              so set the type's length to zero for now.  Otherwise,
15855              we record an expression as the length, and that expression
15856              could lead to a very large value, which could eventually
15857              lead to us trying to allocate that much memory when creating
15858              a value of that type.  */
15859           TYPE_LENGTH (type) = 0;
15860         }
15861     }
15862   else
15863     {
15864       TYPE_LENGTH (type) = 0;
15865     }
15866
15867   maybe_set_alignment (cu, die, type);
15868
15869   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15870     {
15871       /* ICC<14 does not output the required DW_AT_declaration on
15872          incomplete types, but gives them a size of zero.  */
15873       TYPE_STUB (type) = 1;
15874     }
15875   else
15876     TYPE_STUB_SUPPORTED (type) = 1;
15877
15878   if (die_is_declaration (die, cu))
15879     TYPE_STUB (type) = 1;
15880   else if (attr == NULL && die->child == NULL
15881            && producer_is_realview (cu->producer))
15882     /* RealView does not output the required DW_AT_declaration
15883        on incomplete types.  */
15884     TYPE_STUB (type) = 1;
15885
15886   /* We need to add the type field to the die immediately so we don't
15887      infinitely recurse when dealing with pointers to the structure
15888      type within the structure itself.  */
15889   set_die_type (die, type, cu);
15890
15891   /* set_die_type should be already done.  */
15892   set_descriptive_type (type, die, cu);
15893
15894   return type;
15895 }
15896
15897 /* A helper for process_structure_scope that handles a single member
15898    DIE.  */
15899
15900 static void
15901 handle_struct_member_die (struct die_info *child_die, struct type *type,
15902                           struct field_info *fi,
15903                           std::vector<struct symbol *> *template_args,
15904                           struct dwarf2_cu *cu)
15905 {
15906   if (child_die->tag == DW_TAG_member
15907       || child_die->tag == DW_TAG_variable
15908       || child_die->tag == DW_TAG_variant_part)
15909     {
15910       /* NOTE: carlton/2002-11-05: A C++ static data member
15911          should be a DW_TAG_member that is a declaration, but
15912          all versions of G++ as of this writing (so through at
15913          least 3.2.1) incorrectly generate DW_TAG_variable
15914          tags for them instead.  */
15915       dwarf2_add_field (fi, child_die, cu);
15916     }
15917   else if (child_die->tag == DW_TAG_subprogram)
15918     {
15919       /* Rust doesn't have member functions in the C++ sense.
15920          However, it does emit ordinary functions as children
15921          of a struct DIE.  */
15922       if (cu->language == language_rust)
15923         read_func_scope (child_die, cu);
15924       else
15925         {
15926           /* C++ member function.  */
15927           dwarf2_add_member_fn (fi, child_die, type, cu);
15928         }
15929     }
15930   else if (child_die->tag == DW_TAG_inheritance)
15931     {
15932       /* C++ base class field.  */
15933       dwarf2_add_field (fi, child_die, cu);
15934     }
15935   else if (type_can_define_types (child_die))
15936     dwarf2_add_type_defn (fi, child_die, cu);
15937   else if (child_die->tag == DW_TAG_template_type_param
15938            || child_die->tag == DW_TAG_template_value_param)
15939     {
15940       struct symbol *arg = new_symbol (child_die, NULL, cu);
15941
15942       if (arg != NULL)
15943         template_args->push_back (arg);
15944     }
15945   else if (child_die->tag == DW_TAG_variant)
15946     {
15947       /* In a variant we want to get the discriminant and also add a
15948          field for our sole member child.  */
15949       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15950
15951       for (struct die_info *variant_child = child_die->child;
15952            variant_child != NULL;
15953            variant_child = sibling_die (variant_child))
15954         {
15955           if (variant_child->tag == DW_TAG_member)
15956             {
15957               handle_struct_member_die (variant_child, type, fi,
15958                                         template_args, cu);
15959               /* Only handle the one.  */
15960               break;
15961             }
15962         }
15963
15964       /* We don't handle this but we might as well report it if we see
15965          it.  */
15966       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15967           complaint (_("DW_AT_discr_list is not supported yet"
15968                        " - DIE at %s [in module %s]"),
15969                      sect_offset_str (child_die->sect_off),
15970                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15971
15972       /* The first field was just added, so we can stash the
15973          discriminant there.  */
15974       gdb_assert (!fi->fields.empty ());
15975       if (discr == NULL)
15976         fi->fields.back ().variant.default_branch = true;
15977       else
15978         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15979     }
15980 }
15981
15982 /* Finish creating a structure or union type, including filling in
15983    its members and creating a symbol for it.  */
15984
15985 static void
15986 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15987 {
15988   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15989   struct die_info *child_die;
15990   struct type *type;
15991
15992   type = get_die_type (die, cu);
15993   if (type == NULL)
15994     type = read_structure_type (die, cu);
15995
15996   /* When reading a DW_TAG_variant_part, we need to notice when we
15997      read the discriminant member, so we can record it later in the
15998      discriminant_info.  */
15999   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16000   sect_offset discr_offset;
16001   bool has_template_parameters = false;
16002
16003   if (is_variant_part)
16004     {
16005       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16006       if (discr == NULL)
16007         {
16008           /* Maybe it's a univariant form, an extension we support.
16009              In this case arrange not to check the offset.  */
16010           is_variant_part = false;
16011         }
16012       else if (attr_form_is_ref (discr))
16013         {
16014           struct dwarf2_cu *target_cu = cu;
16015           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16016
16017           discr_offset = target_die->sect_off;
16018         }
16019       else
16020         {
16021           complaint (_("DW_AT_discr does not have DIE reference form"
16022                        " - DIE at %s [in module %s]"),
16023                      sect_offset_str (die->sect_off),
16024                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16025           is_variant_part = false;
16026         }
16027     }
16028
16029   if (die->child != NULL && ! die_is_declaration (die, cu))
16030     {
16031       struct field_info fi;
16032       std::vector<struct symbol *> template_args;
16033
16034       child_die = die->child;
16035
16036       while (child_die && child_die->tag)
16037         {
16038           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16039
16040           if (is_variant_part && discr_offset == child_die->sect_off)
16041             fi.fields.back ().variant.is_discriminant = true;
16042
16043           child_die = sibling_die (child_die);
16044         }
16045
16046       /* Attach template arguments to type.  */
16047       if (!template_args.empty ())
16048         {
16049           has_template_parameters = true;
16050           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16051           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16052           TYPE_TEMPLATE_ARGUMENTS (type)
16053             = XOBNEWVEC (&objfile->objfile_obstack,
16054                          struct symbol *,
16055                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16056           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16057                   template_args.data (),
16058                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16059                    * sizeof (struct symbol *)));
16060         }
16061
16062       /* Attach fields and member functions to the type.  */
16063       if (fi.nfields)
16064         dwarf2_attach_fields_to_type (&fi, type, cu);
16065       if (!fi.fnfieldlists.empty ())
16066         {
16067           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16068
16069           /* Get the type which refers to the base class (possibly this
16070              class itself) which contains the vtable pointer for the current
16071              class from the DW_AT_containing_type attribute.  This use of
16072              DW_AT_containing_type is a GNU extension.  */
16073
16074           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16075             {
16076               struct type *t = die_containing_type (die, cu);
16077
16078               set_type_vptr_basetype (type, t);
16079               if (type == t)
16080                 {
16081                   int i;
16082
16083                   /* Our own class provides vtbl ptr.  */
16084                   for (i = TYPE_NFIELDS (t) - 1;
16085                        i >= TYPE_N_BASECLASSES (t);
16086                        --i)
16087                     {
16088                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16089
16090                       if (is_vtable_name (fieldname, cu))
16091                         {
16092                           set_type_vptr_fieldno (type, i);
16093                           break;
16094                         }
16095                     }
16096
16097                   /* Complain if virtual function table field not found.  */
16098                   if (i < TYPE_N_BASECLASSES (t))
16099                     complaint (_("virtual function table pointer "
16100                                  "not found when defining class '%s'"),
16101                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16102                 }
16103               else
16104                 {
16105                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16106                 }
16107             }
16108           else if (cu->producer
16109                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16110             {
16111               /* The IBM XLC compiler does not provide direct indication
16112                  of the containing type, but the vtable pointer is
16113                  always named __vfp.  */
16114
16115               int i;
16116
16117               for (i = TYPE_NFIELDS (type) - 1;
16118                    i >= TYPE_N_BASECLASSES (type);
16119                    --i)
16120                 {
16121                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16122                     {
16123                       set_type_vptr_fieldno (type, i);
16124                       set_type_vptr_basetype (type, type);
16125                       break;
16126                     }
16127                 }
16128             }
16129         }
16130
16131       /* Copy fi.typedef_field_list linked list elements content into the
16132          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16133       if (!fi.typedef_field_list.empty ())
16134         {
16135           int count = fi.typedef_field_list.size ();
16136
16137           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16138           TYPE_TYPEDEF_FIELD_ARRAY (type)
16139             = ((struct decl_field *)
16140                TYPE_ALLOC (type,
16141                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16142           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16143
16144           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16145             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16146         }
16147
16148       /* Copy fi.nested_types_list linked list elements content into the
16149          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16150       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16151         {
16152           int count = fi.nested_types_list.size ();
16153
16154           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16155           TYPE_NESTED_TYPES_ARRAY (type)
16156             = ((struct decl_field *)
16157                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16158           TYPE_NESTED_TYPES_COUNT (type) = count;
16159
16160           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16161             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16162         }
16163     }
16164
16165   quirk_gcc_member_function_pointer (type, objfile);
16166   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16167     cu->rust_unions.push_back (type);
16168
16169   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16170      snapshots) has been known to create a die giving a declaration
16171      for a class that has, as a child, a die giving a definition for a
16172      nested class.  So we have to process our children even if the
16173      current die is a declaration.  Normally, of course, a declaration
16174      won't have any children at all.  */
16175
16176   child_die = die->child;
16177
16178   while (child_die != NULL && child_die->tag)
16179     {
16180       if (child_die->tag == DW_TAG_member
16181           || child_die->tag == DW_TAG_variable
16182           || child_die->tag == DW_TAG_inheritance
16183           || child_die->tag == DW_TAG_template_value_param
16184           || child_die->tag == DW_TAG_template_type_param)
16185         {
16186           /* Do nothing.  */
16187         }
16188       else
16189         process_die (child_die, cu);
16190
16191       child_die = sibling_die (child_die);
16192     }
16193
16194   /* Do not consider external references.  According to the DWARF standard,
16195      these DIEs are identified by the fact that they have no byte_size
16196      attribute, and a declaration attribute.  */
16197   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16198       || !die_is_declaration (die, cu))
16199     {
16200       struct symbol *sym = new_symbol (die, type, cu);
16201
16202       if (has_template_parameters)
16203         {
16204           /* Make sure that the symtab is set on the new symbols.
16205              Even though they don't appear in this symtab directly,
16206              other parts of gdb assume that symbols do, and this is
16207              reasonably true.  */
16208           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16209             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16210                                symbol_symtab (sym));
16211         }
16212     }
16213 }
16214
16215 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16216    update TYPE using some information only available in DIE's children.  */
16217
16218 static void
16219 update_enumeration_type_from_children (struct die_info *die,
16220                                        struct type *type,
16221                                        struct dwarf2_cu *cu)
16222 {
16223   struct die_info *child_die;
16224   int unsigned_enum = 1;
16225   int flag_enum = 1;
16226   ULONGEST mask = 0;
16227
16228   auto_obstack obstack;
16229
16230   for (child_die = die->child;
16231        child_die != NULL && child_die->tag;
16232        child_die = sibling_die (child_die))
16233     {
16234       struct attribute *attr;
16235       LONGEST value;
16236       const gdb_byte *bytes;
16237       struct dwarf2_locexpr_baton *baton;
16238       const char *name;
16239
16240       if (child_die->tag != DW_TAG_enumerator)
16241         continue;
16242
16243       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16244       if (attr == NULL)
16245         continue;
16246
16247       name = dwarf2_name (child_die, cu);
16248       if (name == NULL)
16249         name = "<anonymous enumerator>";
16250
16251       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16252                                &value, &bytes, &baton);
16253       if (value < 0)
16254         {
16255           unsigned_enum = 0;
16256           flag_enum = 0;
16257         }
16258       else if ((mask & value) != 0)
16259         flag_enum = 0;
16260       else
16261         mask |= value;
16262
16263       /* If we already know that the enum type is neither unsigned, nor
16264          a flag type, no need to look at the rest of the enumerates.  */
16265       if (!unsigned_enum && !flag_enum)
16266         break;
16267     }
16268
16269   if (unsigned_enum)
16270     TYPE_UNSIGNED (type) = 1;
16271   if (flag_enum)
16272     TYPE_FLAG_ENUM (type) = 1;
16273 }
16274
16275 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16276    complete the type's fields yet, or create any symbols.  */
16277
16278 static struct type *
16279 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16280 {
16281   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16282   struct type *type;
16283   struct attribute *attr;
16284   const char *name;
16285
16286   /* If the definition of this type lives in .debug_types, read that type.
16287      Don't follow DW_AT_specification though, that will take us back up
16288      the chain and we want to go down.  */
16289   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16290   if (attr)
16291     {
16292       type = get_DW_AT_signature_type (die, attr, cu);
16293
16294       /* The type's CU may not be the same as CU.
16295          Ensure TYPE is recorded with CU in die_type_hash.  */
16296       return set_die_type (die, type, cu);
16297     }
16298
16299   type = alloc_type (objfile);
16300
16301   TYPE_CODE (type) = TYPE_CODE_ENUM;
16302   name = dwarf2_full_name (NULL, die, cu);
16303   if (name != NULL)
16304     TYPE_NAME (type) = name;
16305
16306   attr = dwarf2_attr (die, DW_AT_type, cu);
16307   if (attr != NULL)
16308     {
16309       struct type *underlying_type = die_type (die, cu);
16310
16311       TYPE_TARGET_TYPE (type) = underlying_type;
16312     }
16313
16314   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16315   if (attr)
16316     {
16317       TYPE_LENGTH (type) = DW_UNSND (attr);
16318     }
16319   else
16320     {
16321       TYPE_LENGTH (type) = 0;
16322     }
16323
16324   maybe_set_alignment (cu, die, type);
16325
16326   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16327      declared as private in the package spec, and then defined only
16328      inside the package body.  Such types are known as Taft Amendment
16329      Types.  When another package uses such a type, an incomplete DIE
16330      may be generated by the compiler.  */
16331   if (die_is_declaration (die, cu))
16332     TYPE_STUB (type) = 1;
16333
16334   /* Finish the creation of this type by using the enum's children.
16335      We must call this even when the underlying type has been provided
16336      so that we can determine if we're looking at a "flag" enum.  */
16337   update_enumeration_type_from_children (die, type, cu);
16338
16339   /* If this type has an underlying type that is not a stub, then we
16340      may use its attributes.  We always use the "unsigned" attribute
16341      in this situation, because ordinarily we guess whether the type
16342      is unsigned -- but the guess can be wrong and the underlying type
16343      can tell us the reality.  However, we defer to a local size
16344      attribute if one exists, because this lets the compiler override
16345      the underlying type if needed.  */
16346   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16347     {
16348       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16349       if (TYPE_LENGTH (type) == 0)
16350         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16351       if (TYPE_RAW_ALIGN (type) == 0
16352           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16353         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16354     }
16355
16356   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16357
16358   return set_die_type (die, type, cu);
16359 }
16360
16361 /* Given a pointer to a die which begins an enumeration, process all
16362    the dies that define the members of the enumeration, and create the
16363    symbol for the enumeration type.
16364
16365    NOTE: We reverse the order of the element list.  */
16366
16367 static void
16368 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16369 {
16370   struct type *this_type;
16371
16372   this_type = get_die_type (die, cu);
16373   if (this_type == NULL)
16374     this_type = read_enumeration_type (die, cu);
16375
16376   if (die->child != NULL)
16377     {
16378       struct die_info *child_die;
16379       struct symbol *sym;
16380       struct field *fields = NULL;
16381       int num_fields = 0;
16382       const char *name;
16383
16384       child_die = die->child;
16385       while (child_die && child_die->tag)
16386         {
16387           if (child_die->tag != DW_TAG_enumerator)
16388             {
16389               process_die (child_die, cu);
16390             }
16391           else
16392             {
16393               name = dwarf2_name (child_die, cu);
16394               if (name)
16395                 {
16396                   sym = new_symbol (child_die, this_type, cu);
16397
16398                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16399                     {
16400                       fields = (struct field *)
16401                         xrealloc (fields,
16402                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16403                                   * sizeof (struct field));
16404                     }
16405
16406                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16407                   FIELD_TYPE (fields[num_fields]) = NULL;
16408                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16409                   FIELD_BITSIZE (fields[num_fields]) = 0;
16410
16411                   num_fields++;
16412                 }
16413             }
16414
16415           child_die = sibling_die (child_die);
16416         }
16417
16418       if (num_fields)
16419         {
16420           TYPE_NFIELDS (this_type) = num_fields;
16421           TYPE_FIELDS (this_type) = (struct field *)
16422             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16423           memcpy (TYPE_FIELDS (this_type), fields,
16424                   sizeof (struct field) * num_fields);
16425           xfree (fields);
16426         }
16427     }
16428
16429   /* If we are reading an enum from a .debug_types unit, and the enum
16430      is a declaration, and the enum is not the signatured type in the
16431      unit, then we do not want to add a symbol for it.  Adding a
16432      symbol would in some cases obscure the true definition of the
16433      enum, giving users an incomplete type when the definition is
16434      actually available.  Note that we do not want to do this for all
16435      enums which are just declarations, because C++0x allows forward
16436      enum declarations.  */
16437   if (cu->per_cu->is_debug_types
16438       && die_is_declaration (die, cu))
16439     {
16440       struct signatured_type *sig_type;
16441
16442       sig_type = (struct signatured_type *) cu->per_cu;
16443       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16444       if (sig_type->type_offset_in_section != die->sect_off)
16445         return;
16446     }
16447
16448   new_symbol (die, this_type, cu);
16449 }
16450
16451 /* Extract all information from a DW_TAG_array_type DIE and put it in
16452    the DIE's type field.  For now, this only handles one dimensional
16453    arrays.  */
16454
16455 static struct type *
16456 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16457 {
16458   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16459   struct die_info *child_die;
16460   struct type *type;
16461   struct type *element_type, *range_type, *index_type;
16462   struct attribute *attr;
16463   const char *name;
16464   struct dynamic_prop *byte_stride_prop = NULL;
16465   unsigned int bit_stride = 0;
16466
16467   element_type = die_type (die, cu);
16468
16469   /* The die_type call above may have already set the type for this DIE.  */
16470   type = get_die_type (die, cu);
16471   if (type)
16472     return type;
16473
16474   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16475   if (attr != NULL)
16476     {
16477       int stride_ok;
16478
16479       byte_stride_prop
16480         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16481       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16482       if (!stride_ok)
16483         {
16484           complaint (_("unable to read array DW_AT_byte_stride "
16485                        " - DIE at %s [in module %s]"),
16486                      sect_offset_str (die->sect_off),
16487                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16488           /* Ignore this attribute.  We will likely not be able to print
16489              arrays of this type correctly, but there is little we can do
16490              to help if we cannot read the attribute's value.  */
16491           byte_stride_prop = NULL;
16492         }
16493     }
16494
16495   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16496   if (attr != NULL)
16497     bit_stride = DW_UNSND (attr);
16498
16499   /* Irix 6.2 native cc creates array types without children for
16500      arrays with unspecified length.  */
16501   if (die->child == NULL)
16502     {
16503       index_type = objfile_type (objfile)->builtin_int;
16504       range_type = create_static_range_type (NULL, index_type, 0, -1);
16505       type = create_array_type_with_stride (NULL, element_type, range_type,
16506                                             byte_stride_prop, bit_stride);
16507       return set_die_type (die, type, cu);
16508     }
16509
16510   std::vector<struct type *> range_types;
16511   child_die = die->child;
16512   while (child_die && child_die->tag)
16513     {
16514       if (child_die->tag == DW_TAG_subrange_type)
16515         {
16516           struct type *child_type = read_type_die (child_die, cu);
16517
16518           if (child_type != NULL)
16519             {
16520               /* The range type was succesfully read.  Save it for the
16521                  array type creation.  */
16522               range_types.push_back (child_type);
16523             }
16524         }
16525       child_die = sibling_die (child_die);
16526     }
16527
16528   /* Dwarf2 dimensions are output from left to right, create the
16529      necessary array types in backwards order.  */
16530
16531   type = element_type;
16532
16533   if (read_array_order (die, cu) == DW_ORD_col_major)
16534     {
16535       int i = 0;
16536
16537       while (i < range_types.size ())
16538         type = create_array_type_with_stride (NULL, type, range_types[i++],
16539                                               byte_stride_prop, bit_stride);
16540     }
16541   else
16542     {
16543       size_t ndim = range_types.size ();
16544       while (ndim-- > 0)
16545         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16546                                               byte_stride_prop, bit_stride);
16547     }
16548
16549   /* Understand Dwarf2 support for vector types (like they occur on
16550      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16551      array type.  This is not part of the Dwarf2/3 standard yet, but a
16552      custom vendor extension.  The main difference between a regular
16553      array and the vector variant is that vectors are passed by value
16554      to functions.  */
16555   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16556   if (attr)
16557     make_vector_type (type);
16558
16559   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16560      implementation may choose to implement triple vectors using this
16561      attribute.  */
16562   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16563   if (attr)
16564     {
16565       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16566         TYPE_LENGTH (type) = DW_UNSND (attr);
16567       else
16568         complaint (_("DW_AT_byte_size for array type smaller "
16569                      "than the total size of elements"));
16570     }
16571
16572   name = dwarf2_name (die, cu);
16573   if (name)
16574     TYPE_NAME (type) = name;
16575
16576   maybe_set_alignment (cu, die, type);
16577
16578   /* Install the type in the die.  */
16579   set_die_type (die, type, cu);
16580
16581   /* set_die_type should be already done.  */
16582   set_descriptive_type (type, die, cu);
16583
16584   return type;
16585 }
16586
16587 static enum dwarf_array_dim_ordering
16588 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16589 {
16590   struct attribute *attr;
16591
16592   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16593
16594   if (attr)
16595     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16596
16597   /* GNU F77 is a special case, as at 08/2004 array type info is the
16598      opposite order to the dwarf2 specification, but data is still
16599      laid out as per normal fortran.
16600
16601      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16602      version checking.  */
16603
16604   if (cu->language == language_fortran
16605       && cu->producer && strstr (cu->producer, "GNU F77"))
16606     {
16607       return DW_ORD_row_major;
16608     }
16609
16610   switch (cu->language_defn->la_array_ordering)
16611     {
16612     case array_column_major:
16613       return DW_ORD_col_major;
16614     case array_row_major:
16615     default:
16616       return DW_ORD_row_major;
16617     };
16618 }
16619
16620 /* Extract all information from a DW_TAG_set_type DIE and put it in
16621    the DIE's type field.  */
16622
16623 static struct type *
16624 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16625 {
16626   struct type *domain_type, *set_type;
16627   struct attribute *attr;
16628
16629   domain_type = die_type (die, cu);
16630
16631   /* The die_type call above may have already set the type for this DIE.  */
16632   set_type = get_die_type (die, cu);
16633   if (set_type)
16634     return set_type;
16635
16636   set_type = create_set_type (NULL, domain_type);
16637
16638   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16639   if (attr)
16640     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16641
16642   maybe_set_alignment (cu, die, set_type);
16643
16644   return set_die_type (die, set_type, cu);
16645 }
16646
16647 /* A helper for read_common_block that creates a locexpr baton.
16648    SYM is the symbol which we are marking as computed.
16649    COMMON_DIE is the DIE for the common block.
16650    COMMON_LOC is the location expression attribute for the common
16651    block itself.
16652    MEMBER_LOC is the location expression attribute for the particular
16653    member of the common block that we are processing.
16654    CU is the CU from which the above come.  */
16655
16656 static void
16657 mark_common_block_symbol_computed (struct symbol *sym,
16658                                    struct die_info *common_die,
16659                                    struct attribute *common_loc,
16660                                    struct attribute *member_loc,
16661                                    struct dwarf2_cu *cu)
16662 {
16663   struct dwarf2_per_objfile *dwarf2_per_objfile
16664     = cu->per_cu->dwarf2_per_objfile;
16665   struct objfile *objfile = dwarf2_per_objfile->objfile;
16666   struct dwarf2_locexpr_baton *baton;
16667   gdb_byte *ptr;
16668   unsigned int cu_off;
16669   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16670   LONGEST offset = 0;
16671
16672   gdb_assert (common_loc && member_loc);
16673   gdb_assert (attr_form_is_block (common_loc));
16674   gdb_assert (attr_form_is_block (member_loc)
16675               || attr_form_is_constant (member_loc));
16676
16677   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16678   baton->per_cu = cu->per_cu;
16679   gdb_assert (baton->per_cu);
16680
16681   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16682
16683   if (attr_form_is_constant (member_loc))
16684     {
16685       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16686       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16687     }
16688   else
16689     baton->size += DW_BLOCK (member_loc)->size;
16690
16691   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16692   baton->data = ptr;
16693
16694   *ptr++ = DW_OP_call4;
16695   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16696   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16697   ptr += 4;
16698
16699   if (attr_form_is_constant (member_loc))
16700     {
16701       *ptr++ = DW_OP_addr;
16702       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16703       ptr += cu->header.addr_size;
16704     }
16705   else
16706     {
16707       /* We have to copy the data here, because DW_OP_call4 will only
16708          use a DW_AT_location attribute.  */
16709       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16710       ptr += DW_BLOCK (member_loc)->size;
16711     }
16712
16713   *ptr++ = DW_OP_plus;
16714   gdb_assert (ptr - baton->data == baton->size);
16715
16716   SYMBOL_LOCATION_BATON (sym) = baton;
16717   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16718 }
16719
16720 /* Create appropriate locally-scoped variables for all the
16721    DW_TAG_common_block entries.  Also create a struct common_block
16722    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16723    is used to sepate the common blocks name namespace from regular
16724    variable names.  */
16725
16726 static void
16727 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16728 {
16729   struct attribute *attr;
16730
16731   attr = dwarf2_attr (die, DW_AT_location, cu);
16732   if (attr)
16733     {
16734       /* Support the .debug_loc offsets.  */
16735       if (attr_form_is_block (attr))
16736         {
16737           /* Ok.  */
16738         }
16739       else if (attr_form_is_section_offset (attr))
16740         {
16741           dwarf2_complex_location_expr_complaint ();
16742           attr = NULL;
16743         }
16744       else
16745         {
16746           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16747                                                  "common block member");
16748           attr = NULL;
16749         }
16750     }
16751
16752   if (die->child != NULL)
16753     {
16754       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16755       struct die_info *child_die;
16756       size_t n_entries = 0, size;
16757       struct common_block *common_block;
16758       struct symbol *sym;
16759
16760       for (child_die = die->child;
16761            child_die && child_die->tag;
16762            child_die = sibling_die (child_die))
16763         ++n_entries;
16764
16765       size = (sizeof (struct common_block)
16766               + (n_entries - 1) * sizeof (struct symbol *));
16767       common_block
16768         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16769                                                  size);
16770       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16771       common_block->n_entries = 0;
16772
16773       for (child_die = die->child;
16774            child_die && child_die->tag;
16775            child_die = sibling_die (child_die))
16776         {
16777           /* Create the symbol in the DW_TAG_common_block block in the current
16778              symbol scope.  */
16779           sym = new_symbol (child_die, NULL, cu);
16780           if (sym != NULL)
16781             {
16782               struct attribute *member_loc;
16783
16784               common_block->contents[common_block->n_entries++] = sym;
16785
16786               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16787                                         cu);
16788               if (member_loc)
16789                 {
16790                   /* GDB has handled this for a long time, but it is
16791                      not specified by DWARF.  It seems to have been
16792                      emitted by gfortran at least as recently as:
16793                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16794                   complaint (_("Variable in common block has "
16795                                "DW_AT_data_member_location "
16796                                "- DIE at %s [in module %s]"),
16797                                sect_offset_str (child_die->sect_off),
16798                              objfile_name (objfile));
16799
16800                   if (attr_form_is_section_offset (member_loc))
16801                     dwarf2_complex_location_expr_complaint ();
16802                   else if (attr_form_is_constant (member_loc)
16803                            || attr_form_is_block (member_loc))
16804                     {
16805                       if (attr)
16806                         mark_common_block_symbol_computed (sym, die, attr,
16807                                                            member_loc, cu);
16808                     }
16809                   else
16810                     dwarf2_complex_location_expr_complaint ();
16811                 }
16812             }
16813         }
16814
16815       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16816       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16817     }
16818 }
16819
16820 /* Create a type for a C++ namespace.  */
16821
16822 static struct type *
16823 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16824 {
16825   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16826   const char *previous_prefix, *name;
16827   int is_anonymous;
16828   struct type *type;
16829
16830   /* For extensions, reuse the type of the original namespace.  */
16831   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16832     {
16833       struct die_info *ext_die;
16834       struct dwarf2_cu *ext_cu = cu;
16835
16836       ext_die = dwarf2_extension (die, &ext_cu);
16837       type = read_type_die (ext_die, ext_cu);
16838
16839       /* EXT_CU may not be the same as CU.
16840          Ensure TYPE is recorded with CU in die_type_hash.  */
16841       return set_die_type (die, type, cu);
16842     }
16843
16844   name = namespace_name (die, &is_anonymous, cu);
16845
16846   /* Now build the name of the current namespace.  */
16847
16848   previous_prefix = determine_prefix (die, cu);
16849   if (previous_prefix[0] != '\0')
16850     name = typename_concat (&objfile->objfile_obstack,
16851                             previous_prefix, name, 0, cu);
16852
16853   /* Create the type.  */
16854   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16855
16856   return set_die_type (die, type, cu);
16857 }
16858
16859 /* Read a namespace scope.  */
16860
16861 static void
16862 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16863 {
16864   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16865   int is_anonymous;
16866
16867   /* Add a symbol associated to this if we haven't seen the namespace
16868      before.  Also, add a using directive if it's an anonymous
16869      namespace.  */
16870
16871   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16872     {
16873       struct type *type;
16874
16875       type = read_type_die (die, cu);
16876       new_symbol (die, type, cu);
16877
16878       namespace_name (die, &is_anonymous, cu);
16879       if (is_anonymous)
16880         {
16881           const char *previous_prefix = determine_prefix (die, cu);
16882
16883           std::vector<const char *> excludes;
16884           add_using_directive (using_directives (cu),
16885                                previous_prefix, TYPE_NAME (type), NULL,
16886                                NULL, excludes, 0, &objfile->objfile_obstack);
16887         }
16888     }
16889
16890   if (die->child != NULL)
16891     {
16892       struct die_info *child_die = die->child;
16893
16894       while (child_die && child_die->tag)
16895         {
16896           process_die (child_die, cu);
16897           child_die = sibling_die (child_die);
16898         }
16899     }
16900 }
16901
16902 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16903    imported module.  Still we need that type as local Fortran "use ... only"
16904    declaration imports depend on the created type in determine_prefix.  */
16905
16906 static struct type *
16907 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16908 {
16909   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16910   const char *module_name;
16911   struct type *type;
16912
16913   module_name = dwarf2_name (die, cu);
16914   if (!module_name)
16915     complaint (_("DW_TAG_module has no name, offset %s"),
16916                sect_offset_str (die->sect_off));
16917   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16918
16919   return set_die_type (die, type, cu);
16920 }
16921
16922 /* Read a Fortran module.  */
16923
16924 static void
16925 read_module (struct die_info *die, struct dwarf2_cu *cu)
16926 {
16927   struct die_info *child_die = die->child;
16928   struct type *type;
16929
16930   type = read_type_die (die, cu);
16931   new_symbol (die, type, cu);
16932
16933   while (child_die && child_die->tag)
16934     {
16935       process_die (child_die, cu);
16936       child_die = sibling_die (child_die);
16937     }
16938 }
16939
16940 /* Return the name of the namespace represented by DIE.  Set
16941    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16942    namespace.  */
16943
16944 static const char *
16945 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16946 {
16947   struct die_info *current_die;
16948   const char *name = NULL;
16949
16950   /* Loop through the extensions until we find a name.  */
16951
16952   for (current_die = die;
16953        current_die != NULL;
16954        current_die = dwarf2_extension (die, &cu))
16955     {
16956       /* We don't use dwarf2_name here so that we can detect the absence
16957          of a name -> anonymous namespace.  */
16958       name = dwarf2_string_attr (die, DW_AT_name, cu);
16959
16960       if (name != NULL)
16961         break;
16962     }
16963
16964   /* Is it an anonymous namespace?  */
16965
16966   *is_anonymous = (name == NULL);
16967   if (*is_anonymous)
16968     name = CP_ANONYMOUS_NAMESPACE_STR;
16969
16970   return name;
16971 }
16972
16973 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16974    the user defined type vector.  */
16975
16976 static struct type *
16977 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16978 {
16979   struct gdbarch *gdbarch
16980     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16981   struct comp_unit_head *cu_header = &cu->header;
16982   struct type *type;
16983   struct attribute *attr_byte_size;
16984   struct attribute *attr_address_class;
16985   int byte_size, addr_class;
16986   struct type *target_type;
16987
16988   target_type = die_type (die, cu);
16989
16990   /* The die_type call above may have already set the type for this DIE.  */
16991   type = get_die_type (die, cu);
16992   if (type)
16993     return type;
16994
16995   type = lookup_pointer_type (target_type);
16996
16997   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16998   if (attr_byte_size)
16999     byte_size = DW_UNSND (attr_byte_size);
17000   else
17001     byte_size = cu_header->addr_size;
17002
17003   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17004   if (attr_address_class)
17005     addr_class = DW_UNSND (attr_address_class);
17006   else
17007     addr_class = DW_ADDR_none;
17008
17009   ULONGEST alignment = get_alignment (cu, die);
17010
17011   /* If the pointer size, alignment, or address class is different
17012      than the default, create a type variant marked as such and set
17013      the length accordingly.  */
17014   if (TYPE_LENGTH (type) != byte_size
17015       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17016           && alignment != TYPE_RAW_ALIGN (type))
17017       || addr_class != DW_ADDR_none)
17018     {
17019       if (gdbarch_address_class_type_flags_p (gdbarch))
17020         {
17021           int type_flags;
17022
17023           type_flags = gdbarch_address_class_type_flags
17024                          (gdbarch, byte_size, addr_class);
17025           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17026                       == 0);
17027           type = make_type_with_address_space (type, type_flags);
17028         }
17029       else if (TYPE_LENGTH (type) != byte_size)
17030         {
17031           complaint (_("invalid pointer size %d"), byte_size);
17032         }
17033       else if (TYPE_RAW_ALIGN (type) != alignment)
17034         {
17035           complaint (_("Invalid DW_AT_alignment"
17036                        " - DIE at %s [in module %s]"),
17037                      sect_offset_str (die->sect_off),
17038                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17039         }
17040       else
17041         {
17042           /* Should we also complain about unhandled address classes?  */
17043         }
17044     }
17045
17046   TYPE_LENGTH (type) = byte_size;
17047   set_type_align (type, alignment);
17048   return set_die_type (die, type, cu);
17049 }
17050
17051 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17052    the user defined type vector.  */
17053
17054 static struct type *
17055 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17056 {
17057   struct type *type;
17058   struct type *to_type;
17059   struct type *domain;
17060
17061   to_type = die_type (die, cu);
17062   domain = die_containing_type (die, cu);
17063
17064   /* The calls above may have already set the type for this DIE.  */
17065   type = get_die_type (die, cu);
17066   if (type)
17067     return type;
17068
17069   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17070     type = lookup_methodptr_type (to_type);
17071   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17072     {
17073       struct type *new_type
17074         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17075
17076       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17077                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17078                             TYPE_VARARGS (to_type));
17079       type = lookup_methodptr_type (new_type);
17080     }
17081   else
17082     type = lookup_memberptr_type (to_type, domain);
17083
17084   return set_die_type (die, type, cu);
17085 }
17086
17087 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17088    the user defined type vector.  */
17089
17090 static struct type *
17091 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17092                           enum type_code refcode)
17093 {
17094   struct comp_unit_head *cu_header = &cu->header;
17095   struct type *type, *target_type;
17096   struct attribute *attr;
17097
17098   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17099
17100   target_type = die_type (die, cu);
17101
17102   /* The die_type call above may have already set the type for this DIE.  */
17103   type = get_die_type (die, cu);
17104   if (type)
17105     return type;
17106
17107   type = lookup_reference_type (target_type, refcode);
17108   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17109   if (attr)
17110     {
17111       TYPE_LENGTH (type) = DW_UNSND (attr);
17112     }
17113   else
17114     {
17115       TYPE_LENGTH (type) = cu_header->addr_size;
17116     }
17117   maybe_set_alignment (cu, die, type);
17118   return set_die_type (die, type, cu);
17119 }
17120
17121 /* Add the given cv-qualifiers to the element type of the array.  GCC
17122    outputs DWARF type qualifiers that apply to an array, not the
17123    element type.  But GDB relies on the array element type to carry
17124    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17125    specification.  */
17126
17127 static struct type *
17128 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17129                    struct type *base_type, int cnst, int voltl)
17130 {
17131   struct type *el_type, *inner_array;
17132
17133   base_type = copy_type (base_type);
17134   inner_array = base_type;
17135
17136   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17137     {
17138       TYPE_TARGET_TYPE (inner_array) =
17139         copy_type (TYPE_TARGET_TYPE (inner_array));
17140       inner_array = TYPE_TARGET_TYPE (inner_array);
17141     }
17142
17143   el_type = TYPE_TARGET_TYPE (inner_array);
17144   cnst |= TYPE_CONST (el_type);
17145   voltl |= TYPE_VOLATILE (el_type);
17146   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17147
17148   return set_die_type (die, base_type, cu);
17149 }
17150
17151 static struct type *
17152 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17153 {
17154   struct type *base_type, *cv_type;
17155
17156   base_type = die_type (die, cu);
17157
17158   /* The die_type call above may have already set the type for this DIE.  */
17159   cv_type = get_die_type (die, cu);
17160   if (cv_type)
17161     return cv_type;
17162
17163   /* In case the const qualifier is applied to an array type, the element type
17164      is so qualified, not the array type (section 6.7.3 of C99).  */
17165   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17166     return add_array_cv_type (die, cu, base_type, 1, 0);
17167
17168   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17169   return set_die_type (die, cv_type, cu);
17170 }
17171
17172 static struct type *
17173 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17174 {
17175   struct type *base_type, *cv_type;
17176
17177   base_type = die_type (die, cu);
17178
17179   /* The die_type call above may have already set the type for this DIE.  */
17180   cv_type = get_die_type (die, cu);
17181   if (cv_type)
17182     return cv_type;
17183
17184   /* In case the volatile qualifier is applied to an array type, the
17185      element type is so qualified, not the array type (section 6.7.3
17186      of C99).  */
17187   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17188     return add_array_cv_type (die, cu, base_type, 0, 1);
17189
17190   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17191   return set_die_type (die, cv_type, cu);
17192 }
17193
17194 /* Handle DW_TAG_restrict_type.  */
17195
17196 static struct type *
17197 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17198 {
17199   struct type *base_type, *cv_type;
17200
17201   base_type = die_type (die, cu);
17202
17203   /* The die_type call above may have already set the type for this DIE.  */
17204   cv_type = get_die_type (die, cu);
17205   if (cv_type)
17206     return cv_type;
17207
17208   cv_type = make_restrict_type (base_type);
17209   return set_die_type (die, cv_type, cu);
17210 }
17211
17212 /* Handle DW_TAG_atomic_type.  */
17213
17214 static struct type *
17215 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17216 {
17217   struct type *base_type, *cv_type;
17218
17219   base_type = die_type (die, cu);
17220
17221   /* The die_type call above may have already set the type for this DIE.  */
17222   cv_type = get_die_type (die, cu);
17223   if (cv_type)
17224     return cv_type;
17225
17226   cv_type = make_atomic_type (base_type);
17227   return set_die_type (die, cv_type, cu);
17228 }
17229
17230 /* Extract all information from a DW_TAG_string_type DIE and add to
17231    the user defined type vector.  It isn't really a user defined type,
17232    but it behaves like one, with other DIE's using an AT_user_def_type
17233    attribute to reference it.  */
17234
17235 static struct type *
17236 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17237 {
17238   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17239   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17240   struct type *type, *range_type, *index_type, *char_type;
17241   struct attribute *attr;
17242   unsigned int length;
17243
17244   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17245   if (attr)
17246     {
17247       length = DW_UNSND (attr);
17248     }
17249   else
17250     {
17251       /* Check for the DW_AT_byte_size attribute.  */
17252       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17253       if (attr)
17254         {
17255           length = DW_UNSND (attr);
17256         }
17257       else
17258         {
17259           length = 1;
17260         }
17261     }
17262
17263   index_type = objfile_type (objfile)->builtin_int;
17264   range_type = create_static_range_type (NULL, index_type, 1, length);
17265   char_type = language_string_char_type (cu->language_defn, gdbarch);
17266   type = create_string_type (NULL, char_type, range_type);
17267
17268   return set_die_type (die, type, cu);
17269 }
17270
17271 /* Assuming that DIE corresponds to a function, returns nonzero
17272    if the function is prototyped.  */
17273
17274 static int
17275 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17276 {
17277   struct attribute *attr;
17278
17279   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17280   if (attr && (DW_UNSND (attr) != 0))
17281     return 1;
17282
17283   /* The DWARF standard implies that the DW_AT_prototyped attribute
17284      is only meaninful for C, but the concept also extends to other
17285      languages that allow unprototyped functions (Eg: Objective C).
17286      For all other languages, assume that functions are always
17287      prototyped.  */
17288   if (cu->language != language_c
17289       && cu->language != language_objc
17290       && cu->language != language_opencl)
17291     return 1;
17292
17293   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17294      prototyped and unprototyped functions; default to prototyped,
17295      since that is more common in modern code (and RealView warns
17296      about unprototyped functions).  */
17297   if (producer_is_realview (cu->producer))
17298     return 1;
17299
17300   return 0;
17301 }
17302
17303 /* Handle DIES due to C code like:
17304
17305    struct foo
17306    {
17307    int (*funcp)(int a, long l);
17308    int b;
17309    };
17310
17311    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17312
17313 static struct type *
17314 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17315 {
17316   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17317   struct type *type;            /* Type that this function returns.  */
17318   struct type *ftype;           /* Function that returns above type.  */
17319   struct attribute *attr;
17320
17321   type = die_type (die, cu);
17322
17323   /* The die_type call above may have already set the type for this DIE.  */
17324   ftype = get_die_type (die, cu);
17325   if (ftype)
17326     return ftype;
17327
17328   ftype = lookup_function_type (type);
17329
17330   if (prototyped_function_p (die, cu))
17331     TYPE_PROTOTYPED (ftype) = 1;
17332
17333   /* Store the calling convention in the type if it's available in
17334      the subroutine die.  Otherwise set the calling convention to
17335      the default value DW_CC_normal.  */
17336   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17337   if (attr)
17338     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17339   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17340     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17341   else
17342     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17343
17344   /* Record whether the function returns normally to its caller or not
17345      if the DWARF producer set that information.  */
17346   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17347   if (attr && (DW_UNSND (attr) != 0))
17348     TYPE_NO_RETURN (ftype) = 1;
17349
17350   /* We need to add the subroutine type to the die immediately so
17351      we don't infinitely recurse when dealing with parameters
17352      declared as the same subroutine type.  */
17353   set_die_type (die, ftype, cu);
17354
17355   if (die->child != NULL)
17356     {
17357       struct type *void_type = objfile_type (objfile)->builtin_void;
17358       struct die_info *child_die;
17359       int nparams, iparams;
17360
17361       /* Count the number of parameters.
17362          FIXME: GDB currently ignores vararg functions, but knows about
17363          vararg member functions.  */
17364       nparams = 0;
17365       child_die = die->child;
17366       while (child_die && child_die->tag)
17367         {
17368           if (child_die->tag == DW_TAG_formal_parameter)
17369             nparams++;
17370           else if (child_die->tag == DW_TAG_unspecified_parameters)
17371             TYPE_VARARGS (ftype) = 1;
17372           child_die = sibling_die (child_die);
17373         }
17374
17375       /* Allocate storage for parameters and fill them in.  */
17376       TYPE_NFIELDS (ftype) = nparams;
17377       TYPE_FIELDS (ftype) = (struct field *)
17378         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17379
17380       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17381          even if we error out during the parameters reading below.  */
17382       for (iparams = 0; iparams < nparams; iparams++)
17383         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17384
17385       iparams = 0;
17386       child_die = die->child;
17387       while (child_die && child_die->tag)
17388         {
17389           if (child_die->tag == DW_TAG_formal_parameter)
17390             {
17391               struct type *arg_type;
17392
17393               /* DWARF version 2 has no clean way to discern C++
17394                  static and non-static member functions.  G++ helps
17395                  GDB by marking the first parameter for non-static
17396                  member functions (which is the this pointer) as
17397                  artificial.  We pass this information to
17398                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17399
17400                  DWARF version 3 added DW_AT_object_pointer, which GCC
17401                  4.5 does not yet generate.  */
17402               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17403               if (attr)
17404                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17405               else
17406                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17407               arg_type = die_type (child_die, cu);
17408
17409               /* RealView does not mark THIS as const, which the testsuite
17410                  expects.  GCC marks THIS as const in method definitions,
17411                  but not in the class specifications (GCC PR 43053).  */
17412               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17413                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17414                 {
17415                   int is_this = 0;
17416                   struct dwarf2_cu *arg_cu = cu;
17417                   const char *name = dwarf2_name (child_die, cu);
17418
17419                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17420                   if (attr)
17421                     {
17422                       /* If the compiler emits this, use it.  */
17423                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17424                         is_this = 1;
17425                     }
17426                   else if (name && strcmp (name, "this") == 0)
17427                     /* Function definitions will have the argument names.  */
17428                     is_this = 1;
17429                   else if (name == NULL && iparams == 0)
17430                     /* Declarations may not have the names, so like
17431                        elsewhere in GDB, assume an artificial first
17432                        argument is "this".  */
17433                     is_this = 1;
17434
17435                   if (is_this)
17436                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17437                                              arg_type, 0);
17438                 }
17439
17440               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17441               iparams++;
17442             }
17443           child_die = sibling_die (child_die);
17444         }
17445     }
17446
17447   return ftype;
17448 }
17449
17450 static struct type *
17451 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17452 {
17453   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17454   const char *name = NULL;
17455   struct type *this_type, *target_type;
17456
17457   name = dwarf2_full_name (NULL, die, cu);
17458   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17459   TYPE_TARGET_STUB (this_type) = 1;
17460   set_die_type (die, this_type, cu);
17461   target_type = die_type (die, cu);
17462   if (target_type != this_type)
17463     TYPE_TARGET_TYPE (this_type) = target_type;
17464   else
17465     {
17466       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17467          spec and cause infinite loops in GDB.  */
17468       complaint (_("Self-referential DW_TAG_typedef "
17469                    "- DIE at %s [in module %s]"),
17470                  sect_offset_str (die->sect_off), objfile_name (objfile));
17471       TYPE_TARGET_TYPE (this_type) = NULL;
17472     }
17473   return this_type;
17474 }
17475
17476 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17477    (which may be different from NAME) to the architecture back-end to allow
17478    it to guess the correct format if necessary.  */
17479
17480 static struct type *
17481 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17482                         const char *name_hint)
17483 {
17484   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17485   const struct floatformat **format;
17486   struct type *type;
17487
17488   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17489   if (format)
17490     type = init_float_type (objfile, bits, name, format);
17491   else
17492     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17493
17494   return type;
17495 }
17496
17497 /* Find a representation of a given base type and install
17498    it in the TYPE field of the die.  */
17499
17500 static struct type *
17501 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17502 {
17503   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17504   struct type *type;
17505   struct attribute *attr;
17506   int encoding = 0, bits = 0;
17507   const char *name;
17508
17509   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17510   if (attr)
17511     {
17512       encoding = DW_UNSND (attr);
17513     }
17514   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17515   if (attr)
17516     {
17517       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17518     }
17519   name = dwarf2_name (die, cu);
17520   if (!name)
17521     {
17522       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17523     }
17524
17525   switch (encoding)
17526     {
17527       case DW_ATE_address:
17528         /* Turn DW_ATE_address into a void * pointer.  */
17529         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17530         type = init_pointer_type (objfile, bits, name, type);
17531         break;
17532       case DW_ATE_boolean:
17533         type = init_boolean_type (objfile, bits, 1, name);
17534         break;
17535       case DW_ATE_complex_float:
17536         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17537         type = init_complex_type (objfile, name, type);
17538         break;
17539       case DW_ATE_decimal_float:
17540         type = init_decfloat_type (objfile, bits, name);
17541         break;
17542       case DW_ATE_float:
17543         type = dwarf2_init_float_type (objfile, bits, name, name);
17544         break;
17545       case DW_ATE_signed:
17546         type = init_integer_type (objfile, bits, 0, name);
17547         break;
17548       case DW_ATE_unsigned:
17549         if (cu->language == language_fortran
17550             && name
17551             && startswith (name, "character("))
17552           type = init_character_type (objfile, bits, 1, name);
17553         else
17554           type = init_integer_type (objfile, bits, 1, name);
17555         break;
17556       case DW_ATE_signed_char:
17557         if (cu->language == language_ada || cu->language == language_m2
17558             || cu->language == language_pascal
17559             || cu->language == language_fortran)
17560           type = init_character_type (objfile, bits, 0, name);
17561         else
17562           type = init_integer_type (objfile, bits, 0, name);
17563         break;
17564       case DW_ATE_unsigned_char:
17565         if (cu->language == language_ada || cu->language == language_m2
17566             || cu->language == language_pascal
17567             || cu->language == language_fortran
17568             || cu->language == language_rust)
17569           type = init_character_type (objfile, bits, 1, name);
17570         else
17571           type = init_integer_type (objfile, bits, 1, name);
17572         break;
17573       case DW_ATE_UTF:
17574         {
17575           gdbarch *arch = get_objfile_arch (objfile);
17576
17577           if (bits == 16)
17578             type = builtin_type (arch)->builtin_char16;
17579           else if (bits == 32)
17580             type = builtin_type (arch)->builtin_char32;
17581           else
17582             {
17583               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17584                          bits);
17585               type = init_integer_type (objfile, bits, 1, name);
17586             }
17587           return set_die_type (die, type, cu);
17588         }
17589         break;
17590
17591       default:
17592         complaint (_("unsupported DW_AT_encoding: '%s'"),
17593                    dwarf_type_encoding_name (encoding));
17594         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17595         break;
17596     }
17597
17598   if (name && strcmp (name, "char") == 0)
17599     TYPE_NOSIGN (type) = 1;
17600
17601   maybe_set_alignment (cu, die, type);
17602
17603   return set_die_type (die, type, cu);
17604 }
17605
17606 /* Parse dwarf attribute if it's a block, reference or constant and put the
17607    resulting value of the attribute into struct bound_prop.
17608    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17609
17610 static int
17611 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17612                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17613 {
17614   struct dwarf2_property_baton *baton;
17615   struct obstack *obstack
17616     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17617
17618   if (attr == NULL || prop == NULL)
17619     return 0;
17620
17621   if (attr_form_is_block (attr))
17622     {
17623       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17624       baton->referenced_type = NULL;
17625       baton->locexpr.per_cu = cu->per_cu;
17626       baton->locexpr.size = DW_BLOCK (attr)->size;
17627       baton->locexpr.data = DW_BLOCK (attr)->data;
17628       prop->data.baton = baton;
17629       prop->kind = PROP_LOCEXPR;
17630       gdb_assert (prop->data.baton != NULL);
17631     }
17632   else if (attr_form_is_ref (attr))
17633     {
17634       struct dwarf2_cu *target_cu = cu;
17635       struct die_info *target_die;
17636       struct attribute *target_attr;
17637
17638       target_die = follow_die_ref (die, attr, &target_cu);
17639       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17640       if (target_attr == NULL)
17641         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17642                                    target_cu);
17643       if (target_attr == NULL)
17644         return 0;
17645
17646       switch (target_attr->name)
17647         {
17648           case DW_AT_location:
17649             if (attr_form_is_section_offset (target_attr))
17650               {
17651                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17652                 baton->referenced_type = die_type (target_die, target_cu);
17653                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17654                 prop->data.baton = baton;
17655                 prop->kind = PROP_LOCLIST;
17656                 gdb_assert (prop->data.baton != NULL);
17657               }
17658             else if (attr_form_is_block (target_attr))
17659               {
17660                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17661                 baton->referenced_type = die_type (target_die, target_cu);
17662                 baton->locexpr.per_cu = cu->per_cu;
17663                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17664                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17665                 prop->data.baton = baton;
17666                 prop->kind = PROP_LOCEXPR;
17667                 gdb_assert (prop->data.baton != NULL);
17668               }
17669             else
17670               {
17671                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17672                                                        "dynamic property");
17673                 return 0;
17674               }
17675             break;
17676           case DW_AT_data_member_location:
17677             {
17678               LONGEST offset;
17679
17680               if (!handle_data_member_location (target_die, target_cu,
17681                                                 &offset))
17682                 return 0;
17683
17684               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17685               baton->referenced_type = read_type_die (target_die->parent,
17686                                                       target_cu);
17687               baton->offset_info.offset = offset;
17688               baton->offset_info.type = die_type (target_die, target_cu);
17689               prop->data.baton = baton;
17690               prop->kind = PROP_ADDR_OFFSET;
17691               break;
17692             }
17693         }
17694     }
17695   else if (attr_form_is_constant (attr))
17696     {
17697       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17698       prop->kind = PROP_CONST;
17699     }
17700   else
17701     {
17702       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17703                                              dwarf2_name (die, cu));
17704       return 0;
17705     }
17706
17707   return 1;
17708 }
17709
17710 /* Read the given DW_AT_subrange DIE.  */
17711
17712 static struct type *
17713 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17714 {
17715   struct type *base_type, *orig_base_type;
17716   struct type *range_type;
17717   struct attribute *attr;
17718   struct dynamic_prop low, high;
17719   int low_default_is_valid;
17720   int high_bound_is_count = 0;
17721   const char *name;
17722   ULONGEST negative_mask;
17723
17724   orig_base_type = die_type (die, cu);
17725   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17726      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17727      creating the range type, but we use the result of check_typedef
17728      when examining properties of the type.  */
17729   base_type = check_typedef (orig_base_type);
17730
17731   /* The die_type call above may have already set the type for this DIE.  */
17732   range_type = get_die_type (die, cu);
17733   if (range_type)
17734     return range_type;
17735
17736   low.kind = PROP_CONST;
17737   high.kind = PROP_CONST;
17738   high.data.const_val = 0;
17739
17740   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17741      omitting DW_AT_lower_bound.  */
17742   switch (cu->language)
17743     {
17744     case language_c:
17745     case language_cplus:
17746       low.data.const_val = 0;
17747       low_default_is_valid = 1;
17748       break;
17749     case language_fortran:
17750       low.data.const_val = 1;
17751       low_default_is_valid = 1;
17752       break;
17753     case language_d:
17754     case language_objc:
17755     case language_rust:
17756       low.data.const_val = 0;
17757       low_default_is_valid = (cu->header.version >= 4);
17758       break;
17759     case language_ada:
17760     case language_m2:
17761     case language_pascal:
17762       low.data.const_val = 1;
17763       low_default_is_valid = (cu->header.version >= 4);
17764       break;
17765     default:
17766       low.data.const_val = 0;
17767       low_default_is_valid = 0;
17768       break;
17769     }
17770
17771   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17772   if (attr)
17773     attr_to_dynamic_prop (attr, die, cu, &low);
17774   else if (!low_default_is_valid)
17775     complaint (_("Missing DW_AT_lower_bound "
17776                                       "- DIE at %s [in module %s]"),
17777                sect_offset_str (die->sect_off),
17778                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17779
17780   struct attribute *attr_ub, *attr_count;
17781   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17782   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17783     {
17784       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17785       if (attr_to_dynamic_prop (attr, die, cu, &high))
17786         {
17787           /* If bounds are constant do the final calculation here.  */
17788           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17789             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17790           else
17791             high_bound_is_count = 1;
17792         }
17793       else
17794         {
17795           if (attr_ub != NULL)
17796             complaint (_("Unresolved DW_AT_upper_bound "
17797                          "- DIE at %s [in module %s]"),
17798                        sect_offset_str (die->sect_off),
17799                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17800           if (attr_count != NULL)
17801             complaint (_("Unresolved DW_AT_count "
17802                          "- DIE at %s [in module %s]"),
17803                        sect_offset_str (die->sect_off),
17804                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17805         }
17806         
17807     }
17808
17809   /* Dwarf-2 specifications explicitly allows to create subrange types
17810      without specifying a base type.
17811      In that case, the base type must be set to the type of
17812      the lower bound, upper bound or count, in that order, if any of these
17813      three attributes references an object that has a type.
17814      If no base type is found, the Dwarf-2 specifications say that
17815      a signed integer type of size equal to the size of an address should
17816      be used.
17817      For the following C code: `extern char gdb_int [];'
17818      GCC produces an empty range DIE.
17819      FIXME: muller/2010-05-28: Possible references to object for low bound,
17820      high bound or count are not yet handled by this code.  */
17821   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17822     {
17823       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17824       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17825       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17826       struct type *int_type = objfile_type (objfile)->builtin_int;
17827
17828       /* Test "int", "long int", and "long long int" objfile types,
17829          and select the first one having a size above or equal to the
17830          architecture address size.  */
17831       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17832         base_type = int_type;
17833       else
17834         {
17835           int_type = objfile_type (objfile)->builtin_long;
17836           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17837             base_type = int_type;
17838           else
17839             {
17840               int_type = objfile_type (objfile)->builtin_long_long;
17841               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17842                 base_type = int_type;
17843             }
17844         }
17845     }
17846
17847   /* Normally, the DWARF producers are expected to use a signed
17848      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17849      But this is unfortunately not always the case, as witnessed
17850      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17851      is used instead.  To work around that ambiguity, we treat
17852      the bounds as signed, and thus sign-extend their values, when
17853      the base type is signed.  */
17854   negative_mask =
17855     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17856   if (low.kind == PROP_CONST
17857       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17858     low.data.const_val |= negative_mask;
17859   if (high.kind == PROP_CONST
17860       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17861     high.data.const_val |= negative_mask;
17862
17863   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17864
17865   if (high_bound_is_count)
17866     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17867
17868   /* Ada expects an empty array on no boundary attributes.  */
17869   if (attr == NULL && cu->language != language_ada)
17870     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17871
17872   name = dwarf2_name (die, cu);
17873   if (name)
17874     TYPE_NAME (range_type) = name;
17875
17876   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17877   if (attr)
17878     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17879
17880   maybe_set_alignment (cu, die, range_type);
17881
17882   set_die_type (die, range_type, cu);
17883
17884   /* set_die_type should be already done.  */
17885   set_descriptive_type (range_type, die, cu);
17886
17887   return range_type;
17888 }
17889
17890 static struct type *
17891 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17892 {
17893   struct type *type;
17894
17895   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17896                     NULL);
17897   TYPE_NAME (type) = dwarf2_name (die, cu);
17898
17899   /* In Ada, an unspecified type is typically used when the description
17900      of the type is defered to a different unit.  When encountering
17901      such a type, we treat it as a stub, and try to resolve it later on,
17902      when needed.  */
17903   if (cu->language == language_ada)
17904     TYPE_STUB (type) = 1;
17905
17906   return set_die_type (die, type, cu);
17907 }
17908
17909 /* Read a single die and all its descendents.  Set the die's sibling
17910    field to NULL; set other fields in the die correctly, and set all
17911    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17912    location of the info_ptr after reading all of those dies.  PARENT
17913    is the parent of the die in question.  */
17914
17915 static struct die_info *
17916 read_die_and_children (const struct die_reader_specs *reader,
17917                        const gdb_byte *info_ptr,
17918                        const gdb_byte **new_info_ptr,
17919                        struct die_info *parent)
17920 {
17921   struct die_info *die;
17922   const gdb_byte *cur_ptr;
17923   int has_children;
17924
17925   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17926   if (die == NULL)
17927     {
17928       *new_info_ptr = cur_ptr;
17929       return NULL;
17930     }
17931   store_in_ref_table (die, reader->cu);
17932
17933   if (has_children)
17934     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17935   else
17936     {
17937       die->child = NULL;
17938       *new_info_ptr = cur_ptr;
17939     }
17940
17941   die->sibling = NULL;
17942   die->parent = parent;
17943   return die;
17944 }
17945
17946 /* Read a die, all of its descendents, and all of its siblings; set
17947    all of the fields of all of the dies correctly.  Arguments are as
17948    in read_die_and_children.  */
17949
17950 static struct die_info *
17951 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17952                          const gdb_byte *info_ptr,
17953                          const gdb_byte **new_info_ptr,
17954                          struct die_info *parent)
17955 {
17956   struct die_info *first_die, *last_sibling;
17957   const gdb_byte *cur_ptr;
17958
17959   cur_ptr = info_ptr;
17960   first_die = last_sibling = NULL;
17961
17962   while (1)
17963     {
17964       struct die_info *die
17965         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17966
17967       if (die == NULL)
17968         {
17969           *new_info_ptr = cur_ptr;
17970           return first_die;
17971         }
17972
17973       if (!first_die)
17974         first_die = die;
17975       else
17976         last_sibling->sibling = die;
17977
17978       last_sibling = die;
17979     }
17980 }
17981
17982 /* Read a die, all of its descendents, and all of its siblings; set
17983    all of the fields of all of the dies correctly.  Arguments are as
17984    in read_die_and_children.
17985    This the main entry point for reading a DIE and all its children.  */
17986
17987 static struct die_info *
17988 read_die_and_siblings (const struct die_reader_specs *reader,
17989                        const gdb_byte *info_ptr,
17990                        const gdb_byte **new_info_ptr,
17991                        struct die_info *parent)
17992 {
17993   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17994                                                   new_info_ptr, parent);
17995
17996   if (dwarf_die_debug)
17997     {
17998       fprintf_unfiltered (gdb_stdlog,
17999                           "Read die from %s@0x%x of %s:\n",
18000                           get_section_name (reader->die_section),
18001                           (unsigned) (info_ptr - reader->die_section->buffer),
18002                           bfd_get_filename (reader->abfd));
18003       dump_die (die, dwarf_die_debug);
18004     }
18005
18006   return die;
18007 }
18008
18009 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18010    attributes.
18011    The caller is responsible for filling in the extra attributes
18012    and updating (*DIEP)->num_attrs.
18013    Set DIEP to point to a newly allocated die with its information,
18014    except for its child, sibling, and parent fields.
18015    Set HAS_CHILDREN to tell whether the die has children or not.  */
18016
18017 static const gdb_byte *
18018 read_full_die_1 (const struct die_reader_specs *reader,
18019                  struct die_info **diep, const gdb_byte *info_ptr,
18020                  int *has_children, int num_extra_attrs)
18021 {
18022   unsigned int abbrev_number, bytes_read, i;
18023   struct abbrev_info *abbrev;
18024   struct die_info *die;
18025   struct dwarf2_cu *cu = reader->cu;
18026   bfd *abfd = reader->abfd;
18027
18028   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18029   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18030   info_ptr += bytes_read;
18031   if (!abbrev_number)
18032     {
18033       *diep = NULL;
18034       *has_children = 0;
18035       return info_ptr;
18036     }
18037
18038   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18039   if (!abbrev)
18040     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18041            abbrev_number,
18042            bfd_get_filename (abfd));
18043
18044   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18045   die->sect_off = sect_off;
18046   die->tag = abbrev->tag;
18047   die->abbrev = abbrev_number;
18048
18049   /* Make the result usable.
18050      The caller needs to update num_attrs after adding the extra
18051      attributes.  */
18052   die->num_attrs = abbrev->num_attrs;
18053
18054   for (i = 0; i < abbrev->num_attrs; ++i)
18055     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18056                                info_ptr);
18057
18058   *diep = die;
18059   *has_children = abbrev->has_children;
18060   return info_ptr;
18061 }
18062
18063 /* Read a die and all its attributes.
18064    Set DIEP to point to a newly allocated die with its information,
18065    except for its child, sibling, and parent fields.
18066    Set HAS_CHILDREN to tell whether the die has children or not.  */
18067
18068 static const gdb_byte *
18069 read_full_die (const struct die_reader_specs *reader,
18070                struct die_info **diep, const gdb_byte *info_ptr,
18071                int *has_children)
18072 {
18073   const gdb_byte *result;
18074
18075   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18076
18077   if (dwarf_die_debug)
18078     {
18079       fprintf_unfiltered (gdb_stdlog,
18080                           "Read die from %s@0x%x of %s:\n",
18081                           get_section_name (reader->die_section),
18082                           (unsigned) (info_ptr - reader->die_section->buffer),
18083                           bfd_get_filename (reader->abfd));
18084       dump_die (*diep, dwarf_die_debug);
18085     }
18086
18087   return result;
18088 }
18089 \f
18090 /* Abbreviation tables.
18091
18092    In DWARF version 2, the description of the debugging information is
18093    stored in a separate .debug_abbrev section.  Before we read any
18094    dies from a section we read in all abbreviations and install them
18095    in a hash table.  */
18096
18097 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18098
18099 struct abbrev_info *
18100 abbrev_table::alloc_abbrev ()
18101 {
18102   struct abbrev_info *abbrev;
18103
18104   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18105   memset (abbrev, 0, sizeof (struct abbrev_info));
18106
18107   return abbrev;
18108 }
18109
18110 /* Add an abbreviation to the table.  */
18111
18112 void
18113 abbrev_table::add_abbrev (unsigned int abbrev_number,
18114                           struct abbrev_info *abbrev)
18115 {
18116   unsigned int hash_number;
18117
18118   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18119   abbrev->next = m_abbrevs[hash_number];
18120   m_abbrevs[hash_number] = abbrev;
18121 }
18122
18123 /* Look up an abbrev in the table.
18124    Returns NULL if the abbrev is not found.  */
18125
18126 struct abbrev_info *
18127 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18128 {
18129   unsigned int hash_number;
18130   struct abbrev_info *abbrev;
18131
18132   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18133   abbrev = m_abbrevs[hash_number];
18134
18135   while (abbrev)
18136     {
18137       if (abbrev->number == abbrev_number)
18138         return abbrev;
18139       abbrev = abbrev->next;
18140     }
18141   return NULL;
18142 }
18143
18144 /* Read in an abbrev table.  */
18145
18146 static abbrev_table_up
18147 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18148                          struct dwarf2_section_info *section,
18149                          sect_offset sect_off)
18150 {
18151   struct objfile *objfile = dwarf2_per_objfile->objfile;
18152   bfd *abfd = get_section_bfd_owner (section);
18153   const gdb_byte *abbrev_ptr;
18154   struct abbrev_info *cur_abbrev;
18155   unsigned int abbrev_number, bytes_read, abbrev_name;
18156   unsigned int abbrev_form;
18157   struct attr_abbrev *cur_attrs;
18158   unsigned int allocated_attrs;
18159
18160   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18161
18162   dwarf2_read_section (objfile, section);
18163   abbrev_ptr = section->buffer + to_underlying (sect_off);
18164   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18165   abbrev_ptr += bytes_read;
18166
18167   allocated_attrs = ATTR_ALLOC_CHUNK;
18168   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18169
18170   /* Loop until we reach an abbrev number of 0.  */
18171   while (abbrev_number)
18172     {
18173       cur_abbrev = abbrev_table->alloc_abbrev ();
18174
18175       /* read in abbrev header */
18176       cur_abbrev->number = abbrev_number;
18177       cur_abbrev->tag
18178         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18179       abbrev_ptr += bytes_read;
18180       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18181       abbrev_ptr += 1;
18182
18183       /* now read in declarations */
18184       for (;;)
18185         {
18186           LONGEST implicit_const;
18187
18188           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18189           abbrev_ptr += bytes_read;
18190           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18191           abbrev_ptr += bytes_read;
18192           if (abbrev_form == DW_FORM_implicit_const)
18193             {
18194               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18195                                                    &bytes_read);
18196               abbrev_ptr += bytes_read;
18197             }
18198           else
18199             {
18200               /* Initialize it due to a false compiler warning.  */
18201               implicit_const = -1;
18202             }
18203
18204           if (abbrev_name == 0)
18205             break;
18206
18207           if (cur_abbrev->num_attrs == allocated_attrs)
18208             {
18209               allocated_attrs += ATTR_ALLOC_CHUNK;
18210               cur_attrs
18211                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18212             }
18213
18214           cur_attrs[cur_abbrev->num_attrs].name
18215             = (enum dwarf_attribute) abbrev_name;
18216           cur_attrs[cur_abbrev->num_attrs].form
18217             = (enum dwarf_form) abbrev_form;
18218           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18219           ++cur_abbrev->num_attrs;
18220         }
18221
18222       cur_abbrev->attrs =
18223         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18224                    cur_abbrev->num_attrs);
18225       memcpy (cur_abbrev->attrs, cur_attrs,
18226               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18227
18228       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18229
18230       /* Get next abbreviation.
18231          Under Irix6 the abbreviations for a compilation unit are not
18232          always properly terminated with an abbrev number of 0.
18233          Exit loop if we encounter an abbreviation which we have
18234          already read (which means we are about to read the abbreviations
18235          for the next compile unit) or if the end of the abbreviation
18236          table is reached.  */
18237       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18238         break;
18239       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18240       abbrev_ptr += bytes_read;
18241       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18242         break;
18243     }
18244
18245   xfree (cur_attrs);
18246   return abbrev_table;
18247 }
18248
18249 /* Returns nonzero if TAG represents a type that we might generate a partial
18250    symbol for.  */
18251
18252 static int
18253 is_type_tag_for_partial (int tag)
18254 {
18255   switch (tag)
18256     {
18257 #if 0
18258     /* Some types that would be reasonable to generate partial symbols for,
18259        that we don't at present.  */
18260     case DW_TAG_array_type:
18261     case DW_TAG_file_type:
18262     case DW_TAG_ptr_to_member_type:
18263     case DW_TAG_set_type:
18264     case DW_TAG_string_type:
18265     case DW_TAG_subroutine_type:
18266 #endif
18267     case DW_TAG_base_type:
18268     case DW_TAG_class_type:
18269     case DW_TAG_interface_type:
18270     case DW_TAG_enumeration_type:
18271     case DW_TAG_structure_type:
18272     case DW_TAG_subrange_type:
18273     case DW_TAG_typedef:
18274     case DW_TAG_union_type:
18275       return 1;
18276     default:
18277       return 0;
18278     }
18279 }
18280
18281 /* Load all DIEs that are interesting for partial symbols into memory.  */
18282
18283 static struct partial_die_info *
18284 load_partial_dies (const struct die_reader_specs *reader,
18285                    const gdb_byte *info_ptr, int building_psymtab)
18286 {
18287   struct dwarf2_cu *cu = reader->cu;
18288   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18289   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18290   unsigned int bytes_read;
18291   unsigned int load_all = 0;
18292   int nesting_level = 1;
18293
18294   parent_die = NULL;
18295   last_die = NULL;
18296
18297   gdb_assert (cu->per_cu != NULL);
18298   if (cu->per_cu->load_all_dies)
18299     load_all = 1;
18300
18301   cu->partial_dies
18302     = htab_create_alloc_ex (cu->header.length / 12,
18303                             partial_die_hash,
18304                             partial_die_eq,
18305                             NULL,
18306                             &cu->comp_unit_obstack,
18307                             hashtab_obstack_allocate,
18308                             dummy_obstack_deallocate);
18309
18310   while (1)
18311     {
18312       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18313
18314       /* A NULL abbrev means the end of a series of children.  */
18315       if (abbrev == NULL)
18316         {
18317           if (--nesting_level == 0)
18318             return first_die;
18319
18320           info_ptr += bytes_read;
18321           last_die = parent_die;
18322           parent_die = parent_die->die_parent;
18323           continue;
18324         }
18325
18326       /* Check for template arguments.  We never save these; if
18327          they're seen, we just mark the parent, and go on our way.  */
18328       if (parent_die != NULL
18329           && cu->language == language_cplus
18330           && (abbrev->tag == DW_TAG_template_type_param
18331               || abbrev->tag == DW_TAG_template_value_param))
18332         {
18333           parent_die->has_template_arguments = 1;
18334
18335           if (!load_all)
18336             {
18337               /* We don't need a partial DIE for the template argument.  */
18338               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18339               continue;
18340             }
18341         }
18342
18343       /* We only recurse into c++ subprograms looking for template arguments.
18344          Skip their other children.  */
18345       if (!load_all
18346           && cu->language == language_cplus
18347           && parent_die != NULL
18348           && parent_die->tag == DW_TAG_subprogram)
18349         {
18350           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18351           continue;
18352         }
18353
18354       /* Check whether this DIE is interesting enough to save.  Normally
18355          we would not be interested in members here, but there may be
18356          later variables referencing them via DW_AT_specification (for
18357          static members).  */
18358       if (!load_all
18359           && !is_type_tag_for_partial (abbrev->tag)
18360           && abbrev->tag != DW_TAG_constant
18361           && abbrev->tag != DW_TAG_enumerator
18362           && abbrev->tag != DW_TAG_subprogram
18363           && abbrev->tag != DW_TAG_inlined_subroutine
18364           && abbrev->tag != DW_TAG_lexical_block
18365           && abbrev->tag != DW_TAG_variable
18366           && abbrev->tag != DW_TAG_namespace
18367           && abbrev->tag != DW_TAG_module
18368           && abbrev->tag != DW_TAG_member
18369           && abbrev->tag != DW_TAG_imported_unit
18370           && abbrev->tag != DW_TAG_imported_declaration)
18371         {
18372           /* Otherwise we skip to the next sibling, if any.  */
18373           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18374           continue;
18375         }
18376
18377       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18378                                    abbrev);
18379
18380       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18381
18382       /* This two-pass algorithm for processing partial symbols has a
18383          high cost in cache pressure.  Thus, handle some simple cases
18384          here which cover the majority of C partial symbols.  DIEs
18385          which neither have specification tags in them, nor could have
18386          specification tags elsewhere pointing at them, can simply be
18387          processed and discarded.
18388
18389          This segment is also optional; scan_partial_symbols and
18390          add_partial_symbol will handle these DIEs if we chain
18391          them in normally.  When compilers which do not emit large
18392          quantities of duplicate debug information are more common,
18393          this code can probably be removed.  */
18394
18395       /* Any complete simple types at the top level (pretty much all
18396          of them, for a language without namespaces), can be processed
18397          directly.  */
18398       if (parent_die == NULL
18399           && pdi.has_specification == 0
18400           && pdi.is_declaration == 0
18401           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18402               || pdi.tag == DW_TAG_base_type
18403               || pdi.tag == DW_TAG_subrange_type))
18404         {
18405           if (building_psymtab && pdi.name != NULL)
18406             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18407                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18408                                  &objfile->static_psymbols,
18409                                  0, cu->language, objfile);
18410           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18411           continue;
18412         }
18413
18414       /* The exception for DW_TAG_typedef with has_children above is
18415          a workaround of GCC PR debug/47510.  In the case of this complaint
18416          type_name_or_error will error on such types later.
18417
18418          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18419          it could not find the child DIEs referenced later, this is checked
18420          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18421
18422       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18423         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18424                      "- DIE at %s [in module %s]"),
18425                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18426
18427       /* If we're at the second level, and we're an enumerator, and
18428          our parent has no specification (meaning possibly lives in a
18429          namespace elsewhere), then we can add the partial symbol now
18430          instead of queueing it.  */
18431       if (pdi.tag == DW_TAG_enumerator
18432           && parent_die != NULL
18433           && parent_die->die_parent == NULL
18434           && parent_die->tag == DW_TAG_enumeration_type
18435           && parent_die->has_specification == 0)
18436         {
18437           if (pdi.name == NULL)
18438             complaint (_("malformed enumerator DIE ignored"));
18439           else if (building_psymtab)
18440             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18441                                  VAR_DOMAIN, LOC_CONST, -1,
18442                                  cu->language == language_cplus
18443                                  ? &objfile->global_psymbols
18444                                  : &objfile->static_psymbols,
18445                                  0, cu->language, objfile);
18446
18447           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18448           continue;
18449         }
18450
18451       struct partial_die_info *part_die
18452         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18453
18454       /* We'll save this DIE so link it in.  */
18455       part_die->die_parent = parent_die;
18456       part_die->die_sibling = NULL;
18457       part_die->die_child = NULL;
18458
18459       if (last_die && last_die == parent_die)
18460         last_die->die_child = part_die;
18461       else if (last_die)
18462         last_die->die_sibling = part_die;
18463
18464       last_die = part_die;
18465
18466       if (first_die == NULL)
18467         first_die = part_die;
18468
18469       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18470          find interesting need to be in the hash table, because we
18471          also have the parent/sibling/child chains; only those that we
18472          might refer to by offset later during partial symbol reading.
18473
18474          For now this means things that might have be the target of a
18475          DW_AT_specification, DW_AT_abstract_origin, or
18476          DW_AT_extension.  DW_AT_extension will refer only to
18477          namespaces; DW_AT_abstract_origin refers to functions (and
18478          many things under the function DIE, but we do not recurse
18479          into function DIEs during partial symbol reading) and
18480          possibly variables as well; DW_AT_specification refers to
18481          declarations.  Declarations ought to have the DW_AT_declaration
18482          flag.  It happens that GCC forgets to put it in sometimes, but
18483          only for functions, not for types.
18484
18485          Adding more things than necessary to the hash table is harmless
18486          except for the performance cost.  Adding too few will result in
18487          wasted time in find_partial_die, when we reread the compilation
18488          unit with load_all_dies set.  */
18489
18490       if (load_all
18491           || abbrev->tag == DW_TAG_constant
18492           || abbrev->tag == DW_TAG_subprogram
18493           || abbrev->tag == DW_TAG_variable
18494           || abbrev->tag == DW_TAG_namespace
18495           || part_die->is_declaration)
18496         {
18497           void **slot;
18498
18499           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18500                                            to_underlying (part_die->sect_off),
18501                                            INSERT);
18502           *slot = part_die;
18503         }
18504
18505       /* For some DIEs we want to follow their children (if any).  For C
18506          we have no reason to follow the children of structures; for other
18507          languages we have to, so that we can get at method physnames
18508          to infer fully qualified class names, for DW_AT_specification,
18509          and for C++ template arguments.  For C++, we also look one level
18510          inside functions to find template arguments (if the name of the
18511          function does not already contain the template arguments).
18512
18513          For Ada, we need to scan the children of subprograms and lexical
18514          blocks as well because Ada allows the definition of nested
18515          entities that could be interesting for the debugger, such as
18516          nested subprograms for instance.  */
18517       if (last_die->has_children
18518           && (load_all
18519               || last_die->tag == DW_TAG_namespace
18520               || last_die->tag == DW_TAG_module
18521               || last_die->tag == DW_TAG_enumeration_type
18522               || (cu->language == language_cplus
18523                   && last_die->tag == DW_TAG_subprogram
18524                   && (last_die->name == NULL
18525                       || strchr (last_die->name, '<') == NULL))
18526               || (cu->language != language_c
18527                   && (last_die->tag == DW_TAG_class_type
18528                       || last_die->tag == DW_TAG_interface_type
18529                       || last_die->tag == DW_TAG_structure_type
18530                       || last_die->tag == DW_TAG_union_type))
18531               || (cu->language == language_ada
18532                   && (last_die->tag == DW_TAG_subprogram
18533                       || last_die->tag == DW_TAG_lexical_block))))
18534         {
18535           nesting_level++;
18536           parent_die = last_die;
18537           continue;
18538         }
18539
18540       /* Otherwise we skip to the next sibling, if any.  */
18541       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18542
18543       /* Back to the top, do it again.  */
18544     }
18545 }
18546
18547 partial_die_info::partial_die_info (sect_offset sect_off_,
18548                                     struct abbrev_info *abbrev)
18549   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18550 {
18551 }
18552
18553 /* Read a minimal amount of information into the minimal die structure.
18554    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18555
18556 const gdb_byte *
18557 partial_die_info::read (const struct die_reader_specs *reader,
18558                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18559 {
18560   struct dwarf2_cu *cu = reader->cu;
18561   struct dwarf2_per_objfile *dwarf2_per_objfile
18562     = cu->per_cu->dwarf2_per_objfile;
18563   unsigned int i;
18564   int has_low_pc_attr = 0;
18565   int has_high_pc_attr = 0;
18566   int high_pc_relative = 0;
18567
18568   for (i = 0; i < abbrev.num_attrs; ++i)
18569     {
18570       struct attribute attr;
18571
18572       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18573
18574       /* Store the data if it is of an attribute we want to keep in a
18575          partial symbol table.  */
18576       switch (attr.name)
18577         {
18578         case DW_AT_name:
18579           switch (tag)
18580             {
18581             case DW_TAG_compile_unit:
18582             case DW_TAG_partial_unit:
18583             case DW_TAG_type_unit:
18584               /* Compilation units have a DW_AT_name that is a filename, not
18585                  a source language identifier.  */
18586             case DW_TAG_enumeration_type:
18587             case DW_TAG_enumerator:
18588               /* These tags always have simple identifiers already; no need
18589                  to canonicalize them.  */
18590               name = DW_STRING (&attr);
18591               break;
18592             default:
18593               {
18594                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18595
18596                 name
18597                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18598                                               &objfile->per_bfd->storage_obstack);
18599               }
18600               break;
18601             }
18602           break;
18603         case DW_AT_linkage_name:
18604         case DW_AT_MIPS_linkage_name:
18605           /* Note that both forms of linkage name might appear.  We
18606              assume they will be the same, and we only store the last
18607              one we see.  */
18608           if (cu->language == language_ada)
18609             name = DW_STRING (&attr);
18610           linkage_name = DW_STRING (&attr);
18611           break;
18612         case DW_AT_low_pc:
18613           has_low_pc_attr = 1;
18614           lowpc = attr_value_as_address (&attr);
18615           break;
18616         case DW_AT_high_pc:
18617           has_high_pc_attr = 1;
18618           highpc = attr_value_as_address (&attr);
18619           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18620                 high_pc_relative = 1;
18621           break;
18622         case DW_AT_location:
18623           /* Support the .debug_loc offsets.  */
18624           if (attr_form_is_block (&attr))
18625             {
18626                d.locdesc = DW_BLOCK (&attr);
18627             }
18628           else if (attr_form_is_section_offset (&attr))
18629             {
18630               dwarf2_complex_location_expr_complaint ();
18631             }
18632           else
18633             {
18634               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18635                                                      "partial symbol information");
18636             }
18637           break;
18638         case DW_AT_external:
18639           is_external = DW_UNSND (&attr);
18640           break;
18641         case DW_AT_declaration:
18642           is_declaration = DW_UNSND (&attr);
18643           break;
18644         case DW_AT_type:
18645           has_type = 1;
18646           break;
18647         case DW_AT_abstract_origin:
18648         case DW_AT_specification:
18649         case DW_AT_extension:
18650           has_specification = 1;
18651           spec_offset = dwarf2_get_ref_die_offset (&attr);
18652           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18653                                    || cu->per_cu->is_dwz);
18654           break;
18655         case DW_AT_sibling:
18656           /* Ignore absolute siblings, they might point outside of
18657              the current compile unit.  */
18658           if (attr.form == DW_FORM_ref_addr)
18659             complaint (_("ignoring absolute DW_AT_sibling"));
18660           else
18661             {
18662               const gdb_byte *buffer = reader->buffer;
18663               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18664               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18665
18666               if (sibling_ptr < info_ptr)
18667                 complaint (_("DW_AT_sibling points backwards"));
18668               else if (sibling_ptr > reader->buffer_end)
18669                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18670               else
18671                 sibling = sibling_ptr;
18672             }
18673           break;
18674         case DW_AT_byte_size:
18675           has_byte_size = 1;
18676           break;
18677         case DW_AT_const_value:
18678           has_const_value = 1;
18679           break;
18680         case DW_AT_calling_convention:
18681           /* DWARF doesn't provide a way to identify a program's source-level
18682              entry point.  DW_AT_calling_convention attributes are only meant
18683              to describe functions' calling conventions.
18684
18685              However, because it's a necessary piece of information in
18686              Fortran, and before DWARF 4 DW_CC_program was the only
18687              piece of debugging information whose definition refers to
18688              a 'main program' at all, several compilers marked Fortran
18689              main programs with DW_CC_program --- even when those
18690              functions use the standard calling conventions.
18691
18692              Although DWARF now specifies a way to provide this
18693              information, we support this practice for backward
18694              compatibility.  */
18695           if (DW_UNSND (&attr) == DW_CC_program
18696               && cu->language == language_fortran)
18697             main_subprogram = 1;
18698           break;
18699         case DW_AT_inline:
18700           if (DW_UNSND (&attr) == DW_INL_inlined
18701               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18702             may_be_inlined = 1;
18703           break;
18704
18705         case DW_AT_import:
18706           if (tag == DW_TAG_imported_unit)
18707             {
18708               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18709               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18710                                   || cu->per_cu->is_dwz);
18711             }
18712           break;
18713
18714         case DW_AT_main_subprogram:
18715           main_subprogram = DW_UNSND (&attr);
18716           break;
18717
18718         default:
18719           break;
18720         }
18721     }
18722
18723   if (high_pc_relative)
18724     highpc += lowpc;
18725
18726   if (has_low_pc_attr && has_high_pc_attr)
18727     {
18728       /* When using the GNU linker, .gnu.linkonce. sections are used to
18729          eliminate duplicate copies of functions and vtables and such.
18730          The linker will arbitrarily choose one and discard the others.
18731          The AT_*_pc values for such functions refer to local labels in
18732          these sections.  If the section from that file was discarded, the
18733          labels are not in the output, so the relocs get a value of 0.
18734          If this is a discarded function, mark the pc bounds as invalid,
18735          so that GDB will ignore it.  */
18736       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18737         {
18738           struct objfile *objfile = dwarf2_per_objfile->objfile;
18739           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18740
18741           complaint (_("DW_AT_low_pc %s is zero "
18742                        "for DIE at %s [in module %s]"),
18743                      paddress (gdbarch, lowpc),
18744                      sect_offset_str (sect_off),
18745                      objfile_name (objfile));
18746         }
18747       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18748       else if (lowpc >= highpc)
18749         {
18750           struct objfile *objfile = dwarf2_per_objfile->objfile;
18751           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18752
18753           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18754                        "for DIE at %s [in module %s]"),
18755                      paddress (gdbarch, lowpc),
18756                      paddress (gdbarch, highpc),
18757                      sect_offset_str (sect_off),
18758                      objfile_name (objfile));
18759         }
18760       else
18761         has_pc_info = 1;
18762     }
18763
18764   return info_ptr;
18765 }
18766
18767 /* Find a cached partial DIE at OFFSET in CU.  */
18768
18769 struct partial_die_info *
18770 dwarf2_cu::find_partial_die (sect_offset sect_off)
18771 {
18772   struct partial_die_info *lookup_die = NULL;
18773   struct partial_die_info part_die (sect_off);
18774
18775   lookup_die = ((struct partial_die_info *)
18776                 htab_find_with_hash (partial_dies, &part_die,
18777                                      to_underlying (sect_off)));
18778
18779   return lookup_die;
18780 }
18781
18782 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18783    except in the case of .debug_types DIEs which do not reference
18784    outside their CU (they do however referencing other types via
18785    DW_FORM_ref_sig8).  */
18786
18787 static struct partial_die_info *
18788 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18789 {
18790   struct dwarf2_per_objfile *dwarf2_per_objfile
18791     = cu->per_cu->dwarf2_per_objfile;
18792   struct objfile *objfile = dwarf2_per_objfile->objfile;
18793   struct dwarf2_per_cu_data *per_cu = NULL;
18794   struct partial_die_info *pd = NULL;
18795
18796   if (offset_in_dwz == cu->per_cu->is_dwz
18797       && offset_in_cu_p (&cu->header, sect_off))
18798     {
18799       pd = cu->find_partial_die (sect_off);
18800       if (pd != NULL)
18801         return pd;
18802       /* We missed recording what we needed.
18803          Load all dies and try again.  */
18804       per_cu = cu->per_cu;
18805     }
18806   else
18807     {
18808       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18809       if (cu->per_cu->is_debug_types)
18810         {
18811           error (_("Dwarf Error: Type Unit at offset %s contains"
18812                    " external reference to offset %s [in module %s].\n"),
18813                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18814                  bfd_get_filename (objfile->obfd));
18815         }
18816       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18817                                                  dwarf2_per_objfile);
18818
18819       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18820         load_partial_comp_unit (per_cu);
18821
18822       per_cu->cu->last_used = 0;
18823       pd = per_cu->cu->find_partial_die (sect_off);
18824     }
18825
18826   /* If we didn't find it, and not all dies have been loaded,
18827      load them all and try again.  */
18828
18829   if (pd == NULL && per_cu->load_all_dies == 0)
18830     {
18831       per_cu->load_all_dies = 1;
18832
18833       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18834          THIS_CU->cu may already be in use.  So we can't just free it and
18835          replace its DIEs with the ones we read in.  Instead, we leave those
18836          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18837          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18838          set.  */
18839       load_partial_comp_unit (per_cu);
18840
18841       pd = per_cu->cu->find_partial_die (sect_off);
18842     }
18843
18844   if (pd == NULL)
18845     internal_error (__FILE__, __LINE__,
18846                     _("could not find partial DIE %s "
18847                       "in cache [from module %s]\n"),
18848                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18849   return pd;
18850 }
18851
18852 /* See if we can figure out if the class lives in a namespace.  We do
18853    this by looking for a member function; its demangled name will
18854    contain namespace info, if there is any.  */
18855
18856 static void
18857 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18858                                   struct dwarf2_cu *cu)
18859 {
18860   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18861      what template types look like, because the demangler
18862      frequently doesn't give the same name as the debug info.  We
18863      could fix this by only using the demangled name to get the
18864      prefix (but see comment in read_structure_type).  */
18865
18866   struct partial_die_info *real_pdi;
18867   struct partial_die_info *child_pdi;
18868
18869   /* If this DIE (this DIE's specification, if any) has a parent, then
18870      we should not do this.  We'll prepend the parent's fully qualified
18871      name when we create the partial symbol.  */
18872
18873   real_pdi = struct_pdi;
18874   while (real_pdi->has_specification)
18875     real_pdi = find_partial_die (real_pdi->spec_offset,
18876                                  real_pdi->spec_is_dwz, cu);
18877
18878   if (real_pdi->die_parent != NULL)
18879     return;
18880
18881   for (child_pdi = struct_pdi->die_child;
18882        child_pdi != NULL;
18883        child_pdi = child_pdi->die_sibling)
18884     {
18885       if (child_pdi->tag == DW_TAG_subprogram
18886           && child_pdi->linkage_name != NULL)
18887         {
18888           char *actual_class_name
18889             = language_class_name_from_physname (cu->language_defn,
18890                                                  child_pdi->linkage_name);
18891           if (actual_class_name != NULL)
18892             {
18893               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18894               struct_pdi->name
18895                 = ((const char *)
18896                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18897                                   actual_class_name,
18898                                   strlen (actual_class_name)));
18899               xfree (actual_class_name);
18900             }
18901           break;
18902         }
18903     }
18904 }
18905
18906 void
18907 partial_die_info::fixup (struct dwarf2_cu *cu)
18908 {
18909   /* Once we've fixed up a die, there's no point in doing so again.
18910      This also avoids a memory leak if we were to call
18911      guess_partial_die_structure_name multiple times.  */
18912   if (fixup_called)
18913     return;
18914
18915   /* If we found a reference attribute and the DIE has no name, try
18916      to find a name in the referred to DIE.  */
18917
18918   if (name == NULL && has_specification)
18919     {
18920       struct partial_die_info *spec_die;
18921
18922       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18923
18924       spec_die->fixup (cu);
18925
18926       if (spec_die->name)
18927         {
18928           name = spec_die->name;
18929
18930           /* Copy DW_AT_external attribute if it is set.  */
18931           if (spec_die->is_external)
18932             is_external = spec_die->is_external;
18933         }
18934     }
18935
18936   /* Set default names for some unnamed DIEs.  */
18937
18938   if (name == NULL && tag == DW_TAG_namespace)
18939     name = CP_ANONYMOUS_NAMESPACE_STR;
18940
18941   /* If there is no parent die to provide a namespace, and there are
18942      children, see if we can determine the namespace from their linkage
18943      name.  */
18944   if (cu->language == language_cplus
18945       && !VEC_empty (dwarf2_section_info_def,
18946                      cu->per_cu->dwarf2_per_objfile->types)
18947       && die_parent == NULL
18948       && has_children
18949       && (tag == DW_TAG_class_type
18950           || tag == DW_TAG_structure_type
18951           || tag == DW_TAG_union_type))
18952     guess_partial_die_structure_name (this, cu);
18953
18954   /* GCC might emit a nameless struct or union that has a linkage
18955      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18956   if (name == NULL
18957       && (tag == DW_TAG_class_type
18958           || tag == DW_TAG_interface_type
18959           || tag == DW_TAG_structure_type
18960           || tag == DW_TAG_union_type)
18961       && linkage_name != NULL)
18962     {
18963       char *demangled;
18964
18965       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18966       if (demangled)
18967         {
18968           const char *base;
18969
18970           /* Strip any leading namespaces/classes, keep only the base name.
18971              DW_AT_name for named DIEs does not contain the prefixes.  */
18972           base = strrchr (demangled, ':');
18973           if (base && base > demangled && base[-1] == ':')
18974             base++;
18975           else
18976             base = demangled;
18977
18978           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18979           name
18980             = ((const char *)
18981                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18982                               base, strlen (base)));
18983           xfree (demangled);
18984         }
18985     }
18986
18987   fixup_called = 1;
18988 }
18989
18990 /* Read an attribute value described by an attribute form.  */
18991
18992 static const gdb_byte *
18993 read_attribute_value (const struct die_reader_specs *reader,
18994                       struct attribute *attr, unsigned form,
18995                       LONGEST implicit_const, const gdb_byte *info_ptr)
18996 {
18997   struct dwarf2_cu *cu = reader->cu;
18998   struct dwarf2_per_objfile *dwarf2_per_objfile
18999     = cu->per_cu->dwarf2_per_objfile;
19000   struct objfile *objfile = dwarf2_per_objfile->objfile;
19001   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19002   bfd *abfd = reader->abfd;
19003   struct comp_unit_head *cu_header = &cu->header;
19004   unsigned int bytes_read;
19005   struct dwarf_block *blk;
19006
19007   attr->form = (enum dwarf_form) form;
19008   switch (form)
19009     {
19010     case DW_FORM_ref_addr:
19011       if (cu->header.version == 2)
19012         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19013       else
19014         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19015                                        &cu->header, &bytes_read);
19016       info_ptr += bytes_read;
19017       break;
19018     case DW_FORM_GNU_ref_alt:
19019       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19020       info_ptr += bytes_read;
19021       break;
19022     case DW_FORM_addr:
19023       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19024       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19025       info_ptr += bytes_read;
19026       break;
19027     case DW_FORM_block2:
19028       blk = dwarf_alloc_block (cu);
19029       blk->size = read_2_bytes (abfd, info_ptr);
19030       info_ptr += 2;
19031       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19032       info_ptr += blk->size;
19033       DW_BLOCK (attr) = blk;
19034       break;
19035     case DW_FORM_block4:
19036       blk = dwarf_alloc_block (cu);
19037       blk->size = read_4_bytes (abfd, info_ptr);
19038       info_ptr += 4;
19039       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19040       info_ptr += blk->size;
19041       DW_BLOCK (attr) = blk;
19042       break;
19043     case DW_FORM_data2:
19044       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19045       info_ptr += 2;
19046       break;
19047     case DW_FORM_data4:
19048       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19049       info_ptr += 4;
19050       break;
19051     case DW_FORM_data8:
19052       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19053       info_ptr += 8;
19054       break;
19055     case DW_FORM_data16:
19056       blk = dwarf_alloc_block (cu);
19057       blk->size = 16;
19058       blk->data = read_n_bytes (abfd, info_ptr, 16);
19059       info_ptr += 16;
19060       DW_BLOCK (attr) = blk;
19061       break;
19062     case DW_FORM_sec_offset:
19063       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19064       info_ptr += bytes_read;
19065       break;
19066     case DW_FORM_string:
19067       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19068       DW_STRING_IS_CANONICAL (attr) = 0;
19069       info_ptr += bytes_read;
19070       break;
19071     case DW_FORM_strp:
19072       if (!cu->per_cu->is_dwz)
19073         {
19074           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19075                                                    abfd, info_ptr, cu_header,
19076                                                    &bytes_read);
19077           DW_STRING_IS_CANONICAL (attr) = 0;
19078           info_ptr += bytes_read;
19079           break;
19080         }
19081       /* FALLTHROUGH */
19082     case DW_FORM_line_strp:
19083       if (!cu->per_cu->is_dwz)
19084         {
19085           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19086                                                         abfd, info_ptr,
19087                                                         cu_header, &bytes_read);
19088           DW_STRING_IS_CANONICAL (attr) = 0;
19089           info_ptr += bytes_read;
19090           break;
19091         }
19092       /* FALLTHROUGH */
19093     case DW_FORM_GNU_strp_alt:
19094       {
19095         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19096         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19097                                           &bytes_read);
19098
19099         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19100                                                           dwz, str_offset);
19101         DW_STRING_IS_CANONICAL (attr) = 0;
19102         info_ptr += bytes_read;
19103       }
19104       break;
19105     case DW_FORM_exprloc:
19106     case DW_FORM_block:
19107       blk = dwarf_alloc_block (cu);
19108       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19109       info_ptr += bytes_read;
19110       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19111       info_ptr += blk->size;
19112       DW_BLOCK (attr) = blk;
19113       break;
19114     case DW_FORM_block1:
19115       blk = dwarf_alloc_block (cu);
19116       blk->size = read_1_byte (abfd, info_ptr);
19117       info_ptr += 1;
19118       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19119       info_ptr += blk->size;
19120       DW_BLOCK (attr) = blk;
19121       break;
19122     case DW_FORM_data1:
19123       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19124       info_ptr += 1;
19125       break;
19126     case DW_FORM_flag:
19127       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19128       info_ptr += 1;
19129       break;
19130     case DW_FORM_flag_present:
19131       DW_UNSND (attr) = 1;
19132       break;
19133     case DW_FORM_sdata:
19134       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19135       info_ptr += bytes_read;
19136       break;
19137     case DW_FORM_udata:
19138       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19139       info_ptr += bytes_read;
19140       break;
19141     case DW_FORM_ref1:
19142       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19143                          + read_1_byte (abfd, info_ptr));
19144       info_ptr += 1;
19145       break;
19146     case DW_FORM_ref2:
19147       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19148                          + read_2_bytes (abfd, info_ptr));
19149       info_ptr += 2;
19150       break;
19151     case DW_FORM_ref4:
19152       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19153                          + read_4_bytes (abfd, info_ptr));
19154       info_ptr += 4;
19155       break;
19156     case DW_FORM_ref8:
19157       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19158                          + read_8_bytes (abfd, info_ptr));
19159       info_ptr += 8;
19160       break;
19161     case DW_FORM_ref_sig8:
19162       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19163       info_ptr += 8;
19164       break;
19165     case DW_FORM_ref_udata:
19166       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19167                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19168       info_ptr += bytes_read;
19169       break;
19170     case DW_FORM_indirect:
19171       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19172       info_ptr += bytes_read;
19173       if (form == DW_FORM_implicit_const)
19174         {
19175           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19176           info_ptr += bytes_read;
19177         }
19178       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19179                                        info_ptr);
19180       break;
19181     case DW_FORM_implicit_const:
19182       DW_SND (attr) = implicit_const;
19183       break;
19184     case DW_FORM_GNU_addr_index:
19185       if (reader->dwo_file == NULL)
19186         {
19187           /* For now flag a hard error.
19188              Later we can turn this into a complaint.  */
19189           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19190                  dwarf_form_name (form),
19191                  bfd_get_filename (abfd));
19192         }
19193       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19194       info_ptr += bytes_read;
19195       break;
19196     case DW_FORM_GNU_str_index:
19197       if (reader->dwo_file == NULL)
19198         {
19199           /* For now flag a hard error.
19200              Later we can turn this into a complaint if warranted.  */
19201           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19202                  dwarf_form_name (form),
19203                  bfd_get_filename (abfd));
19204         }
19205       {
19206         ULONGEST str_index =
19207           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19208
19209         DW_STRING (attr) = read_str_index (reader, str_index);
19210         DW_STRING_IS_CANONICAL (attr) = 0;
19211         info_ptr += bytes_read;
19212       }
19213       break;
19214     default:
19215       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19216              dwarf_form_name (form),
19217              bfd_get_filename (abfd));
19218     }
19219
19220   /* Super hack.  */
19221   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19222     attr->form = DW_FORM_GNU_ref_alt;
19223
19224   /* We have seen instances where the compiler tried to emit a byte
19225      size attribute of -1 which ended up being encoded as an unsigned
19226      0xffffffff.  Although 0xffffffff is technically a valid size value,
19227      an object of this size seems pretty unlikely so we can relatively
19228      safely treat these cases as if the size attribute was invalid and
19229      treat them as zero by default.  */
19230   if (attr->name == DW_AT_byte_size
19231       && form == DW_FORM_data4
19232       && DW_UNSND (attr) >= 0xffffffff)
19233     {
19234       complaint
19235         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19236          hex_string (DW_UNSND (attr)));
19237       DW_UNSND (attr) = 0;
19238     }
19239
19240   return info_ptr;
19241 }
19242
19243 /* Read an attribute described by an abbreviated attribute.  */
19244
19245 static const gdb_byte *
19246 read_attribute (const struct die_reader_specs *reader,
19247                 struct attribute *attr, struct attr_abbrev *abbrev,
19248                 const gdb_byte *info_ptr)
19249 {
19250   attr->name = abbrev->name;
19251   return read_attribute_value (reader, attr, abbrev->form,
19252                                abbrev->implicit_const, info_ptr);
19253 }
19254
19255 /* Read dwarf information from a buffer.  */
19256
19257 static unsigned int
19258 read_1_byte (bfd *abfd, const gdb_byte *buf)
19259 {
19260   return bfd_get_8 (abfd, buf);
19261 }
19262
19263 static int
19264 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19265 {
19266   return bfd_get_signed_8 (abfd, buf);
19267 }
19268
19269 static unsigned int
19270 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19271 {
19272   return bfd_get_16 (abfd, buf);
19273 }
19274
19275 static int
19276 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19277 {
19278   return bfd_get_signed_16 (abfd, buf);
19279 }
19280
19281 static unsigned int
19282 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19283 {
19284   return bfd_get_32 (abfd, buf);
19285 }
19286
19287 static int
19288 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19289 {
19290   return bfd_get_signed_32 (abfd, buf);
19291 }
19292
19293 static ULONGEST
19294 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19295 {
19296   return bfd_get_64 (abfd, buf);
19297 }
19298
19299 static CORE_ADDR
19300 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19301               unsigned int *bytes_read)
19302 {
19303   struct comp_unit_head *cu_header = &cu->header;
19304   CORE_ADDR retval = 0;
19305
19306   if (cu_header->signed_addr_p)
19307     {
19308       switch (cu_header->addr_size)
19309         {
19310         case 2:
19311           retval = bfd_get_signed_16 (abfd, buf);
19312           break;
19313         case 4:
19314           retval = bfd_get_signed_32 (abfd, buf);
19315           break;
19316         case 8:
19317           retval = bfd_get_signed_64 (abfd, buf);
19318           break;
19319         default:
19320           internal_error (__FILE__, __LINE__,
19321                           _("read_address: bad switch, signed [in module %s]"),
19322                           bfd_get_filename (abfd));
19323         }
19324     }
19325   else
19326     {
19327       switch (cu_header->addr_size)
19328         {
19329         case 2:
19330           retval = bfd_get_16 (abfd, buf);
19331           break;
19332         case 4:
19333           retval = bfd_get_32 (abfd, buf);
19334           break;
19335         case 8:
19336           retval = bfd_get_64 (abfd, buf);
19337           break;
19338         default:
19339           internal_error (__FILE__, __LINE__,
19340                           _("read_address: bad switch, "
19341                             "unsigned [in module %s]"),
19342                           bfd_get_filename (abfd));
19343         }
19344     }
19345
19346   *bytes_read = cu_header->addr_size;
19347   return retval;
19348 }
19349
19350 /* Read the initial length from a section.  The (draft) DWARF 3
19351    specification allows the initial length to take up either 4 bytes
19352    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19353    bytes describe the length and all offsets will be 8 bytes in length
19354    instead of 4.
19355
19356    An older, non-standard 64-bit format is also handled by this
19357    function.  The older format in question stores the initial length
19358    as an 8-byte quantity without an escape value.  Lengths greater
19359    than 2^32 aren't very common which means that the initial 4 bytes
19360    is almost always zero.  Since a length value of zero doesn't make
19361    sense for the 32-bit format, this initial zero can be considered to
19362    be an escape value which indicates the presence of the older 64-bit
19363    format.  As written, the code can't detect (old format) lengths
19364    greater than 4GB.  If it becomes necessary to handle lengths
19365    somewhat larger than 4GB, we could allow other small values (such
19366    as the non-sensical values of 1, 2, and 3) to also be used as
19367    escape values indicating the presence of the old format.
19368
19369    The value returned via bytes_read should be used to increment the
19370    relevant pointer after calling read_initial_length().
19371
19372    [ Note:  read_initial_length() and read_offset() are based on the
19373      document entitled "DWARF Debugging Information Format", revision
19374      3, draft 8, dated November 19, 2001.  This document was obtained
19375      from:
19376
19377         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19378
19379      This document is only a draft and is subject to change.  (So beware.)
19380
19381      Details regarding the older, non-standard 64-bit format were
19382      determined empirically by examining 64-bit ELF files produced by
19383      the SGI toolchain on an IRIX 6.5 machine.
19384
19385      - Kevin, July 16, 2002
19386    ] */
19387
19388 static LONGEST
19389 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19390 {
19391   LONGEST length = bfd_get_32 (abfd, buf);
19392
19393   if (length == 0xffffffff)
19394     {
19395       length = bfd_get_64 (abfd, buf + 4);
19396       *bytes_read = 12;
19397     }
19398   else if (length == 0)
19399     {
19400       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19401       length = bfd_get_64 (abfd, buf);
19402       *bytes_read = 8;
19403     }
19404   else
19405     {
19406       *bytes_read = 4;
19407     }
19408
19409   return length;
19410 }
19411
19412 /* Cover function for read_initial_length.
19413    Returns the length of the object at BUF, and stores the size of the
19414    initial length in *BYTES_READ and stores the size that offsets will be in
19415    *OFFSET_SIZE.
19416    If the initial length size is not equivalent to that specified in
19417    CU_HEADER then issue a complaint.
19418    This is useful when reading non-comp-unit headers.  */
19419
19420 static LONGEST
19421 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19422                                         const struct comp_unit_head *cu_header,
19423                                         unsigned int *bytes_read,
19424                                         unsigned int *offset_size)
19425 {
19426   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19427
19428   gdb_assert (cu_header->initial_length_size == 4
19429               || cu_header->initial_length_size == 8
19430               || cu_header->initial_length_size == 12);
19431
19432   if (cu_header->initial_length_size != *bytes_read)
19433     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19434
19435   *offset_size = (*bytes_read == 4) ? 4 : 8;
19436   return length;
19437 }
19438
19439 /* Read an offset from the data stream.  The size of the offset is
19440    given by cu_header->offset_size.  */
19441
19442 static LONGEST
19443 read_offset (bfd *abfd, const gdb_byte *buf,
19444              const struct comp_unit_head *cu_header,
19445              unsigned int *bytes_read)
19446 {
19447   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19448
19449   *bytes_read = cu_header->offset_size;
19450   return offset;
19451 }
19452
19453 /* Read an offset from the data stream.  */
19454
19455 static LONGEST
19456 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19457 {
19458   LONGEST retval = 0;
19459
19460   switch (offset_size)
19461     {
19462     case 4:
19463       retval = bfd_get_32 (abfd, buf);
19464       break;
19465     case 8:
19466       retval = bfd_get_64 (abfd, buf);
19467       break;
19468     default:
19469       internal_error (__FILE__, __LINE__,
19470                       _("read_offset_1: bad switch [in module %s]"),
19471                       bfd_get_filename (abfd));
19472     }
19473
19474   return retval;
19475 }
19476
19477 static const gdb_byte *
19478 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19479 {
19480   /* If the size of a host char is 8 bits, we can return a pointer
19481      to the buffer, otherwise we have to copy the data to a buffer
19482      allocated on the temporary obstack.  */
19483   gdb_assert (HOST_CHAR_BIT == 8);
19484   return buf;
19485 }
19486
19487 static const char *
19488 read_direct_string (bfd *abfd, const gdb_byte *buf,
19489                     unsigned int *bytes_read_ptr)
19490 {
19491   /* If the size of a host char is 8 bits, we can return a pointer
19492      to the string, otherwise we have to copy the string to a buffer
19493      allocated on the temporary obstack.  */
19494   gdb_assert (HOST_CHAR_BIT == 8);
19495   if (*buf == '\0')
19496     {
19497       *bytes_read_ptr = 1;
19498       return NULL;
19499     }
19500   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19501   return (const char *) buf;
19502 }
19503
19504 /* Return pointer to string at section SECT offset STR_OFFSET with error
19505    reporting strings FORM_NAME and SECT_NAME.  */
19506
19507 static const char *
19508 read_indirect_string_at_offset_from (struct objfile *objfile,
19509                                      bfd *abfd, LONGEST str_offset,
19510                                      struct dwarf2_section_info *sect,
19511                                      const char *form_name,
19512                                      const char *sect_name)
19513 {
19514   dwarf2_read_section (objfile, sect);
19515   if (sect->buffer == NULL)
19516     error (_("%s used without %s section [in module %s]"),
19517            form_name, sect_name, bfd_get_filename (abfd));
19518   if (str_offset >= sect->size)
19519     error (_("%s pointing outside of %s section [in module %s]"),
19520            form_name, sect_name, bfd_get_filename (abfd));
19521   gdb_assert (HOST_CHAR_BIT == 8);
19522   if (sect->buffer[str_offset] == '\0')
19523     return NULL;
19524   return (const char *) (sect->buffer + str_offset);
19525 }
19526
19527 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19528
19529 static const char *
19530 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19531                                 bfd *abfd, LONGEST str_offset)
19532 {
19533   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19534                                               abfd, str_offset,
19535                                               &dwarf2_per_objfile->str,
19536                                               "DW_FORM_strp", ".debug_str");
19537 }
19538
19539 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19540
19541 static const char *
19542 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19543                                      bfd *abfd, LONGEST str_offset)
19544 {
19545   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19546                                               abfd, str_offset,
19547                                               &dwarf2_per_objfile->line_str,
19548                                               "DW_FORM_line_strp",
19549                                               ".debug_line_str");
19550 }
19551
19552 /* Read a string at offset STR_OFFSET in the .debug_str section from
19553    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19554    the string consists of a single NUL byte, return NULL; otherwise
19555    return a pointer to the string.  */
19556
19557 static const char *
19558 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19559                                LONGEST str_offset)
19560 {
19561   dwarf2_read_section (objfile, &dwz->str);
19562
19563   if (dwz->str.buffer == NULL)
19564     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19565              "section [in module %s]"),
19566            bfd_get_filename (dwz->dwz_bfd));
19567   if (str_offset >= dwz->str.size)
19568     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19569              ".debug_str section [in module %s]"),
19570            bfd_get_filename (dwz->dwz_bfd));
19571   gdb_assert (HOST_CHAR_BIT == 8);
19572   if (dwz->str.buffer[str_offset] == '\0')
19573     return NULL;
19574   return (const char *) (dwz->str.buffer + str_offset);
19575 }
19576
19577 /* Return pointer to string at .debug_str offset as read from BUF.
19578    BUF is assumed to be in a compilation unit described by CU_HEADER.
19579    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19580
19581 static const char *
19582 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19583                       const gdb_byte *buf,
19584                       const struct comp_unit_head *cu_header,
19585                       unsigned int *bytes_read_ptr)
19586 {
19587   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19588
19589   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19590 }
19591
19592 /* Return pointer to string at .debug_line_str offset as read from BUF.
19593    BUF is assumed to be in a compilation unit described by CU_HEADER.
19594    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19595
19596 static const char *
19597 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19598                            bfd *abfd, const gdb_byte *buf,
19599                            const struct comp_unit_head *cu_header,
19600                            unsigned int *bytes_read_ptr)
19601 {
19602   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19603
19604   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19605                                               str_offset);
19606 }
19607
19608 ULONGEST
19609 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19610                           unsigned int *bytes_read_ptr)
19611 {
19612   ULONGEST result;
19613   unsigned int num_read;
19614   int shift;
19615   unsigned char byte;
19616
19617   result = 0;
19618   shift = 0;
19619   num_read = 0;
19620   while (1)
19621     {
19622       byte = bfd_get_8 (abfd, buf);
19623       buf++;
19624       num_read++;
19625       result |= ((ULONGEST) (byte & 127) << shift);
19626       if ((byte & 128) == 0)
19627         {
19628           break;
19629         }
19630       shift += 7;
19631     }
19632   *bytes_read_ptr = num_read;
19633   return result;
19634 }
19635
19636 static LONGEST
19637 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19638                     unsigned int *bytes_read_ptr)
19639 {
19640   ULONGEST result;
19641   int shift, num_read;
19642   unsigned char byte;
19643
19644   result = 0;
19645   shift = 0;
19646   num_read = 0;
19647   while (1)
19648     {
19649       byte = bfd_get_8 (abfd, buf);
19650       buf++;
19651       num_read++;
19652       result |= ((ULONGEST) (byte & 127) << shift);
19653       shift += 7;
19654       if ((byte & 128) == 0)
19655         {
19656           break;
19657         }
19658     }
19659   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19660     result |= -(((ULONGEST) 1) << shift);
19661   *bytes_read_ptr = num_read;
19662   return result;
19663 }
19664
19665 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19666    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19667    ADDR_SIZE is the size of addresses from the CU header.  */
19668
19669 static CORE_ADDR
19670 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19671                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19672 {
19673   struct objfile *objfile = dwarf2_per_objfile->objfile;
19674   bfd *abfd = objfile->obfd;
19675   const gdb_byte *info_ptr;
19676
19677   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19678   if (dwarf2_per_objfile->addr.buffer == NULL)
19679     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19680            objfile_name (objfile));
19681   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19682     error (_("DW_FORM_addr_index pointing outside of "
19683              ".debug_addr section [in module %s]"),
19684            objfile_name (objfile));
19685   info_ptr = (dwarf2_per_objfile->addr.buffer
19686               + addr_base + addr_index * addr_size);
19687   if (addr_size == 4)
19688     return bfd_get_32 (abfd, info_ptr);
19689   else
19690     return bfd_get_64 (abfd, info_ptr);
19691 }
19692
19693 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19694
19695 static CORE_ADDR
19696 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19697 {
19698   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19699                             cu->addr_base, cu->header.addr_size);
19700 }
19701
19702 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19703
19704 static CORE_ADDR
19705 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19706                              unsigned int *bytes_read)
19707 {
19708   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19709   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19710
19711   return read_addr_index (cu, addr_index);
19712 }
19713
19714 /* Data structure to pass results from dwarf2_read_addr_index_reader
19715    back to dwarf2_read_addr_index.  */
19716
19717 struct dwarf2_read_addr_index_data
19718 {
19719   ULONGEST addr_base;
19720   int addr_size;
19721 };
19722
19723 /* die_reader_func for dwarf2_read_addr_index.  */
19724
19725 static void
19726 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19727                                const gdb_byte *info_ptr,
19728                                struct die_info *comp_unit_die,
19729                                int has_children,
19730                                void *data)
19731 {
19732   struct dwarf2_cu *cu = reader->cu;
19733   struct dwarf2_read_addr_index_data *aidata =
19734     (struct dwarf2_read_addr_index_data *) data;
19735
19736   aidata->addr_base = cu->addr_base;
19737   aidata->addr_size = cu->header.addr_size;
19738 }
19739
19740 /* Given an index in .debug_addr, fetch the value.
19741    NOTE: This can be called during dwarf expression evaluation,
19742    long after the debug information has been read, and thus per_cu->cu
19743    may no longer exist.  */
19744
19745 CORE_ADDR
19746 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19747                         unsigned int addr_index)
19748 {
19749   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19750   struct dwarf2_cu *cu = per_cu->cu;
19751   ULONGEST addr_base;
19752   int addr_size;
19753
19754   /* We need addr_base and addr_size.
19755      If we don't have PER_CU->cu, we have to get it.
19756      Nasty, but the alternative is storing the needed info in PER_CU,
19757      which at this point doesn't seem justified: it's not clear how frequently
19758      it would get used and it would increase the size of every PER_CU.
19759      Entry points like dwarf2_per_cu_addr_size do a similar thing
19760      so we're not in uncharted territory here.
19761      Alas we need to be a bit more complicated as addr_base is contained
19762      in the DIE.
19763
19764      We don't need to read the entire CU(/TU).
19765      We just need the header and top level die.
19766
19767      IWBN to use the aging mechanism to let us lazily later discard the CU.
19768      For now we skip this optimization.  */
19769
19770   if (cu != NULL)
19771     {
19772       addr_base = cu->addr_base;
19773       addr_size = cu->header.addr_size;
19774     }
19775   else
19776     {
19777       struct dwarf2_read_addr_index_data aidata;
19778
19779       /* Note: We can't use init_cutu_and_read_dies_simple here,
19780          we need addr_base.  */
19781       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19782                                dwarf2_read_addr_index_reader, &aidata);
19783       addr_base = aidata.addr_base;
19784       addr_size = aidata.addr_size;
19785     }
19786
19787   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19788                             addr_size);
19789 }
19790
19791 /* Given a DW_FORM_GNU_str_index, fetch the string.
19792    This is only used by the Fission support.  */
19793
19794 static const char *
19795 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19796 {
19797   struct dwarf2_cu *cu = reader->cu;
19798   struct dwarf2_per_objfile *dwarf2_per_objfile
19799     = cu->per_cu->dwarf2_per_objfile;
19800   struct objfile *objfile = dwarf2_per_objfile->objfile;
19801   const char *objf_name = objfile_name (objfile);
19802   bfd *abfd = objfile->obfd;
19803   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19804   struct dwarf2_section_info *str_offsets_section =
19805     &reader->dwo_file->sections.str_offsets;
19806   const gdb_byte *info_ptr;
19807   ULONGEST str_offset;
19808   static const char form_name[] = "DW_FORM_GNU_str_index";
19809
19810   dwarf2_read_section (objfile, str_section);
19811   dwarf2_read_section (objfile, str_offsets_section);
19812   if (str_section->buffer == NULL)
19813     error (_("%s used without .debug_str.dwo section"
19814              " in CU at offset %s [in module %s]"),
19815            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19816   if (str_offsets_section->buffer == NULL)
19817     error (_("%s used without .debug_str_offsets.dwo section"
19818              " in CU at offset %s [in module %s]"),
19819            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19820   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19821     error (_("%s pointing outside of .debug_str_offsets.dwo"
19822              " section in CU at offset %s [in module %s]"),
19823            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19824   info_ptr = (str_offsets_section->buffer
19825               + str_index * cu->header.offset_size);
19826   if (cu->header.offset_size == 4)
19827     str_offset = bfd_get_32 (abfd, info_ptr);
19828   else
19829     str_offset = bfd_get_64 (abfd, info_ptr);
19830   if (str_offset >= str_section->size)
19831     error (_("Offset from %s pointing outside of"
19832              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19833            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19834   return (const char *) (str_section->buffer + str_offset);
19835 }
19836
19837 /* Return the length of an LEB128 number in BUF.  */
19838
19839 static int
19840 leb128_size (const gdb_byte *buf)
19841 {
19842   const gdb_byte *begin = buf;
19843   gdb_byte byte;
19844
19845   while (1)
19846     {
19847       byte = *buf++;
19848       if ((byte & 128) == 0)
19849         return buf - begin;
19850     }
19851 }
19852
19853 static void
19854 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19855 {
19856   switch (lang)
19857     {
19858     case DW_LANG_C89:
19859     case DW_LANG_C99:
19860     case DW_LANG_C11:
19861     case DW_LANG_C:
19862     case DW_LANG_UPC:
19863       cu->language = language_c;
19864       break;
19865     case DW_LANG_Java:
19866     case DW_LANG_C_plus_plus:
19867     case DW_LANG_C_plus_plus_11:
19868     case DW_LANG_C_plus_plus_14:
19869       cu->language = language_cplus;
19870       break;
19871     case DW_LANG_D:
19872       cu->language = language_d;
19873       break;
19874     case DW_LANG_Fortran77:
19875     case DW_LANG_Fortran90:
19876     case DW_LANG_Fortran95:
19877     case DW_LANG_Fortran03:
19878     case DW_LANG_Fortran08:
19879       cu->language = language_fortran;
19880       break;
19881     case DW_LANG_Go:
19882       cu->language = language_go;
19883       break;
19884     case DW_LANG_Mips_Assembler:
19885       cu->language = language_asm;
19886       break;
19887     case DW_LANG_Ada83:
19888     case DW_LANG_Ada95:
19889       cu->language = language_ada;
19890       break;
19891     case DW_LANG_Modula2:
19892       cu->language = language_m2;
19893       break;
19894     case DW_LANG_Pascal83:
19895       cu->language = language_pascal;
19896       break;
19897     case DW_LANG_ObjC:
19898       cu->language = language_objc;
19899       break;
19900     case DW_LANG_Rust:
19901     case DW_LANG_Rust_old:
19902       cu->language = language_rust;
19903       break;
19904     case DW_LANG_Cobol74:
19905     case DW_LANG_Cobol85:
19906     default:
19907       cu->language = language_minimal;
19908       break;
19909     }
19910   cu->language_defn = language_def (cu->language);
19911 }
19912
19913 /* Return the named attribute or NULL if not there.  */
19914
19915 static struct attribute *
19916 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19917 {
19918   for (;;)
19919     {
19920       unsigned int i;
19921       struct attribute *spec = NULL;
19922
19923       for (i = 0; i < die->num_attrs; ++i)
19924         {
19925           if (die->attrs[i].name == name)
19926             return &die->attrs[i];
19927           if (die->attrs[i].name == DW_AT_specification
19928               || die->attrs[i].name == DW_AT_abstract_origin)
19929             spec = &die->attrs[i];
19930         }
19931
19932       if (!spec)
19933         break;
19934
19935       die = follow_die_ref (die, spec, &cu);
19936     }
19937
19938   return NULL;
19939 }
19940
19941 /* Return the named attribute or NULL if not there,
19942    but do not follow DW_AT_specification, etc.
19943    This is for use in contexts where we're reading .debug_types dies.
19944    Following DW_AT_specification, DW_AT_abstract_origin will take us
19945    back up the chain, and we want to go down.  */
19946
19947 static struct attribute *
19948 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19949 {
19950   unsigned int i;
19951
19952   for (i = 0; i < die->num_attrs; ++i)
19953     if (die->attrs[i].name == name)
19954       return &die->attrs[i];
19955
19956   return NULL;
19957 }
19958
19959 /* Return the string associated with a string-typed attribute, or NULL if it
19960    is either not found or is of an incorrect type.  */
19961
19962 static const char *
19963 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19964 {
19965   struct attribute *attr;
19966   const char *str = NULL;
19967
19968   attr = dwarf2_attr (die, name, cu);
19969
19970   if (attr != NULL)
19971     {
19972       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19973           || attr->form == DW_FORM_string
19974           || attr->form == DW_FORM_GNU_str_index
19975           || attr->form == DW_FORM_GNU_strp_alt)
19976         str = DW_STRING (attr);
19977       else
19978         complaint (_("string type expected for attribute %s for "
19979                      "DIE at %s in module %s"),
19980                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19981                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19982     }
19983
19984   return str;
19985 }
19986
19987 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19988    and holds a non-zero value.  This function should only be used for
19989    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19990
19991 static int
19992 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19993 {
19994   struct attribute *attr = dwarf2_attr (die, name, cu);
19995
19996   return (attr && DW_UNSND (attr));
19997 }
19998
19999 static int
20000 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20001 {
20002   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20003      which value is non-zero.  However, we have to be careful with
20004      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20005      (via dwarf2_flag_true_p) follows this attribute.  So we may
20006      end up accidently finding a declaration attribute that belongs
20007      to a different DIE referenced by the specification attribute,
20008      even though the given DIE does not have a declaration attribute.  */
20009   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20010           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20011 }
20012
20013 /* Return the die giving the specification for DIE, if there is
20014    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20015    containing the return value on output.  If there is no
20016    specification, but there is an abstract origin, that is
20017    returned.  */
20018
20019 static struct die_info *
20020 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20021 {
20022   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20023                                              *spec_cu);
20024
20025   if (spec_attr == NULL)
20026     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20027
20028   if (spec_attr == NULL)
20029     return NULL;
20030   else
20031     return follow_die_ref (die, spec_attr, spec_cu);
20032 }
20033
20034 /* Stub for free_line_header to match void * callback types.  */
20035
20036 static void
20037 free_line_header_voidp (void *arg)
20038 {
20039   struct line_header *lh = (struct line_header *) arg;
20040
20041   delete lh;
20042 }
20043
20044 void
20045 line_header::add_include_dir (const char *include_dir)
20046 {
20047   if (dwarf_line_debug >= 2)
20048     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20049                         include_dirs.size () + 1, include_dir);
20050
20051   include_dirs.push_back (include_dir);
20052 }
20053
20054 void
20055 line_header::add_file_name (const char *name,
20056                             dir_index d_index,
20057                             unsigned int mod_time,
20058                             unsigned int length)
20059 {
20060   if (dwarf_line_debug >= 2)
20061     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20062                         (unsigned) file_names.size () + 1, name);
20063
20064   file_names.emplace_back (name, d_index, mod_time, length);
20065 }
20066
20067 /* A convenience function to find the proper .debug_line section for a CU.  */
20068
20069 static struct dwarf2_section_info *
20070 get_debug_line_section (struct dwarf2_cu *cu)
20071 {
20072   struct dwarf2_section_info *section;
20073   struct dwarf2_per_objfile *dwarf2_per_objfile
20074     = cu->per_cu->dwarf2_per_objfile;
20075
20076   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20077      DWO file.  */
20078   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20079     section = &cu->dwo_unit->dwo_file->sections.line;
20080   else if (cu->per_cu->is_dwz)
20081     {
20082       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20083
20084       section = &dwz->line;
20085     }
20086   else
20087     section = &dwarf2_per_objfile->line;
20088
20089   return section;
20090 }
20091
20092 /* Read directory or file name entry format, starting with byte of
20093    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20094    entries count and the entries themselves in the described entry
20095    format.  */
20096
20097 static void
20098 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20099                         bfd *abfd, const gdb_byte **bufp,
20100                         struct line_header *lh,
20101                         const struct comp_unit_head *cu_header,
20102                         void (*callback) (struct line_header *lh,
20103                                           const char *name,
20104                                           dir_index d_index,
20105                                           unsigned int mod_time,
20106                                           unsigned int length))
20107 {
20108   gdb_byte format_count, formati;
20109   ULONGEST data_count, datai;
20110   const gdb_byte *buf = *bufp;
20111   const gdb_byte *format_header_data;
20112   unsigned int bytes_read;
20113
20114   format_count = read_1_byte (abfd, buf);
20115   buf += 1;
20116   format_header_data = buf;
20117   for (formati = 0; formati < format_count; formati++)
20118     {
20119       read_unsigned_leb128 (abfd, buf, &bytes_read);
20120       buf += bytes_read;
20121       read_unsigned_leb128 (abfd, buf, &bytes_read);
20122       buf += bytes_read;
20123     }
20124
20125   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20126   buf += bytes_read;
20127   for (datai = 0; datai < data_count; datai++)
20128     {
20129       const gdb_byte *format = format_header_data;
20130       struct file_entry fe;
20131
20132       for (formati = 0; formati < format_count; formati++)
20133         {
20134           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20135           format += bytes_read;
20136
20137           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20138           format += bytes_read;
20139
20140           gdb::optional<const char *> string;
20141           gdb::optional<unsigned int> uint;
20142
20143           switch (form)
20144             {
20145             case DW_FORM_string:
20146               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20147               buf += bytes_read;
20148               break;
20149
20150             case DW_FORM_line_strp:
20151               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20152                                                          abfd, buf,
20153                                                          cu_header,
20154                                                          &bytes_read));
20155               buf += bytes_read;
20156               break;
20157
20158             case DW_FORM_data1:
20159               uint.emplace (read_1_byte (abfd, buf));
20160               buf += 1;
20161               break;
20162
20163             case DW_FORM_data2:
20164               uint.emplace (read_2_bytes (abfd, buf));
20165               buf += 2;
20166               break;
20167
20168             case DW_FORM_data4:
20169               uint.emplace (read_4_bytes (abfd, buf));
20170               buf += 4;
20171               break;
20172
20173             case DW_FORM_data8:
20174               uint.emplace (read_8_bytes (abfd, buf));
20175               buf += 8;
20176               break;
20177
20178             case DW_FORM_udata:
20179               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20180               buf += bytes_read;
20181               break;
20182
20183             case DW_FORM_block:
20184               /* It is valid only for DW_LNCT_timestamp which is ignored by
20185                  current GDB.  */
20186               break;
20187             }
20188
20189           switch (content_type)
20190             {
20191             case DW_LNCT_path:
20192               if (string.has_value ())
20193                 fe.name = *string;
20194               break;
20195             case DW_LNCT_directory_index:
20196               if (uint.has_value ())
20197                 fe.d_index = (dir_index) *uint;
20198               break;
20199             case DW_LNCT_timestamp:
20200               if (uint.has_value ())
20201                 fe.mod_time = *uint;
20202               break;
20203             case DW_LNCT_size:
20204               if (uint.has_value ())
20205                 fe.length = *uint;
20206               break;
20207             case DW_LNCT_MD5:
20208               break;
20209             default:
20210               complaint (_("Unknown format content type %s"),
20211                          pulongest (content_type));
20212             }
20213         }
20214
20215       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20216     }
20217
20218   *bufp = buf;
20219 }
20220
20221 /* Read the statement program header starting at OFFSET in
20222    .debug_line, or .debug_line.dwo.  Return a pointer
20223    to a struct line_header, allocated using xmalloc.
20224    Returns NULL if there is a problem reading the header, e.g., if it
20225    has a version we don't understand.
20226
20227    NOTE: the strings in the include directory and file name tables of
20228    the returned object point into the dwarf line section buffer,
20229    and must not be freed.  */
20230
20231 static line_header_up
20232 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20233 {
20234   const gdb_byte *line_ptr;
20235   unsigned int bytes_read, offset_size;
20236   int i;
20237   const char *cur_dir, *cur_file;
20238   struct dwarf2_section_info *section;
20239   bfd *abfd;
20240   struct dwarf2_per_objfile *dwarf2_per_objfile
20241     = cu->per_cu->dwarf2_per_objfile;
20242
20243   section = get_debug_line_section (cu);
20244   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20245   if (section->buffer == NULL)
20246     {
20247       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20248         complaint (_("missing .debug_line.dwo section"));
20249       else
20250         complaint (_("missing .debug_line section"));
20251       return 0;
20252     }
20253
20254   /* We can't do this until we know the section is non-empty.
20255      Only then do we know we have such a section.  */
20256   abfd = get_section_bfd_owner (section);
20257
20258   /* Make sure that at least there's room for the total_length field.
20259      That could be 12 bytes long, but we're just going to fudge that.  */
20260   if (to_underlying (sect_off) + 4 >= section->size)
20261     {
20262       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20263       return 0;
20264     }
20265
20266   line_header_up lh (new line_header ());
20267
20268   lh->sect_off = sect_off;
20269   lh->offset_in_dwz = cu->per_cu->is_dwz;
20270
20271   line_ptr = section->buffer + to_underlying (sect_off);
20272
20273   /* Read in the header.  */
20274   lh->total_length =
20275     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20276                                             &bytes_read, &offset_size);
20277   line_ptr += bytes_read;
20278   if (line_ptr + lh->total_length > (section->buffer + section->size))
20279     {
20280       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20281       return 0;
20282     }
20283   lh->statement_program_end = line_ptr + lh->total_length;
20284   lh->version = read_2_bytes (abfd, line_ptr);
20285   line_ptr += 2;
20286   if (lh->version > 5)
20287     {
20288       /* This is a version we don't understand.  The format could have
20289          changed in ways we don't handle properly so just punt.  */
20290       complaint (_("unsupported version in .debug_line section"));
20291       return NULL;
20292     }
20293   if (lh->version >= 5)
20294     {
20295       gdb_byte segment_selector_size;
20296
20297       /* Skip address size.  */
20298       read_1_byte (abfd, line_ptr);
20299       line_ptr += 1;
20300
20301       segment_selector_size = read_1_byte (abfd, line_ptr);
20302       line_ptr += 1;
20303       if (segment_selector_size != 0)
20304         {
20305           complaint (_("unsupported segment selector size %u "
20306                        "in .debug_line section"),
20307                      segment_selector_size);
20308           return NULL;
20309         }
20310     }
20311   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20312   line_ptr += offset_size;
20313   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20314   line_ptr += 1;
20315   if (lh->version >= 4)
20316     {
20317       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20318       line_ptr += 1;
20319     }
20320   else
20321     lh->maximum_ops_per_instruction = 1;
20322
20323   if (lh->maximum_ops_per_instruction == 0)
20324     {
20325       lh->maximum_ops_per_instruction = 1;
20326       complaint (_("invalid maximum_ops_per_instruction "
20327                    "in `.debug_line' section"));
20328     }
20329
20330   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20331   line_ptr += 1;
20332   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20333   line_ptr += 1;
20334   lh->line_range = read_1_byte (abfd, line_ptr);
20335   line_ptr += 1;
20336   lh->opcode_base = read_1_byte (abfd, line_ptr);
20337   line_ptr += 1;
20338   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20339
20340   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20341   for (i = 1; i < lh->opcode_base; ++i)
20342     {
20343       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20344       line_ptr += 1;
20345     }
20346
20347   if (lh->version >= 5)
20348     {
20349       /* Read directory table.  */
20350       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20351                               &cu->header,
20352                               [] (struct line_header *header, const char *name,
20353                                   dir_index d_index, unsigned int mod_time,
20354                                   unsigned int length)
20355         {
20356           header->add_include_dir (name);
20357         });
20358
20359       /* Read file name table.  */
20360       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20361                               &cu->header,
20362                               [] (struct line_header *header, const char *name,
20363                                   dir_index d_index, unsigned int mod_time,
20364                                   unsigned int length)
20365         {
20366           header->add_file_name (name, d_index, mod_time, length);
20367         });
20368     }
20369   else
20370     {
20371       /* Read directory table.  */
20372       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20373         {
20374           line_ptr += bytes_read;
20375           lh->add_include_dir (cur_dir);
20376         }
20377       line_ptr += bytes_read;
20378
20379       /* Read file name table.  */
20380       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20381         {
20382           unsigned int mod_time, length;
20383           dir_index d_index;
20384
20385           line_ptr += bytes_read;
20386           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20387           line_ptr += bytes_read;
20388           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20389           line_ptr += bytes_read;
20390           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20391           line_ptr += bytes_read;
20392
20393           lh->add_file_name (cur_file, d_index, mod_time, length);
20394         }
20395       line_ptr += bytes_read;
20396     }
20397   lh->statement_program_start = line_ptr;
20398
20399   if (line_ptr > (section->buffer + section->size))
20400     complaint (_("line number info header doesn't "
20401                  "fit in `.debug_line' section"));
20402
20403   return lh;
20404 }
20405
20406 /* Subroutine of dwarf_decode_lines to simplify it.
20407    Return the file name of the psymtab for included file FILE_INDEX
20408    in line header LH of PST.
20409    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20410    If space for the result is malloc'd, *NAME_HOLDER will be set.
20411    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20412
20413 static const char *
20414 psymtab_include_file_name (const struct line_header *lh, int file_index,
20415                            const struct partial_symtab *pst,
20416                            const char *comp_dir,
20417                            gdb::unique_xmalloc_ptr<char> *name_holder)
20418 {
20419   const file_entry &fe = lh->file_names[file_index];
20420   const char *include_name = fe.name;
20421   const char *include_name_to_compare = include_name;
20422   const char *pst_filename;
20423   int file_is_pst;
20424
20425   const char *dir_name = fe.include_dir (lh);
20426
20427   gdb::unique_xmalloc_ptr<char> hold_compare;
20428   if (!IS_ABSOLUTE_PATH (include_name)
20429       && (dir_name != NULL || comp_dir != NULL))
20430     {
20431       /* Avoid creating a duplicate psymtab for PST.
20432          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20433          Before we do the comparison, however, we need to account
20434          for DIR_NAME and COMP_DIR.
20435          First prepend dir_name (if non-NULL).  If we still don't
20436          have an absolute path prepend comp_dir (if non-NULL).
20437          However, the directory we record in the include-file's
20438          psymtab does not contain COMP_DIR (to match the
20439          corresponding symtab(s)).
20440
20441          Example:
20442
20443          bash$ cd /tmp
20444          bash$ gcc -g ./hello.c
20445          include_name = "hello.c"
20446          dir_name = "."
20447          DW_AT_comp_dir = comp_dir = "/tmp"
20448          DW_AT_name = "./hello.c"
20449
20450       */
20451
20452       if (dir_name != NULL)
20453         {
20454           name_holder->reset (concat (dir_name, SLASH_STRING,
20455                                       include_name, (char *) NULL));
20456           include_name = name_holder->get ();
20457           include_name_to_compare = include_name;
20458         }
20459       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20460         {
20461           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20462                                       include_name, (char *) NULL));
20463           include_name_to_compare = hold_compare.get ();
20464         }
20465     }
20466
20467   pst_filename = pst->filename;
20468   gdb::unique_xmalloc_ptr<char> copied_name;
20469   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20470     {
20471       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20472                                  pst_filename, (char *) NULL));
20473       pst_filename = copied_name.get ();
20474     }
20475
20476   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20477
20478   if (file_is_pst)
20479     return NULL;
20480   return include_name;
20481 }
20482
20483 /* State machine to track the state of the line number program.  */
20484
20485 class lnp_state_machine
20486 {
20487 public:
20488   /* Initialize a machine state for the start of a line number
20489      program.  */
20490   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20491                      bool record_lines_p);
20492
20493   file_entry *current_file ()
20494   {
20495     /* lh->file_names is 0-based, but the file name numbers in the
20496        statement program are 1-based.  */
20497     return m_line_header->file_name_at (m_file);
20498   }
20499
20500   /* Record the line in the state machine.  END_SEQUENCE is true if
20501      we're processing the end of a sequence.  */
20502   void record_line (bool end_sequence);
20503
20504   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20505      nop-out rest of the lines in this sequence.  */
20506   void check_line_address (struct dwarf2_cu *cu,
20507                            const gdb_byte *line_ptr,
20508                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20509
20510   void handle_set_discriminator (unsigned int discriminator)
20511   {
20512     m_discriminator = discriminator;
20513     m_line_has_non_zero_discriminator |= discriminator != 0;
20514   }
20515
20516   /* Handle DW_LNE_set_address.  */
20517   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20518   {
20519     m_op_index = 0;
20520     address += baseaddr;
20521     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20522   }
20523
20524   /* Handle DW_LNS_advance_pc.  */
20525   void handle_advance_pc (CORE_ADDR adjust);
20526
20527   /* Handle a special opcode.  */
20528   void handle_special_opcode (unsigned char op_code);
20529
20530   /* Handle DW_LNS_advance_line.  */
20531   void handle_advance_line (int line_delta)
20532   {
20533     advance_line (line_delta);
20534   }
20535
20536   /* Handle DW_LNS_set_file.  */
20537   void handle_set_file (file_name_index file);
20538
20539   /* Handle DW_LNS_negate_stmt.  */
20540   void handle_negate_stmt ()
20541   {
20542     m_is_stmt = !m_is_stmt;
20543   }
20544
20545   /* Handle DW_LNS_const_add_pc.  */
20546   void handle_const_add_pc ();
20547
20548   /* Handle DW_LNS_fixed_advance_pc.  */
20549   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20550   {
20551     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20552     m_op_index = 0;
20553   }
20554
20555   /* Handle DW_LNS_copy.  */
20556   void handle_copy ()
20557   {
20558     record_line (false);
20559     m_discriminator = 0;
20560   }
20561
20562   /* Handle DW_LNE_end_sequence.  */
20563   void handle_end_sequence ()
20564   {
20565     m_currently_recording_lines = true;
20566   }
20567
20568 private:
20569   /* Advance the line by LINE_DELTA.  */
20570   void advance_line (int line_delta)
20571   {
20572     m_line += line_delta;
20573
20574     if (line_delta != 0)
20575       m_line_has_non_zero_discriminator = m_discriminator != 0;
20576   }
20577
20578   struct dwarf2_cu *m_cu;
20579
20580   gdbarch *m_gdbarch;
20581
20582   /* True if we're recording lines.
20583      Otherwise we're building partial symtabs and are just interested in
20584      finding include files mentioned by the line number program.  */
20585   bool m_record_lines_p;
20586
20587   /* The line number header.  */
20588   line_header *m_line_header;
20589
20590   /* These are part of the standard DWARF line number state machine,
20591      and initialized according to the DWARF spec.  */
20592
20593   unsigned char m_op_index = 0;
20594   /* The line table index (1-based) of the current file.  */
20595   file_name_index m_file = (file_name_index) 1;
20596   unsigned int m_line = 1;
20597
20598   /* These are initialized in the constructor.  */
20599
20600   CORE_ADDR m_address;
20601   bool m_is_stmt;
20602   unsigned int m_discriminator;
20603
20604   /* Additional bits of state we need to track.  */
20605
20606   /* The last file that we called dwarf2_start_subfile for.
20607      This is only used for TLLs.  */
20608   unsigned int m_last_file = 0;
20609   /* The last file a line number was recorded for.  */
20610   struct subfile *m_last_subfile = NULL;
20611
20612   /* When true, record the lines we decode.  */
20613   bool m_currently_recording_lines = false;
20614
20615   /* The last line number that was recorded, used to coalesce
20616      consecutive entries for the same line.  This can happen, for
20617      example, when discriminators are present.  PR 17276.  */
20618   unsigned int m_last_line = 0;
20619   bool m_line_has_non_zero_discriminator = false;
20620 };
20621
20622 void
20623 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20624 {
20625   CORE_ADDR addr_adj = (((m_op_index + adjust)
20626                          / m_line_header->maximum_ops_per_instruction)
20627                         * m_line_header->minimum_instruction_length);
20628   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20629   m_op_index = ((m_op_index + adjust)
20630                 % m_line_header->maximum_ops_per_instruction);
20631 }
20632
20633 void
20634 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20635 {
20636   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20637   CORE_ADDR addr_adj = (((m_op_index
20638                           + (adj_opcode / m_line_header->line_range))
20639                          / m_line_header->maximum_ops_per_instruction)
20640                         * m_line_header->minimum_instruction_length);
20641   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20642   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20643                 % m_line_header->maximum_ops_per_instruction);
20644
20645   int line_delta = (m_line_header->line_base
20646                     + (adj_opcode % m_line_header->line_range));
20647   advance_line (line_delta);
20648   record_line (false);
20649   m_discriminator = 0;
20650 }
20651
20652 void
20653 lnp_state_machine::handle_set_file (file_name_index file)
20654 {
20655   m_file = file;
20656
20657   const file_entry *fe = current_file ();
20658   if (fe == NULL)
20659     dwarf2_debug_line_missing_file_complaint ();
20660   else if (m_record_lines_p)
20661     {
20662       const char *dir = fe->include_dir (m_line_header);
20663
20664       m_last_subfile = m_cu->builder->get_current_subfile ();
20665       m_line_has_non_zero_discriminator = m_discriminator != 0;
20666       dwarf2_start_subfile (m_cu, fe->name, dir);
20667     }
20668 }
20669
20670 void
20671 lnp_state_machine::handle_const_add_pc ()
20672 {
20673   CORE_ADDR adjust
20674     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20675
20676   CORE_ADDR addr_adj
20677     = (((m_op_index + adjust)
20678         / m_line_header->maximum_ops_per_instruction)
20679        * m_line_header->minimum_instruction_length);
20680
20681   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20682   m_op_index = ((m_op_index + adjust)
20683                 % m_line_header->maximum_ops_per_instruction);
20684 }
20685
20686 /* Return non-zero if we should add LINE to the line number table.
20687    LINE is the line to add, LAST_LINE is the last line that was added,
20688    LAST_SUBFILE is the subfile for LAST_LINE.
20689    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20690    had a non-zero discriminator.
20691
20692    We have to be careful in the presence of discriminators.
20693    E.g., for this line:
20694
20695      for (i = 0; i < 100000; i++);
20696
20697    clang can emit four line number entries for that one line,
20698    each with a different discriminator.
20699    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20700
20701    However, we want gdb to coalesce all four entries into one.
20702    Otherwise the user could stepi into the middle of the line and
20703    gdb would get confused about whether the pc really was in the
20704    middle of the line.
20705
20706    Things are further complicated by the fact that two consecutive
20707    line number entries for the same line is a heuristic used by gcc
20708    to denote the end of the prologue.  So we can't just discard duplicate
20709    entries, we have to be selective about it.  The heuristic we use is
20710    that we only collapse consecutive entries for the same line if at least
20711    one of those entries has a non-zero discriminator.  PR 17276.
20712
20713    Note: Addresses in the line number state machine can never go backwards
20714    within one sequence, thus this coalescing is ok.  */
20715
20716 static int
20717 dwarf_record_line_p (struct dwarf2_cu *cu,
20718                      unsigned int line, unsigned int last_line,
20719                      int line_has_non_zero_discriminator,
20720                      struct subfile *last_subfile)
20721 {
20722   if (cu->builder->get_current_subfile () != last_subfile)
20723     return 1;
20724   if (line != last_line)
20725     return 1;
20726   /* Same line for the same file that we've seen already.
20727      As a last check, for pr 17276, only record the line if the line
20728      has never had a non-zero discriminator.  */
20729   if (!line_has_non_zero_discriminator)
20730     return 1;
20731   return 0;
20732 }
20733
20734 /* Use the CU's builder to record line number LINE beginning at
20735    address ADDRESS in the line table of subfile SUBFILE.  */
20736
20737 static void
20738 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20739                      unsigned int line, CORE_ADDR address,
20740                      struct dwarf2_cu *cu)
20741 {
20742   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20743
20744   if (dwarf_line_debug)
20745     {
20746       fprintf_unfiltered (gdb_stdlog,
20747                           "Recording line %u, file %s, address %s\n",
20748                           line, lbasename (subfile->name),
20749                           paddress (gdbarch, address));
20750     }
20751
20752   if (cu != nullptr)
20753     cu->builder->record_line (subfile, line, addr);
20754 }
20755
20756 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20757    Mark the end of a set of line number records.
20758    The arguments are the same as for dwarf_record_line_1.
20759    If SUBFILE is NULL the request is ignored.  */
20760
20761 static void
20762 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20763                    CORE_ADDR address, struct dwarf2_cu *cu)
20764 {
20765   if (subfile == NULL)
20766     return;
20767
20768   if (dwarf_line_debug)
20769     {
20770       fprintf_unfiltered (gdb_stdlog,
20771                           "Finishing current line, file %s, address %s\n",
20772                           lbasename (subfile->name),
20773                           paddress (gdbarch, address));
20774     }
20775
20776   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20777 }
20778
20779 void
20780 lnp_state_machine::record_line (bool end_sequence)
20781 {
20782   if (dwarf_line_debug)
20783     {
20784       fprintf_unfiltered (gdb_stdlog,
20785                           "Processing actual line %u: file %u,"
20786                           " address %s, is_stmt %u, discrim %u\n",
20787                           m_line, to_underlying (m_file),
20788                           paddress (m_gdbarch, m_address),
20789                           m_is_stmt, m_discriminator);
20790     }
20791
20792   file_entry *fe = current_file ();
20793
20794   if (fe == NULL)
20795     dwarf2_debug_line_missing_file_complaint ();
20796   /* For now we ignore lines not starting on an instruction boundary.
20797      But not when processing end_sequence for compatibility with the
20798      previous version of the code.  */
20799   else if (m_op_index == 0 || end_sequence)
20800     {
20801       fe->included_p = 1;
20802       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20803         {
20804           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20805               || end_sequence)
20806             {
20807               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20808                                  m_currently_recording_lines ? m_cu : nullptr);
20809             }
20810
20811           if (!end_sequence)
20812             {
20813               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20814                                        m_line_has_non_zero_discriminator,
20815                                        m_last_subfile))
20816                 {
20817                   dwarf_record_line_1 (m_gdbarch,
20818                                        m_cu->builder->get_current_subfile (),
20819                                        m_line, m_address,
20820                                        m_currently_recording_lines ? m_cu : nullptr);
20821                 }
20822               m_last_subfile = m_cu->builder->get_current_subfile ();
20823               m_last_line = m_line;
20824             }
20825         }
20826     }
20827 }
20828
20829 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20830                                       line_header *lh, bool record_lines_p)
20831 {
20832   m_cu = cu;
20833   m_gdbarch = arch;
20834   m_record_lines_p = record_lines_p;
20835   m_line_header = lh;
20836
20837   m_currently_recording_lines = true;
20838
20839   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20840      was a line entry for it so that the backend has a chance to adjust it
20841      and also record it in case it needs it.  This is currently used by MIPS
20842      code, cf. `mips_adjust_dwarf2_line'.  */
20843   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20844   m_is_stmt = lh->default_is_stmt;
20845   m_discriminator = 0;
20846 }
20847
20848 void
20849 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20850                                        const gdb_byte *line_ptr,
20851                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20852 {
20853   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20854      the pc range of the CU.  However, we restrict the test to only ADDRESS
20855      values of zero to preserve GDB's previous behaviour which is to handle
20856      the specific case of a function being GC'd by the linker.  */
20857
20858   if (address == 0 && address < unrelocated_lowpc)
20859     {
20860       /* This line table is for a function which has been
20861          GCd by the linker.  Ignore it.  PR gdb/12528 */
20862
20863       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20864       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20865
20866       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20867                  line_offset, objfile_name (objfile));
20868       m_currently_recording_lines = false;
20869       /* Note: m_currently_recording_lines is left as false until we see
20870          DW_LNE_end_sequence.  */
20871     }
20872 }
20873
20874 /* Subroutine of dwarf_decode_lines to simplify it.
20875    Process the line number information in LH.
20876    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20877    program in order to set included_p for every referenced header.  */
20878
20879 static void
20880 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20881                       const int decode_for_pst_p, CORE_ADDR lowpc)
20882 {
20883   const gdb_byte *line_ptr, *extended_end;
20884   const gdb_byte *line_end;
20885   unsigned int bytes_read, extended_len;
20886   unsigned char op_code, extended_op;
20887   CORE_ADDR baseaddr;
20888   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20889   bfd *abfd = objfile->obfd;
20890   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20891   /* True if we're recording line info (as opposed to building partial
20892      symtabs and just interested in finding include files mentioned by
20893      the line number program).  */
20894   bool record_lines_p = !decode_for_pst_p;
20895
20896   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20897
20898   line_ptr = lh->statement_program_start;
20899   line_end = lh->statement_program_end;
20900
20901   /* Read the statement sequences until there's nothing left.  */
20902   while (line_ptr < line_end)
20903     {
20904       /* The DWARF line number program state machine.  Reset the state
20905          machine at the start of each sequence.  */
20906       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20907       bool end_sequence = false;
20908
20909       if (record_lines_p)
20910         {
20911           /* Start a subfile for the current file of the state
20912              machine.  */
20913           const file_entry *fe = state_machine.current_file ();
20914
20915           if (fe != NULL)
20916             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20917         }
20918
20919       /* Decode the table.  */
20920       while (line_ptr < line_end && !end_sequence)
20921         {
20922           op_code = read_1_byte (abfd, line_ptr);
20923           line_ptr += 1;
20924
20925           if (op_code >= lh->opcode_base)
20926             {
20927               /* Special opcode.  */
20928               state_machine.handle_special_opcode (op_code);
20929             }
20930           else switch (op_code)
20931             {
20932             case DW_LNS_extended_op:
20933               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20934                                                    &bytes_read);
20935               line_ptr += bytes_read;
20936               extended_end = line_ptr + extended_len;
20937               extended_op = read_1_byte (abfd, line_ptr);
20938               line_ptr += 1;
20939               switch (extended_op)
20940                 {
20941                 case DW_LNE_end_sequence:
20942                   state_machine.handle_end_sequence ();
20943                   end_sequence = true;
20944                   break;
20945                 case DW_LNE_set_address:
20946                   {
20947                     CORE_ADDR address
20948                       = read_address (abfd, line_ptr, cu, &bytes_read);
20949                     line_ptr += bytes_read;
20950
20951                     state_machine.check_line_address (cu, line_ptr,
20952                                                       lowpc - baseaddr, address);
20953                     state_machine.handle_set_address (baseaddr, address);
20954                   }
20955                   break;
20956                 case DW_LNE_define_file:
20957                   {
20958                     const char *cur_file;
20959                     unsigned int mod_time, length;
20960                     dir_index dindex;
20961
20962                     cur_file = read_direct_string (abfd, line_ptr,
20963                                                    &bytes_read);
20964                     line_ptr += bytes_read;
20965                     dindex = (dir_index)
20966                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20967                     line_ptr += bytes_read;
20968                     mod_time =
20969                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20970                     line_ptr += bytes_read;
20971                     length =
20972                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20973                     line_ptr += bytes_read;
20974                     lh->add_file_name (cur_file, dindex, mod_time, length);
20975                   }
20976                   break;
20977                 case DW_LNE_set_discriminator:
20978                   {
20979                     /* The discriminator is not interesting to the
20980                        debugger; just ignore it.  We still need to
20981                        check its value though:
20982                        if there are consecutive entries for the same
20983                        (non-prologue) line we want to coalesce them.
20984                        PR 17276.  */
20985                     unsigned int discr
20986                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20987                     line_ptr += bytes_read;
20988
20989                     state_machine.handle_set_discriminator (discr);
20990                   }
20991                   break;
20992                 default:
20993                   complaint (_("mangled .debug_line section"));
20994                   return;
20995                 }
20996               /* Make sure that we parsed the extended op correctly.  If e.g.
20997                  we expected a different address size than the producer used,
20998                  we may have read the wrong number of bytes.  */
20999               if (line_ptr != extended_end)
21000                 {
21001                   complaint (_("mangled .debug_line section"));
21002                   return;
21003                 }
21004               break;
21005             case DW_LNS_copy:
21006               state_machine.handle_copy ();
21007               break;
21008             case DW_LNS_advance_pc:
21009               {
21010                 CORE_ADDR adjust
21011                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21012                 line_ptr += bytes_read;
21013
21014                 state_machine.handle_advance_pc (adjust);
21015               }
21016               break;
21017             case DW_LNS_advance_line:
21018               {
21019                 int line_delta
21020                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21021                 line_ptr += bytes_read;
21022
21023                 state_machine.handle_advance_line (line_delta);
21024               }
21025               break;
21026             case DW_LNS_set_file:
21027               {
21028                 file_name_index file
21029                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21030                                                             &bytes_read);
21031                 line_ptr += bytes_read;
21032
21033                 state_machine.handle_set_file (file);
21034               }
21035               break;
21036             case DW_LNS_set_column:
21037               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21038               line_ptr += bytes_read;
21039               break;
21040             case DW_LNS_negate_stmt:
21041               state_machine.handle_negate_stmt ();
21042               break;
21043             case DW_LNS_set_basic_block:
21044               break;
21045             /* Add to the address register of the state machine the
21046                address increment value corresponding to special opcode
21047                255.  I.e., this value is scaled by the minimum
21048                instruction length since special opcode 255 would have
21049                scaled the increment.  */
21050             case DW_LNS_const_add_pc:
21051               state_machine.handle_const_add_pc ();
21052               break;
21053             case DW_LNS_fixed_advance_pc:
21054               {
21055                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21056                 line_ptr += 2;
21057
21058                 state_machine.handle_fixed_advance_pc (addr_adj);
21059               }
21060               break;
21061             default:
21062               {
21063                 /* Unknown standard opcode, ignore it.  */
21064                 int i;
21065
21066                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21067                   {
21068                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21069                     line_ptr += bytes_read;
21070                   }
21071               }
21072             }
21073         }
21074
21075       if (!end_sequence)
21076         dwarf2_debug_line_missing_end_sequence_complaint ();
21077
21078       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21079          in which case we still finish recording the last line).  */
21080       state_machine.record_line (true);
21081     }
21082 }
21083
21084 /* Decode the Line Number Program (LNP) for the given line_header
21085    structure and CU.  The actual information extracted and the type
21086    of structures created from the LNP depends on the value of PST.
21087
21088    1. If PST is NULL, then this procedure uses the data from the program
21089       to create all necessary symbol tables, and their linetables.
21090
21091    2. If PST is not NULL, this procedure reads the program to determine
21092       the list of files included by the unit represented by PST, and
21093       builds all the associated partial symbol tables.
21094
21095    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21096    It is used for relative paths in the line table.
21097    NOTE: When processing partial symtabs (pst != NULL),
21098    comp_dir == pst->dirname.
21099
21100    NOTE: It is important that psymtabs have the same file name (via strcmp)
21101    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21102    symtab we don't use it in the name of the psymtabs we create.
21103    E.g. expand_line_sal requires this when finding psymtabs to expand.
21104    A good testcase for this is mb-inline.exp.
21105
21106    LOWPC is the lowest address in CU (or 0 if not known).
21107
21108    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21109    for its PC<->lines mapping information.  Otherwise only the filename
21110    table is read in.  */
21111
21112 static void
21113 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21114                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21115                     CORE_ADDR lowpc, int decode_mapping)
21116 {
21117   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21118   const int decode_for_pst_p = (pst != NULL);
21119
21120   if (decode_mapping)
21121     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21122
21123   if (decode_for_pst_p)
21124     {
21125       int file_index;
21126
21127       /* Now that we're done scanning the Line Header Program, we can
21128          create the psymtab of each included file.  */
21129       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21130         if (lh->file_names[file_index].included_p == 1)
21131           {
21132             gdb::unique_xmalloc_ptr<char> name_holder;
21133             const char *include_name =
21134               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21135                                          &name_holder);
21136             if (include_name != NULL)
21137               dwarf2_create_include_psymtab (include_name, pst, objfile);
21138           }
21139     }
21140   else
21141     {
21142       /* Make sure a symtab is created for every file, even files
21143          which contain only variables (i.e. no code with associated
21144          line numbers).  */
21145       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21146       int i;
21147
21148       for (i = 0; i < lh->file_names.size (); i++)
21149         {
21150           file_entry &fe = lh->file_names[i];
21151
21152           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21153
21154           if (cu->builder->get_current_subfile ()->symtab == NULL)
21155             {
21156               cu->builder->get_current_subfile ()->symtab
21157                 = allocate_symtab (cust,
21158                                    cu->builder->get_current_subfile ()->name);
21159             }
21160           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21161         }
21162     }
21163 }
21164
21165 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21166    DIRNAME the name of the source directory which contains FILENAME
21167    or NULL if not known.
21168    This routine tries to keep line numbers from identical absolute and
21169    relative file names in a common subfile.
21170
21171    Using the `list' example from the GDB testsuite, which resides in
21172    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21173    of /srcdir/list0.c yields the following debugging information for list0.c:
21174
21175    DW_AT_name:          /srcdir/list0.c
21176    DW_AT_comp_dir:      /compdir
21177    files.files[0].name: list0.h
21178    files.files[0].dir:  /srcdir
21179    files.files[1].name: list0.c
21180    files.files[1].dir:  /srcdir
21181
21182    The line number information for list0.c has to end up in a single
21183    subfile, so that `break /srcdir/list0.c:1' works as expected.
21184    start_subfile will ensure that this happens provided that we pass the
21185    concatenation of files.files[1].dir and files.files[1].name as the
21186    subfile's name.  */
21187
21188 static void
21189 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21190                       const char *dirname)
21191 {
21192   char *copy = NULL;
21193
21194   /* In order not to lose the line information directory,
21195      we concatenate it to the filename when it makes sense.
21196      Note that the Dwarf3 standard says (speaking of filenames in line
21197      information): ``The directory index is ignored for file names
21198      that represent full path names''.  Thus ignoring dirname in the
21199      `else' branch below isn't an issue.  */
21200
21201   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21202     {
21203       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21204       filename = copy;
21205     }
21206
21207   cu->builder->start_subfile (filename);
21208
21209   if (copy != NULL)
21210     xfree (copy);
21211 }
21212
21213 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21214    buildsym_compunit constructor.  */
21215
21216 static struct compunit_symtab *
21217 dwarf2_start_symtab (struct dwarf2_cu *cu,
21218                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21219 {
21220   gdb_assert (cu->builder == nullptr);
21221
21222   cu->builder.reset (new struct buildsym_compunit
21223                      (cu->per_cu->dwarf2_per_objfile->objfile,
21224                       name, comp_dir, cu->language, low_pc));
21225
21226   cu->list_in_scope = cu->builder->get_file_symbols ();
21227
21228   cu->builder->record_debugformat ("DWARF 2");
21229   cu->builder->record_producer (cu->producer);
21230
21231   cu->processing_has_namespace_info = 0;
21232
21233   return cu->builder->get_compunit_symtab ();
21234 }
21235
21236 static void
21237 var_decode_location (struct attribute *attr, struct symbol *sym,
21238                      struct dwarf2_cu *cu)
21239 {
21240   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21241   struct comp_unit_head *cu_header = &cu->header;
21242
21243   /* NOTE drow/2003-01-30: There used to be a comment and some special
21244      code here to turn a symbol with DW_AT_external and a
21245      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21246      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21247      with some versions of binutils) where shared libraries could have
21248      relocations against symbols in their debug information - the
21249      minimal symbol would have the right address, but the debug info
21250      would not.  It's no longer necessary, because we will explicitly
21251      apply relocations when we read in the debug information now.  */
21252
21253   /* A DW_AT_location attribute with no contents indicates that a
21254      variable has been optimized away.  */
21255   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21256     {
21257       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21258       return;
21259     }
21260
21261   /* Handle one degenerate form of location expression specially, to
21262      preserve GDB's previous behavior when section offsets are
21263      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21264      then mark this symbol as LOC_STATIC.  */
21265
21266   if (attr_form_is_block (attr)
21267       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21268            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21269           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21270               && (DW_BLOCK (attr)->size
21271                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21272     {
21273       unsigned int dummy;
21274
21275       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21276         SYMBOL_VALUE_ADDRESS (sym) =
21277           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21278       else
21279         SYMBOL_VALUE_ADDRESS (sym) =
21280           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21281       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21282       fixup_symbol_section (sym, objfile);
21283       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21284                                               SYMBOL_SECTION (sym));
21285       return;
21286     }
21287
21288   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21289      expression evaluator, and use LOC_COMPUTED only when necessary
21290      (i.e. when the value of a register or memory location is
21291      referenced, or a thread-local block, etc.).  Then again, it might
21292      not be worthwhile.  I'm assuming that it isn't unless performance
21293      or memory numbers show me otherwise.  */
21294
21295   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21296
21297   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21298     cu->has_loclist = 1;
21299 }
21300
21301 /* Given a pointer to a DWARF information entry, figure out if we need
21302    to make a symbol table entry for it, and if so, create a new entry
21303    and return a pointer to it.
21304    If TYPE is NULL, determine symbol type from the die, otherwise
21305    used the passed type.
21306    If SPACE is not NULL, use it to hold the new symbol.  If it is
21307    NULL, allocate a new symbol on the objfile's obstack.  */
21308
21309 static struct symbol *
21310 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21311             struct symbol *space)
21312 {
21313   struct dwarf2_per_objfile *dwarf2_per_objfile
21314     = cu->per_cu->dwarf2_per_objfile;
21315   struct objfile *objfile = dwarf2_per_objfile->objfile;
21316   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21317   struct symbol *sym = NULL;
21318   const char *name;
21319   struct attribute *attr = NULL;
21320   struct attribute *attr2 = NULL;
21321   CORE_ADDR baseaddr;
21322   struct pending **list_to_add = NULL;
21323
21324   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21325
21326   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21327
21328   name = dwarf2_name (die, cu);
21329   if (name)
21330     {
21331       const char *linkagename;
21332       int suppress_add = 0;
21333
21334       if (space)
21335         sym = space;
21336       else
21337         sym = allocate_symbol (objfile);
21338       OBJSTAT (objfile, n_syms++);
21339
21340       /* Cache this symbol's name and the name's demangled form (if any).  */
21341       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21342       linkagename = dwarf2_physname (name, die, cu);
21343       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21344
21345       /* Fortran does not have mangling standard and the mangling does differ
21346          between gfortran, iFort etc.  */
21347       if (cu->language == language_fortran
21348           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21349         symbol_set_demangled_name (&(sym->ginfo),
21350                                    dwarf2_full_name (name, die, cu),
21351                                    NULL);
21352
21353       /* Default assumptions.
21354          Use the passed type or decode it from the die.  */
21355       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21356       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21357       if (type != NULL)
21358         SYMBOL_TYPE (sym) = type;
21359       else
21360         SYMBOL_TYPE (sym) = die_type (die, cu);
21361       attr = dwarf2_attr (die,
21362                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21363                           cu);
21364       if (attr)
21365         {
21366           SYMBOL_LINE (sym) = DW_UNSND (attr);
21367         }
21368
21369       attr = dwarf2_attr (die,
21370                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21371                           cu);
21372       if (attr)
21373         {
21374           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21375           struct file_entry *fe;
21376
21377           if (cu->line_header != NULL)
21378             fe = cu->line_header->file_name_at (file_index);
21379           else
21380             fe = NULL;
21381
21382           if (fe == NULL)
21383             complaint (_("file index out of range"));
21384           else
21385             symbol_set_symtab (sym, fe->symtab);
21386         }
21387
21388       switch (die->tag)
21389         {
21390         case DW_TAG_label:
21391           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21392           if (attr)
21393             {
21394               CORE_ADDR addr;
21395
21396               addr = attr_value_as_address (attr);
21397               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21398               SYMBOL_VALUE_ADDRESS (sym) = addr;
21399             }
21400           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21401           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21402           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21403           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21404           break;
21405         case DW_TAG_subprogram:
21406           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21407              finish_block.  */
21408           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21409           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21410           if ((attr2 && (DW_UNSND (attr2) != 0))
21411               || cu->language == language_ada)
21412             {
21413               /* Subprograms marked external are stored as a global symbol.
21414                  Ada subprograms, whether marked external or not, are always
21415                  stored as a global symbol, because we want to be able to
21416                  access them globally.  For instance, we want to be able
21417                  to break on a nested subprogram without having to
21418                  specify the context.  */
21419               list_to_add = cu->builder->get_global_symbols ();
21420             }
21421           else
21422             {
21423               list_to_add = cu->list_in_scope;
21424             }
21425           break;
21426         case DW_TAG_inlined_subroutine:
21427           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21428              finish_block.  */
21429           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21430           SYMBOL_INLINED (sym) = 1;
21431           list_to_add = cu->list_in_scope;
21432           break;
21433         case DW_TAG_template_value_param:
21434           suppress_add = 1;
21435           /* Fall through.  */
21436         case DW_TAG_constant:
21437         case DW_TAG_variable:
21438         case DW_TAG_member:
21439           /* Compilation with minimal debug info may result in
21440              variables with missing type entries.  Change the
21441              misleading `void' type to something sensible.  */
21442           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21443             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21444
21445           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21446           /* In the case of DW_TAG_member, we should only be called for
21447              static const members.  */
21448           if (die->tag == DW_TAG_member)
21449             {
21450               /* dwarf2_add_field uses die_is_declaration,
21451                  so we do the same.  */
21452               gdb_assert (die_is_declaration (die, cu));
21453               gdb_assert (attr);
21454             }
21455           if (attr)
21456             {
21457               dwarf2_const_value (attr, sym, cu);
21458               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21459               if (!suppress_add)
21460                 {
21461                   if (attr2 && (DW_UNSND (attr2) != 0))
21462                     list_to_add = cu->builder->get_global_symbols ();
21463                   else
21464                     list_to_add = cu->list_in_scope;
21465                 }
21466               break;
21467             }
21468           attr = dwarf2_attr (die, DW_AT_location, cu);
21469           if (attr)
21470             {
21471               var_decode_location (attr, sym, cu);
21472               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21473
21474               /* Fortran explicitly imports any global symbols to the local
21475                  scope by DW_TAG_common_block.  */
21476               if (cu->language == language_fortran && die->parent
21477                   && die->parent->tag == DW_TAG_common_block)
21478                 attr2 = NULL;
21479
21480               if (SYMBOL_CLASS (sym) == LOC_STATIC
21481                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21482                   && !dwarf2_per_objfile->has_section_at_zero)
21483                 {
21484                   /* When a static variable is eliminated by the linker,
21485                      the corresponding debug information is not stripped
21486                      out, but the variable address is set to null;
21487                      do not add such variables into symbol table.  */
21488                 }
21489               else if (attr2 && (DW_UNSND (attr2) != 0))
21490                 {
21491                   /* Workaround gfortran PR debug/40040 - it uses
21492                      DW_AT_location for variables in -fPIC libraries which may
21493                      get overriden by other libraries/executable and get
21494                      a different address.  Resolve it by the minimal symbol
21495                      which may come from inferior's executable using copy
21496                      relocation.  Make this workaround only for gfortran as for
21497                      other compilers GDB cannot guess the minimal symbol
21498                      Fortran mangling kind.  */
21499                   if (cu->language == language_fortran && die->parent
21500                       && die->parent->tag == DW_TAG_module
21501                       && cu->producer
21502                       && startswith (cu->producer, "GNU Fortran"))
21503                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21504
21505                   /* A variable with DW_AT_external is never static,
21506                      but it may be block-scoped.  */
21507                   list_to_add
21508                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21509                        ? cu->builder->get_global_symbols ()
21510                        : cu->list_in_scope);
21511                 }
21512               else
21513                 list_to_add = cu->list_in_scope;
21514             }
21515           else
21516             {
21517               /* We do not know the address of this symbol.
21518                  If it is an external symbol and we have type information
21519                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21520                  The address of the variable will then be determined from
21521                  the minimal symbol table whenever the variable is
21522                  referenced.  */
21523               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21524
21525               /* Fortran explicitly imports any global symbols to the local
21526                  scope by DW_TAG_common_block.  */
21527               if (cu->language == language_fortran && die->parent
21528                   && die->parent->tag == DW_TAG_common_block)
21529                 {
21530                   /* SYMBOL_CLASS doesn't matter here because
21531                      read_common_block is going to reset it.  */
21532                   if (!suppress_add)
21533                     list_to_add = cu->list_in_scope;
21534                 }
21535               else if (attr2 && (DW_UNSND (attr2) != 0)
21536                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21537                 {
21538                   /* A variable with DW_AT_external is never static, but it
21539                      may be block-scoped.  */
21540                   list_to_add
21541                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21542                        ? cu->builder->get_global_symbols ()
21543                        : cu->list_in_scope);
21544
21545                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21546                 }
21547               else if (!die_is_declaration (die, cu))
21548                 {
21549                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21550                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21551                   if (!suppress_add)
21552                     list_to_add = cu->list_in_scope;
21553                 }
21554             }
21555           break;
21556         case DW_TAG_formal_parameter:
21557           {
21558             /* If we are inside a function, mark this as an argument.  If
21559                not, we might be looking at an argument to an inlined function
21560                when we do not have enough information to show inlined frames;
21561                pretend it's a local variable in that case so that the user can
21562                still see it.  */
21563             struct context_stack *curr
21564               = cu->builder->get_current_context_stack ();
21565             if (curr != nullptr && curr->name != nullptr)
21566               SYMBOL_IS_ARGUMENT (sym) = 1;
21567             attr = dwarf2_attr (die, DW_AT_location, cu);
21568             if (attr)
21569               {
21570                 var_decode_location (attr, sym, cu);
21571               }
21572             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21573             if (attr)
21574               {
21575                 dwarf2_const_value (attr, sym, cu);
21576               }
21577
21578             list_to_add = cu->list_in_scope;
21579           }
21580           break;
21581         case DW_TAG_unspecified_parameters:
21582           /* From varargs functions; gdb doesn't seem to have any
21583              interest in this information, so just ignore it for now.
21584              (FIXME?) */
21585           break;
21586         case DW_TAG_template_type_param:
21587           suppress_add = 1;
21588           /* Fall through.  */
21589         case DW_TAG_class_type:
21590         case DW_TAG_interface_type:
21591         case DW_TAG_structure_type:
21592         case DW_TAG_union_type:
21593         case DW_TAG_set_type:
21594         case DW_TAG_enumeration_type:
21595           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21596           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21597
21598           {
21599             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21600                really ever be static objects: otherwise, if you try
21601                to, say, break of a class's method and you're in a file
21602                which doesn't mention that class, it won't work unless
21603                the check for all static symbols in lookup_symbol_aux
21604                saves you.  See the OtherFileClass tests in
21605                gdb.c++/namespace.exp.  */
21606
21607             if (!suppress_add)
21608               {
21609                 list_to_add
21610                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21611                      && cu->language == language_cplus
21612                      ? cu->builder->get_global_symbols ()
21613                      : cu->list_in_scope);
21614
21615                 /* The semantics of C++ state that "struct foo {
21616                    ... }" also defines a typedef for "foo".  */
21617                 if (cu->language == language_cplus
21618                     || cu->language == language_ada
21619                     || cu->language == language_d
21620                     || cu->language == language_rust)
21621                   {
21622                     /* The symbol's name is already allocated along
21623                        with this objfile, so we don't need to
21624                        duplicate it for the type.  */
21625                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21626                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21627                   }
21628               }
21629           }
21630           break;
21631         case DW_TAG_typedef:
21632           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21633           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21634           list_to_add = cu->list_in_scope;
21635           break;
21636         case DW_TAG_base_type:
21637         case DW_TAG_subrange_type:
21638           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21639           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21640           list_to_add = cu->list_in_scope;
21641           break;
21642         case DW_TAG_enumerator:
21643           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21644           if (attr)
21645             {
21646               dwarf2_const_value (attr, sym, cu);
21647             }
21648           {
21649             /* NOTE: carlton/2003-11-10: See comment above in the
21650                DW_TAG_class_type, etc. block.  */
21651
21652             list_to_add
21653               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21654                  && cu->language == language_cplus
21655                  ? cu->builder->get_global_symbols ()
21656                  : cu->list_in_scope);
21657           }
21658           break;
21659         case DW_TAG_imported_declaration:
21660         case DW_TAG_namespace:
21661           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21662           list_to_add = cu->builder->get_global_symbols ();
21663           break;
21664         case DW_TAG_module:
21665           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21666           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21667           list_to_add = cu->builder->get_global_symbols ();
21668           break;
21669         case DW_TAG_common_block:
21670           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21671           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21672           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21673           break;
21674         default:
21675           /* Not a tag we recognize.  Hopefully we aren't processing
21676              trash data, but since we must specifically ignore things
21677              we don't recognize, there is nothing else we should do at
21678              this point.  */
21679           complaint (_("unsupported tag: '%s'"),
21680                      dwarf_tag_name (die->tag));
21681           break;
21682         }
21683
21684       if (suppress_add)
21685         {
21686           sym->hash_next = objfile->template_symbols;
21687           objfile->template_symbols = sym;
21688           list_to_add = NULL;
21689         }
21690
21691       if (list_to_add != NULL)
21692         dw2_add_symbol_to_list (sym, list_to_add);
21693
21694       /* For the benefit of old versions of GCC, check for anonymous
21695          namespaces based on the demangled name.  */
21696       if (!cu->processing_has_namespace_info
21697           && cu->language == language_cplus)
21698         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21699     }
21700   return (sym);
21701 }
21702
21703 /* Given an attr with a DW_FORM_dataN value in host byte order,
21704    zero-extend it as appropriate for the symbol's type.  The DWARF
21705    standard (v4) is not entirely clear about the meaning of using
21706    DW_FORM_dataN for a constant with a signed type, where the type is
21707    wider than the data.  The conclusion of a discussion on the DWARF
21708    list was that this is unspecified.  We choose to always zero-extend
21709    because that is the interpretation long in use by GCC.  */
21710
21711 static gdb_byte *
21712 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21713                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21714 {
21715   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21716   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21717                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21718   LONGEST l = DW_UNSND (attr);
21719
21720   if (bits < sizeof (*value) * 8)
21721     {
21722       l &= ((LONGEST) 1 << bits) - 1;
21723       *value = l;
21724     }
21725   else if (bits == sizeof (*value) * 8)
21726     *value = l;
21727   else
21728     {
21729       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21730       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21731       return bytes;
21732     }
21733
21734   return NULL;
21735 }
21736
21737 /* Read a constant value from an attribute.  Either set *VALUE, or if
21738    the value does not fit in *VALUE, set *BYTES - either already
21739    allocated on the objfile obstack, or newly allocated on OBSTACK,
21740    or, set *BATON, if we translated the constant to a location
21741    expression.  */
21742
21743 static void
21744 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21745                          const char *name, struct obstack *obstack,
21746                          struct dwarf2_cu *cu,
21747                          LONGEST *value, const gdb_byte **bytes,
21748                          struct dwarf2_locexpr_baton **baton)
21749 {
21750   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21751   struct comp_unit_head *cu_header = &cu->header;
21752   struct dwarf_block *blk;
21753   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21754                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21755
21756   *value = 0;
21757   *bytes = NULL;
21758   *baton = NULL;
21759
21760   switch (attr->form)
21761     {
21762     case DW_FORM_addr:
21763     case DW_FORM_GNU_addr_index:
21764       {
21765         gdb_byte *data;
21766
21767         if (TYPE_LENGTH (type) != cu_header->addr_size)
21768           dwarf2_const_value_length_mismatch_complaint (name,
21769                                                         cu_header->addr_size,
21770                                                         TYPE_LENGTH (type));
21771         /* Symbols of this form are reasonably rare, so we just
21772            piggyback on the existing location code rather than writing
21773            a new implementation of symbol_computed_ops.  */
21774         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21775         (*baton)->per_cu = cu->per_cu;
21776         gdb_assert ((*baton)->per_cu);
21777
21778         (*baton)->size = 2 + cu_header->addr_size;
21779         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21780         (*baton)->data = data;
21781
21782         data[0] = DW_OP_addr;
21783         store_unsigned_integer (&data[1], cu_header->addr_size,
21784                                 byte_order, DW_ADDR (attr));
21785         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21786       }
21787       break;
21788     case DW_FORM_string:
21789     case DW_FORM_strp:
21790     case DW_FORM_GNU_str_index:
21791     case DW_FORM_GNU_strp_alt:
21792       /* DW_STRING is already allocated on the objfile obstack, point
21793          directly to it.  */
21794       *bytes = (const gdb_byte *) DW_STRING (attr);
21795       break;
21796     case DW_FORM_block1:
21797     case DW_FORM_block2:
21798     case DW_FORM_block4:
21799     case DW_FORM_block:
21800     case DW_FORM_exprloc:
21801     case DW_FORM_data16:
21802       blk = DW_BLOCK (attr);
21803       if (TYPE_LENGTH (type) != blk->size)
21804         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21805                                                       TYPE_LENGTH (type));
21806       *bytes = blk->data;
21807       break;
21808
21809       /* The DW_AT_const_value attributes are supposed to carry the
21810          symbol's value "represented as it would be on the target
21811          architecture."  By the time we get here, it's already been
21812          converted to host endianness, so we just need to sign- or
21813          zero-extend it as appropriate.  */
21814     case DW_FORM_data1:
21815       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21816       break;
21817     case DW_FORM_data2:
21818       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21819       break;
21820     case DW_FORM_data4:
21821       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21822       break;
21823     case DW_FORM_data8:
21824       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21825       break;
21826
21827     case DW_FORM_sdata:
21828     case DW_FORM_implicit_const:
21829       *value = DW_SND (attr);
21830       break;
21831
21832     case DW_FORM_udata:
21833       *value = DW_UNSND (attr);
21834       break;
21835
21836     default:
21837       complaint (_("unsupported const value attribute form: '%s'"),
21838                  dwarf_form_name (attr->form));
21839       *value = 0;
21840       break;
21841     }
21842 }
21843
21844
21845 /* Copy constant value from an attribute to a symbol.  */
21846
21847 static void
21848 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21849                     struct dwarf2_cu *cu)
21850 {
21851   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21852   LONGEST value;
21853   const gdb_byte *bytes;
21854   struct dwarf2_locexpr_baton *baton;
21855
21856   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21857                            SYMBOL_PRINT_NAME (sym),
21858                            &objfile->objfile_obstack, cu,
21859                            &value, &bytes, &baton);
21860
21861   if (baton != NULL)
21862     {
21863       SYMBOL_LOCATION_BATON (sym) = baton;
21864       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21865     }
21866   else if (bytes != NULL)
21867      {
21868       SYMBOL_VALUE_BYTES (sym) = bytes;
21869       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21870     }
21871   else
21872     {
21873       SYMBOL_VALUE (sym) = value;
21874       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21875     }
21876 }
21877
21878 /* Return the type of the die in question using its DW_AT_type attribute.  */
21879
21880 static struct type *
21881 die_type (struct die_info *die, struct dwarf2_cu *cu)
21882 {
21883   struct attribute *type_attr;
21884
21885   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21886   if (!type_attr)
21887     {
21888       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21889       /* A missing DW_AT_type represents a void type.  */
21890       return objfile_type (objfile)->builtin_void;
21891     }
21892
21893   return lookup_die_type (die, type_attr, cu);
21894 }
21895
21896 /* True iff CU's producer generates GNAT Ada auxiliary information
21897    that allows to find parallel types through that information instead
21898    of having to do expensive parallel lookups by type name.  */
21899
21900 static int
21901 need_gnat_info (struct dwarf2_cu *cu)
21902 {
21903   /* Assume that the Ada compiler was GNAT, which always produces
21904      the auxiliary information.  */
21905   return (cu->language == language_ada);
21906 }
21907
21908 /* Return the auxiliary type of the die in question using its
21909    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21910    attribute is not present.  */
21911
21912 static struct type *
21913 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21914 {
21915   struct attribute *type_attr;
21916
21917   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21918   if (!type_attr)
21919     return NULL;
21920
21921   return lookup_die_type (die, type_attr, cu);
21922 }
21923
21924 /* If DIE has a descriptive_type attribute, then set the TYPE's
21925    descriptive type accordingly.  */
21926
21927 static void
21928 set_descriptive_type (struct type *type, struct die_info *die,
21929                       struct dwarf2_cu *cu)
21930 {
21931   struct type *descriptive_type = die_descriptive_type (die, cu);
21932
21933   if (descriptive_type)
21934     {
21935       ALLOCATE_GNAT_AUX_TYPE (type);
21936       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21937     }
21938 }
21939
21940 /* Return the containing type of the die in question using its
21941    DW_AT_containing_type attribute.  */
21942
21943 static struct type *
21944 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21945 {
21946   struct attribute *type_attr;
21947   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21948
21949   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21950   if (!type_attr)
21951     error (_("Dwarf Error: Problem turning containing type into gdb type "
21952              "[in module %s]"), objfile_name (objfile));
21953
21954   return lookup_die_type (die, type_attr, cu);
21955 }
21956
21957 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21958
21959 static struct type *
21960 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
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   char *saved;
21966
21967   std::string message
21968     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21969                      objfile_name (objfile),
21970                      sect_offset_str (cu->header.sect_off),
21971                      sect_offset_str (die->sect_off));
21972   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21973                                   message.c_str (), message.length ());
21974
21975   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21976 }
21977
21978 /* Look up the type of DIE in CU using its type attribute ATTR.
21979    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21980    DW_AT_containing_type.
21981    If there is no type substitute an error marker.  */
21982
21983 static struct type *
21984 lookup_die_type (struct die_info *die, const struct attribute *attr,
21985                  struct dwarf2_cu *cu)
21986 {
21987   struct dwarf2_per_objfile *dwarf2_per_objfile
21988     = cu->per_cu->dwarf2_per_objfile;
21989   struct objfile *objfile = dwarf2_per_objfile->objfile;
21990   struct type *this_type;
21991
21992   gdb_assert (attr->name == DW_AT_type
21993               || attr->name == DW_AT_GNAT_descriptive_type
21994               || attr->name == DW_AT_containing_type);
21995
21996   /* First see if we have it cached.  */
21997
21998   if (attr->form == DW_FORM_GNU_ref_alt)
21999     {
22000       struct dwarf2_per_cu_data *per_cu;
22001       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22002
22003       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22004                                                  dwarf2_per_objfile);
22005       this_type = get_die_type_at_offset (sect_off, per_cu);
22006     }
22007   else if (attr_form_is_ref (attr))
22008     {
22009       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22010
22011       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22012     }
22013   else if (attr->form == DW_FORM_ref_sig8)
22014     {
22015       ULONGEST signature = DW_SIGNATURE (attr);
22016
22017       return get_signatured_type (die, signature, cu);
22018     }
22019   else
22020     {
22021       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22022                    " at %s [in module %s]"),
22023                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22024                  objfile_name (objfile));
22025       return build_error_marker_type (cu, die);
22026     }
22027
22028   /* If not cached we need to read it in.  */
22029
22030   if (this_type == NULL)
22031     {
22032       struct die_info *type_die = NULL;
22033       struct dwarf2_cu *type_cu = cu;
22034
22035       if (attr_form_is_ref (attr))
22036         type_die = follow_die_ref (die, attr, &type_cu);
22037       if (type_die == NULL)
22038         return build_error_marker_type (cu, die);
22039       /* If we find the type now, it's probably because the type came
22040          from an inter-CU reference and the type's CU got expanded before
22041          ours.  */
22042       this_type = read_type_die (type_die, type_cu);
22043     }
22044
22045   /* If we still don't have a type use an error marker.  */
22046
22047   if (this_type == NULL)
22048     return build_error_marker_type (cu, die);
22049
22050   return this_type;
22051 }
22052
22053 /* Return the type in DIE, CU.
22054    Returns NULL for invalid types.
22055
22056    This first does a lookup in die_type_hash,
22057    and only reads the die in if necessary.
22058
22059    NOTE: This can be called when reading in partial or full symbols.  */
22060
22061 static struct type *
22062 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22063 {
22064   struct type *this_type;
22065
22066   this_type = get_die_type (die, cu);
22067   if (this_type)
22068     return this_type;
22069
22070   return read_type_die_1 (die, cu);
22071 }
22072
22073 /* Read the type in DIE, CU.
22074    Returns NULL for invalid types.  */
22075
22076 static struct type *
22077 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22078 {
22079   struct type *this_type = NULL;
22080
22081   switch (die->tag)
22082     {
22083     case DW_TAG_class_type:
22084     case DW_TAG_interface_type:
22085     case DW_TAG_structure_type:
22086     case DW_TAG_union_type:
22087       this_type = read_structure_type (die, cu);
22088       break;
22089     case DW_TAG_enumeration_type:
22090       this_type = read_enumeration_type (die, cu);
22091       break;
22092     case DW_TAG_subprogram:
22093     case DW_TAG_subroutine_type:
22094     case DW_TAG_inlined_subroutine:
22095       this_type = read_subroutine_type (die, cu);
22096       break;
22097     case DW_TAG_array_type:
22098       this_type = read_array_type (die, cu);
22099       break;
22100     case DW_TAG_set_type:
22101       this_type = read_set_type (die, cu);
22102       break;
22103     case DW_TAG_pointer_type:
22104       this_type = read_tag_pointer_type (die, cu);
22105       break;
22106     case DW_TAG_ptr_to_member_type:
22107       this_type = read_tag_ptr_to_member_type (die, cu);
22108       break;
22109     case DW_TAG_reference_type:
22110       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22111       break;
22112     case DW_TAG_rvalue_reference_type:
22113       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22114       break;
22115     case DW_TAG_const_type:
22116       this_type = read_tag_const_type (die, cu);
22117       break;
22118     case DW_TAG_volatile_type:
22119       this_type = read_tag_volatile_type (die, cu);
22120       break;
22121     case DW_TAG_restrict_type:
22122       this_type = read_tag_restrict_type (die, cu);
22123       break;
22124     case DW_TAG_string_type:
22125       this_type = read_tag_string_type (die, cu);
22126       break;
22127     case DW_TAG_typedef:
22128       this_type = read_typedef (die, cu);
22129       break;
22130     case DW_TAG_subrange_type:
22131       this_type = read_subrange_type (die, cu);
22132       break;
22133     case DW_TAG_base_type:
22134       this_type = read_base_type (die, cu);
22135       break;
22136     case DW_TAG_unspecified_type:
22137       this_type = read_unspecified_type (die, cu);
22138       break;
22139     case DW_TAG_namespace:
22140       this_type = read_namespace_type (die, cu);
22141       break;
22142     case DW_TAG_module:
22143       this_type = read_module_type (die, cu);
22144       break;
22145     case DW_TAG_atomic_type:
22146       this_type = read_tag_atomic_type (die, cu);
22147       break;
22148     default:
22149       complaint (_("unexpected tag in read_type_die: '%s'"),
22150                  dwarf_tag_name (die->tag));
22151       break;
22152     }
22153
22154   return this_type;
22155 }
22156
22157 /* See if we can figure out if the class lives in a namespace.  We do
22158    this by looking for a member function; its demangled name will
22159    contain namespace info, if there is any.
22160    Return the computed name or NULL.
22161    Space for the result is allocated on the objfile's obstack.
22162    This is the full-die version of guess_partial_die_structure_name.
22163    In this case we know DIE has no useful parent.  */
22164
22165 static char *
22166 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22167 {
22168   struct die_info *spec_die;
22169   struct dwarf2_cu *spec_cu;
22170   struct die_info *child;
22171   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22172
22173   spec_cu = cu;
22174   spec_die = die_specification (die, &spec_cu);
22175   if (spec_die != NULL)
22176     {
22177       die = spec_die;
22178       cu = spec_cu;
22179     }
22180
22181   for (child = die->child;
22182        child != NULL;
22183        child = child->sibling)
22184     {
22185       if (child->tag == DW_TAG_subprogram)
22186         {
22187           const char *linkage_name = dw2_linkage_name (child, cu);
22188
22189           if (linkage_name != NULL)
22190             {
22191               char *actual_name
22192                 = language_class_name_from_physname (cu->language_defn,
22193                                                      linkage_name);
22194               char *name = NULL;
22195
22196               if (actual_name != NULL)
22197                 {
22198                   const char *die_name = dwarf2_name (die, cu);
22199
22200                   if (die_name != NULL
22201                       && strcmp (die_name, actual_name) != 0)
22202                     {
22203                       /* Strip off the class name from the full name.
22204                          We want the prefix.  */
22205                       int die_name_len = strlen (die_name);
22206                       int actual_name_len = strlen (actual_name);
22207
22208                       /* Test for '::' as a sanity check.  */
22209                       if (actual_name_len > die_name_len + 2
22210                           && actual_name[actual_name_len
22211                                          - die_name_len - 1] == ':')
22212                         name = (char *) obstack_copy0 (
22213                           &objfile->per_bfd->storage_obstack,
22214                           actual_name, actual_name_len - die_name_len - 2);
22215                     }
22216                 }
22217               xfree (actual_name);
22218               return name;
22219             }
22220         }
22221     }
22222
22223   return NULL;
22224 }
22225
22226 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22227    prefix part in such case.  See
22228    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22229
22230 static const char *
22231 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22232 {
22233   struct attribute *attr;
22234   const char *base;
22235
22236   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22237       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22238     return NULL;
22239
22240   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22241     return NULL;
22242
22243   attr = dw2_linkage_name_attr (die, cu);
22244   if (attr == NULL || DW_STRING (attr) == NULL)
22245     return NULL;
22246
22247   /* dwarf2_name had to be already called.  */
22248   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22249
22250   /* Strip the base name, keep any leading namespaces/classes.  */
22251   base = strrchr (DW_STRING (attr), ':');
22252   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22253     return "";
22254
22255   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22256   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22257                                  DW_STRING (attr),
22258                                  &base[-1] - DW_STRING (attr));
22259 }
22260
22261 /* Return the name of the namespace/class that DIE is defined within,
22262    or "" if we can't tell.  The caller should not xfree the result.
22263
22264    For example, if we're within the method foo() in the following
22265    code:
22266
22267    namespace N {
22268      class C {
22269        void foo () {
22270        }
22271      };
22272    }
22273
22274    then determine_prefix on foo's die will return "N::C".  */
22275
22276 static const char *
22277 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22278 {
22279   struct dwarf2_per_objfile *dwarf2_per_objfile
22280     = cu->per_cu->dwarf2_per_objfile;
22281   struct die_info *parent, *spec_die;
22282   struct dwarf2_cu *spec_cu;
22283   struct type *parent_type;
22284   const char *retval;
22285
22286   if (cu->language != language_cplus
22287       && cu->language != language_fortran && cu->language != language_d
22288       && cu->language != language_rust)
22289     return "";
22290
22291   retval = anonymous_struct_prefix (die, cu);
22292   if (retval)
22293     return retval;
22294
22295   /* We have to be careful in the presence of DW_AT_specification.
22296      For example, with GCC 3.4, given the code
22297
22298      namespace N {
22299        void foo() {
22300          // Definition of N::foo.
22301        }
22302      }
22303
22304      then we'll have a tree of DIEs like this:
22305
22306      1: DW_TAG_compile_unit
22307        2: DW_TAG_namespace        // N
22308          3: DW_TAG_subprogram     // declaration of N::foo
22309        4: DW_TAG_subprogram       // definition of N::foo
22310             DW_AT_specification   // refers to die #3
22311
22312      Thus, when processing die #4, we have to pretend that we're in
22313      the context of its DW_AT_specification, namely the contex of die
22314      #3.  */
22315   spec_cu = cu;
22316   spec_die = die_specification (die, &spec_cu);
22317   if (spec_die == NULL)
22318     parent = die->parent;
22319   else
22320     {
22321       parent = spec_die->parent;
22322       cu = spec_cu;
22323     }
22324
22325   if (parent == NULL)
22326     return "";
22327   else if (parent->building_fullname)
22328     {
22329       const char *name;
22330       const char *parent_name;
22331
22332       /* It has been seen on RealView 2.2 built binaries,
22333          DW_TAG_template_type_param types actually _defined_ as
22334          children of the parent class:
22335
22336          enum E {};
22337          template class <class Enum> Class{};
22338          Class<enum E> class_e;
22339
22340          1: DW_TAG_class_type (Class)
22341            2: DW_TAG_enumeration_type (E)
22342              3: DW_TAG_enumerator (enum1:0)
22343              3: DW_TAG_enumerator (enum2:1)
22344              ...
22345            2: DW_TAG_template_type_param
22346               DW_AT_type  DW_FORM_ref_udata (E)
22347
22348          Besides being broken debug info, it can put GDB into an
22349          infinite loop.  Consider:
22350
22351          When we're building the full name for Class<E>, we'll start
22352          at Class, and go look over its template type parameters,
22353          finding E.  We'll then try to build the full name of E, and
22354          reach here.  We're now trying to build the full name of E,
22355          and look over the parent DIE for containing scope.  In the
22356          broken case, if we followed the parent DIE of E, we'd again
22357          find Class, and once again go look at its template type
22358          arguments, etc., etc.  Simply don't consider such parent die
22359          as source-level parent of this die (it can't be, the language
22360          doesn't allow it), and break the loop here.  */
22361       name = dwarf2_name (die, cu);
22362       parent_name = dwarf2_name (parent, cu);
22363       complaint (_("template param type '%s' defined within parent '%s'"),
22364                  name ? name : "<unknown>",
22365                  parent_name ? parent_name : "<unknown>");
22366       return "";
22367     }
22368   else
22369     switch (parent->tag)
22370       {
22371       case DW_TAG_namespace:
22372         parent_type = read_type_die (parent, cu);
22373         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22374            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22375            Work around this problem here.  */
22376         if (cu->language == language_cplus
22377             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22378           return "";
22379         /* We give a name to even anonymous namespaces.  */
22380         return TYPE_NAME (parent_type);
22381       case DW_TAG_class_type:
22382       case DW_TAG_interface_type:
22383       case DW_TAG_structure_type:
22384       case DW_TAG_union_type:
22385       case DW_TAG_module:
22386         parent_type = read_type_die (parent, cu);
22387         if (TYPE_NAME (parent_type) != NULL)
22388           return TYPE_NAME (parent_type);
22389         else
22390           /* An anonymous structure is only allowed non-static data
22391              members; no typedefs, no member functions, et cetera.
22392              So it does not need a prefix.  */
22393           return "";
22394       case DW_TAG_compile_unit:
22395       case DW_TAG_partial_unit:
22396         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22397         if (cu->language == language_cplus
22398             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22399             && die->child != NULL
22400             && (die->tag == DW_TAG_class_type
22401                 || die->tag == DW_TAG_structure_type
22402                 || die->tag == DW_TAG_union_type))
22403           {
22404             char *name = guess_full_die_structure_name (die, cu);
22405             if (name != NULL)
22406               return name;
22407           }
22408         return "";
22409       case DW_TAG_enumeration_type:
22410         parent_type = read_type_die (parent, cu);
22411         if (TYPE_DECLARED_CLASS (parent_type))
22412           {
22413             if (TYPE_NAME (parent_type) != NULL)
22414               return TYPE_NAME (parent_type);
22415             return "";
22416           }
22417         /* Fall through.  */
22418       default:
22419         return determine_prefix (parent, cu);
22420       }
22421 }
22422
22423 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22424    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22425    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22426    an obconcat, otherwise allocate storage for the result.  The CU argument is
22427    used to determine the language and hence, the appropriate separator.  */
22428
22429 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22430
22431 static char *
22432 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22433                  int physname, struct dwarf2_cu *cu)
22434 {
22435   const char *lead = "";
22436   const char *sep;
22437
22438   if (suffix == NULL || suffix[0] == '\0'
22439       || prefix == NULL || prefix[0] == '\0')
22440     sep = "";
22441   else if (cu->language == language_d)
22442     {
22443       /* For D, the 'main' function could be defined in any module, but it
22444          should never be prefixed.  */
22445       if (strcmp (suffix, "D main") == 0)
22446         {
22447           prefix = "";
22448           sep = "";
22449         }
22450       else
22451         sep = ".";
22452     }
22453   else if (cu->language == language_fortran && physname)
22454     {
22455       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22456          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22457
22458       lead = "__";
22459       sep = "_MOD_";
22460     }
22461   else
22462     sep = "::";
22463
22464   if (prefix == NULL)
22465     prefix = "";
22466   if (suffix == NULL)
22467     suffix = "";
22468
22469   if (obs == NULL)
22470     {
22471       char *retval
22472         = ((char *)
22473            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22474
22475       strcpy (retval, lead);
22476       strcat (retval, prefix);
22477       strcat (retval, sep);
22478       strcat (retval, suffix);
22479       return retval;
22480     }
22481   else
22482     {
22483       /* We have an obstack.  */
22484       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22485     }
22486 }
22487
22488 /* Return sibling of die, NULL if no sibling.  */
22489
22490 static struct die_info *
22491 sibling_die (struct die_info *die)
22492 {
22493   return die->sibling;
22494 }
22495
22496 /* Get name of a die, return NULL if not found.  */
22497
22498 static const char *
22499 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22500                           struct obstack *obstack)
22501 {
22502   if (name && cu->language == language_cplus)
22503     {
22504       std::string canon_name = cp_canonicalize_string (name);
22505
22506       if (!canon_name.empty ())
22507         {
22508           if (canon_name != name)
22509             name = (const char *) obstack_copy0 (obstack,
22510                                                  canon_name.c_str (),
22511                                                  canon_name.length ());
22512         }
22513     }
22514
22515   return name;
22516 }
22517
22518 /* Get name of a die, return NULL if not found.
22519    Anonymous namespaces are converted to their magic string.  */
22520
22521 static const char *
22522 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22523 {
22524   struct attribute *attr;
22525   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22526
22527   attr = dwarf2_attr (die, DW_AT_name, cu);
22528   if ((!attr || !DW_STRING (attr))
22529       && die->tag != DW_TAG_namespace
22530       && die->tag != DW_TAG_class_type
22531       && die->tag != DW_TAG_interface_type
22532       && die->tag != DW_TAG_structure_type
22533       && die->tag != DW_TAG_union_type)
22534     return NULL;
22535
22536   switch (die->tag)
22537     {
22538     case DW_TAG_compile_unit:
22539     case DW_TAG_partial_unit:
22540       /* Compilation units have a DW_AT_name that is a filename, not
22541          a source language identifier.  */
22542     case DW_TAG_enumeration_type:
22543     case DW_TAG_enumerator:
22544       /* These tags always have simple identifiers already; no need
22545          to canonicalize them.  */
22546       return DW_STRING (attr);
22547
22548     case DW_TAG_namespace:
22549       if (attr != NULL && DW_STRING (attr) != NULL)
22550         return DW_STRING (attr);
22551       return CP_ANONYMOUS_NAMESPACE_STR;
22552
22553     case DW_TAG_class_type:
22554     case DW_TAG_interface_type:
22555     case DW_TAG_structure_type:
22556     case DW_TAG_union_type:
22557       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22558          structures or unions.  These were of the form "._%d" in GCC 4.1,
22559          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22560          and GCC 4.4.  We work around this problem by ignoring these.  */
22561       if (attr && DW_STRING (attr)
22562           && (startswith (DW_STRING (attr), "._")
22563               || startswith (DW_STRING (attr), "<anonymous")))
22564         return NULL;
22565
22566       /* GCC might emit a nameless typedef that has a linkage name.  See
22567          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22568       if (!attr || DW_STRING (attr) == NULL)
22569         {
22570           char *demangled = NULL;
22571
22572           attr = dw2_linkage_name_attr (die, cu);
22573           if (attr == NULL || DW_STRING (attr) == NULL)
22574             return NULL;
22575
22576           /* Avoid demangling DW_STRING (attr) the second time on a second
22577              call for the same DIE.  */
22578           if (!DW_STRING_IS_CANONICAL (attr))
22579             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22580
22581           if (demangled)
22582             {
22583               const char *base;
22584
22585               /* FIXME: we already did this for the partial symbol... */
22586               DW_STRING (attr)
22587                 = ((const char *)
22588                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22589                                   demangled, strlen (demangled)));
22590               DW_STRING_IS_CANONICAL (attr) = 1;
22591               xfree (demangled);
22592
22593               /* Strip any leading namespaces/classes, keep only the base name.
22594                  DW_AT_name for named DIEs does not contain the prefixes.  */
22595               base = strrchr (DW_STRING (attr), ':');
22596               if (base && base > DW_STRING (attr) && base[-1] == ':')
22597                 return &base[1];
22598               else
22599                 return DW_STRING (attr);
22600             }
22601         }
22602       break;
22603
22604     default:
22605       break;
22606     }
22607
22608   if (!DW_STRING_IS_CANONICAL (attr))
22609     {
22610       DW_STRING (attr)
22611         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22612                                     &objfile->per_bfd->storage_obstack);
22613       DW_STRING_IS_CANONICAL (attr) = 1;
22614     }
22615   return DW_STRING (attr);
22616 }
22617
22618 /* Return the die that this die in an extension of, or NULL if there
22619    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22620    containing the return value on output.  */
22621
22622 static struct die_info *
22623 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22624 {
22625   struct attribute *attr;
22626
22627   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22628   if (attr == NULL)
22629     return NULL;
22630
22631   return follow_die_ref (die, attr, ext_cu);
22632 }
22633
22634 /* Convert a DIE tag into its string name.  */
22635
22636 static const char *
22637 dwarf_tag_name (unsigned tag)
22638 {
22639   const char *name = get_DW_TAG_name (tag);
22640
22641   if (name == NULL)
22642     return "DW_TAG_<unknown>";
22643
22644   return name;
22645 }
22646
22647 /* Convert a DWARF attribute code into its string name.  */
22648
22649 static const char *
22650 dwarf_attr_name (unsigned attr)
22651 {
22652   const char *name;
22653
22654 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22655   if (attr == DW_AT_MIPS_fde)
22656     return "DW_AT_MIPS_fde";
22657 #else
22658   if (attr == DW_AT_HP_block_index)
22659     return "DW_AT_HP_block_index";
22660 #endif
22661
22662   name = get_DW_AT_name (attr);
22663
22664   if (name == NULL)
22665     return "DW_AT_<unknown>";
22666
22667   return name;
22668 }
22669
22670 /* Convert a DWARF value form code into its string name.  */
22671
22672 static const char *
22673 dwarf_form_name (unsigned form)
22674 {
22675   const char *name = get_DW_FORM_name (form);
22676
22677   if (name == NULL)
22678     return "DW_FORM_<unknown>";
22679
22680   return name;
22681 }
22682
22683 static const char *
22684 dwarf_bool_name (unsigned mybool)
22685 {
22686   if (mybool)
22687     return "TRUE";
22688   else
22689     return "FALSE";
22690 }
22691
22692 /* Convert a DWARF type code into its string name.  */
22693
22694 static const char *
22695 dwarf_type_encoding_name (unsigned enc)
22696 {
22697   const char *name = get_DW_ATE_name (enc);
22698
22699   if (name == NULL)
22700     return "DW_ATE_<unknown>";
22701
22702   return name;
22703 }
22704
22705 static void
22706 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22707 {
22708   unsigned int i;
22709
22710   print_spaces (indent, f);
22711   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22712                       dwarf_tag_name (die->tag), die->abbrev,
22713                       sect_offset_str (die->sect_off));
22714
22715   if (die->parent != NULL)
22716     {
22717       print_spaces (indent, f);
22718       fprintf_unfiltered (f, "  parent at offset: %s\n",
22719                           sect_offset_str (die->parent->sect_off));
22720     }
22721
22722   print_spaces (indent, f);
22723   fprintf_unfiltered (f, "  has children: %s\n",
22724            dwarf_bool_name (die->child != NULL));
22725
22726   print_spaces (indent, f);
22727   fprintf_unfiltered (f, "  attributes:\n");
22728
22729   for (i = 0; i < die->num_attrs; ++i)
22730     {
22731       print_spaces (indent, f);
22732       fprintf_unfiltered (f, "    %s (%s) ",
22733                dwarf_attr_name (die->attrs[i].name),
22734                dwarf_form_name (die->attrs[i].form));
22735
22736       switch (die->attrs[i].form)
22737         {
22738         case DW_FORM_addr:
22739         case DW_FORM_GNU_addr_index:
22740           fprintf_unfiltered (f, "address: ");
22741           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22742           break;
22743         case DW_FORM_block2:
22744         case DW_FORM_block4:
22745         case DW_FORM_block:
22746         case DW_FORM_block1:
22747           fprintf_unfiltered (f, "block: size %s",
22748                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22749           break;
22750         case DW_FORM_exprloc:
22751           fprintf_unfiltered (f, "expression: size %s",
22752                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22753           break;
22754         case DW_FORM_data16:
22755           fprintf_unfiltered (f, "constant of 16 bytes");
22756           break;
22757         case DW_FORM_ref_addr:
22758           fprintf_unfiltered (f, "ref address: ");
22759           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22760           break;
22761         case DW_FORM_GNU_ref_alt:
22762           fprintf_unfiltered (f, "alt ref address: ");
22763           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22764           break;
22765         case DW_FORM_ref1:
22766         case DW_FORM_ref2:
22767         case DW_FORM_ref4:
22768         case DW_FORM_ref8:
22769         case DW_FORM_ref_udata:
22770           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22771                               (long) (DW_UNSND (&die->attrs[i])));
22772           break;
22773         case DW_FORM_data1:
22774         case DW_FORM_data2:
22775         case DW_FORM_data4:
22776         case DW_FORM_data8:
22777         case DW_FORM_udata:
22778         case DW_FORM_sdata:
22779           fprintf_unfiltered (f, "constant: %s",
22780                               pulongest (DW_UNSND (&die->attrs[i])));
22781           break;
22782         case DW_FORM_sec_offset:
22783           fprintf_unfiltered (f, "section offset: %s",
22784                               pulongest (DW_UNSND (&die->attrs[i])));
22785           break;
22786         case DW_FORM_ref_sig8:
22787           fprintf_unfiltered (f, "signature: %s",
22788                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22789           break;
22790         case DW_FORM_string:
22791         case DW_FORM_strp:
22792         case DW_FORM_line_strp:
22793         case DW_FORM_GNU_str_index:
22794         case DW_FORM_GNU_strp_alt:
22795           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22796                    DW_STRING (&die->attrs[i])
22797                    ? DW_STRING (&die->attrs[i]) : "",
22798                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22799           break;
22800         case DW_FORM_flag:
22801           if (DW_UNSND (&die->attrs[i]))
22802             fprintf_unfiltered (f, "flag: TRUE");
22803           else
22804             fprintf_unfiltered (f, "flag: FALSE");
22805           break;
22806         case DW_FORM_flag_present:
22807           fprintf_unfiltered (f, "flag: TRUE");
22808           break;
22809         case DW_FORM_indirect:
22810           /* The reader will have reduced the indirect form to
22811              the "base form" so this form should not occur.  */
22812           fprintf_unfiltered (f, 
22813                               "unexpected attribute form: DW_FORM_indirect");
22814           break;
22815         case DW_FORM_implicit_const:
22816           fprintf_unfiltered (f, "constant: %s",
22817                               plongest (DW_SND (&die->attrs[i])));
22818           break;
22819         default:
22820           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22821                    die->attrs[i].form);
22822           break;
22823         }
22824       fprintf_unfiltered (f, "\n");
22825     }
22826 }
22827
22828 static void
22829 dump_die_for_error (struct die_info *die)
22830 {
22831   dump_die_shallow (gdb_stderr, 0, die);
22832 }
22833
22834 static void
22835 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22836 {
22837   int indent = level * 4;
22838
22839   gdb_assert (die != NULL);
22840
22841   if (level >= max_level)
22842     return;
22843
22844   dump_die_shallow (f, indent, die);
22845
22846   if (die->child != NULL)
22847     {
22848       print_spaces (indent, f);
22849       fprintf_unfiltered (f, "  Children:");
22850       if (level + 1 < max_level)
22851         {
22852           fprintf_unfiltered (f, "\n");
22853           dump_die_1 (f, level + 1, max_level, die->child);
22854         }
22855       else
22856         {
22857           fprintf_unfiltered (f,
22858                               " [not printed, max nesting level reached]\n");
22859         }
22860     }
22861
22862   if (die->sibling != NULL && level > 0)
22863     {
22864       dump_die_1 (f, level, max_level, die->sibling);
22865     }
22866 }
22867
22868 /* This is called from the pdie macro in gdbinit.in.
22869    It's not static so gcc will keep a copy callable from gdb.  */
22870
22871 void
22872 dump_die (struct die_info *die, int max_level)
22873 {
22874   dump_die_1 (gdb_stdlog, 0, max_level, die);
22875 }
22876
22877 static void
22878 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22879 {
22880   void **slot;
22881
22882   slot = htab_find_slot_with_hash (cu->die_hash, die,
22883                                    to_underlying (die->sect_off),
22884                                    INSERT);
22885
22886   *slot = die;
22887 }
22888
22889 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22890    required kind.  */
22891
22892 static sect_offset
22893 dwarf2_get_ref_die_offset (const struct attribute *attr)
22894 {
22895   if (attr_form_is_ref (attr))
22896     return (sect_offset) DW_UNSND (attr);
22897
22898   complaint (_("unsupported die ref attribute form: '%s'"),
22899              dwarf_form_name (attr->form));
22900   return {};
22901 }
22902
22903 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22904  * the value held by the attribute is not constant.  */
22905
22906 static LONGEST
22907 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22908 {
22909   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22910     return DW_SND (attr);
22911   else if (attr->form == DW_FORM_udata
22912            || attr->form == DW_FORM_data1
22913            || attr->form == DW_FORM_data2
22914            || attr->form == DW_FORM_data4
22915            || attr->form == DW_FORM_data8)
22916     return DW_UNSND (attr);
22917   else
22918     {
22919       /* For DW_FORM_data16 see attr_form_is_constant.  */
22920       complaint (_("Attribute value is not a constant (%s)"),
22921                  dwarf_form_name (attr->form));
22922       return default_value;
22923     }
22924 }
22925
22926 /* Follow reference or signature attribute ATTR of SRC_DIE.
22927    On entry *REF_CU is the CU of SRC_DIE.
22928    On exit *REF_CU is the CU of the result.  */
22929
22930 static struct die_info *
22931 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22932                        struct dwarf2_cu **ref_cu)
22933 {
22934   struct die_info *die;
22935
22936   if (attr_form_is_ref (attr))
22937     die = follow_die_ref (src_die, attr, ref_cu);
22938   else if (attr->form == DW_FORM_ref_sig8)
22939     die = follow_die_sig (src_die, attr, ref_cu);
22940   else
22941     {
22942       dump_die_for_error (src_die);
22943       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22944              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22945     }
22946
22947   return die;
22948 }
22949
22950 /* Follow reference OFFSET.
22951    On entry *REF_CU is the CU of the source die referencing OFFSET.
22952    On exit *REF_CU is the CU of the result.
22953    Returns NULL if OFFSET is invalid.  */
22954
22955 static struct die_info *
22956 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22957                    struct dwarf2_cu **ref_cu)
22958 {
22959   struct die_info temp_die;
22960   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22961   struct dwarf2_per_objfile *dwarf2_per_objfile
22962     = cu->per_cu->dwarf2_per_objfile;
22963
22964   gdb_assert (cu->per_cu != NULL);
22965
22966   target_cu = cu;
22967
22968   if (cu->per_cu->is_debug_types)
22969     {
22970       /* .debug_types CUs cannot reference anything outside their CU.
22971          If they need to, they have to reference a signatured type via
22972          DW_FORM_ref_sig8.  */
22973       if (!offset_in_cu_p (&cu->header, sect_off))
22974         return NULL;
22975     }
22976   else if (offset_in_dwz != cu->per_cu->is_dwz
22977            || !offset_in_cu_p (&cu->header, sect_off))
22978     {
22979       struct dwarf2_per_cu_data *per_cu;
22980
22981       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22982                                                  dwarf2_per_objfile);
22983
22984       /* If necessary, add it to the queue and load its DIEs.  */
22985       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22986         load_full_comp_unit (per_cu, false, cu->language);
22987
22988       target_cu = per_cu->cu;
22989     }
22990   else if (cu->dies == NULL)
22991     {
22992       /* We're loading full DIEs during partial symbol reading.  */
22993       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22994       load_full_comp_unit (cu->per_cu, false, language_minimal);
22995     }
22996
22997   *ref_cu = target_cu;
22998   temp_die.sect_off = sect_off;
22999   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23000                                                   &temp_die,
23001                                                   to_underlying (sect_off));
23002 }
23003
23004 /* Follow reference attribute ATTR of SRC_DIE.
23005    On entry *REF_CU is the CU of SRC_DIE.
23006    On exit *REF_CU is the CU of the result.  */
23007
23008 static struct die_info *
23009 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23010                 struct dwarf2_cu **ref_cu)
23011 {
23012   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23013   struct dwarf2_cu *cu = *ref_cu;
23014   struct die_info *die;
23015
23016   die = follow_die_offset (sect_off,
23017                            (attr->form == DW_FORM_GNU_ref_alt
23018                             || cu->per_cu->is_dwz),
23019                            ref_cu);
23020   if (!die)
23021     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23022            "at %s [in module %s]"),
23023            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23024            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23025
23026   return die;
23027 }
23028
23029 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23030    Returned value is intended for DW_OP_call*.  Returned
23031    dwarf2_locexpr_baton->data has lifetime of
23032    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23033
23034 struct dwarf2_locexpr_baton
23035 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23036                                struct dwarf2_per_cu_data *per_cu,
23037                                CORE_ADDR (*get_frame_pc) (void *baton),
23038                                void *baton, bool resolve_abstract_p)
23039 {
23040   struct dwarf2_cu *cu;
23041   struct die_info *die;
23042   struct attribute *attr;
23043   struct dwarf2_locexpr_baton retval;
23044   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23045   struct objfile *objfile = dwarf2_per_objfile->objfile;
23046
23047   if (per_cu->cu == NULL)
23048     load_cu (per_cu, false);
23049   cu = per_cu->cu;
23050   if (cu == NULL)
23051     {
23052       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23053          Instead just throw an error, not much else we can do.  */
23054       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23055              sect_offset_str (sect_off), objfile_name (objfile));
23056     }
23057
23058   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23059   if (!die)
23060     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23061            sect_offset_str (sect_off), objfile_name (objfile));
23062
23063   attr = dwarf2_attr (die, DW_AT_location, cu);
23064   if (!attr && resolve_abstract_p
23065       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23066           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23067     {
23068       CORE_ADDR pc = (*get_frame_pc) (baton);
23069
23070       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23071         {
23072           if (!cand->parent
23073               || cand->parent->tag != DW_TAG_subprogram)
23074             continue;
23075
23076           CORE_ADDR pc_low, pc_high;
23077           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23078           if (pc_low == ((CORE_ADDR) -1)
23079               || !(pc_low <= pc && pc < pc_high))
23080             continue;
23081
23082           die = cand;
23083           attr = dwarf2_attr (die, DW_AT_location, cu);
23084           break;
23085         }
23086     }
23087
23088   if (!attr)
23089     {
23090       /* DWARF: "If there is no such attribute, then there is no effect.".
23091          DATA is ignored if SIZE is 0.  */
23092
23093       retval.data = NULL;
23094       retval.size = 0;
23095     }
23096   else if (attr_form_is_section_offset (attr))
23097     {
23098       struct dwarf2_loclist_baton loclist_baton;
23099       CORE_ADDR pc = (*get_frame_pc) (baton);
23100       size_t size;
23101
23102       fill_in_loclist_baton (cu, &loclist_baton, attr);
23103
23104       retval.data = dwarf2_find_location_expression (&loclist_baton,
23105                                                      &size, pc);
23106       retval.size = size;
23107     }
23108   else
23109     {
23110       if (!attr_form_is_block (attr))
23111         error (_("Dwarf Error: DIE at %s referenced in module %s "
23112                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23113                sect_offset_str (sect_off), objfile_name (objfile));
23114
23115       retval.data = DW_BLOCK (attr)->data;
23116       retval.size = DW_BLOCK (attr)->size;
23117     }
23118   retval.per_cu = cu->per_cu;
23119
23120   age_cached_comp_units (dwarf2_per_objfile);
23121
23122   return retval;
23123 }
23124
23125 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23126    offset.  */
23127
23128 struct dwarf2_locexpr_baton
23129 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23130                              struct dwarf2_per_cu_data *per_cu,
23131                              CORE_ADDR (*get_frame_pc) (void *baton),
23132                              void *baton)
23133 {
23134   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23135
23136   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23137 }
23138
23139 /* Write a constant of a given type as target-ordered bytes into
23140    OBSTACK.  */
23141
23142 static const gdb_byte *
23143 write_constant_as_bytes (struct obstack *obstack,
23144                          enum bfd_endian byte_order,
23145                          struct type *type,
23146                          ULONGEST value,
23147                          LONGEST *len)
23148 {
23149   gdb_byte *result;
23150
23151   *len = TYPE_LENGTH (type);
23152   result = (gdb_byte *) obstack_alloc (obstack, *len);
23153   store_unsigned_integer (result, *len, byte_order, value);
23154
23155   return result;
23156 }
23157
23158 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23159    pointer to the constant bytes and set LEN to the length of the
23160    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23161    does not have a DW_AT_const_value, return NULL.  */
23162
23163 const gdb_byte *
23164 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23165                              struct dwarf2_per_cu_data *per_cu,
23166                              struct obstack *obstack,
23167                              LONGEST *len)
23168 {
23169   struct dwarf2_cu *cu;
23170   struct die_info *die;
23171   struct attribute *attr;
23172   const gdb_byte *result = NULL;
23173   struct type *type;
23174   LONGEST value;
23175   enum bfd_endian byte_order;
23176   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23177
23178   if (per_cu->cu == NULL)
23179     load_cu (per_cu, false);
23180   cu = per_cu->cu;
23181   if (cu == NULL)
23182     {
23183       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23184          Instead just throw an error, not much else we can do.  */
23185       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23186              sect_offset_str (sect_off), objfile_name (objfile));
23187     }
23188
23189   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23190   if (!die)
23191     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23192            sect_offset_str (sect_off), objfile_name (objfile));
23193
23194   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23195   if (attr == NULL)
23196     return NULL;
23197
23198   byte_order = (bfd_big_endian (objfile->obfd)
23199                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23200
23201   switch (attr->form)
23202     {
23203     case DW_FORM_addr:
23204     case DW_FORM_GNU_addr_index:
23205       {
23206         gdb_byte *tem;
23207
23208         *len = cu->header.addr_size;
23209         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23210         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23211         result = tem;
23212       }
23213       break;
23214     case DW_FORM_string:
23215     case DW_FORM_strp:
23216     case DW_FORM_GNU_str_index:
23217     case DW_FORM_GNU_strp_alt:
23218       /* DW_STRING is already allocated on the objfile obstack, point
23219          directly to it.  */
23220       result = (const gdb_byte *) DW_STRING (attr);
23221       *len = strlen (DW_STRING (attr));
23222       break;
23223     case DW_FORM_block1:
23224     case DW_FORM_block2:
23225     case DW_FORM_block4:
23226     case DW_FORM_block:
23227     case DW_FORM_exprloc:
23228     case DW_FORM_data16:
23229       result = DW_BLOCK (attr)->data;
23230       *len = DW_BLOCK (attr)->size;
23231       break;
23232
23233       /* The DW_AT_const_value attributes are supposed to carry the
23234          symbol's value "represented as it would be on the target
23235          architecture."  By the time we get here, it's already been
23236          converted to host endianness, so we just need to sign- or
23237          zero-extend it as appropriate.  */
23238     case DW_FORM_data1:
23239       type = die_type (die, cu);
23240       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23241       if (result == NULL)
23242         result = write_constant_as_bytes (obstack, byte_order,
23243                                           type, value, len);
23244       break;
23245     case DW_FORM_data2:
23246       type = die_type (die, cu);
23247       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23248       if (result == NULL)
23249         result = write_constant_as_bytes (obstack, byte_order,
23250                                           type, value, len);
23251       break;
23252     case DW_FORM_data4:
23253       type = die_type (die, cu);
23254       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23255       if (result == NULL)
23256         result = write_constant_as_bytes (obstack, byte_order,
23257                                           type, value, len);
23258       break;
23259     case DW_FORM_data8:
23260       type = die_type (die, cu);
23261       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23262       if (result == NULL)
23263         result = write_constant_as_bytes (obstack, byte_order,
23264                                           type, value, len);
23265       break;
23266
23267     case DW_FORM_sdata:
23268     case DW_FORM_implicit_const:
23269       type = die_type (die, cu);
23270       result = write_constant_as_bytes (obstack, byte_order,
23271                                         type, DW_SND (attr), len);
23272       break;
23273
23274     case DW_FORM_udata:
23275       type = die_type (die, cu);
23276       result = write_constant_as_bytes (obstack, byte_order,
23277                                         type, DW_UNSND (attr), len);
23278       break;
23279
23280     default:
23281       complaint (_("unsupported const value attribute form: '%s'"),
23282                  dwarf_form_name (attr->form));
23283       break;
23284     }
23285
23286   return result;
23287 }
23288
23289 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23290    valid type for this die is found.  */
23291
23292 struct type *
23293 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23294                                 struct dwarf2_per_cu_data *per_cu)
23295 {
23296   struct dwarf2_cu *cu;
23297   struct die_info *die;
23298
23299   if (per_cu->cu == NULL)
23300     load_cu (per_cu, false);
23301   cu = per_cu->cu;
23302   if (!cu)
23303     return NULL;
23304
23305   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23306   if (!die)
23307     return NULL;
23308
23309   return die_type (die, cu);
23310 }
23311
23312 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23313    PER_CU.  */
23314
23315 struct type *
23316 dwarf2_get_die_type (cu_offset die_offset,
23317                      struct dwarf2_per_cu_data *per_cu)
23318 {
23319   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23320   return get_die_type_at_offset (die_offset_sect, per_cu);
23321 }
23322
23323 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23324    On entry *REF_CU is the CU of SRC_DIE.
23325    On exit *REF_CU is the CU of the result.
23326    Returns NULL if the referenced DIE isn't found.  */
23327
23328 static struct die_info *
23329 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23330                   struct dwarf2_cu **ref_cu)
23331 {
23332   struct die_info temp_die;
23333   struct dwarf2_cu *sig_cu;
23334   struct die_info *die;
23335
23336   /* While it might be nice to assert sig_type->type == NULL here,
23337      we can get here for DW_AT_imported_declaration where we need
23338      the DIE not the type.  */
23339
23340   /* If necessary, add it to the queue and load its DIEs.  */
23341
23342   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23343     read_signatured_type (sig_type);
23344
23345   sig_cu = sig_type->per_cu.cu;
23346   gdb_assert (sig_cu != NULL);
23347   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23348   temp_die.sect_off = sig_type->type_offset_in_section;
23349   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23350                                                  to_underlying (temp_die.sect_off));
23351   if (die)
23352     {
23353       struct dwarf2_per_objfile *dwarf2_per_objfile
23354         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23355
23356       /* For .gdb_index version 7 keep track of included TUs.
23357          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23358       if (dwarf2_per_objfile->index_table != NULL
23359           && dwarf2_per_objfile->index_table->version <= 7)
23360         {
23361           VEC_safe_push (dwarf2_per_cu_ptr,
23362                          (*ref_cu)->per_cu->imported_symtabs,
23363                          sig_cu->per_cu);
23364         }
23365
23366       *ref_cu = sig_cu;
23367       return die;
23368     }
23369
23370   return NULL;
23371 }
23372
23373 /* Follow signatured type referenced by ATTR in SRC_DIE.
23374    On entry *REF_CU is the CU of SRC_DIE.
23375    On exit *REF_CU is the CU of the result.
23376    The result is the DIE of the type.
23377    If the referenced type cannot be found an error is thrown.  */
23378
23379 static struct die_info *
23380 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23381                 struct dwarf2_cu **ref_cu)
23382 {
23383   ULONGEST signature = DW_SIGNATURE (attr);
23384   struct signatured_type *sig_type;
23385   struct die_info *die;
23386
23387   gdb_assert (attr->form == DW_FORM_ref_sig8);
23388
23389   sig_type = lookup_signatured_type (*ref_cu, signature);
23390   /* sig_type will be NULL if the signatured type is missing from
23391      the debug info.  */
23392   if (sig_type == NULL)
23393     {
23394       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23395                " from DIE at %s [in module %s]"),
23396              hex_string (signature), sect_offset_str (src_die->sect_off),
23397              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23398     }
23399
23400   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23401   if (die == NULL)
23402     {
23403       dump_die_for_error (src_die);
23404       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23405                " from DIE at %s [in module %s]"),
23406              hex_string (signature), sect_offset_str (src_die->sect_off),
23407              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23408     }
23409
23410   return die;
23411 }
23412
23413 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23414    reading in and processing the type unit if necessary.  */
23415
23416 static struct type *
23417 get_signatured_type (struct die_info *die, ULONGEST signature,
23418                      struct dwarf2_cu *cu)
23419 {
23420   struct dwarf2_per_objfile *dwarf2_per_objfile
23421     = cu->per_cu->dwarf2_per_objfile;
23422   struct signatured_type *sig_type;
23423   struct dwarf2_cu *type_cu;
23424   struct die_info *type_die;
23425   struct type *type;
23426
23427   sig_type = lookup_signatured_type (cu, signature);
23428   /* sig_type will be NULL if the signatured type is missing from
23429      the debug info.  */
23430   if (sig_type == NULL)
23431     {
23432       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23433                    " from DIE at %s [in module %s]"),
23434                  hex_string (signature), sect_offset_str (die->sect_off),
23435                  objfile_name (dwarf2_per_objfile->objfile));
23436       return build_error_marker_type (cu, die);
23437     }
23438
23439   /* If we already know the type we're done.  */
23440   if (sig_type->type != NULL)
23441     return sig_type->type;
23442
23443   type_cu = cu;
23444   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23445   if (type_die != NULL)
23446     {
23447       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23448          is created.  This is important, for example, because for c++ classes
23449          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23450       type = read_type_die (type_die, type_cu);
23451       if (type == NULL)
23452         {
23453           complaint (_("Dwarf Error: Cannot build signatured type %s"
23454                        " referenced from DIE at %s [in module %s]"),
23455                      hex_string (signature), sect_offset_str (die->sect_off),
23456                      objfile_name (dwarf2_per_objfile->objfile));
23457           type = build_error_marker_type (cu, die);
23458         }
23459     }
23460   else
23461     {
23462       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23463                    " from DIE at %s [in module %s]"),
23464                  hex_string (signature), sect_offset_str (die->sect_off),
23465                  objfile_name (dwarf2_per_objfile->objfile));
23466       type = build_error_marker_type (cu, die);
23467     }
23468   sig_type->type = type;
23469
23470   return type;
23471 }
23472
23473 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23474    reading in and processing the type unit if necessary.  */
23475
23476 static struct type *
23477 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23478                           struct dwarf2_cu *cu) /* ARI: editCase function */
23479 {
23480   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23481   if (attr_form_is_ref (attr))
23482     {
23483       struct dwarf2_cu *type_cu = cu;
23484       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23485
23486       return read_type_die (type_die, type_cu);
23487     }
23488   else if (attr->form == DW_FORM_ref_sig8)
23489     {
23490       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23491     }
23492   else
23493     {
23494       struct dwarf2_per_objfile *dwarf2_per_objfile
23495         = cu->per_cu->dwarf2_per_objfile;
23496
23497       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23498                    " at %s [in module %s]"),
23499                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23500                  objfile_name (dwarf2_per_objfile->objfile));
23501       return build_error_marker_type (cu, die);
23502     }
23503 }
23504
23505 /* Load the DIEs associated with type unit PER_CU into memory.  */
23506
23507 static void
23508 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23509 {
23510   struct signatured_type *sig_type;
23511
23512   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23513   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23514
23515   /* We have the per_cu, but we need the signatured_type.
23516      Fortunately this is an easy translation.  */
23517   gdb_assert (per_cu->is_debug_types);
23518   sig_type = (struct signatured_type *) per_cu;
23519
23520   gdb_assert (per_cu->cu == NULL);
23521
23522   read_signatured_type (sig_type);
23523
23524   gdb_assert (per_cu->cu != NULL);
23525 }
23526
23527 /* die_reader_func for read_signatured_type.
23528    This is identical to load_full_comp_unit_reader,
23529    but is kept separate for now.  */
23530
23531 static void
23532 read_signatured_type_reader (const struct die_reader_specs *reader,
23533                              const gdb_byte *info_ptr,
23534                              struct die_info *comp_unit_die,
23535                              int has_children,
23536                              void *data)
23537 {
23538   struct dwarf2_cu *cu = reader->cu;
23539
23540   gdb_assert (cu->die_hash == NULL);
23541   cu->die_hash =
23542     htab_create_alloc_ex (cu->header.length / 12,
23543                           die_hash,
23544                           die_eq,
23545                           NULL,
23546                           &cu->comp_unit_obstack,
23547                           hashtab_obstack_allocate,
23548                           dummy_obstack_deallocate);
23549
23550   if (has_children)
23551     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23552                                                   &info_ptr, comp_unit_die);
23553   cu->dies = comp_unit_die;
23554   /* comp_unit_die is not stored in die_hash, no need.  */
23555
23556   /* We try not to read any attributes in this function, because not
23557      all CUs needed for references have been loaded yet, and symbol
23558      table processing isn't initialized.  But we have to set the CU language,
23559      or we won't be able to build types correctly.
23560      Similarly, if we do not read the producer, we can not apply
23561      producer-specific interpretation.  */
23562   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23563 }
23564
23565 /* Read in a signatured type and build its CU and DIEs.
23566    If the type is a stub for the real type in a DWO file,
23567    read in the real type from the DWO file as well.  */
23568
23569 static void
23570 read_signatured_type (struct signatured_type *sig_type)
23571 {
23572   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23573
23574   gdb_assert (per_cu->is_debug_types);
23575   gdb_assert (per_cu->cu == NULL);
23576
23577   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23578                            read_signatured_type_reader, NULL);
23579   sig_type->per_cu.tu_read = 1;
23580 }
23581
23582 /* Decode simple location descriptions.
23583    Given a pointer to a dwarf block that defines a location, compute
23584    the location and return the value.
23585
23586    NOTE drow/2003-11-18: This function is called in two situations
23587    now: for the address of static or global variables (partial symbols
23588    only) and for offsets into structures which are expected to be
23589    (more or less) constant.  The partial symbol case should go away,
23590    and only the constant case should remain.  That will let this
23591    function complain more accurately.  A few special modes are allowed
23592    without complaint for global variables (for instance, global
23593    register values and thread-local values).
23594
23595    A location description containing no operations indicates that the
23596    object is optimized out.  The return value is 0 for that case.
23597    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23598    callers will only want a very basic result and this can become a
23599    complaint.
23600
23601    Note that stack[0] is unused except as a default error return.  */
23602
23603 static CORE_ADDR
23604 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23605 {
23606   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23607   size_t i;
23608   size_t size = blk->size;
23609   const gdb_byte *data = blk->data;
23610   CORE_ADDR stack[64];
23611   int stacki;
23612   unsigned int bytes_read, unsnd;
23613   gdb_byte op;
23614
23615   i = 0;
23616   stacki = 0;
23617   stack[stacki] = 0;
23618   stack[++stacki] = 0;
23619
23620   while (i < size)
23621     {
23622       op = data[i++];
23623       switch (op)
23624         {
23625         case DW_OP_lit0:
23626         case DW_OP_lit1:
23627         case DW_OP_lit2:
23628         case DW_OP_lit3:
23629         case DW_OP_lit4:
23630         case DW_OP_lit5:
23631         case DW_OP_lit6:
23632         case DW_OP_lit7:
23633         case DW_OP_lit8:
23634         case DW_OP_lit9:
23635         case DW_OP_lit10:
23636         case DW_OP_lit11:
23637         case DW_OP_lit12:
23638         case DW_OP_lit13:
23639         case DW_OP_lit14:
23640         case DW_OP_lit15:
23641         case DW_OP_lit16:
23642         case DW_OP_lit17:
23643         case DW_OP_lit18:
23644         case DW_OP_lit19:
23645         case DW_OP_lit20:
23646         case DW_OP_lit21:
23647         case DW_OP_lit22:
23648         case DW_OP_lit23:
23649         case DW_OP_lit24:
23650         case DW_OP_lit25:
23651         case DW_OP_lit26:
23652         case DW_OP_lit27:
23653         case DW_OP_lit28:
23654         case DW_OP_lit29:
23655         case DW_OP_lit30:
23656         case DW_OP_lit31:
23657           stack[++stacki] = op - DW_OP_lit0;
23658           break;
23659
23660         case DW_OP_reg0:
23661         case DW_OP_reg1:
23662         case DW_OP_reg2:
23663         case DW_OP_reg3:
23664         case DW_OP_reg4:
23665         case DW_OP_reg5:
23666         case DW_OP_reg6:
23667         case DW_OP_reg7:
23668         case DW_OP_reg8:
23669         case DW_OP_reg9:
23670         case DW_OP_reg10:
23671         case DW_OP_reg11:
23672         case DW_OP_reg12:
23673         case DW_OP_reg13:
23674         case DW_OP_reg14:
23675         case DW_OP_reg15:
23676         case DW_OP_reg16:
23677         case DW_OP_reg17:
23678         case DW_OP_reg18:
23679         case DW_OP_reg19:
23680         case DW_OP_reg20:
23681         case DW_OP_reg21:
23682         case DW_OP_reg22:
23683         case DW_OP_reg23:
23684         case DW_OP_reg24:
23685         case DW_OP_reg25:
23686         case DW_OP_reg26:
23687         case DW_OP_reg27:
23688         case DW_OP_reg28:
23689         case DW_OP_reg29:
23690         case DW_OP_reg30:
23691         case DW_OP_reg31:
23692           stack[++stacki] = op - DW_OP_reg0;
23693           if (i < size)
23694             dwarf2_complex_location_expr_complaint ();
23695           break;
23696
23697         case DW_OP_regx:
23698           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23699           i += bytes_read;
23700           stack[++stacki] = unsnd;
23701           if (i < size)
23702             dwarf2_complex_location_expr_complaint ();
23703           break;
23704
23705         case DW_OP_addr:
23706           stack[++stacki] = read_address (objfile->obfd, &data[i],
23707                                           cu, &bytes_read);
23708           i += bytes_read;
23709           break;
23710
23711         case DW_OP_const1u:
23712           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23713           i += 1;
23714           break;
23715
23716         case DW_OP_const1s:
23717           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23718           i += 1;
23719           break;
23720
23721         case DW_OP_const2u:
23722           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23723           i += 2;
23724           break;
23725
23726         case DW_OP_const2s:
23727           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23728           i += 2;
23729           break;
23730
23731         case DW_OP_const4u:
23732           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23733           i += 4;
23734           break;
23735
23736         case DW_OP_const4s:
23737           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23738           i += 4;
23739           break;
23740
23741         case DW_OP_const8u:
23742           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23743           i += 8;
23744           break;
23745
23746         case DW_OP_constu:
23747           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23748                                                   &bytes_read);
23749           i += bytes_read;
23750           break;
23751
23752         case DW_OP_consts:
23753           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23754           i += bytes_read;
23755           break;
23756
23757         case DW_OP_dup:
23758           stack[stacki + 1] = stack[stacki];
23759           stacki++;
23760           break;
23761
23762         case DW_OP_plus:
23763           stack[stacki - 1] += stack[stacki];
23764           stacki--;
23765           break;
23766
23767         case DW_OP_plus_uconst:
23768           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23769                                                  &bytes_read);
23770           i += bytes_read;
23771           break;
23772
23773         case DW_OP_minus:
23774           stack[stacki - 1] -= stack[stacki];
23775           stacki--;
23776           break;
23777
23778         case DW_OP_deref:
23779           /* If we're not the last op, then we definitely can't encode
23780              this using GDB's address_class enum.  This is valid for partial
23781              global symbols, although the variable's address will be bogus
23782              in the psymtab.  */
23783           if (i < size)
23784             dwarf2_complex_location_expr_complaint ();
23785           break;
23786
23787         case DW_OP_GNU_push_tls_address:
23788         case DW_OP_form_tls_address:
23789           /* The top of the stack has the offset from the beginning
23790              of the thread control block at which the variable is located.  */
23791           /* Nothing should follow this operator, so the top of stack would
23792              be returned.  */
23793           /* This is valid for partial global symbols, but the variable's
23794              address will be bogus in the psymtab.  Make it always at least
23795              non-zero to not look as a variable garbage collected by linker
23796              which have DW_OP_addr 0.  */
23797           if (i < size)
23798             dwarf2_complex_location_expr_complaint ();
23799           stack[stacki]++;
23800           break;
23801
23802         case DW_OP_GNU_uninit:
23803           break;
23804
23805         case DW_OP_GNU_addr_index:
23806         case DW_OP_GNU_const_index:
23807           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23808                                                          &bytes_read);
23809           i += bytes_read;
23810           break;
23811
23812         default:
23813           {
23814             const char *name = get_DW_OP_name (op);
23815
23816             if (name)
23817               complaint (_("unsupported stack op: '%s'"),
23818                          name);
23819             else
23820               complaint (_("unsupported stack op: '%02x'"),
23821                          op);
23822           }
23823
23824           return (stack[stacki]);
23825         }
23826
23827       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23828          outside of the allocated space.  Also enforce minimum>0.  */
23829       if (stacki >= ARRAY_SIZE (stack) - 1)
23830         {
23831           complaint (_("location description stack overflow"));
23832           return 0;
23833         }
23834
23835       if (stacki <= 0)
23836         {
23837           complaint (_("location description stack underflow"));
23838           return 0;
23839         }
23840     }
23841   return (stack[stacki]);
23842 }
23843
23844 /* memory allocation interface */
23845
23846 static struct dwarf_block *
23847 dwarf_alloc_block (struct dwarf2_cu *cu)
23848 {
23849   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23850 }
23851
23852 static struct die_info *
23853 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23854 {
23855   struct die_info *die;
23856   size_t size = sizeof (struct die_info);
23857
23858   if (num_attrs > 1)
23859     size += (num_attrs - 1) * sizeof (struct attribute);
23860
23861   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23862   memset (die, 0, sizeof (struct die_info));
23863   return (die);
23864 }
23865
23866 \f
23867 /* Macro support.  */
23868
23869 /* Return file name relative to the compilation directory of file number I in
23870    *LH's file name table.  The result is allocated using xmalloc; the caller is
23871    responsible for freeing it.  */
23872
23873 static char *
23874 file_file_name (int file, struct line_header *lh)
23875 {
23876   /* Is the file number a valid index into the line header's file name
23877      table?  Remember that file numbers start with one, not zero.  */
23878   if (1 <= file && file <= lh->file_names.size ())
23879     {
23880       const file_entry &fe = lh->file_names[file - 1];
23881
23882       if (!IS_ABSOLUTE_PATH (fe.name))
23883         {
23884           const char *dir = fe.include_dir (lh);
23885           if (dir != NULL)
23886             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23887         }
23888       return xstrdup (fe.name);
23889     }
23890   else
23891     {
23892       /* The compiler produced a bogus file number.  We can at least
23893          record the macro definitions made in the file, even if we
23894          won't be able to find the file by name.  */
23895       char fake_name[80];
23896
23897       xsnprintf (fake_name, sizeof (fake_name),
23898                  "<bad macro file number %d>", file);
23899
23900       complaint (_("bad file number in macro information (%d)"),
23901                  file);
23902
23903       return xstrdup (fake_name);
23904     }
23905 }
23906
23907 /* Return the full name of file number I in *LH's file name table.
23908    Use COMP_DIR as the name of the current directory of the
23909    compilation.  The result is allocated using xmalloc; the caller is
23910    responsible for freeing it.  */
23911 static char *
23912 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23913 {
23914   /* Is the file number a valid index into the line header's file name
23915      table?  Remember that file numbers start with one, not zero.  */
23916   if (1 <= file && file <= lh->file_names.size ())
23917     {
23918       char *relative = file_file_name (file, lh);
23919
23920       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23921         return relative;
23922       return reconcat (relative, comp_dir, SLASH_STRING,
23923                        relative, (char *) NULL);
23924     }
23925   else
23926     return file_file_name (file, lh);
23927 }
23928
23929
23930 static struct macro_source_file *
23931 macro_start_file (struct dwarf2_cu *cu,
23932                   int file, int line,
23933                   struct macro_source_file *current_file,
23934                   struct line_header *lh)
23935 {
23936   /* File name relative to the compilation directory of this source file.  */
23937   char *file_name = file_file_name (file, lh);
23938
23939   if (! current_file)
23940     {
23941       /* Note: We don't create a macro table for this compilation unit
23942          at all until we actually get a filename.  */
23943       struct macro_table *macro_table = cu->builder->get_macro_table ();
23944
23945       /* If we have no current file, then this must be the start_file
23946          directive for the compilation unit's main source file.  */
23947       current_file = macro_set_main (macro_table, file_name);
23948       macro_define_special (macro_table);
23949     }
23950   else
23951     current_file = macro_include (current_file, line, file_name);
23952
23953   xfree (file_name);
23954
23955   return current_file;
23956 }
23957
23958 static const char *
23959 consume_improper_spaces (const char *p, const char *body)
23960 {
23961   if (*p == ' ')
23962     {
23963       complaint (_("macro definition contains spaces "
23964                    "in formal argument list:\n`%s'"),
23965                  body);
23966
23967       while (*p == ' ')
23968         p++;
23969     }
23970
23971   return p;
23972 }
23973
23974
23975 static void
23976 parse_macro_definition (struct macro_source_file *file, int line,
23977                         const char *body)
23978 {
23979   const char *p;
23980
23981   /* The body string takes one of two forms.  For object-like macro
23982      definitions, it should be:
23983
23984         <macro name> " " <definition>
23985
23986      For function-like macro definitions, it should be:
23987
23988         <macro name> "() " <definition>
23989      or
23990         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23991
23992      Spaces may appear only where explicitly indicated, and in the
23993      <definition>.
23994
23995      The Dwarf 2 spec says that an object-like macro's name is always
23996      followed by a space, but versions of GCC around March 2002 omit
23997      the space when the macro's definition is the empty string.
23998
23999      The Dwarf 2 spec says that there should be no spaces between the
24000      formal arguments in a function-like macro's formal argument list,
24001      but versions of GCC around March 2002 include spaces after the
24002      commas.  */
24003
24004
24005   /* Find the extent of the macro name.  The macro name is terminated
24006      by either a space or null character (for an object-like macro) or
24007      an opening paren (for a function-like macro).  */
24008   for (p = body; *p; p++)
24009     if (*p == ' ' || *p == '(')
24010       break;
24011
24012   if (*p == ' ' || *p == '\0')
24013     {
24014       /* It's an object-like macro.  */
24015       int name_len = p - body;
24016       char *name = savestring (body, name_len);
24017       const char *replacement;
24018
24019       if (*p == ' ')
24020         replacement = body + name_len + 1;
24021       else
24022         {
24023           dwarf2_macro_malformed_definition_complaint (body);
24024           replacement = body + name_len;
24025         }
24026
24027       macro_define_object (file, line, name, replacement);
24028
24029       xfree (name);
24030     }
24031   else if (*p == '(')
24032     {
24033       /* It's a function-like macro.  */
24034       char *name = savestring (body, p - body);
24035       int argc = 0;
24036       int argv_size = 1;
24037       char **argv = XNEWVEC (char *, argv_size);
24038
24039       p++;
24040
24041       p = consume_improper_spaces (p, body);
24042
24043       /* Parse the formal argument list.  */
24044       while (*p && *p != ')')
24045         {
24046           /* Find the extent of the current argument name.  */
24047           const char *arg_start = p;
24048
24049           while (*p && *p != ',' && *p != ')' && *p != ' ')
24050             p++;
24051
24052           if (! *p || p == arg_start)
24053             dwarf2_macro_malformed_definition_complaint (body);
24054           else
24055             {
24056               /* Make sure argv has room for the new argument.  */
24057               if (argc >= argv_size)
24058                 {
24059                   argv_size *= 2;
24060                   argv = XRESIZEVEC (char *, argv, argv_size);
24061                 }
24062
24063               argv[argc++] = savestring (arg_start, p - arg_start);
24064             }
24065
24066           p = consume_improper_spaces (p, body);
24067
24068           /* Consume the comma, if present.  */
24069           if (*p == ',')
24070             {
24071               p++;
24072
24073               p = consume_improper_spaces (p, body);
24074             }
24075         }
24076
24077       if (*p == ')')
24078         {
24079           p++;
24080
24081           if (*p == ' ')
24082             /* Perfectly formed definition, no complaints.  */
24083             macro_define_function (file, line, name,
24084                                    argc, (const char **) argv,
24085                                    p + 1);
24086           else if (*p == '\0')
24087             {
24088               /* Complain, but do define it.  */
24089               dwarf2_macro_malformed_definition_complaint (body);
24090               macro_define_function (file, line, name,
24091                                      argc, (const char **) argv,
24092                                      p);
24093             }
24094           else
24095             /* Just complain.  */
24096             dwarf2_macro_malformed_definition_complaint (body);
24097         }
24098       else
24099         /* Just complain.  */
24100         dwarf2_macro_malformed_definition_complaint (body);
24101
24102       xfree (name);
24103       {
24104         int i;
24105
24106         for (i = 0; i < argc; i++)
24107           xfree (argv[i]);
24108       }
24109       xfree (argv);
24110     }
24111   else
24112     dwarf2_macro_malformed_definition_complaint (body);
24113 }
24114
24115 /* Skip some bytes from BYTES according to the form given in FORM.
24116    Returns the new pointer.  */
24117
24118 static const gdb_byte *
24119 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24120                  enum dwarf_form form,
24121                  unsigned int offset_size,
24122                  struct dwarf2_section_info *section)
24123 {
24124   unsigned int bytes_read;
24125
24126   switch (form)
24127     {
24128     case DW_FORM_data1:
24129     case DW_FORM_flag:
24130       ++bytes;
24131       break;
24132
24133     case DW_FORM_data2:
24134       bytes += 2;
24135       break;
24136
24137     case DW_FORM_data4:
24138       bytes += 4;
24139       break;
24140
24141     case DW_FORM_data8:
24142       bytes += 8;
24143       break;
24144
24145     case DW_FORM_data16:
24146       bytes += 16;
24147       break;
24148
24149     case DW_FORM_string:
24150       read_direct_string (abfd, bytes, &bytes_read);
24151       bytes += bytes_read;
24152       break;
24153
24154     case DW_FORM_sec_offset:
24155     case DW_FORM_strp:
24156     case DW_FORM_GNU_strp_alt:
24157       bytes += offset_size;
24158       break;
24159
24160     case DW_FORM_block:
24161       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24162       bytes += bytes_read;
24163       break;
24164
24165     case DW_FORM_block1:
24166       bytes += 1 + read_1_byte (abfd, bytes);
24167       break;
24168     case DW_FORM_block2:
24169       bytes += 2 + read_2_bytes (abfd, bytes);
24170       break;
24171     case DW_FORM_block4:
24172       bytes += 4 + read_4_bytes (abfd, bytes);
24173       break;
24174
24175     case DW_FORM_sdata:
24176     case DW_FORM_udata:
24177     case DW_FORM_GNU_addr_index:
24178     case DW_FORM_GNU_str_index:
24179       bytes = gdb_skip_leb128 (bytes, buffer_end);
24180       if (bytes == NULL)
24181         {
24182           dwarf2_section_buffer_overflow_complaint (section);
24183           return NULL;
24184         }
24185       break;
24186
24187     case DW_FORM_implicit_const:
24188       break;
24189
24190     default:
24191       {
24192         complaint (_("invalid form 0x%x in `%s'"),
24193                    form, get_section_name (section));
24194         return NULL;
24195       }
24196     }
24197
24198   return bytes;
24199 }
24200
24201 /* A helper for dwarf_decode_macros that handles skipping an unknown
24202    opcode.  Returns an updated pointer to the macro data buffer; or,
24203    on error, issues a complaint and returns NULL.  */
24204
24205 static const gdb_byte *
24206 skip_unknown_opcode (unsigned int opcode,
24207                      const gdb_byte **opcode_definitions,
24208                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24209                      bfd *abfd,
24210                      unsigned int offset_size,
24211                      struct dwarf2_section_info *section)
24212 {
24213   unsigned int bytes_read, i;
24214   unsigned long arg;
24215   const gdb_byte *defn;
24216
24217   if (opcode_definitions[opcode] == NULL)
24218     {
24219       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24220                  opcode);
24221       return NULL;
24222     }
24223
24224   defn = opcode_definitions[opcode];
24225   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24226   defn += bytes_read;
24227
24228   for (i = 0; i < arg; ++i)
24229     {
24230       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24231                                  (enum dwarf_form) defn[i], offset_size,
24232                                  section);
24233       if (mac_ptr == NULL)
24234         {
24235           /* skip_form_bytes already issued the complaint.  */
24236           return NULL;
24237         }
24238     }
24239
24240   return mac_ptr;
24241 }
24242
24243 /* A helper function which parses the header of a macro section.
24244    If the macro section is the extended (for now called "GNU") type,
24245    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24246    the header, or issues a complaint and returns NULL on error.  */
24247
24248 static const gdb_byte *
24249 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24250                           bfd *abfd,
24251                           const gdb_byte *mac_ptr,
24252                           unsigned int *offset_size,
24253                           int section_is_gnu)
24254 {
24255   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24256
24257   if (section_is_gnu)
24258     {
24259       unsigned int version, flags;
24260
24261       version = read_2_bytes (abfd, mac_ptr);
24262       if (version != 4 && version != 5)
24263         {
24264           complaint (_("unrecognized version `%d' in .debug_macro section"),
24265                      version);
24266           return NULL;
24267         }
24268       mac_ptr += 2;
24269
24270       flags = read_1_byte (abfd, mac_ptr);
24271       ++mac_ptr;
24272       *offset_size = (flags & 1) ? 8 : 4;
24273
24274       if ((flags & 2) != 0)
24275         /* We don't need the line table offset.  */
24276         mac_ptr += *offset_size;
24277
24278       /* Vendor opcode descriptions.  */
24279       if ((flags & 4) != 0)
24280         {
24281           unsigned int i, count;
24282
24283           count = read_1_byte (abfd, mac_ptr);
24284           ++mac_ptr;
24285           for (i = 0; i < count; ++i)
24286             {
24287               unsigned int opcode, bytes_read;
24288               unsigned long arg;
24289
24290               opcode = read_1_byte (abfd, mac_ptr);
24291               ++mac_ptr;
24292               opcode_definitions[opcode] = mac_ptr;
24293               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24294               mac_ptr += bytes_read;
24295               mac_ptr += arg;
24296             }
24297         }
24298     }
24299
24300   return mac_ptr;
24301 }
24302
24303 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24304    including DW_MACRO_import.  */
24305
24306 static void
24307 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24308                           bfd *abfd,
24309                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24310                           struct macro_source_file *current_file,
24311                           struct line_header *lh,
24312                           struct dwarf2_section_info *section,
24313                           int section_is_gnu, int section_is_dwz,
24314                           unsigned int offset_size,
24315                           htab_t include_hash)
24316 {
24317   struct dwarf2_per_objfile *dwarf2_per_objfile
24318     = cu->per_cu->dwarf2_per_objfile;
24319   struct objfile *objfile = dwarf2_per_objfile->objfile;
24320   enum dwarf_macro_record_type macinfo_type;
24321   int at_commandline;
24322   const gdb_byte *opcode_definitions[256];
24323
24324   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24325                                       &offset_size, section_is_gnu);
24326   if (mac_ptr == NULL)
24327     {
24328       /* We already issued a complaint.  */
24329       return;
24330     }
24331
24332   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24333      GDB is still reading the definitions from command line.  First
24334      DW_MACINFO_start_file will need to be ignored as it was already executed
24335      to create CURRENT_FILE for the main source holding also the command line
24336      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24337      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24338
24339   at_commandline = 1;
24340
24341   do
24342     {
24343       /* Do we at least have room for a macinfo type byte?  */
24344       if (mac_ptr >= mac_end)
24345         {
24346           dwarf2_section_buffer_overflow_complaint (section);
24347           break;
24348         }
24349
24350       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24351       mac_ptr++;
24352
24353       /* Note that we rely on the fact that the corresponding GNU and
24354          DWARF constants are the same.  */
24355       DIAGNOSTIC_PUSH
24356       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24357       switch (macinfo_type)
24358         {
24359           /* A zero macinfo type indicates the end of the macro
24360              information.  */
24361         case 0:
24362           break;
24363
24364         case DW_MACRO_define:
24365         case DW_MACRO_undef:
24366         case DW_MACRO_define_strp:
24367         case DW_MACRO_undef_strp:
24368         case DW_MACRO_define_sup:
24369         case DW_MACRO_undef_sup:
24370           {
24371             unsigned int bytes_read;
24372             int line;
24373             const char *body;
24374             int is_define;
24375
24376             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24377             mac_ptr += bytes_read;
24378
24379             if (macinfo_type == DW_MACRO_define
24380                 || macinfo_type == DW_MACRO_undef)
24381               {
24382                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24383                 mac_ptr += bytes_read;
24384               }
24385             else
24386               {
24387                 LONGEST str_offset;
24388
24389                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24390                 mac_ptr += offset_size;
24391
24392                 if (macinfo_type == DW_MACRO_define_sup
24393                     || macinfo_type == DW_MACRO_undef_sup
24394                     || section_is_dwz)
24395                   {
24396                     struct dwz_file *dwz
24397                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24398
24399                     body = read_indirect_string_from_dwz (objfile,
24400                                                           dwz, str_offset);
24401                   }
24402                 else
24403                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24404                                                          abfd, str_offset);
24405               }
24406
24407             is_define = (macinfo_type == DW_MACRO_define
24408                          || macinfo_type == DW_MACRO_define_strp
24409                          || macinfo_type == DW_MACRO_define_sup);
24410             if (! current_file)
24411               {
24412                 /* DWARF violation as no main source is present.  */
24413                 complaint (_("debug info with no main source gives macro %s "
24414                              "on line %d: %s"),
24415                            is_define ? _("definition") : _("undefinition"),
24416                            line, body);
24417                 break;
24418               }
24419             if ((line == 0 && !at_commandline)
24420                 || (line != 0 && at_commandline))
24421               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24422                          at_commandline ? _("command-line") : _("in-file"),
24423                          is_define ? _("definition") : _("undefinition"),
24424                          line == 0 ? _("zero") : _("non-zero"), line, body);
24425
24426             if (is_define)
24427               parse_macro_definition (current_file, line, body);
24428             else
24429               {
24430                 gdb_assert (macinfo_type == DW_MACRO_undef
24431                             || macinfo_type == DW_MACRO_undef_strp
24432                             || macinfo_type == DW_MACRO_undef_sup);
24433                 macro_undef (current_file, line, body);
24434               }
24435           }
24436           break;
24437
24438         case DW_MACRO_start_file:
24439           {
24440             unsigned int bytes_read;
24441             int line, file;
24442
24443             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24444             mac_ptr += bytes_read;
24445             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24446             mac_ptr += bytes_read;
24447
24448             if ((line == 0 && !at_commandline)
24449                 || (line != 0 && at_commandline))
24450               complaint (_("debug info gives source %d included "
24451                            "from %s at %s line %d"),
24452                          file, at_commandline ? _("command-line") : _("file"),
24453                          line == 0 ? _("zero") : _("non-zero"), line);
24454
24455             if (at_commandline)
24456               {
24457                 /* This DW_MACRO_start_file was executed in the
24458                    pass one.  */
24459                 at_commandline = 0;
24460               }
24461             else
24462               current_file = macro_start_file (cu, file, line, current_file,
24463                                                lh);
24464           }
24465           break;
24466
24467         case DW_MACRO_end_file:
24468           if (! current_file)
24469             complaint (_("macro debug info has an unmatched "
24470                          "`close_file' directive"));
24471           else
24472             {
24473               current_file = current_file->included_by;
24474               if (! current_file)
24475                 {
24476                   enum dwarf_macro_record_type next_type;
24477
24478                   /* GCC circa March 2002 doesn't produce the zero
24479                      type byte marking the end of the compilation
24480                      unit.  Complain if it's not there, but exit no
24481                      matter what.  */
24482
24483                   /* Do we at least have room for a macinfo type byte?  */
24484                   if (mac_ptr >= mac_end)
24485                     {
24486                       dwarf2_section_buffer_overflow_complaint (section);
24487                       return;
24488                     }
24489
24490                   /* We don't increment mac_ptr here, so this is just
24491                      a look-ahead.  */
24492                   next_type
24493                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24494                                                                   mac_ptr);
24495                   if (next_type != 0)
24496                     complaint (_("no terminating 0-type entry for "
24497                                  "macros in `.debug_macinfo' section"));
24498
24499                   return;
24500                 }
24501             }
24502           break;
24503
24504         case DW_MACRO_import:
24505         case DW_MACRO_import_sup:
24506           {
24507             LONGEST offset;
24508             void **slot;
24509             bfd *include_bfd = abfd;
24510             struct dwarf2_section_info *include_section = section;
24511             const gdb_byte *include_mac_end = mac_end;
24512             int is_dwz = section_is_dwz;
24513             const gdb_byte *new_mac_ptr;
24514
24515             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24516             mac_ptr += offset_size;
24517
24518             if (macinfo_type == DW_MACRO_import_sup)
24519               {
24520                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24521
24522                 dwarf2_read_section (objfile, &dwz->macro);
24523
24524                 include_section = &dwz->macro;
24525                 include_bfd = get_section_bfd_owner (include_section);
24526                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24527                 is_dwz = 1;
24528               }
24529
24530             new_mac_ptr = include_section->buffer + offset;
24531             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24532
24533             if (*slot != NULL)
24534               {
24535                 /* This has actually happened; see
24536                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24537                 complaint (_("recursive DW_MACRO_import in "
24538                              ".debug_macro section"));
24539               }
24540             else
24541               {
24542                 *slot = (void *) new_mac_ptr;
24543
24544                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24545                                           include_mac_end, current_file, lh,
24546                                           section, section_is_gnu, is_dwz,
24547                                           offset_size, include_hash);
24548
24549                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24550               }
24551           }
24552           break;
24553
24554         case DW_MACINFO_vendor_ext:
24555           if (!section_is_gnu)
24556             {
24557               unsigned int bytes_read;
24558
24559               /* This reads the constant, but since we don't recognize
24560                  any vendor extensions, we ignore it.  */
24561               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24562               mac_ptr += bytes_read;
24563               read_direct_string (abfd, mac_ptr, &bytes_read);
24564               mac_ptr += bytes_read;
24565
24566               /* We don't recognize any vendor extensions.  */
24567               break;
24568             }
24569           /* FALLTHROUGH */
24570
24571         default:
24572           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24573                                          mac_ptr, mac_end, abfd, offset_size,
24574                                          section);
24575           if (mac_ptr == NULL)
24576             return;
24577           break;
24578         }
24579       DIAGNOSTIC_POP
24580     } while (macinfo_type != 0);
24581 }
24582
24583 static void
24584 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24585                      int section_is_gnu)
24586 {
24587   struct dwarf2_per_objfile *dwarf2_per_objfile
24588     = cu->per_cu->dwarf2_per_objfile;
24589   struct objfile *objfile = dwarf2_per_objfile->objfile;
24590   struct line_header *lh = cu->line_header;
24591   bfd *abfd;
24592   const gdb_byte *mac_ptr, *mac_end;
24593   struct macro_source_file *current_file = 0;
24594   enum dwarf_macro_record_type macinfo_type;
24595   unsigned int offset_size = cu->header.offset_size;
24596   const gdb_byte *opcode_definitions[256];
24597   void **slot;
24598   struct dwarf2_section_info *section;
24599   const char *section_name;
24600
24601   if (cu->dwo_unit != NULL)
24602     {
24603       if (section_is_gnu)
24604         {
24605           section = &cu->dwo_unit->dwo_file->sections.macro;
24606           section_name = ".debug_macro.dwo";
24607         }
24608       else
24609         {
24610           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24611           section_name = ".debug_macinfo.dwo";
24612         }
24613     }
24614   else
24615     {
24616       if (section_is_gnu)
24617         {
24618           section = &dwarf2_per_objfile->macro;
24619           section_name = ".debug_macro";
24620         }
24621       else
24622         {
24623           section = &dwarf2_per_objfile->macinfo;
24624           section_name = ".debug_macinfo";
24625         }
24626     }
24627
24628   dwarf2_read_section (objfile, section);
24629   if (section->buffer == NULL)
24630     {
24631       complaint (_("missing %s section"), section_name);
24632       return;
24633     }
24634   abfd = get_section_bfd_owner (section);
24635
24636   /* First pass: Find the name of the base filename.
24637      This filename is needed in order to process all macros whose definition
24638      (or undefinition) comes from the command line.  These macros are defined
24639      before the first DW_MACINFO_start_file entry, and yet still need to be
24640      associated to the base file.
24641
24642      To determine the base file name, we scan the macro definitions until we
24643      reach the first DW_MACINFO_start_file entry.  We then initialize
24644      CURRENT_FILE accordingly so that any macro definition found before the
24645      first DW_MACINFO_start_file can still be associated to the base file.  */
24646
24647   mac_ptr = section->buffer + offset;
24648   mac_end = section->buffer + section->size;
24649
24650   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24651                                       &offset_size, section_is_gnu);
24652   if (mac_ptr == NULL)
24653     {
24654       /* We already issued a complaint.  */
24655       return;
24656     }
24657
24658   do
24659     {
24660       /* Do we at least have room for a macinfo type byte?  */
24661       if (mac_ptr >= mac_end)
24662         {
24663           /* Complaint is printed during the second pass as GDB will probably
24664              stop the first pass earlier upon finding
24665              DW_MACINFO_start_file.  */
24666           break;
24667         }
24668
24669       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24670       mac_ptr++;
24671
24672       /* Note that we rely on the fact that the corresponding GNU and
24673          DWARF constants are the same.  */
24674       DIAGNOSTIC_PUSH
24675       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24676       switch (macinfo_type)
24677         {
24678           /* A zero macinfo type indicates the end of the macro
24679              information.  */
24680         case 0:
24681           break;
24682
24683         case DW_MACRO_define:
24684         case DW_MACRO_undef:
24685           /* Only skip the data by MAC_PTR.  */
24686           {
24687             unsigned int bytes_read;
24688
24689             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24690             mac_ptr += bytes_read;
24691             read_direct_string (abfd, mac_ptr, &bytes_read);
24692             mac_ptr += bytes_read;
24693           }
24694           break;
24695
24696         case DW_MACRO_start_file:
24697           {
24698             unsigned int bytes_read;
24699             int line, file;
24700
24701             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24702             mac_ptr += bytes_read;
24703             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24704             mac_ptr += bytes_read;
24705
24706             current_file = macro_start_file (cu, file, line, current_file, lh);
24707           }
24708           break;
24709
24710         case DW_MACRO_end_file:
24711           /* No data to skip by MAC_PTR.  */
24712           break;
24713
24714         case DW_MACRO_define_strp:
24715         case DW_MACRO_undef_strp:
24716         case DW_MACRO_define_sup:
24717         case DW_MACRO_undef_sup:
24718           {
24719             unsigned int bytes_read;
24720
24721             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24722             mac_ptr += bytes_read;
24723             mac_ptr += offset_size;
24724           }
24725           break;
24726
24727         case DW_MACRO_import:
24728         case DW_MACRO_import_sup:
24729           /* Note that, according to the spec, a transparent include
24730              chain cannot call DW_MACRO_start_file.  So, we can just
24731              skip this opcode.  */
24732           mac_ptr += offset_size;
24733           break;
24734
24735         case DW_MACINFO_vendor_ext:
24736           /* Only skip the data by MAC_PTR.  */
24737           if (!section_is_gnu)
24738             {
24739               unsigned int bytes_read;
24740
24741               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24742               mac_ptr += bytes_read;
24743               read_direct_string (abfd, mac_ptr, &bytes_read);
24744               mac_ptr += bytes_read;
24745             }
24746           /* FALLTHROUGH */
24747
24748         default:
24749           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24750                                          mac_ptr, mac_end, abfd, offset_size,
24751                                          section);
24752           if (mac_ptr == NULL)
24753             return;
24754           break;
24755         }
24756       DIAGNOSTIC_POP
24757     } while (macinfo_type != 0 && current_file == NULL);
24758
24759   /* Second pass: Process all entries.
24760
24761      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24762      command-line macro definitions/undefinitions.  This flag is unset when we
24763      reach the first DW_MACINFO_start_file entry.  */
24764
24765   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24766                                            htab_eq_pointer,
24767                                            NULL, xcalloc, xfree));
24768   mac_ptr = section->buffer + offset;
24769   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24770   *slot = (void *) mac_ptr;
24771   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24772                             current_file, lh, section,
24773                             section_is_gnu, 0, offset_size,
24774                             include_hash.get ());
24775 }
24776
24777 /* Check if the attribute's form is a DW_FORM_block*
24778    if so return true else false.  */
24779
24780 static int
24781 attr_form_is_block (const struct attribute *attr)
24782 {
24783   return (attr == NULL ? 0 :
24784       attr->form == DW_FORM_block1
24785       || attr->form == DW_FORM_block2
24786       || attr->form == DW_FORM_block4
24787       || attr->form == DW_FORM_block
24788       || attr->form == DW_FORM_exprloc);
24789 }
24790
24791 /* Return non-zero if ATTR's value is a section offset --- classes
24792    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24793    You may use DW_UNSND (attr) to retrieve such offsets.
24794
24795    Section 7.5.4, "Attribute Encodings", explains that no attribute
24796    may have a value that belongs to more than one of these classes; it
24797    would be ambiguous if we did, because we use the same forms for all
24798    of them.  */
24799
24800 static int
24801 attr_form_is_section_offset (const struct attribute *attr)
24802 {
24803   return (attr->form == DW_FORM_data4
24804           || attr->form == DW_FORM_data8
24805           || attr->form == DW_FORM_sec_offset);
24806 }
24807
24808 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24809    zero otherwise.  When this function returns true, you can apply
24810    dwarf2_get_attr_constant_value to it.
24811
24812    However, note that for some attributes you must check
24813    attr_form_is_section_offset before using this test.  DW_FORM_data4
24814    and DW_FORM_data8 are members of both the constant class, and of
24815    the classes that contain offsets into other debug sections
24816    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24817    that, if an attribute's can be either a constant or one of the
24818    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24819    taken as section offsets, not constants.
24820
24821    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24822    cannot handle that.  */
24823
24824 static int
24825 attr_form_is_constant (const struct attribute *attr)
24826 {
24827   switch (attr->form)
24828     {
24829     case DW_FORM_sdata:
24830     case DW_FORM_udata:
24831     case DW_FORM_data1:
24832     case DW_FORM_data2:
24833     case DW_FORM_data4:
24834     case DW_FORM_data8:
24835     case DW_FORM_implicit_const:
24836       return 1;
24837     default:
24838       return 0;
24839     }
24840 }
24841
24842
24843 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24844    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24845
24846 static int
24847 attr_form_is_ref (const struct attribute *attr)
24848 {
24849   switch (attr->form)
24850     {
24851     case DW_FORM_ref_addr:
24852     case DW_FORM_ref1:
24853     case DW_FORM_ref2:
24854     case DW_FORM_ref4:
24855     case DW_FORM_ref8:
24856     case DW_FORM_ref_udata:
24857     case DW_FORM_GNU_ref_alt:
24858       return 1;
24859     default:
24860       return 0;
24861     }
24862 }
24863
24864 /* Return the .debug_loc section to use for CU.
24865    For DWO files use .debug_loc.dwo.  */
24866
24867 static struct dwarf2_section_info *
24868 cu_debug_loc_section (struct dwarf2_cu *cu)
24869 {
24870   struct dwarf2_per_objfile *dwarf2_per_objfile
24871     = cu->per_cu->dwarf2_per_objfile;
24872
24873   if (cu->dwo_unit)
24874     {
24875       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24876       
24877       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24878     }
24879   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24880                                   : &dwarf2_per_objfile->loc);
24881 }
24882
24883 /* A helper function that fills in a dwarf2_loclist_baton.  */
24884
24885 static void
24886 fill_in_loclist_baton (struct dwarf2_cu *cu,
24887                        struct dwarf2_loclist_baton *baton,
24888                        const struct attribute *attr)
24889 {
24890   struct dwarf2_per_objfile *dwarf2_per_objfile
24891     = cu->per_cu->dwarf2_per_objfile;
24892   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24893
24894   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24895
24896   baton->per_cu = cu->per_cu;
24897   gdb_assert (baton->per_cu);
24898   /* We don't know how long the location list is, but make sure we
24899      don't run off the edge of the section.  */
24900   baton->size = section->size - DW_UNSND (attr);
24901   baton->data = section->buffer + DW_UNSND (attr);
24902   baton->base_address = cu->base_address;
24903   baton->from_dwo = cu->dwo_unit != NULL;
24904 }
24905
24906 static void
24907 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24908                              struct dwarf2_cu *cu, int is_block)
24909 {
24910   struct dwarf2_per_objfile *dwarf2_per_objfile
24911     = cu->per_cu->dwarf2_per_objfile;
24912   struct objfile *objfile = dwarf2_per_objfile->objfile;
24913   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24914
24915   if (attr_form_is_section_offset (attr)
24916       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24917          the section.  If so, fall through to the complaint in the
24918          other branch.  */
24919       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24920     {
24921       struct dwarf2_loclist_baton *baton;
24922
24923       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24924
24925       fill_in_loclist_baton (cu, baton, attr);
24926
24927       if (cu->base_known == 0)
24928         complaint (_("Location list used without "
24929                      "specifying the CU base address."));
24930
24931       SYMBOL_ACLASS_INDEX (sym) = (is_block
24932                                    ? dwarf2_loclist_block_index
24933                                    : dwarf2_loclist_index);
24934       SYMBOL_LOCATION_BATON (sym) = baton;
24935     }
24936   else
24937     {
24938       struct dwarf2_locexpr_baton *baton;
24939
24940       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24941       baton->per_cu = cu->per_cu;
24942       gdb_assert (baton->per_cu);
24943
24944       if (attr_form_is_block (attr))
24945         {
24946           /* Note that we're just copying the block's data pointer
24947              here, not the actual data.  We're still pointing into the
24948              info_buffer for SYM's objfile; right now we never release
24949              that buffer, but when we do clean up properly this may
24950              need to change.  */
24951           baton->size = DW_BLOCK (attr)->size;
24952           baton->data = DW_BLOCK (attr)->data;
24953         }
24954       else
24955         {
24956           dwarf2_invalid_attrib_class_complaint ("location description",
24957                                                  SYMBOL_NATURAL_NAME (sym));
24958           baton->size = 0;
24959         }
24960
24961       SYMBOL_ACLASS_INDEX (sym) = (is_block
24962                                    ? dwarf2_locexpr_block_index
24963                                    : dwarf2_locexpr_index);
24964       SYMBOL_LOCATION_BATON (sym) = baton;
24965     }
24966 }
24967
24968 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24969    came from a separate debuginfo file, then the master objfile is
24970    returned.  */
24971
24972 struct objfile *
24973 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24974 {
24975   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24976
24977   /* Return the master objfile, so that we can report and look up the
24978      correct file containing this variable.  */
24979   if (objfile->separate_debug_objfile_backlink)
24980     objfile = objfile->separate_debug_objfile_backlink;
24981
24982   return objfile;
24983 }
24984
24985 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24986    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24987    CU_HEADERP first.  */
24988
24989 static const struct comp_unit_head *
24990 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24991                        struct dwarf2_per_cu_data *per_cu)
24992 {
24993   const gdb_byte *info_ptr;
24994
24995   if (per_cu->cu)
24996     return &per_cu->cu->header;
24997
24998   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24999
25000   memset (cu_headerp, 0, sizeof (*cu_headerp));
25001   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25002                        rcuh_kind::COMPILE);
25003
25004   return cu_headerp;
25005 }
25006
25007 /* Return the address size given in the compilation unit header for CU.  */
25008
25009 int
25010 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25011 {
25012   struct comp_unit_head cu_header_local;
25013   const struct comp_unit_head *cu_headerp;
25014
25015   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25016
25017   return cu_headerp->addr_size;
25018 }
25019
25020 /* Return the offset size given in the compilation unit header for CU.  */
25021
25022 int
25023 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25024 {
25025   struct comp_unit_head cu_header_local;
25026   const struct comp_unit_head *cu_headerp;
25027
25028   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25029
25030   return cu_headerp->offset_size;
25031 }
25032
25033 /* See its dwarf2loc.h declaration.  */
25034
25035 int
25036 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25037 {
25038   struct comp_unit_head cu_header_local;
25039   const struct comp_unit_head *cu_headerp;
25040
25041   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25042
25043   if (cu_headerp->version == 2)
25044     return cu_headerp->addr_size;
25045   else
25046     return cu_headerp->offset_size;
25047 }
25048
25049 /* Return the text offset of the CU.  The returned offset comes from
25050    this CU's objfile.  If this objfile came from a separate debuginfo
25051    file, then the offset may be different from the corresponding
25052    offset in the parent objfile.  */
25053
25054 CORE_ADDR
25055 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25056 {
25057   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25058
25059   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25060 }
25061
25062 /* Return DWARF version number of PER_CU.  */
25063
25064 short
25065 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25066 {
25067   return per_cu->dwarf_version;
25068 }
25069
25070 /* Locate the .debug_info compilation unit from CU's objfile which contains
25071    the DIE at OFFSET.  Raises an error on failure.  */
25072
25073 static struct dwarf2_per_cu_data *
25074 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25075                                   unsigned int offset_in_dwz,
25076                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25077 {
25078   struct dwarf2_per_cu_data *this_cu;
25079   int low, high;
25080   const sect_offset *cu_off;
25081
25082   low = 0;
25083   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25084   while (high > low)
25085     {
25086       struct dwarf2_per_cu_data *mid_cu;
25087       int mid = low + (high - low) / 2;
25088
25089       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25090       cu_off = &mid_cu->sect_off;
25091       if (mid_cu->is_dwz > offset_in_dwz
25092           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25093         high = mid;
25094       else
25095         low = mid + 1;
25096     }
25097   gdb_assert (low == high);
25098   this_cu = dwarf2_per_objfile->all_comp_units[low];
25099   cu_off = &this_cu->sect_off;
25100   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25101     {
25102       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25103         error (_("Dwarf Error: could not find partial DIE containing "
25104                "offset %s [in module %s]"),
25105                sect_offset_str (sect_off),
25106                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25107
25108       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25109                   <= sect_off);
25110       return dwarf2_per_objfile->all_comp_units[low-1];
25111     }
25112   else
25113     {
25114       this_cu = dwarf2_per_objfile->all_comp_units[low];
25115       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25116           && sect_off >= this_cu->sect_off + this_cu->length)
25117         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25118       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25119       return this_cu;
25120     }
25121 }
25122
25123 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25124
25125 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25126   : per_cu (per_cu_),
25127     mark (0),
25128     has_loclist (0),
25129     checked_producer (0),
25130     producer_is_gxx_lt_4_6 (0),
25131     producer_is_gcc_lt_4_3 (0),
25132     producer_is_icc_lt_14 (0),
25133     producer_is_codewarrior (false),
25134     processing_has_namespace_info (0)
25135 {
25136   per_cu->cu = this;
25137 }
25138
25139 /* Destroy a dwarf2_cu.  */
25140
25141 dwarf2_cu::~dwarf2_cu ()
25142 {
25143   per_cu->cu = NULL;
25144 }
25145
25146 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25147
25148 static void
25149 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25150                        enum language pretend_language)
25151 {
25152   struct attribute *attr;
25153
25154   /* Set the language we're debugging.  */
25155   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25156   if (attr)
25157     set_cu_language (DW_UNSND (attr), cu);
25158   else
25159     {
25160       cu->language = pretend_language;
25161       cu->language_defn = language_def (cu->language);
25162     }
25163
25164   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25165 }
25166
25167 /* Increase the age counter on each cached compilation unit, and free
25168    any that are too old.  */
25169
25170 static void
25171 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25172 {
25173   struct dwarf2_per_cu_data *per_cu, **last_chain;
25174
25175   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25176   per_cu = dwarf2_per_objfile->read_in_chain;
25177   while (per_cu != NULL)
25178     {
25179       per_cu->cu->last_used ++;
25180       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25181         dwarf2_mark (per_cu->cu);
25182       per_cu = per_cu->cu->read_in_chain;
25183     }
25184
25185   per_cu = dwarf2_per_objfile->read_in_chain;
25186   last_chain = &dwarf2_per_objfile->read_in_chain;
25187   while (per_cu != NULL)
25188     {
25189       struct dwarf2_per_cu_data *next_cu;
25190
25191       next_cu = per_cu->cu->read_in_chain;
25192
25193       if (!per_cu->cu->mark)
25194         {
25195           delete per_cu->cu;
25196           *last_chain = next_cu;
25197         }
25198       else
25199         last_chain = &per_cu->cu->read_in_chain;
25200
25201       per_cu = next_cu;
25202     }
25203 }
25204
25205 /* Remove a single compilation unit from the cache.  */
25206
25207 static void
25208 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25209 {
25210   struct dwarf2_per_cu_data *per_cu, **last_chain;
25211   struct dwarf2_per_objfile *dwarf2_per_objfile
25212     = target_per_cu->dwarf2_per_objfile;
25213
25214   per_cu = dwarf2_per_objfile->read_in_chain;
25215   last_chain = &dwarf2_per_objfile->read_in_chain;
25216   while (per_cu != NULL)
25217     {
25218       struct dwarf2_per_cu_data *next_cu;
25219
25220       next_cu = per_cu->cu->read_in_chain;
25221
25222       if (per_cu == target_per_cu)
25223         {
25224           delete per_cu->cu;
25225           per_cu->cu = NULL;
25226           *last_chain = next_cu;
25227           break;
25228         }
25229       else
25230         last_chain = &per_cu->cu->read_in_chain;
25231
25232       per_cu = next_cu;
25233     }
25234 }
25235
25236 /* Cleanup function for the dwarf2_per_objfile data.  */
25237
25238 static void
25239 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25240 {
25241   struct dwarf2_per_objfile *dwarf2_per_objfile
25242     = static_cast<struct dwarf2_per_objfile *> (datum);
25243
25244   delete dwarf2_per_objfile;
25245 }
25246
25247 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25248    We store these in a hash table separate from the DIEs, and preserve them
25249    when the DIEs are flushed out of cache.
25250
25251    The CU "per_cu" pointer is needed because offset alone is not enough to
25252    uniquely identify the type.  A file may have multiple .debug_types sections,
25253    or the type may come from a DWO file.  Furthermore, while it's more logical
25254    to use per_cu->section+offset, with Fission the section with the data is in
25255    the DWO file but we don't know that section at the point we need it.
25256    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25257    because we can enter the lookup routine, get_die_type_at_offset, from
25258    outside this file, and thus won't necessarily have PER_CU->cu.
25259    Fortunately, PER_CU is stable for the life of the objfile.  */
25260
25261 struct dwarf2_per_cu_offset_and_type
25262 {
25263   const struct dwarf2_per_cu_data *per_cu;
25264   sect_offset sect_off;
25265   struct type *type;
25266 };
25267
25268 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25269
25270 static hashval_t
25271 per_cu_offset_and_type_hash (const void *item)
25272 {
25273   const struct dwarf2_per_cu_offset_and_type *ofs
25274     = (const struct dwarf2_per_cu_offset_and_type *) item;
25275
25276   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25277 }
25278
25279 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25280
25281 static int
25282 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25283 {
25284   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25285     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25286   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25287     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25288
25289   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25290           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25291 }
25292
25293 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25294    table if necessary.  For convenience, return TYPE.
25295
25296    The DIEs reading must have careful ordering to:
25297     * Not cause infite loops trying to read in DIEs as a prerequisite for
25298       reading current DIE.
25299     * Not trying to dereference contents of still incompletely read in types
25300       while reading in other DIEs.
25301     * Enable referencing still incompletely read in types just by a pointer to
25302       the type without accessing its fields.
25303
25304    Therefore caller should follow these rules:
25305      * Try to fetch any prerequisite types we may need to build this DIE type
25306        before building the type and calling set_die_type.
25307      * After building type call set_die_type for current DIE as soon as
25308        possible before fetching more types to complete the current type.
25309      * Make the type as complete as possible before fetching more types.  */
25310
25311 static struct type *
25312 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25313 {
25314   struct dwarf2_per_objfile *dwarf2_per_objfile
25315     = cu->per_cu->dwarf2_per_objfile;
25316   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25317   struct objfile *objfile = dwarf2_per_objfile->objfile;
25318   struct attribute *attr;
25319   struct dynamic_prop prop;
25320
25321   /* For Ada types, make sure that the gnat-specific data is always
25322      initialized (if not already set).  There are a few types where
25323      we should not be doing so, because the type-specific area is
25324      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25325      where the type-specific area is used to store the floatformat).
25326      But this is not a problem, because the gnat-specific information
25327      is actually not needed for these types.  */
25328   if (need_gnat_info (cu)
25329       && TYPE_CODE (type) != TYPE_CODE_FUNC
25330       && TYPE_CODE (type) != TYPE_CODE_FLT
25331       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25332       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25333       && TYPE_CODE (type) != TYPE_CODE_METHOD
25334       && !HAVE_GNAT_AUX_INFO (type))
25335     INIT_GNAT_SPECIFIC (type);
25336
25337   /* Read DW_AT_allocated and set in type.  */
25338   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25339   if (attr_form_is_block (attr))
25340     {
25341       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25342         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25343     }
25344   else if (attr != NULL)
25345     {
25346       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25347                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25348                  sect_offset_str (die->sect_off));
25349     }
25350
25351   /* Read DW_AT_associated and set in type.  */
25352   attr = dwarf2_attr (die, DW_AT_associated, cu);
25353   if (attr_form_is_block (attr))
25354     {
25355       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25356         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25357     }
25358   else if (attr != NULL)
25359     {
25360       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25361                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25362                  sect_offset_str (die->sect_off));
25363     }
25364
25365   /* Read DW_AT_data_location and set in type.  */
25366   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25367   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25368     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25369
25370   if (dwarf2_per_objfile->die_type_hash == NULL)
25371     {
25372       dwarf2_per_objfile->die_type_hash =
25373         htab_create_alloc_ex (127,
25374                               per_cu_offset_and_type_hash,
25375                               per_cu_offset_and_type_eq,
25376                               NULL,
25377                               &objfile->objfile_obstack,
25378                               hashtab_obstack_allocate,
25379                               dummy_obstack_deallocate);
25380     }
25381
25382   ofs.per_cu = cu->per_cu;
25383   ofs.sect_off = die->sect_off;
25384   ofs.type = type;
25385   slot = (struct dwarf2_per_cu_offset_and_type **)
25386     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25387   if (*slot)
25388     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25389                sect_offset_str (die->sect_off));
25390   *slot = XOBNEW (&objfile->objfile_obstack,
25391                   struct dwarf2_per_cu_offset_and_type);
25392   **slot = ofs;
25393   return type;
25394 }
25395
25396 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25397    or return NULL if the die does not have a saved type.  */
25398
25399 static struct type *
25400 get_die_type_at_offset (sect_offset sect_off,
25401                         struct dwarf2_per_cu_data *per_cu)
25402 {
25403   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25404   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25405
25406   if (dwarf2_per_objfile->die_type_hash == NULL)
25407     return NULL;
25408
25409   ofs.per_cu = per_cu;
25410   ofs.sect_off = sect_off;
25411   slot = ((struct dwarf2_per_cu_offset_and_type *)
25412           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25413   if (slot)
25414     return slot->type;
25415   else
25416     return NULL;
25417 }
25418
25419 /* Look up the type for DIE in CU in die_type_hash,
25420    or return NULL if DIE does not have a saved type.  */
25421
25422 static struct type *
25423 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25424 {
25425   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25426 }
25427
25428 /* Add a dependence relationship from CU to REF_PER_CU.  */
25429
25430 static void
25431 dwarf2_add_dependence (struct dwarf2_cu *cu,
25432                        struct dwarf2_per_cu_data *ref_per_cu)
25433 {
25434   void **slot;
25435
25436   if (cu->dependencies == NULL)
25437     cu->dependencies
25438       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25439                               NULL, &cu->comp_unit_obstack,
25440                               hashtab_obstack_allocate,
25441                               dummy_obstack_deallocate);
25442
25443   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25444   if (*slot == NULL)
25445     *slot = ref_per_cu;
25446 }
25447
25448 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25449    Set the mark field in every compilation unit in the
25450    cache that we must keep because we are keeping CU.  */
25451
25452 static int
25453 dwarf2_mark_helper (void **slot, void *data)
25454 {
25455   struct dwarf2_per_cu_data *per_cu;
25456
25457   per_cu = (struct dwarf2_per_cu_data *) *slot;
25458
25459   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25460      reading of the chain.  As such dependencies remain valid it is not much
25461      useful to track and undo them during QUIT cleanups.  */
25462   if (per_cu->cu == NULL)
25463     return 1;
25464
25465   if (per_cu->cu->mark)
25466     return 1;
25467   per_cu->cu->mark = 1;
25468
25469   if (per_cu->cu->dependencies != NULL)
25470     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25471
25472   return 1;
25473 }
25474
25475 /* Set the mark field in CU and in every other compilation unit in the
25476    cache that we must keep because we are keeping CU.  */
25477
25478 static void
25479 dwarf2_mark (struct dwarf2_cu *cu)
25480 {
25481   if (cu->mark)
25482     return;
25483   cu->mark = 1;
25484   if (cu->dependencies != NULL)
25485     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25486 }
25487
25488 static void
25489 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25490 {
25491   while (per_cu)
25492     {
25493       per_cu->cu->mark = 0;
25494       per_cu = per_cu->cu->read_in_chain;
25495     }
25496 }
25497
25498 /* Trivial hash function for partial_die_info: the hash value of a DIE
25499    is its offset in .debug_info for this objfile.  */
25500
25501 static hashval_t
25502 partial_die_hash (const void *item)
25503 {
25504   const struct partial_die_info *part_die
25505     = (const struct partial_die_info *) item;
25506
25507   return to_underlying (part_die->sect_off);
25508 }
25509
25510 /* Trivial comparison function for partial_die_info structures: two DIEs
25511    are equal if they have the same offset.  */
25512
25513 static int
25514 partial_die_eq (const void *item_lhs, const void *item_rhs)
25515 {
25516   const struct partial_die_info *part_die_lhs
25517     = (const struct partial_die_info *) item_lhs;
25518   const struct partial_die_info *part_die_rhs
25519     = (const struct partial_die_info *) item_rhs;
25520
25521   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25522 }
25523
25524 struct cmd_list_element *set_dwarf_cmdlist;
25525 struct cmd_list_element *show_dwarf_cmdlist;
25526
25527 static void
25528 set_dwarf_cmd (const char *args, int from_tty)
25529 {
25530   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25531              gdb_stdout);
25532 }
25533
25534 static void
25535 show_dwarf_cmd (const char *args, int from_tty)
25536 {
25537   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25538 }
25539
25540 int dwarf_always_disassemble;
25541
25542 static void
25543 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25544                                struct cmd_list_element *c, const char *value)
25545 {
25546   fprintf_filtered (file,
25547                     _("Whether to always disassemble "
25548                       "DWARF expressions is %s.\n"),
25549                     value);
25550 }
25551
25552 static void
25553 show_check_physname (struct ui_file *file, int from_tty,
25554                      struct cmd_list_element *c, const char *value)
25555 {
25556   fprintf_filtered (file,
25557                     _("Whether to check \"physname\" is %s.\n"),
25558                     value);
25559 }
25560
25561 void
25562 _initialize_dwarf2_read (void)
25563 {
25564   dwarf2_objfile_data_key
25565     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25566
25567   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25568 Set DWARF specific variables.\n\
25569 Configure DWARF variables such as the cache size"),
25570                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25571                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25572
25573   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25574 Show DWARF specific variables\n\
25575 Show DWARF variables such as the cache size"),
25576                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25577                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25578
25579   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25580                             &dwarf_max_cache_age, _("\
25581 Set the upper bound on the age of cached DWARF compilation units."), _("\
25582 Show the upper bound on the age of cached DWARF compilation units."), _("\
25583 A higher limit means that cached compilation units will be stored\n\
25584 in memory longer, and more total memory will be used.  Zero disables\n\
25585 caching, which can slow down startup."),
25586                             NULL,
25587                             show_dwarf_max_cache_age,
25588                             &set_dwarf_cmdlist,
25589                             &show_dwarf_cmdlist);
25590
25591   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25592                            &dwarf_always_disassemble, _("\
25593 Set whether `info address' always disassembles DWARF expressions."), _("\
25594 Show whether `info address' always disassembles DWARF expressions."), _("\
25595 When enabled, DWARF expressions are always printed in an assembly-like\n\
25596 syntax.  When disabled, expressions will be printed in a more\n\
25597 conversational style, when possible."),
25598                            NULL,
25599                            show_dwarf_always_disassemble,
25600                            &set_dwarf_cmdlist,
25601                            &show_dwarf_cmdlist);
25602
25603   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25604 Set debugging of the DWARF reader."), _("\
25605 Show debugging of the DWARF reader."), _("\
25606 When enabled (non-zero), debugging messages are printed during DWARF\n\
25607 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25608 information.  A value greater than 1 provides more verbose information."),
25609                             NULL,
25610                             NULL,
25611                             &setdebuglist, &showdebuglist);
25612
25613   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25614 Set debugging of the DWARF DIE reader."), _("\
25615 Show debugging of the DWARF DIE reader."), _("\
25616 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25617 The value is the maximum depth to print."),
25618                              NULL,
25619                              NULL,
25620                              &setdebuglist, &showdebuglist);
25621
25622   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25623 Set debugging of the dwarf line reader."), _("\
25624 Show debugging of the dwarf line reader."), _("\
25625 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25626 A value of 1 (one) provides basic information.\n\
25627 A value greater than 1 provides more verbose information."),
25628                              NULL,
25629                              NULL,
25630                              &setdebuglist, &showdebuglist);
25631
25632   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25633 Set cross-checking of \"physname\" code against demangler."), _("\
25634 Show cross-checking of \"physname\" code against demangler."), _("\
25635 When enabled, GDB's internal \"physname\" code is checked against\n\
25636 the demangler."),
25637                            NULL, show_check_physname,
25638                            &setdebuglist, &showdebuglist);
25639
25640   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25641                            no_class, &use_deprecated_index_sections, _("\
25642 Set whether to use deprecated gdb_index sections."), _("\
25643 Show whether to use deprecated gdb_index sections."), _("\
25644 When enabled, deprecated .gdb_index sections are used anyway.\n\
25645 Normally they are ignored either because of a missing feature or\n\
25646 performance issue.\n\
25647 Warning: This option must be enabled before gdb reads the file."),
25648                            NULL,
25649                            NULL,
25650                            &setlist, &showlist);
25651
25652   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25653                                                         &dwarf2_locexpr_funcs);
25654   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25655                                                         &dwarf2_loclist_funcs);
25656
25657   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25658                                         &dwarf2_block_frame_base_locexpr_funcs);
25659   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25660                                         &dwarf2_block_frame_base_loclist_funcs);
25661
25662 #if GDB_SELF_TEST
25663   selftests::register_test ("dw2_expand_symtabs_matching",
25664                             selftests::dw2_expand_symtabs_matching::run_test);
25665 #endif
25666 }