Introduce gdbarch_num_cooked_regs
[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 (VEC (compunit_symtab_ptr) **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               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10244               if (cust->user == NULL)
10245                 cust->user = immediate_parent;
10246             }
10247         }
10248       else
10249         {
10250           VEC_safe_push (compunit_symtab_ptr, *result, 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       struct compunit_symtab *compunit_symtab_iter;
10278       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10279       htab_t all_children, all_type_symtabs;
10280       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10281
10282       /* If we don't have a symtab, we can just skip this case.  */
10283       if (cust == NULL)
10284         return;
10285
10286       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10287                                         NULL, xcalloc, xfree);
10288       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10289                                             NULL, xcalloc, xfree);
10290
10291       for (ix = 0;
10292            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10293                         ix, per_cu_iter);
10294            ++ix)
10295         {
10296           recursively_compute_inclusions (&result_symtabs, all_children,
10297                                           all_type_symtabs, per_cu_iter,
10298                                           cust);
10299         }
10300
10301       /* Now we have a transitive closure of all the included symtabs.  */
10302       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10303       cust->includes
10304         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10305                      struct compunit_symtab *, len + 1);
10306       for (ix = 0;
10307            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10308                         compunit_symtab_iter);
10309            ++ix)
10310         cust->includes[ix] = compunit_symtab_iter;
10311       cust->includes[len] = NULL;
10312
10313       VEC_free (compunit_symtab_ptr, result_symtabs);
10314       htab_delete (all_children);
10315       htab_delete (all_type_symtabs);
10316     }
10317 }
10318
10319 /* Compute the 'includes' field for the symtabs of all the CUs we just
10320    read.  */
10321
10322 static void
10323 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10324 {
10325   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10326     {
10327       if (! iter->is_debug_types)
10328         compute_compunit_symtab_includes (iter);
10329     }
10330
10331   dwarf2_per_objfile->just_read_cus.clear ();
10332 }
10333
10334 /* Generate full symbol information for PER_CU, whose DIEs have
10335    already been loaded into memory.  */
10336
10337 static void
10338 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10339                         enum language pretend_language)
10340 {
10341   struct dwarf2_cu *cu = per_cu->cu;
10342   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10343   struct objfile *objfile = dwarf2_per_objfile->objfile;
10344   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10345   CORE_ADDR lowpc, highpc;
10346   struct compunit_symtab *cust;
10347   CORE_ADDR baseaddr;
10348   struct block *static_block;
10349   CORE_ADDR addr;
10350
10351   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10352
10353   /* Clear the list here in case something was left over.  */
10354   cu->method_list.clear ();
10355
10356   cu->language = pretend_language;
10357   cu->language_defn = language_def (cu->language);
10358
10359   /* Do line number decoding in read_file_scope () */
10360   process_die (cu->dies, cu);
10361
10362   /* For now fudge the Go package.  */
10363   if (cu->language == language_go)
10364     fixup_go_packaging (cu);
10365
10366   /* Now that we have processed all the DIEs in the CU, all the types 
10367      should be complete, and it should now be safe to compute all of the
10368      physnames.  */
10369   compute_delayed_physnames (cu);
10370
10371   if (cu->language == language_rust)
10372     rust_union_quirks (cu);
10373
10374   /* Some compilers don't define a DW_AT_high_pc attribute for the
10375      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10376      it, by scanning the DIE's below the compilation unit.  */
10377   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10378
10379   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10380   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10381
10382   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10383      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10384      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10385      addrmap to help ensure it has an accurate map of pc values belonging to
10386      this comp unit.  */
10387   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10388
10389   cust = cu->builder->end_symtab_from_static_block (static_block,
10390                                                     SECT_OFF_TEXT (objfile),
10391                                                     0);
10392
10393   if (cust != NULL)
10394     {
10395       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10396
10397       /* Set symtab language to language from DW_AT_language.  If the
10398          compilation is from a C file generated by language preprocessors, do
10399          not set the language if it was already deduced by start_subfile.  */
10400       if (!(cu->language == language_c
10401             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10402         COMPUNIT_FILETABS (cust)->language = cu->language;
10403
10404       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10405          produce DW_AT_location with location lists but it can be possibly
10406          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10407          there were bugs in prologue debug info, fixed later in GCC-4.5
10408          by "unwind info for epilogues" patch (which is not directly related).
10409
10410          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10411          needed, it would be wrong due to missing DW_AT_producer there.
10412
10413          Still one can confuse GDB by using non-standard GCC compilation
10414          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10415          */ 
10416       if (cu->has_loclist && gcc_4_minor >= 5)
10417         cust->locations_valid = 1;
10418
10419       if (gcc_4_minor >= 5)
10420         cust->epilogue_unwind_valid = 1;
10421
10422       cust->call_site_htab = cu->call_site_htab;
10423     }
10424
10425   if (dwarf2_per_objfile->using_index)
10426     per_cu->v.quick->compunit_symtab = cust;
10427   else
10428     {
10429       struct partial_symtab *pst = per_cu->v.psymtab;
10430       pst->compunit_symtab = cust;
10431       pst->readin = 1;
10432     }
10433
10434   /* Push it for inclusion processing later.  */
10435   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10436
10437   /* Not needed any more.  */
10438   cu->builder.reset ();
10439 }
10440
10441 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10442    already been loaded into memory.  */
10443
10444 static void
10445 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10446                         enum language pretend_language)
10447 {
10448   struct dwarf2_cu *cu = per_cu->cu;
10449   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10450   struct objfile *objfile = dwarf2_per_objfile->objfile;
10451   struct compunit_symtab *cust;
10452   struct signatured_type *sig_type;
10453
10454   gdb_assert (per_cu->is_debug_types);
10455   sig_type = (struct signatured_type *) per_cu;
10456
10457   /* Clear the list here in case something was left over.  */
10458   cu->method_list.clear ();
10459
10460   cu->language = pretend_language;
10461   cu->language_defn = language_def (cu->language);
10462
10463   /* The symbol tables are set up in read_type_unit_scope.  */
10464   process_die (cu->dies, cu);
10465
10466   /* For now fudge the Go package.  */
10467   if (cu->language == language_go)
10468     fixup_go_packaging (cu);
10469
10470   /* Now that we have processed all the DIEs in the CU, all the types 
10471      should be complete, and it should now be safe to compute all of the
10472      physnames.  */
10473   compute_delayed_physnames (cu);
10474
10475   if (cu->language == language_rust)
10476     rust_union_quirks (cu);
10477
10478   /* TUs share symbol tables.
10479      If this is the first TU to use this symtab, complete the construction
10480      of it with end_expandable_symtab.  Otherwise, complete the addition of
10481      this TU's symbols to the existing symtab.  */
10482   if (sig_type->type_unit_group->compunit_symtab == NULL)
10483     {
10484       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10485       sig_type->type_unit_group->compunit_symtab = cust;
10486
10487       if (cust != NULL)
10488         {
10489           /* Set symtab language to language from DW_AT_language.  If the
10490              compilation is from a C file generated by language preprocessors,
10491              do not set the language if it was already deduced by
10492              start_subfile.  */
10493           if (!(cu->language == language_c
10494                 && COMPUNIT_FILETABS (cust)->language != language_c))
10495             COMPUNIT_FILETABS (cust)->language = cu->language;
10496         }
10497     }
10498   else
10499     {
10500       cu->builder->augment_type_symtab ();
10501       cust = sig_type->type_unit_group->compunit_symtab;
10502     }
10503
10504   if (dwarf2_per_objfile->using_index)
10505     per_cu->v.quick->compunit_symtab = cust;
10506   else
10507     {
10508       struct partial_symtab *pst = per_cu->v.psymtab;
10509       pst->compunit_symtab = cust;
10510       pst->readin = 1;
10511     }
10512
10513   /* Not needed any more.  */
10514   cu->builder.reset ();
10515 }
10516
10517 /* Process an imported unit DIE.  */
10518
10519 static void
10520 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10521 {
10522   struct attribute *attr;
10523
10524   /* For now we don't handle imported units in type units.  */
10525   if (cu->per_cu->is_debug_types)
10526     {
10527       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10528                " supported in type units [in module %s]"),
10529              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10530     }
10531
10532   attr = dwarf2_attr (die, DW_AT_import, cu);
10533   if (attr != NULL)
10534     {
10535       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10536       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10537       dwarf2_per_cu_data *per_cu
10538         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10539                                             cu->per_cu->dwarf2_per_objfile);
10540
10541       /* If necessary, add it to the queue and load its DIEs.  */
10542       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10543         load_full_comp_unit (per_cu, false, cu->language);
10544
10545       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10546                      per_cu);
10547     }
10548 }
10549
10550 /* RAII object that represents a process_die scope: i.e.,
10551    starts/finishes processing a DIE.  */
10552 class process_die_scope
10553 {
10554 public:
10555   process_die_scope (die_info *die, dwarf2_cu *cu)
10556     : m_die (die), m_cu (cu)
10557   {
10558     /* We should only be processing DIEs not already in process.  */
10559     gdb_assert (!m_die->in_process);
10560     m_die->in_process = true;
10561   }
10562
10563   ~process_die_scope ()
10564   {
10565     m_die->in_process = false;
10566
10567     /* If we're done processing the DIE for the CU that owns the line
10568        header, we don't need the line header anymore.  */
10569     if (m_cu->line_header_die_owner == m_die)
10570       {
10571         delete m_cu->line_header;
10572         m_cu->line_header = NULL;
10573         m_cu->line_header_die_owner = NULL;
10574       }
10575   }
10576
10577 private:
10578   die_info *m_die;
10579   dwarf2_cu *m_cu;
10580 };
10581
10582 /* Process a die and its children.  */
10583
10584 static void
10585 process_die (struct die_info *die, struct dwarf2_cu *cu)
10586 {
10587   process_die_scope scope (die, cu);
10588
10589   switch (die->tag)
10590     {
10591     case DW_TAG_padding:
10592       break;
10593     case DW_TAG_compile_unit:
10594     case DW_TAG_partial_unit:
10595       read_file_scope (die, cu);
10596       break;
10597     case DW_TAG_type_unit:
10598       read_type_unit_scope (die, cu);
10599       break;
10600     case DW_TAG_subprogram:
10601     case DW_TAG_inlined_subroutine:
10602       read_func_scope (die, cu);
10603       break;
10604     case DW_TAG_lexical_block:
10605     case DW_TAG_try_block:
10606     case DW_TAG_catch_block:
10607       read_lexical_block_scope (die, cu);
10608       break;
10609     case DW_TAG_call_site:
10610     case DW_TAG_GNU_call_site:
10611       read_call_site_scope (die, cu);
10612       break;
10613     case DW_TAG_class_type:
10614     case DW_TAG_interface_type:
10615     case DW_TAG_structure_type:
10616     case DW_TAG_union_type:
10617       process_structure_scope (die, cu);
10618       break;
10619     case DW_TAG_enumeration_type:
10620       process_enumeration_scope (die, cu);
10621       break;
10622
10623     /* These dies have a type, but processing them does not create
10624        a symbol or recurse to process the children.  Therefore we can
10625        read them on-demand through read_type_die.  */
10626     case DW_TAG_subroutine_type:
10627     case DW_TAG_set_type:
10628     case DW_TAG_array_type:
10629     case DW_TAG_pointer_type:
10630     case DW_TAG_ptr_to_member_type:
10631     case DW_TAG_reference_type:
10632     case DW_TAG_rvalue_reference_type:
10633     case DW_TAG_string_type:
10634       break;
10635
10636     case DW_TAG_base_type:
10637     case DW_TAG_subrange_type:
10638     case DW_TAG_typedef:
10639       /* Add a typedef symbol for the type definition, if it has a
10640          DW_AT_name.  */
10641       new_symbol (die, read_type_die (die, cu), cu);
10642       break;
10643     case DW_TAG_common_block:
10644       read_common_block (die, cu);
10645       break;
10646     case DW_TAG_common_inclusion:
10647       break;
10648     case DW_TAG_namespace:
10649       cu->processing_has_namespace_info = 1;
10650       read_namespace (die, cu);
10651       break;
10652     case DW_TAG_module:
10653       cu->processing_has_namespace_info = 1;
10654       read_module (die, cu);
10655       break;
10656     case DW_TAG_imported_declaration:
10657       cu->processing_has_namespace_info = 1;
10658       if (read_namespace_alias (die, cu))
10659         break;
10660       /* The declaration is not a global namespace alias.  */
10661       /* Fall through.  */
10662     case DW_TAG_imported_module:
10663       cu->processing_has_namespace_info = 1;
10664       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10665                                  || cu->language != language_fortran))
10666         complaint (_("Tag '%s' has unexpected children"),
10667                    dwarf_tag_name (die->tag));
10668       read_import_statement (die, cu);
10669       break;
10670
10671     case DW_TAG_imported_unit:
10672       process_imported_unit_die (die, cu);
10673       break;
10674
10675     case DW_TAG_variable:
10676       read_variable (die, cu);
10677       break;
10678
10679     default:
10680       new_symbol (die, NULL, cu);
10681       break;
10682     }
10683 }
10684 \f
10685 /* DWARF name computation.  */
10686
10687 /* A helper function for dwarf2_compute_name which determines whether DIE
10688    needs to have the name of the scope prepended to the name listed in the
10689    die.  */
10690
10691 static int
10692 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10693 {
10694   struct attribute *attr;
10695
10696   switch (die->tag)
10697     {
10698     case DW_TAG_namespace:
10699     case DW_TAG_typedef:
10700     case DW_TAG_class_type:
10701     case DW_TAG_interface_type:
10702     case DW_TAG_structure_type:
10703     case DW_TAG_union_type:
10704     case DW_TAG_enumeration_type:
10705     case DW_TAG_enumerator:
10706     case DW_TAG_subprogram:
10707     case DW_TAG_inlined_subroutine:
10708     case DW_TAG_member:
10709     case DW_TAG_imported_declaration:
10710       return 1;
10711
10712     case DW_TAG_variable:
10713     case DW_TAG_constant:
10714       /* We only need to prefix "globally" visible variables.  These include
10715          any variable marked with DW_AT_external or any variable that
10716          lives in a namespace.  [Variables in anonymous namespaces
10717          require prefixing, but they are not DW_AT_external.]  */
10718
10719       if (dwarf2_attr (die, DW_AT_specification, cu))
10720         {
10721           struct dwarf2_cu *spec_cu = cu;
10722
10723           return die_needs_namespace (die_specification (die, &spec_cu),
10724                                       spec_cu);
10725         }
10726
10727       attr = dwarf2_attr (die, DW_AT_external, cu);
10728       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10729           && die->parent->tag != DW_TAG_module)
10730         return 0;
10731       /* A variable in a lexical block of some kind does not need a
10732          namespace, even though in C++ such variables may be external
10733          and have a mangled name.  */
10734       if (die->parent->tag ==  DW_TAG_lexical_block
10735           || die->parent->tag ==  DW_TAG_try_block
10736           || die->parent->tag ==  DW_TAG_catch_block
10737           || die->parent->tag == DW_TAG_subprogram)
10738         return 0;
10739       return 1;
10740
10741     default:
10742       return 0;
10743     }
10744 }
10745
10746 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10747    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10748    defined for the given DIE.  */
10749
10750 static struct attribute *
10751 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10752 {
10753   struct attribute *attr;
10754
10755   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10756   if (attr == NULL)
10757     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10758
10759   return attr;
10760 }
10761
10762 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10763    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10764    defined for the given DIE.  */
10765
10766 static const char *
10767 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10768 {
10769   const char *linkage_name;
10770
10771   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10772   if (linkage_name == NULL)
10773     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10774
10775   return linkage_name;
10776 }
10777
10778 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10779    compute the physname for the object, which include a method's:
10780    - formal parameters (C++),
10781    - receiver type (Go),
10782
10783    The term "physname" is a bit confusing.
10784    For C++, for example, it is the demangled name.
10785    For Go, for example, it's the mangled name.
10786
10787    For Ada, return the DIE's linkage name rather than the fully qualified
10788    name.  PHYSNAME is ignored..
10789
10790    The result is allocated on the objfile_obstack and canonicalized.  */
10791
10792 static const char *
10793 dwarf2_compute_name (const char *name,
10794                      struct die_info *die, struct dwarf2_cu *cu,
10795                      int physname)
10796 {
10797   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10798
10799   if (name == NULL)
10800     name = dwarf2_name (die, cu);
10801
10802   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10803      but otherwise compute it by typename_concat inside GDB.
10804      FIXME: Actually this is not really true, or at least not always true.
10805      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10806      Fortran names because there is no mangling standard.  So new_symbol
10807      will set the demangled name to the result of dwarf2_full_name, and it is
10808      the demangled name that GDB uses if it exists.  */
10809   if (cu->language == language_ada
10810       || (cu->language == language_fortran && physname))
10811     {
10812       /* For Ada unit, we prefer the linkage name over the name, as
10813          the former contains the exported name, which the user expects
10814          to be able to reference.  Ideally, we want the user to be able
10815          to reference this entity using either natural or linkage name,
10816          but we haven't started looking at this enhancement yet.  */
10817       const char *linkage_name = dw2_linkage_name (die, cu);
10818
10819       if (linkage_name != NULL)
10820         return linkage_name;
10821     }
10822
10823   /* These are the only languages we know how to qualify names in.  */
10824   if (name != NULL
10825       && (cu->language == language_cplus
10826           || cu->language == language_fortran || cu->language == language_d
10827           || cu->language == language_rust))
10828     {
10829       if (die_needs_namespace (die, cu))
10830         {
10831           const char *prefix;
10832           const char *canonical_name = NULL;
10833
10834           string_file buf;
10835
10836           prefix = determine_prefix (die, cu);
10837           if (*prefix != '\0')
10838             {
10839               char *prefixed_name = typename_concat (NULL, prefix, name,
10840                                                      physname, cu);
10841
10842               buf.puts (prefixed_name);
10843               xfree (prefixed_name);
10844             }
10845           else
10846             buf.puts (name);
10847
10848           /* Template parameters may be specified in the DIE's DW_AT_name, or
10849              as children with DW_TAG_template_type_param or
10850              DW_TAG_value_type_param.  If the latter, add them to the name
10851              here.  If the name already has template parameters, then
10852              skip this step; some versions of GCC emit both, and
10853              it is more efficient to use the pre-computed name.
10854
10855              Something to keep in mind about this process: it is very
10856              unlikely, or in some cases downright impossible, to produce
10857              something that will match the mangled name of a function.
10858              If the definition of the function has the same debug info,
10859              we should be able to match up with it anyway.  But fallbacks
10860              using the minimal symbol, for instance to find a method
10861              implemented in a stripped copy of libstdc++, will not work.
10862              If we do not have debug info for the definition, we will have to
10863              match them up some other way.
10864
10865              When we do name matching there is a related problem with function
10866              templates; two instantiated function templates are allowed to
10867              differ only by their return types, which we do not add here.  */
10868
10869           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10870             {
10871               struct attribute *attr;
10872               struct die_info *child;
10873               int first = 1;
10874
10875               die->building_fullname = 1;
10876
10877               for (child = die->child; child != NULL; child = child->sibling)
10878                 {
10879                   struct type *type;
10880                   LONGEST value;
10881                   const gdb_byte *bytes;
10882                   struct dwarf2_locexpr_baton *baton;
10883                   struct value *v;
10884
10885                   if (child->tag != DW_TAG_template_type_param
10886                       && child->tag != DW_TAG_template_value_param)
10887                     continue;
10888
10889                   if (first)
10890                     {
10891                       buf.puts ("<");
10892                       first = 0;
10893                     }
10894                   else
10895                     buf.puts (", ");
10896
10897                   attr = dwarf2_attr (child, DW_AT_type, cu);
10898                   if (attr == NULL)
10899                     {
10900                       complaint (_("template parameter missing DW_AT_type"));
10901                       buf.puts ("UNKNOWN_TYPE");
10902                       continue;
10903                     }
10904                   type = die_type (child, cu);
10905
10906                   if (child->tag == DW_TAG_template_type_param)
10907                     {
10908                       c_print_type (type, "", &buf, -1, 0, cu->language,
10909                                     &type_print_raw_options);
10910                       continue;
10911                     }
10912
10913                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10914                   if (attr == NULL)
10915                     {
10916                       complaint (_("template parameter missing "
10917                                    "DW_AT_const_value"));
10918                       buf.puts ("UNKNOWN_VALUE");
10919                       continue;
10920                     }
10921
10922                   dwarf2_const_value_attr (attr, type, name,
10923                                            &cu->comp_unit_obstack, cu,
10924                                            &value, &bytes, &baton);
10925
10926                   if (TYPE_NOSIGN (type))
10927                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10928                        changed, this can use value_print instead.  */
10929                     c_printchar (value, type, &buf);
10930                   else
10931                     {
10932                       struct value_print_options opts;
10933
10934                       if (baton != NULL)
10935                         v = dwarf2_evaluate_loc_desc (type, NULL,
10936                                                       baton->data,
10937                                                       baton->size,
10938                                                       baton->per_cu);
10939                       else if (bytes != NULL)
10940                         {
10941                           v = allocate_value (type);
10942                           memcpy (value_contents_writeable (v), bytes,
10943                                   TYPE_LENGTH (type));
10944                         }
10945                       else
10946                         v = value_from_longest (type, value);
10947
10948                       /* Specify decimal so that we do not depend on
10949                          the radix.  */
10950                       get_formatted_print_options (&opts, 'd');
10951                       opts.raw = 1;
10952                       value_print (v, &buf, &opts);
10953                       release_value (v);
10954                     }
10955                 }
10956
10957               die->building_fullname = 0;
10958
10959               if (!first)
10960                 {
10961                   /* Close the argument list, with a space if necessary
10962                      (nested templates).  */
10963                   if (!buf.empty () && buf.string ().back () == '>')
10964                     buf.puts (" >");
10965                   else
10966                     buf.puts (">");
10967                 }
10968             }
10969
10970           /* For C++ methods, append formal parameter type
10971              information, if PHYSNAME.  */
10972
10973           if (physname && die->tag == DW_TAG_subprogram
10974               && cu->language == language_cplus)
10975             {
10976               struct type *type = read_type_die (die, cu);
10977
10978               c_type_print_args (type, &buf, 1, cu->language,
10979                                  &type_print_raw_options);
10980
10981               if (cu->language == language_cplus)
10982                 {
10983                   /* Assume that an artificial first parameter is
10984                      "this", but do not crash if it is not.  RealView
10985                      marks unnamed (and thus unused) parameters as
10986                      artificial; there is no way to differentiate
10987                      the two cases.  */
10988                   if (TYPE_NFIELDS (type) > 0
10989                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10990                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10991                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10992                                                                         0))))
10993                     buf.puts (" const");
10994                 }
10995             }
10996
10997           const std::string &intermediate_name = buf.string ();
10998
10999           if (cu->language == language_cplus)
11000             canonical_name
11001               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11002                                           &objfile->per_bfd->storage_obstack);
11003
11004           /* If we only computed INTERMEDIATE_NAME, or if
11005              INTERMEDIATE_NAME is already canonical, then we need to
11006              copy it to the appropriate obstack.  */
11007           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11008             name = ((const char *)
11009                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11010                                    intermediate_name.c_str (),
11011                                    intermediate_name.length ()));
11012           else
11013             name = canonical_name;
11014         }
11015     }
11016
11017   return name;
11018 }
11019
11020 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11021    If scope qualifiers are appropriate they will be added.  The result
11022    will be allocated on the storage_obstack, or NULL if the DIE does
11023    not have a name.  NAME may either be from a previous call to
11024    dwarf2_name or NULL.
11025
11026    The output string will be canonicalized (if C++).  */
11027
11028 static const char *
11029 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11030 {
11031   return dwarf2_compute_name (name, die, cu, 0);
11032 }
11033
11034 /* Construct a physname for the given DIE in CU.  NAME may either be
11035    from a previous call to dwarf2_name or NULL.  The result will be
11036    allocated on the objfile_objstack or NULL if the DIE does not have a
11037    name.
11038
11039    The output string will be canonicalized (if C++).  */
11040
11041 static const char *
11042 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11043 {
11044   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11045   const char *retval, *mangled = NULL, *canon = NULL;
11046   int need_copy = 1;
11047
11048   /* In this case dwarf2_compute_name is just a shortcut not building anything
11049      on its own.  */
11050   if (!die_needs_namespace (die, cu))
11051     return dwarf2_compute_name (name, die, cu, 1);
11052
11053   mangled = dw2_linkage_name (die, cu);
11054
11055   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11056      See https://github.com/rust-lang/rust/issues/32925.  */
11057   if (cu->language == language_rust && mangled != NULL
11058       && strchr (mangled, '{') != NULL)
11059     mangled = NULL;
11060
11061   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11062      has computed.  */
11063   gdb::unique_xmalloc_ptr<char> demangled;
11064   if (mangled != NULL)
11065     {
11066
11067       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11068         {
11069           /* Do nothing (do not demangle the symbol name).  */
11070         }
11071       else if (cu->language == language_go)
11072         {
11073           /* This is a lie, but we already lie to the caller new_symbol.
11074              new_symbol assumes we return the mangled name.
11075              This just undoes that lie until things are cleaned up.  */
11076         }
11077       else
11078         {
11079           /* Use DMGL_RET_DROP for C++ template functions to suppress
11080              their return type.  It is easier for GDB users to search
11081              for such functions as `name(params)' than `long name(params)'.
11082              In such case the minimal symbol names do not match the full
11083              symbol names but for template functions there is never a need
11084              to look up their definition from their declaration so
11085              the only disadvantage remains the minimal symbol variant
11086              `long name(params)' does not have the proper inferior type.  */
11087           demangled.reset (gdb_demangle (mangled,
11088                                          (DMGL_PARAMS | DMGL_ANSI
11089                                           | DMGL_RET_DROP)));
11090         }
11091       if (demangled)
11092         canon = demangled.get ();
11093       else
11094         {
11095           canon = mangled;
11096           need_copy = 0;
11097         }
11098     }
11099
11100   if (canon == NULL || check_physname)
11101     {
11102       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11103
11104       if (canon != NULL && strcmp (physname, canon) != 0)
11105         {
11106           /* It may not mean a bug in GDB.  The compiler could also
11107              compute DW_AT_linkage_name incorrectly.  But in such case
11108              GDB would need to be bug-to-bug compatible.  */
11109
11110           complaint (_("Computed physname <%s> does not match demangled <%s> "
11111                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11112                      physname, canon, mangled, sect_offset_str (die->sect_off),
11113                      objfile_name (objfile));
11114
11115           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11116              is available here - over computed PHYSNAME.  It is safer
11117              against both buggy GDB and buggy compilers.  */
11118
11119           retval = canon;
11120         }
11121       else
11122         {
11123           retval = physname;
11124           need_copy = 0;
11125         }
11126     }
11127   else
11128     retval = canon;
11129
11130   if (need_copy)
11131     retval = ((const char *)
11132               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11133                              retval, strlen (retval)));
11134
11135   return retval;
11136 }
11137
11138 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11139    a new symbol for it.
11140
11141    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11142
11143 static int
11144 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11145 {
11146   struct attribute *attr;
11147
11148   /* If the die does not have a name, this is not a namespace
11149      alias.  */
11150   attr = dwarf2_attr (die, DW_AT_name, cu);
11151   if (attr != NULL)
11152     {
11153       int num;
11154       struct die_info *d = die;
11155       struct dwarf2_cu *imported_cu = cu;
11156
11157       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11158          keep inspecting DIEs until we hit the underlying import.  */
11159 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11160       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11161         {
11162           attr = dwarf2_attr (d, DW_AT_import, cu);
11163           if (attr == NULL)
11164             break;
11165
11166           d = follow_die_ref (d, attr, &imported_cu);
11167           if (d->tag != DW_TAG_imported_declaration)
11168             break;
11169         }
11170
11171       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11172         {
11173           complaint (_("DIE at %s has too many recursively imported "
11174                        "declarations"), sect_offset_str (d->sect_off));
11175           return 0;
11176         }
11177
11178       if (attr != NULL)
11179         {
11180           struct type *type;
11181           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11182
11183           type = get_die_type_at_offset (sect_off, cu->per_cu);
11184           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11185             {
11186               /* This declaration is a global namespace alias.  Add
11187                  a symbol for it whose type is the aliased namespace.  */
11188               new_symbol (die, type, cu);
11189               return 1;
11190             }
11191         }
11192     }
11193
11194   return 0;
11195 }
11196
11197 /* Return the using directives repository (global or local?) to use in the
11198    current context for CU.
11199
11200    For Ada, imported declarations can materialize renamings, which *may* be
11201    global.  However it is impossible (for now?) in DWARF to distinguish
11202    "external" imported declarations and "static" ones.  As all imported
11203    declarations seem to be static in all other languages, make them all CU-wide
11204    global only in Ada.  */
11205
11206 static struct using_direct **
11207 using_directives (struct dwarf2_cu *cu)
11208 {
11209   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11210     return cu->builder->get_global_using_directives ();
11211   else
11212     return cu->builder->get_local_using_directives ();
11213 }
11214
11215 /* Read the import statement specified by the given die and record it.  */
11216
11217 static void
11218 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11219 {
11220   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11221   struct attribute *import_attr;
11222   struct die_info *imported_die, *child_die;
11223   struct dwarf2_cu *imported_cu;
11224   const char *imported_name;
11225   const char *imported_name_prefix;
11226   const char *canonical_name;
11227   const char *import_alias;
11228   const char *imported_declaration = NULL;
11229   const char *import_prefix;
11230   std::vector<const char *> excludes;
11231
11232   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11233   if (import_attr == NULL)
11234     {
11235       complaint (_("Tag '%s' has no DW_AT_import"),
11236                  dwarf_tag_name (die->tag));
11237       return;
11238     }
11239
11240   imported_cu = cu;
11241   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11242   imported_name = dwarf2_name (imported_die, imported_cu);
11243   if (imported_name == NULL)
11244     {
11245       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11246
11247         The import in the following code:
11248         namespace A
11249           {
11250             typedef int B;
11251           }
11252
11253         int main ()
11254           {
11255             using A::B;
11256             B b;
11257             return b;
11258           }
11259
11260         ...
11261          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11262             <52>   DW_AT_decl_file   : 1
11263             <53>   DW_AT_decl_line   : 6
11264             <54>   DW_AT_import      : <0x75>
11265          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11266             <59>   DW_AT_name        : B
11267             <5b>   DW_AT_decl_file   : 1
11268             <5c>   DW_AT_decl_line   : 2
11269             <5d>   DW_AT_type        : <0x6e>
11270         ...
11271          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11272             <76>   DW_AT_byte_size   : 4
11273             <77>   DW_AT_encoding    : 5        (signed)
11274
11275         imports the wrong die ( 0x75 instead of 0x58 ).
11276         This case will be ignored until the gcc bug is fixed.  */
11277       return;
11278     }
11279
11280   /* Figure out the local name after import.  */
11281   import_alias = dwarf2_name (die, cu);
11282
11283   /* Figure out where the statement is being imported to.  */
11284   import_prefix = determine_prefix (die, cu);
11285
11286   /* Figure out what the scope of the imported die is and prepend it
11287      to the name of the imported die.  */
11288   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11289
11290   if (imported_die->tag != DW_TAG_namespace
11291       && imported_die->tag != DW_TAG_module)
11292     {
11293       imported_declaration = imported_name;
11294       canonical_name = imported_name_prefix;
11295     }
11296   else if (strlen (imported_name_prefix) > 0)
11297     canonical_name = obconcat (&objfile->objfile_obstack,
11298                                imported_name_prefix,
11299                                (cu->language == language_d ? "." : "::"),
11300                                imported_name, (char *) NULL);
11301   else
11302     canonical_name = imported_name;
11303
11304   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11305     for (child_die = die->child; child_die && child_die->tag;
11306          child_die = sibling_die (child_die))
11307       {
11308         /* DWARF-4: A Fortran use statement with a “rename list” may be
11309            represented by an imported module entry with an import attribute
11310            referring to the module and owned entries corresponding to those
11311            entities that are renamed as part of being imported.  */
11312
11313         if (child_die->tag != DW_TAG_imported_declaration)
11314           {
11315             complaint (_("child DW_TAG_imported_declaration expected "
11316                          "- DIE at %s [in module %s]"),
11317                        sect_offset_str (child_die->sect_off),
11318                        objfile_name (objfile));
11319             continue;
11320           }
11321
11322         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11323         if (import_attr == NULL)
11324           {
11325             complaint (_("Tag '%s' has no DW_AT_import"),
11326                        dwarf_tag_name (child_die->tag));
11327             continue;
11328           }
11329
11330         imported_cu = cu;
11331         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11332                                               &imported_cu);
11333         imported_name = dwarf2_name (imported_die, imported_cu);
11334         if (imported_name == NULL)
11335           {
11336             complaint (_("child DW_TAG_imported_declaration has unknown "
11337                          "imported name - DIE at %s [in module %s]"),
11338                        sect_offset_str (child_die->sect_off),
11339                        objfile_name (objfile));
11340             continue;
11341           }
11342
11343         excludes.push_back (imported_name);
11344
11345         process_die (child_die, cu);
11346       }
11347
11348   add_using_directive (using_directives (cu),
11349                        import_prefix,
11350                        canonical_name,
11351                        import_alias,
11352                        imported_declaration,
11353                        excludes,
11354                        0,
11355                        &objfile->objfile_obstack);
11356 }
11357
11358 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11359    types, but gives them a size of zero.  Starting with version 14,
11360    ICC is compatible with GCC.  */
11361
11362 static int
11363 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11364 {
11365   if (!cu->checked_producer)
11366     check_producer (cu);
11367
11368   return cu->producer_is_icc_lt_14;
11369 }
11370
11371 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11372    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11373    this, it was first present in GCC release 4.3.0.  */
11374
11375 static int
11376 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11377 {
11378   if (!cu->checked_producer)
11379     check_producer (cu);
11380
11381   return cu->producer_is_gcc_lt_4_3;
11382 }
11383
11384 static file_and_directory
11385 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11386 {
11387   file_and_directory res;
11388
11389   /* Find the filename.  Do not use dwarf2_name here, since the filename
11390      is not a source language identifier.  */
11391   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11392   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11393
11394   if (res.comp_dir == NULL
11395       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11396       && IS_ABSOLUTE_PATH (res.name))
11397     {
11398       res.comp_dir_storage = ldirname (res.name);
11399       if (!res.comp_dir_storage.empty ())
11400         res.comp_dir = res.comp_dir_storage.c_str ();
11401     }
11402   if (res.comp_dir != NULL)
11403     {
11404       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11405          directory, get rid of it.  */
11406       const char *cp = strchr (res.comp_dir, ':');
11407
11408       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11409         res.comp_dir = cp + 1;
11410     }
11411
11412   if (res.name == NULL)
11413     res.name = "<unknown>";
11414
11415   return res;
11416 }
11417
11418 /* Handle DW_AT_stmt_list for a compilation unit.
11419    DIE is the DW_TAG_compile_unit die for CU.
11420    COMP_DIR is the compilation directory.  LOWPC is passed to
11421    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11422
11423 static void
11424 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11425                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11426 {
11427   struct dwarf2_per_objfile *dwarf2_per_objfile
11428     = cu->per_cu->dwarf2_per_objfile;
11429   struct objfile *objfile = dwarf2_per_objfile->objfile;
11430   struct attribute *attr;
11431   struct line_header line_header_local;
11432   hashval_t line_header_local_hash;
11433   void **slot;
11434   int decode_mapping;
11435
11436   gdb_assert (! cu->per_cu->is_debug_types);
11437
11438   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11439   if (attr == NULL)
11440     return;
11441
11442   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11443
11444   /* The line header hash table is only created if needed (it exists to
11445      prevent redundant reading of the line table for partial_units).
11446      If we're given a partial_unit, we'll need it.  If we're given a
11447      compile_unit, then use the line header hash table if it's already
11448      created, but don't create one just yet.  */
11449
11450   if (dwarf2_per_objfile->line_header_hash == NULL
11451       && die->tag == DW_TAG_partial_unit)
11452     {
11453       dwarf2_per_objfile->line_header_hash
11454         = htab_create_alloc_ex (127, line_header_hash_voidp,
11455                                 line_header_eq_voidp,
11456                                 free_line_header_voidp,
11457                                 &objfile->objfile_obstack,
11458                                 hashtab_obstack_allocate,
11459                                 dummy_obstack_deallocate);
11460     }
11461
11462   line_header_local.sect_off = line_offset;
11463   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11464   line_header_local_hash = line_header_hash (&line_header_local);
11465   if (dwarf2_per_objfile->line_header_hash != NULL)
11466     {
11467       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11468                                        &line_header_local,
11469                                        line_header_local_hash, NO_INSERT);
11470
11471       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11472          is not present in *SLOT (since if there is something in *SLOT then
11473          it will be for a partial_unit).  */
11474       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11475         {
11476           gdb_assert (*slot != NULL);
11477           cu->line_header = (struct line_header *) *slot;
11478           return;
11479         }
11480     }
11481
11482   /* dwarf_decode_line_header does not yet provide sufficient information.
11483      We always have to call also dwarf_decode_lines for it.  */
11484   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11485   if (lh == NULL)
11486     return;
11487
11488   cu->line_header = lh.release ();
11489   cu->line_header_die_owner = die;
11490
11491   if (dwarf2_per_objfile->line_header_hash == NULL)
11492     slot = NULL;
11493   else
11494     {
11495       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11496                                        &line_header_local,
11497                                        line_header_local_hash, INSERT);
11498       gdb_assert (slot != NULL);
11499     }
11500   if (slot != NULL && *slot == NULL)
11501     {
11502       /* This newly decoded line number information unit will be owned
11503          by line_header_hash hash table.  */
11504       *slot = cu->line_header;
11505       cu->line_header_die_owner = NULL;
11506     }
11507   else
11508     {
11509       /* We cannot free any current entry in (*slot) as that struct line_header
11510          may be already used by multiple CUs.  Create only temporary decoded
11511          line_header for this CU - it may happen at most once for each line
11512          number information unit.  And if we're not using line_header_hash
11513          then this is what we want as well.  */
11514       gdb_assert (die->tag != DW_TAG_partial_unit);
11515     }
11516   decode_mapping = (die->tag != DW_TAG_partial_unit);
11517   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11518                       decode_mapping);
11519
11520 }
11521
11522 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11523
11524 static void
11525 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11526 {
11527   struct dwarf2_per_objfile *dwarf2_per_objfile
11528     = cu->per_cu->dwarf2_per_objfile;
11529   struct objfile *objfile = dwarf2_per_objfile->objfile;
11530   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11531   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11532   CORE_ADDR highpc = ((CORE_ADDR) 0);
11533   struct attribute *attr;
11534   struct die_info *child_die;
11535   CORE_ADDR baseaddr;
11536
11537   prepare_one_comp_unit (cu, die, cu->language);
11538   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11539
11540   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11541
11542   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11543      from finish_block.  */
11544   if (lowpc == ((CORE_ADDR) -1))
11545     lowpc = highpc;
11546   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11547
11548   file_and_directory fnd = find_file_and_directory (die, cu);
11549
11550   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11551      standardised yet.  As a workaround for the language detection we fall
11552      back to the DW_AT_producer string.  */
11553   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11554     cu->language = language_opencl;
11555
11556   /* Similar hack for Go.  */
11557   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11558     set_cu_language (DW_LANG_Go, cu);
11559
11560   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11561
11562   /* Decode line number information if present.  We do this before
11563      processing child DIEs, so that the line header table is available
11564      for DW_AT_decl_file.  */
11565   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11566
11567   /* Process all dies in compilation unit.  */
11568   if (die->child != NULL)
11569     {
11570       child_die = die->child;
11571       while (child_die && child_die->tag)
11572         {
11573           process_die (child_die, cu);
11574           child_die = sibling_die (child_die);
11575         }
11576     }
11577
11578   /* Decode macro information, if present.  Dwarf 2 macro information
11579      refers to information in the line number info statement program
11580      header, so we can only read it if we've read the header
11581      successfully.  */
11582   attr = dwarf2_attr (die, DW_AT_macros, cu);
11583   if (attr == NULL)
11584     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11585   if (attr && cu->line_header)
11586     {
11587       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11588         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11589
11590       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11591     }
11592   else
11593     {
11594       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11595       if (attr && cu->line_header)
11596         {
11597           unsigned int macro_offset = DW_UNSND (attr);
11598
11599           dwarf_decode_macros (cu, macro_offset, 0);
11600         }
11601     }
11602 }
11603
11604 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11605    Create the set of symtabs used by this TU, or if this TU is sharing
11606    symtabs with another TU and the symtabs have already been created
11607    then restore those symtabs in the line header.
11608    We don't need the pc/line-number mapping for type units.  */
11609
11610 static void
11611 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11612 {
11613   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11614   struct type_unit_group *tu_group;
11615   int first_time;
11616   struct attribute *attr;
11617   unsigned int i;
11618   struct signatured_type *sig_type;
11619
11620   gdb_assert (per_cu->is_debug_types);
11621   sig_type = (struct signatured_type *) per_cu;
11622
11623   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11624
11625   /* If we're using .gdb_index (includes -readnow) then
11626      per_cu->type_unit_group may not have been set up yet.  */
11627   if (sig_type->type_unit_group == NULL)
11628     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11629   tu_group = sig_type->type_unit_group;
11630
11631   /* If we've already processed this stmt_list there's no real need to
11632      do it again, we could fake it and just recreate the part we need
11633      (file name,index -> symtab mapping).  If data shows this optimization
11634      is useful we can do it then.  */
11635   first_time = tu_group->compunit_symtab == NULL;
11636
11637   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11638      debug info.  */
11639   line_header_up lh;
11640   if (attr != NULL)
11641     {
11642       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11643       lh = dwarf_decode_line_header (line_offset, cu);
11644     }
11645   if (lh == NULL)
11646     {
11647       if (first_time)
11648         dwarf2_start_symtab (cu, "", NULL, 0);
11649       else
11650         {
11651           gdb_assert (tu_group->symtabs == NULL);
11652           gdb_assert (cu->builder == nullptr);
11653           struct compunit_symtab *cust = tu_group->compunit_symtab;
11654           cu->builder.reset (new struct buildsym_compunit
11655                              (COMPUNIT_OBJFILE (cust), "",
11656                               COMPUNIT_DIRNAME (cust),
11657                               compunit_language (cust),
11658                               0, cust));
11659         }
11660       return;
11661     }
11662
11663   cu->line_header = lh.release ();
11664   cu->line_header_die_owner = die;
11665
11666   if (first_time)
11667     {
11668       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11669
11670       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11671          still initializing it, and our caller (a few levels up)
11672          process_full_type_unit still needs to know if this is the first
11673          time.  */
11674
11675       tu_group->num_symtabs = cu->line_header->file_names.size ();
11676       tu_group->symtabs = XNEWVEC (struct symtab *,
11677                                    cu->line_header->file_names.size ());
11678
11679       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11680         {
11681           file_entry &fe = cu->line_header->file_names[i];
11682
11683           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11684
11685           if (cu->builder->get_current_subfile ()->symtab == NULL)
11686             {
11687               /* NOTE: start_subfile will recognize when it's been
11688                  passed a file it has already seen.  So we can't
11689                  assume there's a simple mapping from
11690                  cu->line_header->file_names to subfiles, plus
11691                  cu->line_header->file_names may contain dups.  */
11692               cu->builder->get_current_subfile ()->symtab
11693                 = allocate_symtab (cust,
11694                                    cu->builder->get_current_subfile ()->name);
11695             }
11696
11697           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11698           tu_group->symtabs[i] = fe.symtab;
11699         }
11700     }
11701   else
11702     {
11703       gdb_assert (cu->builder == nullptr);
11704       struct compunit_symtab *cust = tu_group->compunit_symtab;
11705       cu->builder.reset (new struct buildsym_compunit
11706                          (COMPUNIT_OBJFILE (cust), "",
11707                           COMPUNIT_DIRNAME (cust),
11708                           compunit_language (cust),
11709                           0, cust));
11710
11711       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11712         {
11713           file_entry &fe = cu->line_header->file_names[i];
11714
11715           fe.symtab = tu_group->symtabs[i];
11716         }
11717     }
11718
11719   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11720      so they don't have a "real" (so to speak) symtab anyway.
11721      There is later code that will assign the main symtab to all symbols
11722      that don't have one.  We need to handle the case of a symbol with a
11723      missing symtab (DW_AT_decl_file) anyway.  */
11724 }
11725
11726 /* Process DW_TAG_type_unit.
11727    For TUs we want to skip the first top level sibling if it's not the
11728    actual type being defined by this TU.  In this case the first top
11729    level sibling is there to provide context only.  */
11730
11731 static void
11732 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11733 {
11734   struct die_info *child_die;
11735
11736   prepare_one_comp_unit (cu, die, language_minimal);
11737
11738   /* Initialize (or reinitialize) the machinery for building symtabs.
11739      We do this before processing child DIEs, so that the line header table
11740      is available for DW_AT_decl_file.  */
11741   setup_type_unit_groups (die, cu);
11742
11743   if (die->child != NULL)
11744     {
11745       child_die = die->child;
11746       while (child_die && child_die->tag)
11747         {
11748           process_die (child_die, cu);
11749           child_die = sibling_die (child_die);
11750         }
11751     }
11752 }
11753 \f
11754 /* DWO/DWP files.
11755
11756    http://gcc.gnu.org/wiki/DebugFission
11757    http://gcc.gnu.org/wiki/DebugFissionDWP
11758
11759    To simplify handling of both DWO files ("object" files with the DWARF info)
11760    and DWP files (a file with the DWOs packaged up into one file), we treat
11761    DWP files as having a collection of virtual DWO files.  */
11762
11763 static hashval_t
11764 hash_dwo_file (const void *item)
11765 {
11766   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11767   hashval_t hash;
11768
11769   hash = htab_hash_string (dwo_file->dwo_name);
11770   if (dwo_file->comp_dir != NULL)
11771     hash += htab_hash_string (dwo_file->comp_dir);
11772   return hash;
11773 }
11774
11775 static int
11776 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11777 {
11778   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11779   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11780
11781   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11782     return 0;
11783   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11784     return lhs->comp_dir == rhs->comp_dir;
11785   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11786 }
11787
11788 /* Allocate a hash table for DWO files.  */
11789
11790 static htab_t
11791 allocate_dwo_file_hash_table (struct objfile *objfile)
11792 {
11793   return htab_create_alloc_ex (41,
11794                                hash_dwo_file,
11795                                eq_dwo_file,
11796                                NULL,
11797                                &objfile->objfile_obstack,
11798                                hashtab_obstack_allocate,
11799                                dummy_obstack_deallocate);
11800 }
11801
11802 /* Lookup DWO file DWO_NAME.  */
11803
11804 static void **
11805 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11806                       const char *dwo_name,
11807                       const char *comp_dir)
11808 {
11809   struct dwo_file find_entry;
11810   void **slot;
11811
11812   if (dwarf2_per_objfile->dwo_files == NULL)
11813     dwarf2_per_objfile->dwo_files
11814       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11815
11816   memset (&find_entry, 0, sizeof (find_entry));
11817   find_entry.dwo_name = dwo_name;
11818   find_entry.comp_dir = comp_dir;
11819   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11820
11821   return slot;
11822 }
11823
11824 static hashval_t
11825 hash_dwo_unit (const void *item)
11826 {
11827   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11828
11829   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11830   return dwo_unit->signature;
11831 }
11832
11833 static int
11834 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11835 {
11836   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11837   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11838
11839   /* The signature is assumed to be unique within the DWO file.
11840      So while object file CU dwo_id's always have the value zero,
11841      that's OK, assuming each object file DWO file has only one CU,
11842      and that's the rule for now.  */
11843   return lhs->signature == rhs->signature;
11844 }
11845
11846 /* Allocate a hash table for DWO CUs,TUs.
11847    There is one of these tables for each of CUs,TUs for each DWO file.  */
11848
11849 static htab_t
11850 allocate_dwo_unit_table (struct objfile *objfile)
11851 {
11852   /* Start out with a pretty small number.
11853      Generally DWO files contain only one CU and maybe some TUs.  */
11854   return htab_create_alloc_ex (3,
11855                                hash_dwo_unit,
11856                                eq_dwo_unit,
11857                                NULL,
11858                                &objfile->objfile_obstack,
11859                                hashtab_obstack_allocate,
11860                                dummy_obstack_deallocate);
11861 }
11862
11863 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11864
11865 struct create_dwo_cu_data
11866 {
11867   struct dwo_file *dwo_file;
11868   struct dwo_unit dwo_unit;
11869 };
11870
11871 /* die_reader_func for create_dwo_cu.  */
11872
11873 static void
11874 create_dwo_cu_reader (const struct die_reader_specs *reader,
11875                       const gdb_byte *info_ptr,
11876                       struct die_info *comp_unit_die,
11877                       int has_children,
11878                       void *datap)
11879 {
11880   struct dwarf2_cu *cu = reader->cu;
11881   sect_offset sect_off = cu->per_cu->sect_off;
11882   struct dwarf2_section_info *section = cu->per_cu->section;
11883   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11884   struct dwo_file *dwo_file = data->dwo_file;
11885   struct dwo_unit *dwo_unit = &data->dwo_unit;
11886   struct attribute *attr;
11887
11888   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11889   if (attr == NULL)
11890     {
11891       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11892                    " its dwo_id [in module %s]"),
11893                  sect_offset_str (sect_off), dwo_file->dwo_name);
11894       return;
11895     }
11896
11897   dwo_unit->dwo_file = dwo_file;
11898   dwo_unit->signature = DW_UNSND (attr);
11899   dwo_unit->section = section;
11900   dwo_unit->sect_off = sect_off;
11901   dwo_unit->length = cu->per_cu->length;
11902
11903   if (dwarf_read_debug)
11904     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11905                         sect_offset_str (sect_off),
11906                         hex_string (dwo_unit->signature));
11907 }
11908
11909 /* Create the dwo_units for the CUs in a DWO_FILE.
11910    Note: This function processes DWO files only, not DWP files.  */
11911
11912 static void
11913 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11914                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11915                        htab_t &cus_htab)
11916 {
11917   struct objfile *objfile = dwarf2_per_objfile->objfile;
11918   const gdb_byte *info_ptr, *end_ptr;
11919
11920   dwarf2_read_section (objfile, &section);
11921   info_ptr = section.buffer;
11922
11923   if (info_ptr == NULL)
11924     return;
11925
11926   if (dwarf_read_debug)
11927     {
11928       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11929                           get_section_name (&section),
11930                           get_section_file_name (&section));
11931     }
11932
11933   end_ptr = info_ptr + section.size;
11934   while (info_ptr < end_ptr)
11935     {
11936       struct dwarf2_per_cu_data per_cu;
11937       struct create_dwo_cu_data create_dwo_cu_data;
11938       struct dwo_unit *dwo_unit;
11939       void **slot;
11940       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11941
11942       memset (&create_dwo_cu_data.dwo_unit, 0,
11943               sizeof (create_dwo_cu_data.dwo_unit));
11944       memset (&per_cu, 0, sizeof (per_cu));
11945       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11946       per_cu.is_debug_types = 0;
11947       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11948       per_cu.section = &section;
11949       create_dwo_cu_data.dwo_file = &dwo_file;
11950
11951       init_cutu_and_read_dies_no_follow (
11952           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11953       info_ptr += per_cu.length;
11954
11955       // If the unit could not be parsed, skip it.
11956       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11957         continue;
11958
11959       if (cus_htab == NULL)
11960         cus_htab = allocate_dwo_unit_table (objfile);
11961
11962       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11963       *dwo_unit = create_dwo_cu_data.dwo_unit;
11964       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11965       gdb_assert (slot != NULL);
11966       if (*slot != NULL)
11967         {
11968           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11969           sect_offset dup_sect_off = dup_cu->sect_off;
11970
11971           complaint (_("debug cu entry at offset %s is duplicate to"
11972                        " the entry at offset %s, signature %s"),
11973                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11974                      hex_string (dwo_unit->signature));
11975         }
11976       *slot = (void *)dwo_unit;
11977     }
11978 }
11979
11980 /* DWP file .debug_{cu,tu}_index section format:
11981    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11982
11983    DWP Version 1:
11984
11985    Both index sections have the same format, and serve to map a 64-bit
11986    signature to a set of section numbers.  Each section begins with a header,
11987    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11988    indexes, and a pool of 32-bit section numbers.  The index sections will be
11989    aligned at 8-byte boundaries in the file.
11990
11991    The index section header consists of:
11992
11993     V, 32 bit version number
11994     -, 32 bits unused
11995     N, 32 bit number of compilation units or type units in the index
11996     M, 32 bit number of slots in the hash table
11997
11998    Numbers are recorded using the byte order of the application binary.
11999
12000    The hash table begins at offset 16 in the section, and consists of an array
12001    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12002    order of the application binary).  Unused slots in the hash table are 0.
12003    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12004
12005    The parallel table begins immediately after the hash table
12006    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12007    array of 32-bit indexes (using the byte order of the application binary),
12008    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12009    table contains a 32-bit index into the pool of section numbers.  For unused
12010    hash table slots, the corresponding entry in the parallel table will be 0.
12011
12012    The pool of section numbers begins immediately following the hash table
12013    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12014    section numbers consists of an array of 32-bit words (using the byte order
12015    of the application binary).  Each item in the array is indexed starting
12016    from 0.  The hash table entry provides the index of the first section
12017    number in the set.  Additional section numbers in the set follow, and the
12018    set is terminated by a 0 entry (section number 0 is not used in ELF).
12019
12020    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12021    section must be the first entry in the set, and the .debug_abbrev.dwo must
12022    be the second entry. Other members of the set may follow in any order.
12023
12024    ---
12025
12026    DWP Version 2:
12027
12028    DWP Version 2 combines all the .debug_info, etc. sections into one,
12029    and the entries in the index tables are now offsets into these sections.
12030    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12031    section.
12032
12033    Index Section Contents:
12034     Header
12035     Hash Table of Signatures   dwp_hash_table.hash_table
12036     Parallel Table of Indices  dwp_hash_table.unit_table
12037     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12038     Table of Section Sizes     dwp_hash_table.v2.sizes
12039
12040    The index section header consists of:
12041
12042     V, 32 bit version number
12043     L, 32 bit number of columns in the table of section offsets
12044     N, 32 bit number of compilation units or type units in the index
12045     M, 32 bit number of slots in the hash table
12046
12047    Numbers are recorded using the byte order of the application binary.
12048
12049    The hash table has the same format as version 1.
12050    The parallel table of indices has the same format as version 1,
12051    except that the entries are origin-1 indices into the table of sections
12052    offsets and the table of section sizes.
12053
12054    The table of offsets begins immediately following the parallel table
12055    (at offset 16 + 12 * M from the beginning of the section).  The table is
12056    a two-dimensional array of 32-bit words (using the byte order of the
12057    application binary), with L columns and N+1 rows, in row-major order.
12058    Each row in the array is indexed starting from 0.  The first row provides
12059    a key to the remaining rows: each column in this row provides an identifier
12060    for a debug section, and the offsets in the same column of subsequent rows
12061    refer to that section.  The section identifiers are:
12062
12063     DW_SECT_INFO         1  .debug_info.dwo
12064     DW_SECT_TYPES        2  .debug_types.dwo
12065     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12066     DW_SECT_LINE         4  .debug_line.dwo
12067     DW_SECT_LOC          5  .debug_loc.dwo
12068     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12069     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12070     DW_SECT_MACRO        8  .debug_macro.dwo
12071
12072    The offsets provided by the CU and TU index sections are the base offsets
12073    for the contributions made by each CU or TU to the corresponding section
12074    in the package file.  Each CU and TU header contains an abbrev_offset
12075    field, used to find the abbreviations table for that CU or TU within the
12076    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12077    be interpreted as relative to the base offset given in the index section.
12078    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12079    should be interpreted as relative to the base offset for .debug_line.dwo,
12080    and offsets into other debug sections obtained from DWARF attributes should
12081    also be interpreted as relative to the corresponding base offset.
12082
12083    The table of sizes begins immediately following the table of offsets.
12084    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12085    with L columns and N rows, in row-major order.  Each row in the array is
12086    indexed starting from 1 (row 0 is shared by the two tables).
12087
12088    ---
12089
12090    Hash table lookup is handled the same in version 1 and 2:
12091
12092    We assume that N and M will not exceed 2^32 - 1.
12093    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12094
12095    Given a 64-bit compilation unit signature or a type signature S, an entry
12096    in the hash table is located as follows:
12097
12098    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12099       the low-order k bits all set to 1.
12100
12101    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12102
12103    3) If the hash table entry at index H matches the signature, use that
12104       entry.  If the hash table entry at index H is unused (all zeroes),
12105       terminate the search: the signature is not present in the table.
12106
12107    4) Let H = (H + H') modulo M. Repeat at Step 3.
12108
12109    Because M > N and H' and M are relatively prime, the search is guaranteed
12110    to stop at an unused slot or find the match.  */
12111
12112 /* Create a hash table to map DWO IDs to their CU/TU entry in
12113    .debug_{info,types}.dwo in DWP_FILE.
12114    Returns NULL if there isn't one.
12115    Note: This function processes DWP files only, not DWO files.  */
12116
12117 static struct dwp_hash_table *
12118 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12119                        struct dwp_file *dwp_file, int is_debug_types)
12120 {
12121   struct objfile *objfile = dwarf2_per_objfile->objfile;
12122   bfd *dbfd = dwp_file->dbfd.get ();
12123   const gdb_byte *index_ptr, *index_end;
12124   struct dwarf2_section_info *index;
12125   uint32_t version, nr_columns, nr_units, nr_slots;
12126   struct dwp_hash_table *htab;
12127
12128   if (is_debug_types)
12129     index = &dwp_file->sections.tu_index;
12130   else
12131     index = &dwp_file->sections.cu_index;
12132
12133   if (dwarf2_section_empty_p (index))
12134     return NULL;
12135   dwarf2_read_section (objfile, index);
12136
12137   index_ptr = index->buffer;
12138   index_end = index_ptr + index->size;
12139
12140   version = read_4_bytes (dbfd, index_ptr);
12141   index_ptr += 4;
12142   if (version == 2)
12143     nr_columns = read_4_bytes (dbfd, index_ptr);
12144   else
12145     nr_columns = 0;
12146   index_ptr += 4;
12147   nr_units = read_4_bytes (dbfd, index_ptr);
12148   index_ptr += 4;
12149   nr_slots = read_4_bytes (dbfd, index_ptr);
12150   index_ptr += 4;
12151
12152   if (version != 1 && version != 2)
12153     {
12154       error (_("Dwarf Error: unsupported DWP file version (%s)"
12155                " [in module %s]"),
12156              pulongest (version), dwp_file->name);
12157     }
12158   if (nr_slots != (nr_slots & -nr_slots))
12159     {
12160       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12161                " is not power of 2 [in module %s]"),
12162              pulongest (nr_slots), dwp_file->name);
12163     }
12164
12165   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12166   htab->version = version;
12167   htab->nr_columns = nr_columns;
12168   htab->nr_units = nr_units;
12169   htab->nr_slots = nr_slots;
12170   htab->hash_table = index_ptr;
12171   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12172
12173   /* Exit early if the table is empty.  */
12174   if (nr_slots == 0 || nr_units == 0
12175       || (version == 2 && nr_columns == 0))
12176     {
12177       /* All must be zero.  */
12178       if (nr_slots != 0 || nr_units != 0
12179           || (version == 2 && nr_columns != 0))
12180         {
12181           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12182                        " all zero [in modules %s]"),
12183                      dwp_file->name);
12184         }
12185       return htab;
12186     }
12187
12188   if (version == 1)
12189     {
12190       htab->section_pool.v1.indices =
12191         htab->unit_table + sizeof (uint32_t) * nr_slots;
12192       /* It's harder to decide whether the section is too small in v1.
12193          V1 is deprecated anyway so we punt.  */
12194     }
12195   else
12196     {
12197       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12198       int *ids = htab->section_pool.v2.section_ids;
12199       size_t sizeof_ids = sizeof (htab->section_pool.v2.section_ids);
12200       /* Reverse map for error checking.  */
12201       int ids_seen[DW_SECT_MAX + 1];
12202       int i;
12203
12204       if (nr_columns < 2)
12205         {
12206           error (_("Dwarf Error: bad DWP hash table, too few columns"
12207                    " in section table [in module %s]"),
12208                  dwp_file->name);
12209         }
12210       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12211         {
12212           error (_("Dwarf Error: bad DWP hash table, too many columns"
12213                    " in section table [in module %s]"),
12214                  dwp_file->name);
12215         }
12216       memset (ids, 255, sizeof_ids);
12217       memset (ids_seen, 255, sizeof (ids_seen));
12218       for (i = 0; i < nr_columns; ++i)
12219         {
12220           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12221
12222           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12223             {
12224               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12225                        " in section table [in module %s]"),
12226                      id, dwp_file->name);
12227             }
12228           if (ids_seen[id] != -1)
12229             {
12230               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12231                        " id %d in section table [in module %s]"),
12232                      id, dwp_file->name);
12233             }
12234           ids_seen[id] = i;
12235           ids[i] = id;
12236         }
12237       /* Must have exactly one info or types section.  */
12238       if (((ids_seen[DW_SECT_INFO] != -1)
12239            + (ids_seen[DW_SECT_TYPES] != -1))
12240           != 1)
12241         {
12242           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12243                    " DWO info/types section [in module %s]"),
12244                  dwp_file->name);
12245         }
12246       /* Must have an abbrev section.  */
12247       if (ids_seen[DW_SECT_ABBREV] == -1)
12248         {
12249           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12250                    " section [in module %s]"),
12251                  dwp_file->name);
12252         }
12253       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12254       htab->section_pool.v2.sizes =
12255         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12256                                          * nr_units * nr_columns);
12257       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12258                                           * nr_units * nr_columns))
12259           > index_end)
12260         {
12261           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12262                    " [in module %s]"),
12263                  dwp_file->name);
12264         }
12265     }
12266
12267   return htab;
12268 }
12269
12270 /* Update SECTIONS with the data from SECTP.
12271
12272    This function is like the other "locate" section routines that are
12273    passed to bfd_map_over_sections, but in this context the sections to
12274    read comes from the DWP V1 hash table, not the full ELF section table.
12275
12276    The result is non-zero for success, or zero if an error was found.  */
12277
12278 static int
12279 locate_v1_virtual_dwo_sections (asection *sectp,
12280                                 struct virtual_v1_dwo_sections *sections)
12281 {
12282   const struct dwop_section_names *names = &dwop_section_names;
12283
12284   if (section_is_p (sectp->name, &names->abbrev_dwo))
12285     {
12286       /* There can be only one.  */
12287       if (sections->abbrev.s.section != NULL)
12288         return 0;
12289       sections->abbrev.s.section = sectp;
12290       sections->abbrev.size = bfd_get_section_size (sectp);
12291     }
12292   else if (section_is_p (sectp->name, &names->info_dwo)
12293            || section_is_p (sectp->name, &names->types_dwo))
12294     {
12295       /* There can be only one.  */
12296       if (sections->info_or_types.s.section != NULL)
12297         return 0;
12298       sections->info_or_types.s.section = sectp;
12299       sections->info_or_types.size = bfd_get_section_size (sectp);
12300     }
12301   else if (section_is_p (sectp->name, &names->line_dwo))
12302     {
12303       /* There can be only one.  */
12304       if (sections->line.s.section != NULL)
12305         return 0;
12306       sections->line.s.section = sectp;
12307       sections->line.size = bfd_get_section_size (sectp);
12308     }
12309   else if (section_is_p (sectp->name, &names->loc_dwo))
12310     {
12311       /* There can be only one.  */
12312       if (sections->loc.s.section != NULL)
12313         return 0;
12314       sections->loc.s.section = sectp;
12315       sections->loc.size = bfd_get_section_size (sectp);
12316     }
12317   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12318     {
12319       /* There can be only one.  */
12320       if (sections->macinfo.s.section != NULL)
12321         return 0;
12322       sections->macinfo.s.section = sectp;
12323       sections->macinfo.size = bfd_get_section_size (sectp);
12324     }
12325   else if (section_is_p (sectp->name, &names->macro_dwo))
12326     {
12327       /* There can be only one.  */
12328       if (sections->macro.s.section != NULL)
12329         return 0;
12330       sections->macro.s.section = sectp;
12331       sections->macro.size = bfd_get_section_size (sectp);
12332     }
12333   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12334     {
12335       /* There can be only one.  */
12336       if (sections->str_offsets.s.section != NULL)
12337         return 0;
12338       sections->str_offsets.s.section = sectp;
12339       sections->str_offsets.size = bfd_get_section_size (sectp);
12340     }
12341   else
12342     {
12343       /* No other kind of section is valid.  */
12344       return 0;
12345     }
12346
12347   return 1;
12348 }
12349
12350 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12351    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12352    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12353    This is for DWP version 1 files.  */
12354
12355 static struct dwo_unit *
12356 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12357                            struct dwp_file *dwp_file,
12358                            uint32_t unit_index,
12359                            const char *comp_dir,
12360                            ULONGEST signature, int is_debug_types)
12361 {
12362   struct objfile *objfile = dwarf2_per_objfile->objfile;
12363   const struct dwp_hash_table *dwp_htab =
12364     is_debug_types ? dwp_file->tus : dwp_file->cus;
12365   bfd *dbfd = dwp_file->dbfd.get ();
12366   const char *kind = is_debug_types ? "TU" : "CU";
12367   struct dwo_file *dwo_file;
12368   struct dwo_unit *dwo_unit;
12369   struct virtual_v1_dwo_sections sections;
12370   void **dwo_file_slot;
12371   int i;
12372
12373   gdb_assert (dwp_file->version == 1);
12374
12375   if (dwarf_read_debug)
12376     {
12377       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12378                           kind,
12379                           pulongest (unit_index), hex_string (signature),
12380                           dwp_file->name);
12381     }
12382
12383   /* Fetch the sections of this DWO unit.
12384      Put a limit on the number of sections we look for so that bad data
12385      doesn't cause us to loop forever.  */
12386
12387 #define MAX_NR_V1_DWO_SECTIONS \
12388   (1 /* .debug_info or .debug_types */ \
12389    + 1 /* .debug_abbrev */ \
12390    + 1 /* .debug_line */ \
12391    + 1 /* .debug_loc */ \
12392    + 1 /* .debug_str_offsets */ \
12393    + 1 /* .debug_macro or .debug_macinfo */ \
12394    + 1 /* trailing zero */)
12395
12396   memset (&sections, 0, sizeof (sections));
12397
12398   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12399     {
12400       asection *sectp;
12401       uint32_t section_nr =
12402         read_4_bytes (dbfd,
12403                       dwp_htab->section_pool.v1.indices
12404                       + (unit_index + i) * sizeof (uint32_t));
12405
12406       if (section_nr == 0)
12407         break;
12408       if (section_nr >= dwp_file->num_sections)
12409         {
12410           error (_("Dwarf Error: bad DWP hash table, section number too large"
12411                    " [in module %s]"),
12412                  dwp_file->name);
12413         }
12414
12415       sectp = dwp_file->elf_sections[section_nr];
12416       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12417         {
12418           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12419                    " [in module %s]"),
12420                  dwp_file->name);
12421         }
12422     }
12423
12424   if (i < 2
12425       || dwarf2_section_empty_p (&sections.info_or_types)
12426       || dwarf2_section_empty_p (&sections.abbrev))
12427     {
12428       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12429                " [in module %s]"),
12430              dwp_file->name);
12431     }
12432   if (i == MAX_NR_V1_DWO_SECTIONS)
12433     {
12434       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12435                " [in module %s]"),
12436              dwp_file->name);
12437     }
12438
12439   /* It's easier for the rest of the code if we fake a struct dwo_file and
12440      have dwo_unit "live" in that.  At least for now.
12441
12442      The DWP file can be made up of a random collection of CUs and TUs.
12443      However, for each CU + set of TUs that came from the same original DWO
12444      file, we can combine them back into a virtual DWO file to save space
12445      (fewer struct dwo_file objects to allocate).  Remember that for really
12446      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12447
12448   std::string virtual_dwo_name =
12449     string_printf ("virtual-dwo/%d-%d-%d-%d",
12450                    get_section_id (&sections.abbrev),
12451                    get_section_id (&sections.line),
12452                    get_section_id (&sections.loc),
12453                    get_section_id (&sections.str_offsets));
12454   /* Can we use an existing virtual DWO file?  */
12455   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12456                                         virtual_dwo_name.c_str (),
12457                                         comp_dir);
12458   /* Create one if necessary.  */
12459   if (*dwo_file_slot == NULL)
12460     {
12461       if (dwarf_read_debug)
12462         {
12463           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12464                               virtual_dwo_name.c_str ());
12465         }
12466       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12467       dwo_file->dwo_name
12468         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12469                                         virtual_dwo_name.c_str (),
12470                                         virtual_dwo_name.size ());
12471       dwo_file->comp_dir = comp_dir;
12472       dwo_file->sections.abbrev = sections.abbrev;
12473       dwo_file->sections.line = sections.line;
12474       dwo_file->sections.loc = sections.loc;
12475       dwo_file->sections.macinfo = sections.macinfo;
12476       dwo_file->sections.macro = sections.macro;
12477       dwo_file->sections.str_offsets = sections.str_offsets;
12478       /* The "str" section is global to the entire DWP file.  */
12479       dwo_file->sections.str = dwp_file->sections.str;
12480       /* The info or types section is assigned below to dwo_unit,
12481          there's no need to record it in dwo_file.
12482          Also, we can't simply record type sections in dwo_file because
12483          we record a pointer into the vector in dwo_unit.  As we collect more
12484          types we'll grow the vector and eventually have to reallocate space
12485          for it, invalidating all copies of pointers into the previous
12486          contents.  */
12487       *dwo_file_slot = dwo_file;
12488     }
12489   else
12490     {
12491       if (dwarf_read_debug)
12492         {
12493           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12494                               virtual_dwo_name.c_str ());
12495         }
12496       dwo_file = (struct dwo_file *) *dwo_file_slot;
12497     }
12498
12499   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12500   dwo_unit->dwo_file = dwo_file;
12501   dwo_unit->signature = signature;
12502   dwo_unit->section =
12503     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12504   *dwo_unit->section = sections.info_or_types;
12505   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12506
12507   return dwo_unit;
12508 }
12509
12510 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12511    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12512    piece within that section used by a TU/CU, return a virtual section
12513    of just that piece.  */
12514
12515 static struct dwarf2_section_info
12516 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12517                        struct dwarf2_section_info *section,
12518                        bfd_size_type offset, bfd_size_type size)
12519 {
12520   struct dwarf2_section_info result;
12521   asection *sectp;
12522
12523   gdb_assert (section != NULL);
12524   gdb_assert (!section->is_virtual);
12525
12526   memset (&result, 0, sizeof (result));
12527   result.s.containing_section = section;
12528   result.is_virtual = 1;
12529
12530   if (size == 0)
12531     return result;
12532
12533   sectp = get_section_bfd_section (section);
12534
12535   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12536      bounds of the real section.  This is a pretty-rare event, so just
12537      flag an error (easier) instead of a warning and trying to cope.  */
12538   if (sectp == NULL
12539       || offset + size > bfd_get_section_size (sectp))
12540     {
12541       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12542                " in section %s [in module %s]"),
12543              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12544              objfile_name (dwarf2_per_objfile->objfile));
12545     }
12546
12547   result.virtual_offset = offset;
12548   result.size = size;
12549   return result;
12550 }
12551
12552 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12553    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12554    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12555    This is for DWP version 2 files.  */
12556
12557 static struct dwo_unit *
12558 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12559                            struct dwp_file *dwp_file,
12560                            uint32_t unit_index,
12561                            const char *comp_dir,
12562                            ULONGEST signature, int is_debug_types)
12563 {
12564   struct objfile *objfile = dwarf2_per_objfile->objfile;
12565   const struct dwp_hash_table *dwp_htab =
12566     is_debug_types ? dwp_file->tus : dwp_file->cus;
12567   bfd *dbfd = dwp_file->dbfd.get ();
12568   const char *kind = is_debug_types ? "TU" : "CU";
12569   struct dwo_file *dwo_file;
12570   struct dwo_unit *dwo_unit;
12571   struct virtual_v2_dwo_sections sections;
12572   void **dwo_file_slot;
12573   int i;
12574
12575   gdb_assert (dwp_file->version == 2);
12576
12577   if (dwarf_read_debug)
12578     {
12579       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12580                           kind,
12581                           pulongest (unit_index), hex_string (signature),
12582                           dwp_file->name);
12583     }
12584
12585   /* Fetch the section offsets of this DWO unit.  */
12586
12587   memset (&sections, 0, sizeof (sections));
12588
12589   for (i = 0; i < dwp_htab->nr_columns; ++i)
12590     {
12591       uint32_t offset = read_4_bytes (dbfd,
12592                                       dwp_htab->section_pool.v2.offsets
12593                                       + (((unit_index - 1) * dwp_htab->nr_columns
12594                                           + i)
12595                                          * sizeof (uint32_t)));
12596       uint32_t size = read_4_bytes (dbfd,
12597                                     dwp_htab->section_pool.v2.sizes
12598                                     + (((unit_index - 1) * dwp_htab->nr_columns
12599                                         + i)
12600                                        * sizeof (uint32_t)));
12601
12602       switch (dwp_htab->section_pool.v2.section_ids[i])
12603         {
12604         case DW_SECT_INFO:
12605         case DW_SECT_TYPES:
12606           sections.info_or_types_offset = offset;
12607           sections.info_or_types_size = size;
12608           break;
12609         case DW_SECT_ABBREV:
12610           sections.abbrev_offset = offset;
12611           sections.abbrev_size = size;
12612           break;
12613         case DW_SECT_LINE:
12614           sections.line_offset = offset;
12615           sections.line_size = size;
12616           break;
12617         case DW_SECT_LOC:
12618           sections.loc_offset = offset;
12619           sections.loc_size = size;
12620           break;
12621         case DW_SECT_STR_OFFSETS:
12622           sections.str_offsets_offset = offset;
12623           sections.str_offsets_size = size;
12624           break;
12625         case DW_SECT_MACINFO:
12626           sections.macinfo_offset = offset;
12627           sections.macinfo_size = size;
12628           break;
12629         case DW_SECT_MACRO:
12630           sections.macro_offset = offset;
12631           sections.macro_size = size;
12632           break;
12633         }
12634     }
12635
12636   /* It's easier for the rest of the code if we fake a struct dwo_file and
12637      have dwo_unit "live" in that.  At least for now.
12638
12639      The DWP file can be made up of a random collection of CUs and TUs.
12640      However, for each CU + set of TUs that came from the same original DWO
12641      file, we can combine them back into a virtual DWO file to save space
12642      (fewer struct dwo_file objects to allocate).  Remember that for really
12643      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12644
12645   std::string virtual_dwo_name =
12646     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12647                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12648                    (long) (sections.line_size ? sections.line_offset : 0),
12649                    (long) (sections.loc_size ? sections.loc_offset : 0),
12650                    (long) (sections.str_offsets_size
12651                            ? sections.str_offsets_offset : 0));
12652   /* Can we use an existing virtual DWO file?  */
12653   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12654                                         virtual_dwo_name.c_str (),
12655                                         comp_dir);
12656   /* Create one if necessary.  */
12657   if (*dwo_file_slot == NULL)
12658     {
12659       if (dwarf_read_debug)
12660         {
12661           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12662                               virtual_dwo_name.c_str ());
12663         }
12664       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12665       dwo_file->dwo_name
12666         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12667                                         virtual_dwo_name.c_str (),
12668                                         virtual_dwo_name.size ());
12669       dwo_file->comp_dir = comp_dir;
12670       dwo_file->sections.abbrev =
12671         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12672                                sections.abbrev_offset, sections.abbrev_size);
12673       dwo_file->sections.line =
12674         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12675                                sections.line_offset, sections.line_size);
12676       dwo_file->sections.loc =
12677         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12678                                sections.loc_offset, sections.loc_size);
12679       dwo_file->sections.macinfo =
12680         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12681                                sections.macinfo_offset, sections.macinfo_size);
12682       dwo_file->sections.macro =
12683         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12684                                sections.macro_offset, sections.macro_size);
12685       dwo_file->sections.str_offsets =
12686         create_dwp_v2_section (dwarf2_per_objfile,
12687                                &dwp_file->sections.str_offsets,
12688                                sections.str_offsets_offset,
12689                                sections.str_offsets_size);
12690       /* The "str" section is global to the entire DWP file.  */
12691       dwo_file->sections.str = dwp_file->sections.str;
12692       /* The info or types section is assigned below to dwo_unit,
12693          there's no need to record it in dwo_file.
12694          Also, we can't simply record type sections in dwo_file because
12695          we record a pointer into the vector in dwo_unit.  As we collect more
12696          types we'll grow the vector and eventually have to reallocate space
12697          for it, invalidating all copies of pointers into the previous
12698          contents.  */
12699       *dwo_file_slot = dwo_file;
12700     }
12701   else
12702     {
12703       if (dwarf_read_debug)
12704         {
12705           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12706                               virtual_dwo_name.c_str ());
12707         }
12708       dwo_file = (struct dwo_file *) *dwo_file_slot;
12709     }
12710
12711   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12712   dwo_unit->dwo_file = dwo_file;
12713   dwo_unit->signature = signature;
12714   dwo_unit->section =
12715     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12716   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12717                                               is_debug_types
12718                                               ? &dwp_file->sections.types
12719                                               : &dwp_file->sections.info,
12720                                               sections.info_or_types_offset,
12721                                               sections.info_or_types_size);
12722   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12723
12724   return dwo_unit;
12725 }
12726
12727 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12728    Returns NULL if the signature isn't found.  */
12729
12730 static struct dwo_unit *
12731 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12732                         struct dwp_file *dwp_file, const char *comp_dir,
12733                         ULONGEST signature, int is_debug_types)
12734 {
12735   const struct dwp_hash_table *dwp_htab =
12736     is_debug_types ? dwp_file->tus : dwp_file->cus;
12737   bfd *dbfd = dwp_file->dbfd.get ();
12738   uint32_t mask = dwp_htab->nr_slots - 1;
12739   uint32_t hash = signature & mask;
12740   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12741   unsigned int i;
12742   void **slot;
12743   struct dwo_unit find_dwo_cu;
12744
12745   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12746   find_dwo_cu.signature = signature;
12747   slot = htab_find_slot (is_debug_types
12748                          ? dwp_file->loaded_tus
12749                          : dwp_file->loaded_cus,
12750                          &find_dwo_cu, INSERT);
12751
12752   if (*slot != NULL)
12753     return (struct dwo_unit *) *slot;
12754
12755   /* Use a for loop so that we don't loop forever on bad debug info.  */
12756   for (i = 0; i < dwp_htab->nr_slots; ++i)
12757     {
12758       ULONGEST signature_in_table;
12759
12760       signature_in_table =
12761         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12762       if (signature_in_table == signature)
12763         {
12764           uint32_t unit_index =
12765             read_4_bytes (dbfd,
12766                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12767
12768           if (dwp_file->version == 1)
12769             {
12770               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12771                                                  dwp_file, unit_index,
12772                                                  comp_dir, signature,
12773                                                  is_debug_types);
12774             }
12775           else
12776             {
12777               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12778                                                  dwp_file, unit_index,
12779                                                  comp_dir, signature,
12780                                                  is_debug_types);
12781             }
12782           return (struct dwo_unit *) *slot;
12783         }
12784       if (signature_in_table == 0)
12785         return NULL;
12786       hash = (hash + hash2) & mask;
12787     }
12788
12789   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12790            " [in module %s]"),
12791          dwp_file->name);
12792 }
12793
12794 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12795    Open the file specified by FILE_NAME and hand it off to BFD for
12796    preliminary analysis.  Return a newly initialized bfd *, which
12797    includes a canonicalized copy of FILE_NAME.
12798    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12799    SEARCH_CWD is true if the current directory is to be searched.
12800    It will be searched before debug-file-directory.
12801    If successful, the file is added to the bfd include table of the
12802    objfile's bfd (see gdb_bfd_record_inclusion).
12803    If unable to find/open the file, return NULL.
12804    NOTE: This function is derived from symfile_bfd_open.  */
12805
12806 static gdb_bfd_ref_ptr
12807 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12808                     const char *file_name, int is_dwp, int search_cwd)
12809 {
12810   int desc;
12811   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12812      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12813      to debug_file_directory.  */
12814   const char *search_path;
12815   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12816
12817   gdb::unique_xmalloc_ptr<char> search_path_holder;
12818   if (search_cwd)
12819     {
12820       if (*debug_file_directory != '\0')
12821         {
12822           search_path_holder.reset (concat (".", dirname_separator_string,
12823                                             debug_file_directory,
12824                                             (char *) NULL));
12825           search_path = search_path_holder.get ();
12826         }
12827       else
12828         search_path = ".";
12829     }
12830   else
12831     search_path = debug_file_directory;
12832
12833   openp_flags flags = OPF_RETURN_REALPATH;
12834   if (is_dwp)
12835     flags |= OPF_SEARCH_IN_PATH;
12836
12837   gdb::unique_xmalloc_ptr<char> absolute_name;
12838   desc = openp (search_path, flags, file_name,
12839                 O_RDONLY | O_BINARY, &absolute_name);
12840   if (desc < 0)
12841     return NULL;
12842
12843   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12844                                          gnutarget, desc));
12845   if (sym_bfd == NULL)
12846     return NULL;
12847   bfd_set_cacheable (sym_bfd.get (), 1);
12848
12849   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12850     return NULL;
12851
12852   /* Success.  Record the bfd as having been included by the objfile's bfd.
12853      This is important because things like demangled_names_hash lives in the
12854      objfile's per_bfd space and may have references to things like symbol
12855      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12856   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12857
12858   return sym_bfd;
12859 }
12860
12861 /* Try to open DWO file FILE_NAME.
12862    COMP_DIR is the DW_AT_comp_dir attribute.
12863    The result is the bfd handle of the file.
12864    If there is a problem finding or opening the file, return NULL.
12865    Upon success, the canonicalized path of the file is stored in the bfd,
12866    same as symfile_bfd_open.  */
12867
12868 static gdb_bfd_ref_ptr
12869 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12870                const char *file_name, const char *comp_dir)
12871 {
12872   if (IS_ABSOLUTE_PATH (file_name))
12873     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12874                                0 /*is_dwp*/, 0 /*search_cwd*/);
12875
12876   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12877
12878   if (comp_dir != NULL)
12879     {
12880       char *path_to_try = concat (comp_dir, SLASH_STRING,
12881                                   file_name, (char *) NULL);
12882
12883       /* NOTE: If comp_dir is a relative path, this will also try the
12884          search path, which seems useful.  */
12885       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12886                                                 path_to_try,
12887                                                 0 /*is_dwp*/,
12888                                                 1 /*search_cwd*/));
12889       xfree (path_to_try);
12890       if (abfd != NULL)
12891         return abfd;
12892     }
12893
12894   /* That didn't work, try debug-file-directory, which, despite its name,
12895      is a list of paths.  */
12896
12897   if (*debug_file_directory == '\0')
12898     return NULL;
12899
12900   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12901                              0 /*is_dwp*/, 1 /*search_cwd*/);
12902 }
12903
12904 /* This function is mapped across the sections and remembers the offset and
12905    size of each of the DWO debugging sections we are interested in.  */
12906
12907 static void
12908 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12909 {
12910   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12911   const struct dwop_section_names *names = &dwop_section_names;
12912
12913   if (section_is_p (sectp->name, &names->abbrev_dwo))
12914     {
12915       dwo_sections->abbrev.s.section = sectp;
12916       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12917     }
12918   else if (section_is_p (sectp->name, &names->info_dwo))
12919     {
12920       dwo_sections->info.s.section = sectp;
12921       dwo_sections->info.size = bfd_get_section_size (sectp);
12922     }
12923   else if (section_is_p (sectp->name, &names->line_dwo))
12924     {
12925       dwo_sections->line.s.section = sectp;
12926       dwo_sections->line.size = bfd_get_section_size (sectp);
12927     }
12928   else if (section_is_p (sectp->name, &names->loc_dwo))
12929     {
12930       dwo_sections->loc.s.section = sectp;
12931       dwo_sections->loc.size = bfd_get_section_size (sectp);
12932     }
12933   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12934     {
12935       dwo_sections->macinfo.s.section = sectp;
12936       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12937     }
12938   else if (section_is_p (sectp->name, &names->macro_dwo))
12939     {
12940       dwo_sections->macro.s.section = sectp;
12941       dwo_sections->macro.size = bfd_get_section_size (sectp);
12942     }
12943   else if (section_is_p (sectp->name, &names->str_dwo))
12944     {
12945       dwo_sections->str.s.section = sectp;
12946       dwo_sections->str.size = bfd_get_section_size (sectp);
12947     }
12948   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12949     {
12950       dwo_sections->str_offsets.s.section = sectp;
12951       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12952     }
12953   else if (section_is_p (sectp->name, &names->types_dwo))
12954     {
12955       struct dwarf2_section_info type_section;
12956
12957       memset (&type_section, 0, sizeof (type_section));
12958       type_section.s.section = sectp;
12959       type_section.size = bfd_get_section_size (sectp);
12960       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12961                      &type_section);
12962     }
12963 }
12964
12965 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12966    by PER_CU.  This is for the non-DWP case.
12967    The result is NULL if DWO_NAME can't be found.  */
12968
12969 static struct dwo_file *
12970 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12971                         const char *dwo_name, const char *comp_dir)
12972 {
12973   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12974   struct objfile *objfile = dwarf2_per_objfile->objfile;
12975
12976   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12977   if (dbfd == NULL)
12978     {
12979       if (dwarf_read_debug)
12980         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12981       return NULL;
12982     }
12983
12984   /* We use a unique pointer here, despite the obstack allocation,
12985      because a dwo_file needs some cleanup if it is abandoned.  */
12986   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12987                                         struct dwo_file));
12988   dwo_file->dwo_name = dwo_name;
12989   dwo_file->comp_dir = comp_dir;
12990   dwo_file->dbfd = dbfd.release ();
12991
12992   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12993                          &dwo_file->sections);
12994
12995   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12996                          dwo_file->cus);
12997
12998   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12999                                  dwo_file->sections.types, dwo_file->tus);
13000
13001   if (dwarf_read_debug)
13002     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13003
13004   return dwo_file.release ();
13005 }
13006
13007 /* This function is mapped across the sections and remembers the offset and
13008    size of each of the DWP debugging sections common to version 1 and 2 that
13009    we are interested in.  */
13010
13011 static void
13012 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13013                                    void *dwp_file_ptr)
13014 {
13015   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13016   const struct dwop_section_names *names = &dwop_section_names;
13017   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13018
13019   /* Record the ELF section number for later lookup: this is what the
13020      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13021   gdb_assert (elf_section_nr < dwp_file->num_sections);
13022   dwp_file->elf_sections[elf_section_nr] = sectp;
13023
13024   /* Look for specific sections that we need.  */
13025   if (section_is_p (sectp->name, &names->str_dwo))
13026     {
13027       dwp_file->sections.str.s.section = sectp;
13028       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13029     }
13030   else if (section_is_p (sectp->name, &names->cu_index))
13031     {
13032       dwp_file->sections.cu_index.s.section = sectp;
13033       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13034     }
13035   else if (section_is_p (sectp->name, &names->tu_index))
13036     {
13037       dwp_file->sections.tu_index.s.section = sectp;
13038       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13039     }
13040 }
13041
13042 /* This function is mapped across the sections and remembers the offset and
13043    size of each of the DWP version 2 debugging sections that we are interested
13044    in.  This is split into a separate function because we don't know if we
13045    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13046
13047 static void
13048 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13049 {
13050   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13051   const struct dwop_section_names *names = &dwop_section_names;
13052   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13053
13054   /* Record the ELF section number for later lookup: this is what the
13055      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13056   gdb_assert (elf_section_nr < dwp_file->num_sections);
13057   dwp_file->elf_sections[elf_section_nr] = sectp;
13058
13059   /* Look for specific sections that we need.  */
13060   if (section_is_p (sectp->name, &names->abbrev_dwo))
13061     {
13062       dwp_file->sections.abbrev.s.section = sectp;
13063       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13064     }
13065   else if (section_is_p (sectp->name, &names->info_dwo))
13066     {
13067       dwp_file->sections.info.s.section = sectp;
13068       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13069     }
13070   else if (section_is_p (sectp->name, &names->line_dwo))
13071     {
13072       dwp_file->sections.line.s.section = sectp;
13073       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13074     }
13075   else if (section_is_p (sectp->name, &names->loc_dwo))
13076     {
13077       dwp_file->sections.loc.s.section = sectp;
13078       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13079     }
13080   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13081     {
13082       dwp_file->sections.macinfo.s.section = sectp;
13083       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13084     }
13085   else if (section_is_p (sectp->name, &names->macro_dwo))
13086     {
13087       dwp_file->sections.macro.s.section = sectp;
13088       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13089     }
13090   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13091     {
13092       dwp_file->sections.str_offsets.s.section = sectp;
13093       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13094     }
13095   else if (section_is_p (sectp->name, &names->types_dwo))
13096     {
13097       dwp_file->sections.types.s.section = sectp;
13098       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13099     }
13100 }
13101
13102 /* Hash function for dwp_file loaded CUs/TUs.  */
13103
13104 static hashval_t
13105 hash_dwp_loaded_cutus (const void *item)
13106 {
13107   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13108
13109   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13110   return dwo_unit->signature;
13111 }
13112
13113 /* Equality function for dwp_file loaded CUs/TUs.  */
13114
13115 static int
13116 eq_dwp_loaded_cutus (const void *a, const void *b)
13117 {
13118   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13119   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13120
13121   return dua->signature == dub->signature;
13122 }
13123
13124 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13125
13126 static htab_t
13127 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13128 {
13129   return htab_create_alloc_ex (3,
13130                                hash_dwp_loaded_cutus,
13131                                eq_dwp_loaded_cutus,
13132                                NULL,
13133                                &objfile->objfile_obstack,
13134                                hashtab_obstack_allocate,
13135                                dummy_obstack_deallocate);
13136 }
13137
13138 /* Try to open DWP file FILE_NAME.
13139    The result is the bfd handle of the file.
13140    If there is a problem finding or opening the file, return NULL.
13141    Upon success, the canonicalized path of the file is stored in the bfd,
13142    same as symfile_bfd_open.  */
13143
13144 static gdb_bfd_ref_ptr
13145 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13146                const char *file_name)
13147 {
13148   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13149                                             1 /*is_dwp*/,
13150                                             1 /*search_cwd*/));
13151   if (abfd != NULL)
13152     return abfd;
13153
13154   /* Work around upstream bug 15652.
13155      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13156      [Whether that's a "bug" is debatable, but it is getting in our way.]
13157      We have no real idea where the dwp file is, because gdb's realpath-ing
13158      of the executable's path may have discarded the needed info.
13159      [IWBN if the dwp file name was recorded in the executable, akin to
13160      .gnu_debuglink, but that doesn't exist yet.]
13161      Strip the directory from FILE_NAME and search again.  */
13162   if (*debug_file_directory != '\0')
13163     {
13164       /* Don't implicitly search the current directory here.
13165          If the user wants to search "." to handle this case,
13166          it must be added to debug-file-directory.  */
13167       return try_open_dwop_file (dwarf2_per_objfile,
13168                                  lbasename (file_name), 1 /*is_dwp*/,
13169                                  0 /*search_cwd*/);
13170     }
13171
13172   return NULL;
13173 }
13174
13175 /* Initialize the use of the DWP file for the current objfile.
13176    By convention the name of the DWP file is ${objfile}.dwp.
13177    The result is NULL if it can't be found.  */
13178
13179 static std::unique_ptr<struct dwp_file>
13180 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13181 {
13182   struct objfile *objfile = dwarf2_per_objfile->objfile;
13183
13184   /* Try to find first .dwp for the binary file before any symbolic links
13185      resolving.  */
13186
13187   /* If the objfile is a debug file, find the name of the real binary
13188      file and get the name of dwp file from there.  */
13189   std::string dwp_name;
13190   if (objfile->separate_debug_objfile_backlink != NULL)
13191     {
13192       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13193       const char *backlink_basename = lbasename (backlink->original_name);
13194
13195       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13196     }
13197   else
13198     dwp_name = objfile->original_name;
13199
13200   dwp_name += ".dwp";
13201
13202   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13203   if (dbfd == NULL
13204       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13205     {
13206       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13207       dwp_name = objfile_name (objfile);
13208       dwp_name += ".dwp";
13209       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13210     }
13211
13212   if (dbfd == NULL)
13213     {
13214       if (dwarf_read_debug)
13215         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13216       return std::unique_ptr<dwp_file> ();
13217     }
13218
13219   const char *name = bfd_get_filename (dbfd.get ());
13220   std::unique_ptr<struct dwp_file> dwp_file
13221     (new struct dwp_file (name, std::move (dbfd)));
13222
13223   /* +1: section 0 is unused */
13224   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13225   dwp_file->elf_sections =
13226     OBSTACK_CALLOC (&objfile->objfile_obstack,
13227                     dwp_file->num_sections, asection *);
13228
13229   bfd_map_over_sections (dwp_file->dbfd.get (),
13230                          dwarf2_locate_common_dwp_sections,
13231                          dwp_file.get ());
13232
13233   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13234                                          0);
13235
13236   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13237                                          1);
13238
13239   /* The DWP file version is stored in the hash table.  Oh well.  */
13240   if (dwp_file->cus && dwp_file->tus
13241       && dwp_file->cus->version != dwp_file->tus->version)
13242     {
13243       /* Technically speaking, we should try to limp along, but this is
13244          pretty bizarre.  We use pulongest here because that's the established
13245          portability solution (e.g, we cannot use %u for uint32_t).  */
13246       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13247                " TU version %s [in DWP file %s]"),
13248              pulongest (dwp_file->cus->version),
13249              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13250     }
13251
13252   if (dwp_file->cus)
13253     dwp_file->version = dwp_file->cus->version;
13254   else if (dwp_file->tus)
13255     dwp_file->version = dwp_file->tus->version;
13256   else
13257     dwp_file->version = 2;
13258
13259   if (dwp_file->version == 2)
13260     bfd_map_over_sections (dwp_file->dbfd.get (),
13261                            dwarf2_locate_v2_dwp_sections,
13262                            dwp_file.get ());
13263
13264   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13265   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13266
13267   if (dwarf_read_debug)
13268     {
13269       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13270       fprintf_unfiltered (gdb_stdlog,
13271                           "    %s CUs, %s TUs\n",
13272                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13273                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13274     }
13275
13276   return dwp_file;
13277 }
13278
13279 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13280
13281 static struct dwp_file *
13282 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13283 {
13284   if (! dwarf2_per_objfile->dwp_checked)
13285     {
13286       dwarf2_per_objfile->dwp_file
13287         = open_and_init_dwp_file (dwarf2_per_objfile);
13288       dwarf2_per_objfile->dwp_checked = 1;
13289     }
13290   return dwarf2_per_objfile->dwp_file.get ();
13291 }
13292
13293 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13294    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13295    or in the DWP file for the objfile, referenced by THIS_UNIT.
13296    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13297    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13298
13299    This is called, for example, when wanting to read a variable with a
13300    complex location.  Therefore we don't want to do file i/o for every call.
13301    Therefore we don't want to look for a DWO file on every call.
13302    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13303    then we check if we've already seen DWO_NAME, and only THEN do we check
13304    for a DWO file.
13305
13306    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13307    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13308
13309 static struct dwo_unit *
13310 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13311                  const char *dwo_name, const char *comp_dir,
13312                  ULONGEST signature, int is_debug_types)
13313 {
13314   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13315   struct objfile *objfile = dwarf2_per_objfile->objfile;
13316   const char *kind = is_debug_types ? "TU" : "CU";
13317   void **dwo_file_slot;
13318   struct dwo_file *dwo_file;
13319   struct dwp_file *dwp_file;
13320
13321   /* First see if there's a DWP file.
13322      If we have a DWP file but didn't find the DWO inside it, don't
13323      look for the original DWO file.  It makes gdb behave differently
13324      depending on whether one is debugging in the build tree.  */
13325
13326   dwp_file = get_dwp_file (dwarf2_per_objfile);
13327   if (dwp_file != NULL)
13328     {
13329       const struct dwp_hash_table *dwp_htab =
13330         is_debug_types ? dwp_file->tus : dwp_file->cus;
13331
13332       if (dwp_htab != NULL)
13333         {
13334           struct dwo_unit *dwo_cutu =
13335             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13336                                     signature, is_debug_types);
13337
13338           if (dwo_cutu != NULL)
13339             {
13340               if (dwarf_read_debug)
13341                 {
13342                   fprintf_unfiltered (gdb_stdlog,
13343                                       "Virtual DWO %s %s found: @%s\n",
13344                                       kind, hex_string (signature),
13345                                       host_address_to_string (dwo_cutu));
13346                 }
13347               return dwo_cutu;
13348             }
13349         }
13350     }
13351   else
13352     {
13353       /* No DWP file, look for the DWO file.  */
13354
13355       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13356                                             dwo_name, comp_dir);
13357       if (*dwo_file_slot == NULL)
13358         {
13359           /* Read in the file and build a table of the CUs/TUs it contains.  */
13360           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13361         }
13362       /* NOTE: This will be NULL if unable to open the file.  */
13363       dwo_file = (struct dwo_file *) *dwo_file_slot;
13364
13365       if (dwo_file != NULL)
13366         {
13367           struct dwo_unit *dwo_cutu = NULL;
13368
13369           if (is_debug_types && dwo_file->tus)
13370             {
13371               struct dwo_unit find_dwo_cutu;
13372
13373               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13374               find_dwo_cutu.signature = signature;
13375               dwo_cutu
13376                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13377             }
13378           else if (!is_debug_types && dwo_file->cus)
13379             {
13380               struct dwo_unit find_dwo_cutu;
13381
13382               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13383               find_dwo_cutu.signature = signature;
13384               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13385                                                        &find_dwo_cutu);
13386             }
13387
13388           if (dwo_cutu != NULL)
13389             {
13390               if (dwarf_read_debug)
13391                 {
13392                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13393                                       kind, dwo_name, hex_string (signature),
13394                                       host_address_to_string (dwo_cutu));
13395                 }
13396               return dwo_cutu;
13397             }
13398         }
13399     }
13400
13401   /* We didn't find it.  This could mean a dwo_id mismatch, or
13402      someone deleted the DWO/DWP file, or the search path isn't set up
13403      correctly to find the file.  */
13404
13405   if (dwarf_read_debug)
13406     {
13407       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13408                           kind, dwo_name, hex_string (signature));
13409     }
13410
13411   /* This is a warning and not a complaint because it can be caused by
13412      pilot error (e.g., user accidentally deleting the DWO).  */
13413   {
13414     /* Print the name of the DWP file if we looked there, helps the user
13415        better diagnose the problem.  */
13416     std::string dwp_text;
13417
13418     if (dwp_file != NULL)
13419       dwp_text = string_printf (" [in DWP file %s]",
13420                                 lbasename (dwp_file->name));
13421
13422     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13423                " [in module %s]"),
13424              kind, dwo_name, hex_string (signature),
13425              dwp_text.c_str (),
13426              this_unit->is_debug_types ? "TU" : "CU",
13427              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13428   }
13429   return NULL;
13430 }
13431
13432 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13433    See lookup_dwo_cutu_unit for details.  */
13434
13435 static struct dwo_unit *
13436 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13437                       const char *dwo_name, const char *comp_dir,
13438                       ULONGEST signature)
13439 {
13440   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13441 }
13442
13443 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13444    See lookup_dwo_cutu_unit for details.  */
13445
13446 static struct dwo_unit *
13447 lookup_dwo_type_unit (struct signatured_type *this_tu,
13448                       const char *dwo_name, const char *comp_dir)
13449 {
13450   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13451 }
13452
13453 /* Traversal function for queue_and_load_all_dwo_tus.  */
13454
13455 static int
13456 queue_and_load_dwo_tu (void **slot, void *info)
13457 {
13458   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13459   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13460   ULONGEST signature = dwo_unit->signature;
13461   struct signatured_type *sig_type =
13462     lookup_dwo_signatured_type (per_cu->cu, signature);
13463
13464   if (sig_type != NULL)
13465     {
13466       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13467
13468       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13469          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13470          while processing PER_CU.  */
13471       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13472         load_full_type_unit (sig_cu);
13473       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13474     }
13475
13476   return 1;
13477 }
13478
13479 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13480    The DWO may have the only definition of the type, though it may not be
13481    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13482    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13483
13484 static void
13485 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13486 {
13487   struct dwo_unit *dwo_unit;
13488   struct dwo_file *dwo_file;
13489
13490   gdb_assert (!per_cu->is_debug_types);
13491   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13492   gdb_assert (per_cu->cu != NULL);
13493
13494   dwo_unit = per_cu->cu->dwo_unit;
13495   gdb_assert (dwo_unit != NULL);
13496
13497   dwo_file = dwo_unit->dwo_file;
13498   if (dwo_file->tus != NULL)
13499     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13500 }
13501
13502 /* Free all resources associated with DWO_FILE.
13503    Close the DWO file and munmap the sections.  */
13504
13505 static void
13506 free_dwo_file (struct dwo_file *dwo_file)
13507 {
13508   /* Note: dbfd is NULL for virtual DWO files.  */
13509   gdb_bfd_unref (dwo_file->dbfd);
13510
13511   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13512 }
13513
13514 /* Traversal function for free_dwo_files.  */
13515
13516 static int
13517 free_dwo_file_from_slot (void **slot, void *info)
13518 {
13519   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13520
13521   free_dwo_file (dwo_file);
13522
13523   return 1;
13524 }
13525
13526 /* Free all resources associated with DWO_FILES.  */
13527
13528 static void
13529 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13530 {
13531   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13532 }
13533 \f
13534 /* Read in various DIEs.  */
13535
13536 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13537    Inherit only the children of the DW_AT_abstract_origin DIE not being
13538    already referenced by DW_AT_abstract_origin from the children of the
13539    current DIE.  */
13540
13541 static void
13542 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13543 {
13544   struct die_info *child_die;
13545   sect_offset *offsetp;
13546   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13547   struct die_info *origin_die;
13548   /* Iterator of the ORIGIN_DIE children.  */
13549   struct die_info *origin_child_die;
13550   struct attribute *attr;
13551   struct dwarf2_cu *origin_cu;
13552   struct pending **origin_previous_list_in_scope;
13553
13554   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13555   if (!attr)
13556     return;
13557
13558   /* Note that following die references may follow to a die in a
13559      different cu.  */
13560
13561   origin_cu = cu;
13562   origin_die = follow_die_ref (die, attr, &origin_cu);
13563
13564   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13565      symbols in.  */
13566   origin_previous_list_in_scope = origin_cu->list_in_scope;
13567   origin_cu->list_in_scope = cu->list_in_scope;
13568
13569   if (die->tag != origin_die->tag
13570       && !(die->tag == DW_TAG_inlined_subroutine
13571            && origin_die->tag == DW_TAG_subprogram))
13572     complaint (_("DIE %s and its abstract origin %s have different tags"),
13573                sect_offset_str (die->sect_off),
13574                sect_offset_str (origin_die->sect_off));
13575
13576   std::vector<sect_offset> offsets;
13577
13578   for (child_die = die->child;
13579        child_die && child_die->tag;
13580        child_die = sibling_die (child_die))
13581     {
13582       struct die_info *child_origin_die;
13583       struct dwarf2_cu *child_origin_cu;
13584
13585       /* We are trying to process concrete instance entries:
13586          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13587          it's not relevant to our analysis here. i.e. detecting DIEs that are
13588          present in the abstract instance but not referenced in the concrete
13589          one.  */
13590       if (child_die->tag == DW_TAG_call_site
13591           || child_die->tag == DW_TAG_GNU_call_site)
13592         continue;
13593
13594       /* For each CHILD_DIE, find the corresponding child of
13595          ORIGIN_DIE.  If there is more than one layer of
13596          DW_AT_abstract_origin, follow them all; there shouldn't be,
13597          but GCC versions at least through 4.4 generate this (GCC PR
13598          40573).  */
13599       child_origin_die = child_die;
13600       child_origin_cu = cu;
13601       while (1)
13602         {
13603           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13604                               child_origin_cu);
13605           if (attr == NULL)
13606             break;
13607           child_origin_die = follow_die_ref (child_origin_die, attr,
13608                                              &child_origin_cu);
13609         }
13610
13611       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13612          counterpart may exist.  */
13613       if (child_origin_die != child_die)
13614         {
13615           if (child_die->tag != child_origin_die->tag
13616               && !(child_die->tag == DW_TAG_inlined_subroutine
13617                    && child_origin_die->tag == DW_TAG_subprogram))
13618             complaint (_("Child DIE %s and its abstract origin %s have "
13619                          "different tags"),
13620                        sect_offset_str (child_die->sect_off),
13621                        sect_offset_str (child_origin_die->sect_off));
13622           if (child_origin_die->parent != origin_die)
13623             complaint (_("Child DIE %s and its abstract origin %s have "
13624                          "different parents"),
13625                        sect_offset_str (child_die->sect_off),
13626                        sect_offset_str (child_origin_die->sect_off));
13627           else
13628             offsets.push_back (child_origin_die->sect_off);
13629         }
13630     }
13631   std::sort (offsets.begin (), offsets.end ());
13632   sect_offset *offsets_end = offsets.data () + offsets.size ();
13633   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13634     if (offsetp[-1] == *offsetp)
13635       complaint (_("Multiple children of DIE %s refer "
13636                    "to DIE %s as their abstract origin"),
13637                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13638
13639   offsetp = offsets.data ();
13640   origin_child_die = origin_die->child;
13641   while (origin_child_die && origin_child_die->tag)
13642     {
13643       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13644       while (offsetp < offsets_end
13645              && *offsetp < origin_child_die->sect_off)
13646         offsetp++;
13647       if (offsetp >= offsets_end
13648           || *offsetp > origin_child_die->sect_off)
13649         {
13650           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13651              Check whether we're already processing ORIGIN_CHILD_DIE.
13652              This can happen with mutually referenced abstract_origins.
13653              PR 16581.  */
13654           if (!origin_child_die->in_process)
13655             process_die (origin_child_die, origin_cu);
13656         }
13657       origin_child_die = sibling_die (origin_child_die);
13658     }
13659   origin_cu->list_in_scope = origin_previous_list_in_scope;
13660 }
13661
13662 static void
13663 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13664 {
13665   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13666   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13667   struct context_stack *newobj;
13668   CORE_ADDR lowpc;
13669   CORE_ADDR highpc;
13670   struct die_info *child_die;
13671   struct attribute *attr, *call_line, *call_file;
13672   const char *name;
13673   CORE_ADDR baseaddr;
13674   struct block *block;
13675   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13676   std::vector<struct symbol *> template_args;
13677   struct template_symbol *templ_func = NULL;
13678
13679   if (inlined_func)
13680     {
13681       /* If we do not have call site information, we can't show the
13682          caller of this inlined function.  That's too confusing, so
13683          only use the scope for local variables.  */
13684       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13685       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13686       if (call_line == NULL || call_file == NULL)
13687         {
13688           read_lexical_block_scope (die, cu);
13689           return;
13690         }
13691     }
13692
13693   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13694
13695   name = dwarf2_name (die, cu);
13696
13697   /* Ignore functions with missing or empty names.  These are actually
13698      illegal according to the DWARF standard.  */
13699   if (name == NULL)
13700     {
13701       complaint (_("missing name for subprogram DIE at %s"),
13702                  sect_offset_str (die->sect_off));
13703       return;
13704     }
13705
13706   /* Ignore functions with missing or invalid low and high pc attributes.  */
13707   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13708       <= PC_BOUNDS_INVALID)
13709     {
13710       attr = dwarf2_attr (die, DW_AT_external, cu);
13711       if (!attr || !DW_UNSND (attr))
13712         complaint (_("cannot get low and high bounds "
13713                      "for subprogram DIE at %s"),
13714                    sect_offset_str (die->sect_off));
13715       return;
13716     }
13717
13718   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13719   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13720
13721   /* If we have any template arguments, then we must allocate a
13722      different sort of symbol.  */
13723   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13724     {
13725       if (child_die->tag == DW_TAG_template_type_param
13726           || child_die->tag == DW_TAG_template_value_param)
13727         {
13728           templ_func = allocate_template_symbol (objfile);
13729           templ_func->subclass = SYMBOL_TEMPLATE;
13730           break;
13731         }
13732     }
13733
13734   newobj = cu->builder->push_context (0, lowpc);
13735   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13736                              (struct symbol *) templ_func);
13737
13738   /* If there is a location expression for DW_AT_frame_base, record
13739      it.  */
13740   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13741   if (attr)
13742     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13743
13744   /* If there is a location for the static link, record it.  */
13745   newobj->static_link = NULL;
13746   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13747   if (attr)
13748     {
13749       newobj->static_link
13750         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13751       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13752     }
13753
13754   cu->list_in_scope = cu->builder->get_local_symbols ();
13755
13756   if (die->child != NULL)
13757     {
13758       child_die = die->child;
13759       while (child_die && child_die->tag)
13760         {
13761           if (child_die->tag == DW_TAG_template_type_param
13762               || child_die->tag == DW_TAG_template_value_param)
13763             {
13764               struct symbol *arg = new_symbol (child_die, NULL, cu);
13765
13766               if (arg != NULL)
13767                 template_args.push_back (arg);
13768             }
13769           else
13770             process_die (child_die, cu);
13771           child_die = sibling_die (child_die);
13772         }
13773     }
13774
13775   inherit_abstract_dies (die, cu);
13776
13777   /* If we have a DW_AT_specification, we might need to import using
13778      directives from the context of the specification DIE.  See the
13779      comment in determine_prefix.  */
13780   if (cu->language == language_cplus
13781       && dwarf2_attr (die, DW_AT_specification, cu))
13782     {
13783       struct dwarf2_cu *spec_cu = cu;
13784       struct die_info *spec_die = die_specification (die, &spec_cu);
13785
13786       while (spec_die)
13787         {
13788           child_die = spec_die->child;
13789           while (child_die && child_die->tag)
13790             {
13791               if (child_die->tag == DW_TAG_imported_module)
13792                 process_die (child_die, spec_cu);
13793               child_die = sibling_die (child_die);
13794             }
13795
13796           /* In some cases, GCC generates specification DIEs that
13797              themselves contain DW_AT_specification attributes.  */
13798           spec_die = die_specification (spec_die, &spec_cu);
13799         }
13800     }
13801
13802   struct context_stack cstk = cu->builder->pop_context ();
13803   /* Make a block for the local symbols within.  */
13804   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13805                                      cstk.static_link, lowpc, highpc);
13806
13807   /* For C++, set the block's scope.  */
13808   if ((cu->language == language_cplus
13809        || cu->language == language_fortran
13810        || cu->language == language_d
13811        || cu->language == language_rust)
13812       && cu->processing_has_namespace_info)
13813     block_set_scope (block, determine_prefix (die, cu),
13814                      &objfile->objfile_obstack);
13815
13816   /* If we have address ranges, record them.  */
13817   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13818
13819   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13820
13821   /* Attach template arguments to function.  */
13822   if (!template_args.empty ())
13823     {
13824       gdb_assert (templ_func != NULL);
13825
13826       templ_func->n_template_arguments = template_args.size ();
13827       templ_func->template_arguments
13828         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13829                      templ_func->n_template_arguments);
13830       memcpy (templ_func->template_arguments,
13831               template_args.data (),
13832               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13833
13834       /* Make sure that the symtab is set on the new symbols.  Even
13835          though they don't appear in this symtab directly, other parts
13836          of gdb assume that symbols do, and this is reasonably
13837          true.  */
13838       for (symbol *sym : template_args)
13839         symbol_set_symtab (sym, symbol_symtab (templ_func));
13840     }
13841
13842   /* In C++, we can have functions nested inside functions (e.g., when
13843      a function declares a class that has methods).  This means that
13844      when we finish processing a function scope, we may need to go
13845      back to building a containing block's symbol lists.  */
13846   *cu->builder->get_local_symbols () = cstk.locals;
13847   cu->builder->set_local_using_directives (cstk.local_using_directives);
13848
13849   /* If we've finished processing a top-level function, subsequent
13850      symbols go in the file symbol list.  */
13851   if (cu->builder->outermost_context_p ())
13852     cu->list_in_scope = cu->builder->get_file_symbols ();
13853 }
13854
13855 /* Process all the DIES contained within a lexical block scope.  Start
13856    a new scope, process the dies, and then close the scope.  */
13857
13858 static void
13859 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13860 {
13861   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13862   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13863   CORE_ADDR lowpc, highpc;
13864   struct die_info *child_die;
13865   CORE_ADDR baseaddr;
13866
13867   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13868
13869   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13870   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13871      as multiple lexical blocks?  Handling children in a sane way would
13872      be nasty.  Might be easier to properly extend generic blocks to
13873      describe ranges.  */
13874   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13875     {
13876     case PC_BOUNDS_NOT_PRESENT:
13877       /* DW_TAG_lexical_block has no attributes, process its children as if
13878          there was no wrapping by that DW_TAG_lexical_block.
13879          GCC does no longer produces such DWARF since GCC r224161.  */
13880       for (child_die = die->child;
13881            child_die != NULL && child_die->tag;
13882            child_die = sibling_die (child_die))
13883         process_die (child_die, cu);
13884       return;
13885     case PC_BOUNDS_INVALID:
13886       return;
13887     }
13888   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13889   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13890
13891   cu->builder->push_context (0, lowpc);
13892   if (die->child != NULL)
13893     {
13894       child_die = die->child;
13895       while (child_die && child_die->tag)
13896         {
13897           process_die (child_die, cu);
13898           child_die = sibling_die (child_die);
13899         }
13900     }
13901   inherit_abstract_dies (die, cu);
13902   struct context_stack cstk = cu->builder->pop_context ();
13903
13904   if (*cu->builder->get_local_symbols () != NULL
13905       || (*cu->builder->get_local_using_directives ()) != NULL)
13906     {
13907       struct block *block
13908         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13909                                      cstk.start_addr, highpc);
13910
13911       /* Note that recording ranges after traversing children, as we
13912          do here, means that recording a parent's ranges entails
13913          walking across all its children's ranges as they appear in
13914          the address map, which is quadratic behavior.
13915
13916          It would be nicer to record the parent's ranges before
13917          traversing its children, simply overriding whatever you find
13918          there.  But since we don't even decide whether to create a
13919          block until after we've traversed its children, that's hard
13920          to do.  */
13921       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13922     }
13923   *cu->builder->get_local_symbols () = cstk.locals;
13924   cu->builder->set_local_using_directives (cstk.local_using_directives);
13925 }
13926
13927 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13928
13929 static void
13930 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13931 {
13932   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13933   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13934   CORE_ADDR pc, baseaddr;
13935   struct attribute *attr;
13936   struct call_site *call_site, call_site_local;
13937   void **slot;
13938   int nparams;
13939   struct die_info *child_die;
13940
13941   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13942
13943   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13944   if (attr == NULL)
13945     {
13946       /* This was a pre-DWARF-5 GNU extension alias
13947          for DW_AT_call_return_pc.  */
13948       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13949     }
13950   if (!attr)
13951     {
13952       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13953                    "DIE %s [in module %s]"),
13954                  sect_offset_str (die->sect_off), objfile_name (objfile));
13955       return;
13956     }
13957   pc = attr_value_as_address (attr) + baseaddr;
13958   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13959
13960   if (cu->call_site_htab == NULL)
13961     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13962                                                NULL, &objfile->objfile_obstack,
13963                                                hashtab_obstack_allocate, NULL);
13964   call_site_local.pc = pc;
13965   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13966   if (*slot != NULL)
13967     {
13968       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13969                    "DIE %s [in module %s]"),
13970                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13971                  objfile_name (objfile));
13972       return;
13973     }
13974
13975   /* Count parameters at the caller.  */
13976
13977   nparams = 0;
13978   for (child_die = die->child; child_die && child_die->tag;
13979        child_die = sibling_die (child_die))
13980     {
13981       if (child_die->tag != DW_TAG_call_site_parameter
13982           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13983         {
13984           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13985                        "DW_TAG_call_site child DIE %s [in module %s]"),
13986                      child_die->tag, sect_offset_str (child_die->sect_off),
13987                      objfile_name (objfile));
13988           continue;
13989         }
13990
13991       nparams++;
13992     }
13993
13994   call_site
13995     = ((struct call_site *)
13996        obstack_alloc (&objfile->objfile_obstack,
13997                       sizeof (*call_site)
13998                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13999   *slot = call_site;
14000   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14001   call_site->pc = pc;
14002
14003   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14004       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14005     {
14006       struct die_info *func_die;
14007
14008       /* Skip also over DW_TAG_inlined_subroutine.  */
14009       for (func_die = die->parent;
14010            func_die && func_die->tag != DW_TAG_subprogram
14011            && func_die->tag != DW_TAG_subroutine_type;
14012            func_die = func_die->parent);
14013
14014       /* DW_AT_call_all_calls is a superset
14015          of DW_AT_call_all_tail_calls.  */
14016       if (func_die
14017           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14018           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14019           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14020           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14021         {
14022           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14023              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14024              both the initial caller containing the real return address PC and
14025              the final callee containing the current PC of a chain of tail
14026              calls do not need to have the tail call list complete.  But any
14027              function candidate for a virtual tail call frame searched via
14028              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14029              determined unambiguously.  */
14030         }
14031       else
14032         {
14033           struct type *func_type = NULL;
14034
14035           if (func_die)
14036             func_type = get_die_type (func_die, cu);
14037           if (func_type != NULL)
14038             {
14039               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14040
14041               /* Enlist this call site to the function.  */
14042               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14043               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14044             }
14045           else
14046             complaint (_("Cannot find function owning DW_TAG_call_site "
14047                          "DIE %s [in module %s]"),
14048                        sect_offset_str (die->sect_off), objfile_name (objfile));
14049         }
14050     }
14051
14052   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14053   if (attr == NULL)
14054     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14055   if (attr == NULL)
14056     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14057   if (attr == NULL)
14058     {
14059       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14060       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14061     }
14062   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14063   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14064     /* Keep NULL DWARF_BLOCK.  */;
14065   else if (attr_form_is_block (attr))
14066     {
14067       struct dwarf2_locexpr_baton *dlbaton;
14068
14069       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14070       dlbaton->data = DW_BLOCK (attr)->data;
14071       dlbaton->size = DW_BLOCK (attr)->size;
14072       dlbaton->per_cu = cu->per_cu;
14073
14074       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14075     }
14076   else if (attr_form_is_ref (attr))
14077     {
14078       struct dwarf2_cu *target_cu = cu;
14079       struct die_info *target_die;
14080
14081       target_die = follow_die_ref (die, attr, &target_cu);
14082       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14083       if (die_is_declaration (target_die, target_cu))
14084         {
14085           const char *target_physname;
14086
14087           /* Prefer the mangled name; otherwise compute the demangled one.  */
14088           target_physname = dw2_linkage_name (target_die, target_cu);
14089           if (target_physname == NULL)
14090             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14091           if (target_physname == NULL)
14092             complaint (_("DW_AT_call_target target DIE has invalid "
14093                          "physname, for referencing DIE %s [in module %s]"),
14094                        sect_offset_str (die->sect_off), objfile_name (objfile));
14095           else
14096             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14097         }
14098       else
14099         {
14100           CORE_ADDR lowpc;
14101
14102           /* DW_AT_entry_pc should be preferred.  */
14103           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14104               <= PC_BOUNDS_INVALID)
14105             complaint (_("DW_AT_call_target target DIE has invalid "
14106                          "low pc, for referencing DIE %s [in module %s]"),
14107                        sect_offset_str (die->sect_off), objfile_name (objfile));
14108           else
14109             {
14110               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14111               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14112             }
14113         }
14114     }
14115   else
14116     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14117                  "block nor reference, for DIE %s [in module %s]"),
14118                sect_offset_str (die->sect_off), objfile_name (objfile));
14119
14120   call_site->per_cu = cu->per_cu;
14121
14122   for (child_die = die->child;
14123        child_die && child_die->tag;
14124        child_die = sibling_die (child_die))
14125     {
14126       struct call_site_parameter *parameter;
14127       struct attribute *loc, *origin;
14128
14129       if (child_die->tag != DW_TAG_call_site_parameter
14130           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14131         {
14132           /* Already printed the complaint above.  */
14133           continue;
14134         }
14135
14136       gdb_assert (call_site->parameter_count < nparams);
14137       parameter = &call_site->parameter[call_site->parameter_count];
14138
14139       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14140          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14141          register is contained in DW_AT_call_value.  */
14142
14143       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14144       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14145       if (origin == NULL)
14146         {
14147           /* This was a pre-DWARF-5 GNU extension alias
14148              for DW_AT_call_parameter.  */
14149           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14150         }
14151       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14152         {
14153           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14154
14155           sect_offset sect_off
14156             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14157           if (!offset_in_cu_p (&cu->header, sect_off))
14158             {
14159               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14160                  binding can be done only inside one CU.  Such referenced DIE
14161                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14162               complaint (_("DW_AT_call_parameter offset is not in CU for "
14163                            "DW_TAG_call_site child DIE %s [in module %s]"),
14164                          sect_offset_str (child_die->sect_off),
14165                          objfile_name (objfile));
14166               continue;
14167             }
14168           parameter->u.param_cu_off
14169             = (cu_offset) (sect_off - cu->header.sect_off);
14170         }
14171       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14172         {
14173           complaint (_("No DW_FORM_block* DW_AT_location for "
14174                        "DW_TAG_call_site child DIE %s [in module %s]"),
14175                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14176           continue;
14177         }
14178       else
14179         {
14180           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14181             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14182           if (parameter->u.dwarf_reg != -1)
14183             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14184           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14185                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14186                                              &parameter->u.fb_offset))
14187             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14188           else
14189             {
14190               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14191                            "for DW_FORM_block* DW_AT_location is supported for "
14192                            "DW_TAG_call_site child DIE %s "
14193                            "[in module %s]"),
14194                          sect_offset_str (child_die->sect_off),
14195                          objfile_name (objfile));
14196               continue;
14197             }
14198         }
14199
14200       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14201       if (attr == NULL)
14202         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14203       if (!attr_form_is_block (attr))
14204         {
14205           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14206                        "DW_TAG_call_site child DIE %s [in module %s]"),
14207                      sect_offset_str (child_die->sect_off),
14208                      objfile_name (objfile));
14209           continue;
14210         }
14211       parameter->value = DW_BLOCK (attr)->data;
14212       parameter->value_size = DW_BLOCK (attr)->size;
14213
14214       /* Parameters are not pre-cleared by memset above.  */
14215       parameter->data_value = NULL;
14216       parameter->data_value_size = 0;
14217       call_site->parameter_count++;
14218
14219       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14220       if (attr == NULL)
14221         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14222       if (attr)
14223         {
14224           if (!attr_form_is_block (attr))
14225             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14226                          "DW_TAG_call_site child DIE %s [in module %s]"),
14227                        sect_offset_str (child_die->sect_off),
14228                        objfile_name (objfile));
14229           else
14230             {
14231               parameter->data_value = DW_BLOCK (attr)->data;
14232               parameter->data_value_size = DW_BLOCK (attr)->size;
14233             }
14234         }
14235     }
14236 }
14237
14238 /* Helper function for read_variable.  If DIE represents a virtual
14239    table, then return the type of the concrete object that is
14240    associated with the virtual table.  Otherwise, return NULL.  */
14241
14242 static struct type *
14243 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14244 {
14245   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14246   if (attr == NULL)
14247     return NULL;
14248
14249   /* Find the type DIE.  */
14250   struct die_info *type_die = NULL;
14251   struct dwarf2_cu *type_cu = cu;
14252
14253   if (attr_form_is_ref (attr))
14254     type_die = follow_die_ref (die, attr, &type_cu);
14255   if (type_die == NULL)
14256     return NULL;
14257
14258   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14259     return NULL;
14260   return die_containing_type (type_die, type_cu);
14261 }
14262
14263 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14264
14265 static void
14266 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14267 {
14268   struct rust_vtable_symbol *storage = NULL;
14269
14270   if (cu->language == language_rust)
14271     {
14272       struct type *containing_type = rust_containing_type (die, cu);
14273
14274       if (containing_type != NULL)
14275         {
14276           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14277
14278           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14279                                     struct rust_vtable_symbol);
14280           initialize_objfile_symbol (storage);
14281           storage->concrete_type = containing_type;
14282           storage->subclass = SYMBOL_RUST_VTABLE;
14283         }
14284     }
14285
14286   struct symbol *res = new_symbol (die, NULL, cu, storage);
14287   struct attribute *abstract_origin
14288     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14289   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14290   if (res == NULL && loc && abstract_origin)
14291     {
14292       /* We have a variable without a name, but with a location and an abstract
14293          origin.  This may be a concrete instance of an abstract variable
14294          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14295          later.  */
14296       struct dwarf2_cu *origin_cu = cu;
14297       struct die_info *origin_die
14298         = follow_die_ref (die, abstract_origin, &origin_cu);
14299       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14300       dpo->abstract_to_concrete[origin_die].push_back (die);
14301     }
14302 }
14303
14304 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14305    reading .debug_rnglists.
14306    Callback's type should be:
14307     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14308    Return true if the attributes are present and valid, otherwise,
14309    return false.  */
14310
14311 template <typename Callback>
14312 static bool
14313 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14314                          Callback &&callback)
14315 {
14316   struct dwarf2_per_objfile *dwarf2_per_objfile
14317     = cu->per_cu->dwarf2_per_objfile;
14318   struct objfile *objfile = dwarf2_per_objfile->objfile;
14319   bfd *obfd = objfile->obfd;
14320   /* Base address selection entry.  */
14321   CORE_ADDR base;
14322   int found_base;
14323   const gdb_byte *buffer;
14324   CORE_ADDR baseaddr;
14325   bool overflow = false;
14326
14327   found_base = cu->base_known;
14328   base = cu->base_address;
14329
14330   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14331   if (offset >= dwarf2_per_objfile->rnglists.size)
14332     {
14333       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14334                  offset);
14335       return false;
14336     }
14337   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14338
14339   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14340
14341   while (1)
14342     {
14343       /* Initialize it due to a false compiler warning.  */
14344       CORE_ADDR range_beginning = 0, range_end = 0;
14345       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14346                                  + dwarf2_per_objfile->rnglists.size);
14347       unsigned int bytes_read;
14348
14349       if (buffer == buf_end)
14350         {
14351           overflow = true;
14352           break;
14353         }
14354       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14355       switch (rlet)
14356         {
14357         case DW_RLE_end_of_list:
14358           break;
14359         case DW_RLE_base_address:
14360           if (buffer + cu->header.addr_size > buf_end)
14361             {
14362               overflow = true;
14363               break;
14364             }
14365           base = read_address (obfd, buffer, cu, &bytes_read);
14366           found_base = 1;
14367           buffer += bytes_read;
14368           break;
14369         case DW_RLE_start_length:
14370           if (buffer + cu->header.addr_size > buf_end)
14371             {
14372               overflow = true;
14373               break;
14374             }
14375           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14376           buffer += bytes_read;
14377           range_end = (range_beginning
14378                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14379           buffer += bytes_read;
14380           if (buffer > buf_end)
14381             {
14382               overflow = true;
14383               break;
14384             }
14385           break;
14386         case DW_RLE_offset_pair:
14387           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14388           buffer += bytes_read;
14389           if (buffer > buf_end)
14390             {
14391               overflow = true;
14392               break;
14393             }
14394           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14395           buffer += bytes_read;
14396           if (buffer > buf_end)
14397             {
14398               overflow = true;
14399               break;
14400             }
14401           break;
14402         case DW_RLE_start_end:
14403           if (buffer + 2 * cu->header.addr_size > buf_end)
14404             {
14405               overflow = true;
14406               break;
14407             }
14408           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14409           buffer += bytes_read;
14410           range_end = read_address (obfd, buffer, cu, &bytes_read);
14411           buffer += bytes_read;
14412           break;
14413         default:
14414           complaint (_("Invalid .debug_rnglists data (no base address)"));
14415           return false;
14416         }
14417       if (rlet == DW_RLE_end_of_list || overflow)
14418         break;
14419       if (rlet == DW_RLE_base_address)
14420         continue;
14421
14422       if (!found_base)
14423         {
14424           /* We have no valid base address for the ranges
14425              data.  */
14426           complaint (_("Invalid .debug_rnglists data (no base address)"));
14427           return false;
14428         }
14429
14430       if (range_beginning > range_end)
14431         {
14432           /* Inverted range entries are invalid.  */
14433           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14434           return false;
14435         }
14436
14437       /* Empty range entries have no effect.  */
14438       if (range_beginning == range_end)
14439         continue;
14440
14441       range_beginning += base;
14442       range_end += base;
14443
14444       /* A not-uncommon case of bad debug info.
14445          Don't pollute the addrmap with bad data.  */
14446       if (range_beginning + baseaddr == 0
14447           && !dwarf2_per_objfile->has_section_at_zero)
14448         {
14449           complaint (_(".debug_rnglists entry has start address of zero"
14450                        " [in module %s]"), objfile_name (objfile));
14451           continue;
14452         }
14453
14454       callback (range_beginning, range_end);
14455     }
14456
14457   if (overflow)
14458     {
14459       complaint (_("Offset %d is not terminated "
14460                    "for DW_AT_ranges attribute"),
14461                  offset);
14462       return false;
14463     }
14464
14465   return true;
14466 }
14467
14468 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14469    Callback's type should be:
14470     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14471    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14472
14473 template <typename Callback>
14474 static int
14475 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14476                        Callback &&callback)
14477 {
14478   struct dwarf2_per_objfile *dwarf2_per_objfile
14479       = cu->per_cu->dwarf2_per_objfile;
14480   struct objfile *objfile = dwarf2_per_objfile->objfile;
14481   struct comp_unit_head *cu_header = &cu->header;
14482   bfd *obfd = objfile->obfd;
14483   unsigned int addr_size = cu_header->addr_size;
14484   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14485   /* Base address selection entry.  */
14486   CORE_ADDR base;
14487   int found_base;
14488   unsigned int dummy;
14489   const gdb_byte *buffer;
14490   CORE_ADDR baseaddr;
14491
14492   if (cu_header->version >= 5)
14493     return dwarf2_rnglists_process (offset, cu, callback);
14494
14495   found_base = cu->base_known;
14496   base = cu->base_address;
14497
14498   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14499   if (offset >= dwarf2_per_objfile->ranges.size)
14500     {
14501       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14502                  offset);
14503       return 0;
14504     }
14505   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14506
14507   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14508
14509   while (1)
14510     {
14511       CORE_ADDR range_beginning, range_end;
14512
14513       range_beginning = read_address (obfd, buffer, cu, &dummy);
14514       buffer += addr_size;
14515       range_end = read_address (obfd, buffer, cu, &dummy);
14516       buffer += addr_size;
14517       offset += 2 * addr_size;
14518
14519       /* An end of list marker is a pair of zero addresses.  */
14520       if (range_beginning == 0 && range_end == 0)
14521         /* Found the end of list entry.  */
14522         break;
14523
14524       /* Each base address selection entry is a pair of 2 values.
14525          The first is the largest possible address, the second is
14526          the base address.  Check for a base address here.  */
14527       if ((range_beginning & mask) == mask)
14528         {
14529           /* If we found the largest possible address, then we already
14530              have the base address in range_end.  */
14531           base = range_end;
14532           found_base = 1;
14533           continue;
14534         }
14535
14536       if (!found_base)
14537         {
14538           /* We have no valid base address for the ranges
14539              data.  */
14540           complaint (_("Invalid .debug_ranges data (no base address)"));
14541           return 0;
14542         }
14543
14544       if (range_beginning > range_end)
14545         {
14546           /* Inverted range entries are invalid.  */
14547           complaint (_("Invalid .debug_ranges data (inverted range)"));
14548           return 0;
14549         }
14550
14551       /* Empty range entries have no effect.  */
14552       if (range_beginning == range_end)
14553         continue;
14554
14555       range_beginning += base;
14556       range_end += base;
14557
14558       /* A not-uncommon case of bad debug info.
14559          Don't pollute the addrmap with bad data.  */
14560       if (range_beginning + baseaddr == 0
14561           && !dwarf2_per_objfile->has_section_at_zero)
14562         {
14563           complaint (_(".debug_ranges entry has start address of zero"
14564                        " [in module %s]"), objfile_name (objfile));
14565           continue;
14566         }
14567
14568       callback (range_beginning, range_end);
14569     }
14570
14571   return 1;
14572 }
14573
14574 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14575    Return 1 if the attributes are present and valid, otherwise, return 0.
14576    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14577
14578 static int
14579 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14580                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14581                     struct partial_symtab *ranges_pst)
14582 {
14583   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14584   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14585   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14586                                        SECT_OFF_TEXT (objfile));
14587   int low_set = 0;
14588   CORE_ADDR low = 0;
14589   CORE_ADDR high = 0;
14590   int retval;
14591
14592   retval = dwarf2_ranges_process (offset, cu,
14593     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14594     {
14595       if (ranges_pst != NULL)
14596         {
14597           CORE_ADDR lowpc;
14598           CORE_ADDR highpc;
14599
14600           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14601                                                range_beginning + baseaddr)
14602                    - baseaddr);
14603           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14604                                                 range_end + baseaddr)
14605                     - baseaddr);
14606           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14607                              ranges_pst);
14608         }
14609
14610       /* FIXME: This is recording everything as a low-high
14611          segment of consecutive addresses.  We should have a
14612          data structure for discontiguous block ranges
14613          instead.  */
14614       if (! low_set)
14615         {
14616           low = range_beginning;
14617           high = range_end;
14618           low_set = 1;
14619         }
14620       else
14621         {
14622           if (range_beginning < low)
14623             low = range_beginning;
14624           if (range_end > high)
14625             high = range_end;
14626         }
14627     });
14628   if (!retval)
14629     return 0;
14630
14631   if (! low_set)
14632     /* If the first entry is an end-of-list marker, the range
14633        describes an empty scope, i.e. no instructions.  */
14634     return 0;
14635
14636   if (low_return)
14637     *low_return = low;
14638   if (high_return)
14639     *high_return = high;
14640   return 1;
14641 }
14642
14643 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14644    definition for the return value.  *LOWPC and *HIGHPC are set iff
14645    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14646
14647 static enum pc_bounds_kind
14648 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14649                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14650                       struct partial_symtab *pst)
14651 {
14652   struct dwarf2_per_objfile *dwarf2_per_objfile
14653     = cu->per_cu->dwarf2_per_objfile;
14654   struct attribute *attr;
14655   struct attribute *attr_high;
14656   CORE_ADDR low = 0;
14657   CORE_ADDR high = 0;
14658   enum pc_bounds_kind ret;
14659
14660   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14661   if (attr_high)
14662     {
14663       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14664       if (attr)
14665         {
14666           low = attr_value_as_address (attr);
14667           high = attr_value_as_address (attr_high);
14668           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14669             high += low;
14670         }
14671       else
14672         /* Found high w/o low attribute.  */
14673         return PC_BOUNDS_INVALID;
14674
14675       /* Found consecutive range of addresses.  */
14676       ret = PC_BOUNDS_HIGH_LOW;
14677     }
14678   else
14679     {
14680       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14681       if (attr != NULL)
14682         {
14683           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14684              We take advantage of the fact that DW_AT_ranges does not appear
14685              in DW_TAG_compile_unit of DWO files.  */
14686           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14687           unsigned int ranges_offset = (DW_UNSND (attr)
14688                                         + (need_ranges_base
14689                                            ? cu->ranges_base
14690                                            : 0));
14691
14692           /* Value of the DW_AT_ranges attribute is the offset in the
14693              .debug_ranges section.  */
14694           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14695             return PC_BOUNDS_INVALID;
14696           /* Found discontinuous range of addresses.  */
14697           ret = PC_BOUNDS_RANGES;
14698         }
14699       else
14700         return PC_BOUNDS_NOT_PRESENT;
14701     }
14702
14703   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14704   if (high <= low)
14705     return PC_BOUNDS_INVALID;
14706
14707   /* When using the GNU linker, .gnu.linkonce. sections are used to
14708      eliminate duplicate copies of functions and vtables and such.
14709      The linker will arbitrarily choose one and discard the others.
14710      The AT_*_pc values for such functions refer to local labels in
14711      these sections.  If the section from that file was discarded, the
14712      labels are not in the output, so the relocs get a value of 0.
14713      If this is a discarded function, mark the pc bounds as invalid,
14714      so that GDB will ignore it.  */
14715   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14716     return PC_BOUNDS_INVALID;
14717
14718   *lowpc = low;
14719   if (highpc)
14720     *highpc = high;
14721   return ret;
14722 }
14723
14724 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14725    its low and high PC addresses.  Do nothing if these addresses could not
14726    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14727    and HIGHPC to the high address if greater than HIGHPC.  */
14728
14729 static void
14730 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14731                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14732                                  struct dwarf2_cu *cu)
14733 {
14734   CORE_ADDR low, high;
14735   struct die_info *child = die->child;
14736
14737   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14738     {
14739       *lowpc = std::min (*lowpc, low);
14740       *highpc = std::max (*highpc, high);
14741     }
14742
14743   /* If the language does not allow nested subprograms (either inside
14744      subprograms or lexical blocks), we're done.  */
14745   if (cu->language != language_ada)
14746     return;
14747
14748   /* Check all the children of the given DIE.  If it contains nested
14749      subprograms, then check their pc bounds.  Likewise, we need to
14750      check lexical blocks as well, as they may also contain subprogram
14751      definitions.  */
14752   while (child && child->tag)
14753     {
14754       if (child->tag == DW_TAG_subprogram
14755           || child->tag == DW_TAG_lexical_block)
14756         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14757       child = sibling_die (child);
14758     }
14759 }
14760
14761 /* Get the low and high pc's represented by the scope DIE, and store
14762    them in *LOWPC and *HIGHPC.  If the correct values can't be
14763    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14764
14765 static void
14766 get_scope_pc_bounds (struct die_info *die,
14767                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14768                      struct dwarf2_cu *cu)
14769 {
14770   CORE_ADDR best_low = (CORE_ADDR) -1;
14771   CORE_ADDR best_high = (CORE_ADDR) 0;
14772   CORE_ADDR current_low, current_high;
14773
14774   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14775       >= PC_BOUNDS_RANGES)
14776     {
14777       best_low = current_low;
14778       best_high = current_high;
14779     }
14780   else
14781     {
14782       struct die_info *child = die->child;
14783
14784       while (child && child->tag)
14785         {
14786           switch (child->tag) {
14787           case DW_TAG_subprogram:
14788             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14789             break;
14790           case DW_TAG_namespace:
14791           case DW_TAG_module:
14792             /* FIXME: carlton/2004-01-16: Should we do this for
14793                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14794                that current GCC's always emit the DIEs corresponding
14795                to definitions of methods of classes as children of a
14796                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14797                the DIEs giving the declarations, which could be
14798                anywhere).  But I don't see any reason why the
14799                standards says that they have to be there.  */
14800             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14801
14802             if (current_low != ((CORE_ADDR) -1))
14803               {
14804                 best_low = std::min (best_low, current_low);
14805                 best_high = std::max (best_high, current_high);
14806               }
14807             break;
14808           default:
14809             /* Ignore.  */
14810             break;
14811           }
14812
14813           child = sibling_die (child);
14814         }
14815     }
14816
14817   *lowpc = best_low;
14818   *highpc = best_high;
14819 }
14820
14821 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14822    in DIE.  */
14823
14824 static void
14825 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14826                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14827 {
14828   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14829   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14830   struct attribute *attr;
14831   struct attribute *attr_high;
14832
14833   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14834   if (attr_high)
14835     {
14836       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14837       if (attr)
14838         {
14839           CORE_ADDR low = attr_value_as_address (attr);
14840           CORE_ADDR high = attr_value_as_address (attr_high);
14841
14842           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14843             high += low;
14844
14845           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14846           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14847           cu->builder->record_block_range (block, low, high - 1);
14848         }
14849     }
14850
14851   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14852   if (attr)
14853     {
14854       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14855          We take advantage of the fact that DW_AT_ranges does not appear
14856          in DW_TAG_compile_unit of DWO files.  */
14857       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14858
14859       /* The value of the DW_AT_ranges attribute is the offset of the
14860          address range list in the .debug_ranges section.  */
14861       unsigned long offset = (DW_UNSND (attr)
14862                               + (need_ranges_base ? cu->ranges_base : 0));
14863
14864       std::vector<blockrange> blockvec;
14865       dwarf2_ranges_process (offset, cu,
14866         [&] (CORE_ADDR start, CORE_ADDR end)
14867         {
14868           start += baseaddr;
14869           end += baseaddr;
14870           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14871           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14872           cu->builder->record_block_range (block, start, end - 1);
14873           blockvec.emplace_back (start, end);
14874         });
14875
14876       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14877     }
14878 }
14879
14880 /* Check whether the producer field indicates either of GCC < 4.6, or the
14881    Intel C/C++ compiler, and cache the result in CU.  */
14882
14883 static void
14884 check_producer (struct dwarf2_cu *cu)
14885 {
14886   int major, minor;
14887
14888   if (cu->producer == NULL)
14889     {
14890       /* For unknown compilers expect their behavior is DWARF version
14891          compliant.
14892
14893          GCC started to support .debug_types sections by -gdwarf-4 since
14894          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14895          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14896          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14897          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14898     }
14899   else if (producer_is_gcc (cu->producer, &major, &minor))
14900     {
14901       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14902       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14903     }
14904   else if (producer_is_icc (cu->producer, &major, &minor))
14905     cu->producer_is_icc_lt_14 = major < 14;
14906   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14907     cu->producer_is_codewarrior = true;
14908   else
14909     {
14910       /* For other non-GCC compilers, expect their behavior is DWARF version
14911          compliant.  */
14912     }
14913
14914   cu->checked_producer = 1;
14915 }
14916
14917 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14918    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14919    during 4.6.0 experimental.  */
14920
14921 static int
14922 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14923 {
14924   if (!cu->checked_producer)
14925     check_producer (cu);
14926
14927   return cu->producer_is_gxx_lt_4_6;
14928 }
14929
14930
14931 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14932    with incorrect is_stmt attributes.  */
14933
14934 static bool
14935 producer_is_codewarrior (struct dwarf2_cu *cu)
14936 {
14937   if (!cu->checked_producer)
14938     check_producer (cu);
14939
14940   return cu->producer_is_codewarrior;
14941 }
14942
14943 /* Return the default accessibility type if it is not overriden by
14944    DW_AT_accessibility.  */
14945
14946 static enum dwarf_access_attribute
14947 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14948 {
14949   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14950     {
14951       /* The default DWARF 2 accessibility for members is public, the default
14952          accessibility for inheritance is private.  */
14953
14954       if (die->tag != DW_TAG_inheritance)
14955         return DW_ACCESS_public;
14956       else
14957         return DW_ACCESS_private;
14958     }
14959   else
14960     {
14961       /* DWARF 3+ defines the default accessibility a different way.  The same
14962          rules apply now for DW_TAG_inheritance as for the members and it only
14963          depends on the container kind.  */
14964
14965       if (die->parent->tag == DW_TAG_class_type)
14966         return DW_ACCESS_private;
14967       else
14968         return DW_ACCESS_public;
14969     }
14970 }
14971
14972 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14973    offset.  If the attribute was not found return 0, otherwise return
14974    1.  If it was found but could not properly be handled, set *OFFSET
14975    to 0.  */
14976
14977 static int
14978 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14979                              LONGEST *offset)
14980 {
14981   struct attribute *attr;
14982
14983   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14984   if (attr != NULL)
14985     {
14986       *offset = 0;
14987
14988       /* Note that we do not check for a section offset first here.
14989          This is because DW_AT_data_member_location is new in DWARF 4,
14990          so if we see it, we can assume that a constant form is really
14991          a constant and not a section offset.  */
14992       if (attr_form_is_constant (attr))
14993         *offset = dwarf2_get_attr_constant_value (attr, 0);
14994       else if (attr_form_is_section_offset (attr))
14995         dwarf2_complex_location_expr_complaint ();
14996       else if (attr_form_is_block (attr))
14997         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14998       else
14999         dwarf2_complex_location_expr_complaint ();
15000
15001       return 1;
15002     }
15003
15004   return 0;
15005 }
15006
15007 /* Add an aggregate field to the field list.  */
15008
15009 static void
15010 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15011                   struct dwarf2_cu *cu)
15012 {
15013   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15014   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15015   struct nextfield *new_field;
15016   struct attribute *attr;
15017   struct field *fp;
15018   const char *fieldname = "";
15019
15020   if (die->tag == DW_TAG_inheritance)
15021     {
15022       fip->baseclasses.emplace_back ();
15023       new_field = &fip->baseclasses.back ();
15024     }
15025   else
15026     {
15027       fip->fields.emplace_back ();
15028       new_field = &fip->fields.back ();
15029     }
15030
15031   fip->nfields++;
15032
15033   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15034   if (attr)
15035     new_field->accessibility = DW_UNSND (attr);
15036   else
15037     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15038   if (new_field->accessibility != DW_ACCESS_public)
15039     fip->non_public_fields = 1;
15040
15041   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15042   if (attr)
15043     new_field->virtuality = DW_UNSND (attr);
15044   else
15045     new_field->virtuality = DW_VIRTUALITY_none;
15046
15047   fp = &new_field->field;
15048
15049   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15050     {
15051       LONGEST offset;
15052
15053       /* Data member other than a C++ static data member.  */
15054
15055       /* Get type of field.  */
15056       fp->type = die_type (die, cu);
15057
15058       SET_FIELD_BITPOS (*fp, 0);
15059
15060       /* Get bit size of field (zero if none).  */
15061       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15062       if (attr)
15063         {
15064           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15065         }
15066       else
15067         {
15068           FIELD_BITSIZE (*fp) = 0;
15069         }
15070
15071       /* Get bit offset of field.  */
15072       if (handle_data_member_location (die, cu, &offset))
15073         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15074       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15075       if (attr)
15076         {
15077           if (gdbarch_bits_big_endian (gdbarch))
15078             {
15079               /* For big endian bits, the DW_AT_bit_offset gives the
15080                  additional bit offset from the MSB of the containing
15081                  anonymous object to the MSB of the field.  We don't
15082                  have to do anything special since we don't need to
15083                  know the size of the anonymous object.  */
15084               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15085             }
15086           else
15087             {
15088               /* For little endian bits, compute the bit offset to the
15089                  MSB of the anonymous object, subtract off the number of
15090                  bits from the MSB of the field to the MSB of the
15091                  object, and then subtract off the number of bits of
15092                  the field itself.  The result is the bit offset of
15093                  the LSB of the field.  */
15094               int anonymous_size;
15095               int bit_offset = DW_UNSND (attr);
15096
15097               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15098               if (attr)
15099                 {
15100                   /* The size of the anonymous object containing
15101                      the bit field is explicit, so use the
15102                      indicated size (in bytes).  */
15103                   anonymous_size = DW_UNSND (attr);
15104                 }
15105               else
15106                 {
15107                   /* The size of the anonymous object containing
15108                      the bit field must be inferred from the type
15109                      attribute of the data member containing the
15110                      bit field.  */
15111                   anonymous_size = TYPE_LENGTH (fp->type);
15112                 }
15113               SET_FIELD_BITPOS (*fp,
15114                                 (FIELD_BITPOS (*fp)
15115                                  + anonymous_size * bits_per_byte
15116                                  - bit_offset - FIELD_BITSIZE (*fp)));
15117             }
15118         }
15119       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15120       if (attr != NULL)
15121         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15122                                 + dwarf2_get_attr_constant_value (attr, 0)));
15123
15124       /* Get name of field.  */
15125       fieldname = dwarf2_name (die, cu);
15126       if (fieldname == NULL)
15127         fieldname = "";
15128
15129       /* The name is already allocated along with this objfile, so we don't
15130          need to duplicate it for the type.  */
15131       fp->name = fieldname;
15132
15133       /* Change accessibility for artificial fields (e.g. virtual table
15134          pointer or virtual base class pointer) to private.  */
15135       if (dwarf2_attr (die, DW_AT_artificial, cu))
15136         {
15137           FIELD_ARTIFICIAL (*fp) = 1;
15138           new_field->accessibility = DW_ACCESS_private;
15139           fip->non_public_fields = 1;
15140         }
15141     }
15142   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15143     {
15144       /* C++ static member.  */
15145
15146       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15147          is a declaration, but all versions of G++ as of this writing
15148          (so through at least 3.2.1) incorrectly generate
15149          DW_TAG_variable tags.  */
15150
15151       const char *physname;
15152
15153       /* Get name of field.  */
15154       fieldname = dwarf2_name (die, cu);
15155       if (fieldname == NULL)
15156         return;
15157
15158       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15159       if (attr
15160           /* Only create a symbol if this is an external value.
15161              new_symbol checks this and puts the value in the global symbol
15162              table, which we want.  If it is not external, new_symbol
15163              will try to put the value in cu->list_in_scope which is wrong.  */
15164           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15165         {
15166           /* A static const member, not much different than an enum as far as
15167              we're concerned, except that we can support more types.  */
15168           new_symbol (die, NULL, cu);
15169         }
15170
15171       /* Get physical name.  */
15172       physname = dwarf2_physname (fieldname, die, cu);
15173
15174       /* The name is already allocated along with this objfile, so we don't
15175          need to duplicate it for the type.  */
15176       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15177       FIELD_TYPE (*fp) = die_type (die, cu);
15178       FIELD_NAME (*fp) = fieldname;
15179     }
15180   else if (die->tag == DW_TAG_inheritance)
15181     {
15182       LONGEST offset;
15183
15184       /* C++ base class field.  */
15185       if (handle_data_member_location (die, cu, &offset))
15186         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15187       FIELD_BITSIZE (*fp) = 0;
15188       FIELD_TYPE (*fp) = die_type (die, cu);
15189       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15190     }
15191   else if (die->tag == DW_TAG_variant_part)
15192     {
15193       /* process_structure_scope will treat this DIE as a union.  */
15194       process_structure_scope (die, cu);
15195
15196       /* The variant part is relative to the start of the enclosing
15197          structure.  */
15198       SET_FIELD_BITPOS (*fp, 0);
15199       fp->type = get_die_type (die, cu);
15200       fp->artificial = 1;
15201       fp->name = "<<variant>>";
15202
15203       /* Normally a DW_TAG_variant_part won't have a size, but our
15204          representation requires one, so set it to the maximum of the
15205          child sizes.  */
15206       if (TYPE_LENGTH (fp->type) == 0)
15207         {
15208           unsigned max = 0;
15209           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15210             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15211               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15212           TYPE_LENGTH (fp->type) = max;
15213         }
15214     }
15215   else
15216     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15217 }
15218
15219 /* Can the type given by DIE define another type?  */
15220
15221 static bool
15222 type_can_define_types (const struct die_info *die)
15223 {
15224   switch (die->tag)
15225     {
15226     case DW_TAG_typedef:
15227     case DW_TAG_class_type:
15228     case DW_TAG_structure_type:
15229     case DW_TAG_union_type:
15230     case DW_TAG_enumeration_type:
15231       return true;
15232
15233     default:
15234       return false;
15235     }
15236 }
15237
15238 /* Add a type definition defined in the scope of the FIP's class.  */
15239
15240 static void
15241 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15242                       struct dwarf2_cu *cu)
15243 {
15244   struct decl_field fp;
15245   memset (&fp, 0, sizeof (fp));
15246
15247   gdb_assert (type_can_define_types (die));
15248
15249   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15250   fp.name = dwarf2_name (die, cu);
15251   fp.type = read_type_die (die, cu);
15252
15253   /* Save accessibility.  */
15254   enum dwarf_access_attribute accessibility;
15255   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15256   if (attr != NULL)
15257     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15258   else
15259     accessibility = dwarf2_default_access_attribute (die, cu);
15260   switch (accessibility)
15261     {
15262     case DW_ACCESS_public:
15263       /* The assumed value if neither private nor protected.  */
15264       break;
15265     case DW_ACCESS_private:
15266       fp.is_private = 1;
15267       break;
15268     case DW_ACCESS_protected:
15269       fp.is_protected = 1;
15270       break;
15271     default:
15272       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15273     }
15274
15275   if (die->tag == DW_TAG_typedef)
15276     fip->typedef_field_list.push_back (fp);
15277   else
15278     fip->nested_types_list.push_back (fp);
15279 }
15280
15281 /* Create the vector of fields, and attach it to the type.  */
15282
15283 static void
15284 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15285                               struct dwarf2_cu *cu)
15286 {
15287   int nfields = fip->nfields;
15288
15289   /* Record the field count, allocate space for the array of fields,
15290      and create blank accessibility bitfields if necessary.  */
15291   TYPE_NFIELDS (type) = nfields;
15292   TYPE_FIELDS (type) = (struct field *)
15293     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15294
15295   if (fip->non_public_fields && cu->language != language_ada)
15296     {
15297       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15298
15299       TYPE_FIELD_PRIVATE_BITS (type) =
15300         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15301       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15302
15303       TYPE_FIELD_PROTECTED_BITS (type) =
15304         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15305       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15306
15307       TYPE_FIELD_IGNORE_BITS (type) =
15308         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15309       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15310     }
15311
15312   /* If the type has baseclasses, allocate and clear a bit vector for
15313      TYPE_FIELD_VIRTUAL_BITS.  */
15314   if (!fip->baseclasses.empty () && cu->language != language_ada)
15315     {
15316       int num_bytes = B_BYTES (fip->baseclasses.size ());
15317       unsigned char *pointer;
15318
15319       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15320       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15321       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15322       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15323       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15324     }
15325
15326   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15327     {
15328       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15329
15330       for (int index = 0; index < nfields; ++index)
15331         {
15332           struct nextfield &field = fip->fields[index];
15333
15334           if (field.variant.is_discriminant)
15335             di->discriminant_index = index;
15336           else if (field.variant.default_branch)
15337             di->default_index = index;
15338           else
15339             di->discriminants[index] = field.variant.discriminant_value;
15340         }
15341     }
15342
15343   /* Copy the saved-up fields into the field vector.  */
15344   for (int i = 0; i < nfields; ++i)
15345     {
15346       struct nextfield &field
15347         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15348            : fip->fields[i - fip->baseclasses.size ()]);
15349
15350       TYPE_FIELD (type, i) = field.field;
15351       switch (field.accessibility)
15352         {
15353         case DW_ACCESS_private:
15354           if (cu->language != language_ada)
15355             SET_TYPE_FIELD_PRIVATE (type, i);
15356           break;
15357
15358         case DW_ACCESS_protected:
15359           if (cu->language != language_ada)
15360             SET_TYPE_FIELD_PROTECTED (type, i);
15361           break;
15362
15363         case DW_ACCESS_public:
15364           break;
15365
15366         default:
15367           /* Unknown accessibility.  Complain and treat it as public.  */
15368           {
15369             complaint (_("unsupported accessibility %d"),
15370                        field.accessibility);
15371           }
15372           break;
15373         }
15374       if (i < fip->baseclasses.size ())
15375         {
15376           switch (field.virtuality)
15377             {
15378             case DW_VIRTUALITY_virtual:
15379             case DW_VIRTUALITY_pure_virtual:
15380               if (cu->language == language_ada)
15381                 error (_("unexpected virtuality in component of Ada type"));
15382               SET_TYPE_FIELD_VIRTUAL (type, i);
15383               break;
15384             }
15385         }
15386     }
15387 }
15388
15389 /* Return true if this member function is a constructor, false
15390    otherwise.  */
15391
15392 static int
15393 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15394 {
15395   const char *fieldname;
15396   const char *type_name;
15397   int len;
15398
15399   if (die->parent == NULL)
15400     return 0;
15401
15402   if (die->parent->tag != DW_TAG_structure_type
15403       && die->parent->tag != DW_TAG_union_type
15404       && die->parent->tag != DW_TAG_class_type)
15405     return 0;
15406
15407   fieldname = dwarf2_name (die, cu);
15408   type_name = dwarf2_name (die->parent, cu);
15409   if (fieldname == NULL || type_name == NULL)
15410     return 0;
15411
15412   len = strlen (fieldname);
15413   return (strncmp (fieldname, type_name, len) == 0
15414           && (type_name[len] == '\0' || type_name[len] == '<'));
15415 }
15416
15417 /* Add a member function to the proper fieldlist.  */
15418
15419 static void
15420 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15421                       struct type *type, struct dwarf2_cu *cu)
15422 {
15423   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15424   struct attribute *attr;
15425   int i;
15426   struct fnfieldlist *flp = nullptr;
15427   struct fn_field *fnp;
15428   const char *fieldname;
15429   struct type *this_type;
15430   enum dwarf_access_attribute accessibility;
15431
15432   if (cu->language == language_ada)
15433     error (_("unexpected member function in Ada type"));
15434
15435   /* Get name of member function.  */
15436   fieldname = dwarf2_name (die, cu);
15437   if (fieldname == NULL)
15438     return;
15439
15440   /* Look up member function name in fieldlist.  */
15441   for (i = 0; i < fip->fnfieldlists.size (); i++)
15442     {
15443       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15444         {
15445           flp = &fip->fnfieldlists[i];
15446           break;
15447         }
15448     }
15449
15450   /* Create a new fnfieldlist if necessary.  */
15451   if (flp == nullptr)
15452     {
15453       fip->fnfieldlists.emplace_back ();
15454       flp = &fip->fnfieldlists.back ();
15455       flp->name = fieldname;
15456       i = fip->fnfieldlists.size () - 1;
15457     }
15458
15459   /* Create a new member function field and add it to the vector of
15460      fnfieldlists.  */
15461   flp->fnfields.emplace_back ();
15462   fnp = &flp->fnfields.back ();
15463
15464   /* Delay processing of the physname until later.  */
15465   if (cu->language == language_cplus)
15466     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15467                         die, cu);
15468   else
15469     {
15470       const char *physname = dwarf2_physname (fieldname, die, cu);
15471       fnp->physname = physname ? physname : "";
15472     }
15473
15474   fnp->type = alloc_type (objfile);
15475   this_type = read_type_die (die, cu);
15476   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15477     {
15478       int nparams = TYPE_NFIELDS (this_type);
15479
15480       /* TYPE is the domain of this method, and THIS_TYPE is the type
15481            of the method itself (TYPE_CODE_METHOD).  */
15482       smash_to_method_type (fnp->type, type,
15483                             TYPE_TARGET_TYPE (this_type),
15484                             TYPE_FIELDS (this_type),
15485                             TYPE_NFIELDS (this_type),
15486                             TYPE_VARARGS (this_type));
15487
15488       /* Handle static member functions.
15489          Dwarf2 has no clean way to discern C++ static and non-static
15490          member functions.  G++ helps GDB by marking the first
15491          parameter for non-static member functions (which is the this
15492          pointer) as artificial.  We obtain this information from
15493          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15494       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15495         fnp->voffset = VOFFSET_STATIC;
15496     }
15497   else
15498     complaint (_("member function type missing for '%s'"),
15499                dwarf2_full_name (fieldname, die, cu));
15500
15501   /* Get fcontext from DW_AT_containing_type if present.  */
15502   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15503     fnp->fcontext = die_containing_type (die, cu);
15504
15505   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15506      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15507
15508   /* Get accessibility.  */
15509   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15510   if (attr)
15511     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15512   else
15513     accessibility = dwarf2_default_access_attribute (die, cu);
15514   switch (accessibility)
15515     {
15516     case DW_ACCESS_private:
15517       fnp->is_private = 1;
15518       break;
15519     case DW_ACCESS_protected:
15520       fnp->is_protected = 1;
15521       break;
15522     }
15523
15524   /* Check for artificial methods.  */
15525   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15526   if (attr && DW_UNSND (attr) != 0)
15527     fnp->is_artificial = 1;
15528
15529   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15530
15531   /* Get index in virtual function table if it is a virtual member
15532      function.  For older versions of GCC, this is an offset in the
15533      appropriate virtual table, as specified by DW_AT_containing_type.
15534      For everyone else, it is an expression to be evaluated relative
15535      to the object address.  */
15536
15537   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15538   if (attr)
15539     {
15540       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15541         {
15542           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15543             {
15544               /* Old-style GCC.  */
15545               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15546             }
15547           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15548                    || (DW_BLOCK (attr)->size > 1
15549                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15550                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15551             {
15552               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15553               if ((fnp->voffset % cu->header.addr_size) != 0)
15554                 dwarf2_complex_location_expr_complaint ();
15555               else
15556                 fnp->voffset /= cu->header.addr_size;
15557               fnp->voffset += 2;
15558             }
15559           else
15560             dwarf2_complex_location_expr_complaint ();
15561
15562           if (!fnp->fcontext)
15563             {
15564               /* If there is no `this' field and no DW_AT_containing_type,
15565                  we cannot actually find a base class context for the
15566                  vtable!  */
15567               if (TYPE_NFIELDS (this_type) == 0
15568                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15569                 {
15570                   complaint (_("cannot determine context for virtual member "
15571                                "function \"%s\" (offset %s)"),
15572                              fieldname, sect_offset_str (die->sect_off));
15573                 }
15574               else
15575                 {
15576                   fnp->fcontext
15577                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15578                 }
15579             }
15580         }
15581       else if (attr_form_is_section_offset (attr))
15582         {
15583           dwarf2_complex_location_expr_complaint ();
15584         }
15585       else
15586         {
15587           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15588                                                  fieldname);
15589         }
15590     }
15591   else
15592     {
15593       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15594       if (attr && DW_UNSND (attr))
15595         {
15596           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15597           complaint (_("Member function \"%s\" (offset %s) is virtual "
15598                        "but the vtable offset is not specified"),
15599                      fieldname, sect_offset_str (die->sect_off));
15600           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15601           TYPE_CPLUS_DYNAMIC (type) = 1;
15602         }
15603     }
15604 }
15605
15606 /* Create the vector of member function fields, and attach it to the type.  */
15607
15608 static void
15609 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15610                                  struct dwarf2_cu *cu)
15611 {
15612   if (cu->language == language_ada)
15613     error (_("unexpected member functions in Ada type"));
15614
15615   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15616   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15617     TYPE_ALLOC (type,
15618                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15619
15620   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15621     {
15622       struct fnfieldlist &nf = fip->fnfieldlists[i];
15623       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15624
15625       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15626       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15627       fn_flp->fn_fields = (struct fn_field *)
15628         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15629
15630       for (int k = 0; k < nf.fnfields.size (); ++k)
15631         fn_flp->fn_fields[k] = nf.fnfields[k];
15632     }
15633
15634   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15635 }
15636
15637 /* Returns non-zero if NAME is the name of a vtable member in CU's
15638    language, zero otherwise.  */
15639 static int
15640 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15641 {
15642   static const char vptr[] = "_vptr";
15643
15644   /* Look for the C++ form of the vtable.  */
15645   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15646     return 1;
15647
15648   return 0;
15649 }
15650
15651 /* GCC outputs unnamed structures that are really pointers to member
15652    functions, with the ABI-specified layout.  If TYPE describes
15653    such a structure, smash it into a member function type.
15654
15655    GCC shouldn't do this; it should just output pointer to member DIEs.
15656    This is GCC PR debug/28767.  */
15657
15658 static void
15659 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15660 {
15661   struct type *pfn_type, *self_type, *new_type;
15662
15663   /* Check for a structure with no name and two children.  */
15664   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15665     return;
15666
15667   /* Check for __pfn and __delta members.  */
15668   if (TYPE_FIELD_NAME (type, 0) == NULL
15669       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15670       || TYPE_FIELD_NAME (type, 1) == NULL
15671       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15672     return;
15673
15674   /* Find the type of the method.  */
15675   pfn_type = TYPE_FIELD_TYPE (type, 0);
15676   if (pfn_type == NULL
15677       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15678       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15679     return;
15680
15681   /* Look for the "this" argument.  */
15682   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15683   if (TYPE_NFIELDS (pfn_type) == 0
15684       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15685       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15686     return;
15687
15688   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15689   new_type = alloc_type (objfile);
15690   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15691                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15692                         TYPE_VARARGS (pfn_type));
15693   smash_to_methodptr_type (type, new_type);
15694 }
15695
15696 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15697    appropriate error checking and issuing complaints if there is a
15698    problem.  */
15699
15700 static ULONGEST
15701 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15702 {
15703   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15704
15705   if (attr == nullptr)
15706     return 0;
15707
15708   if (!attr_form_is_constant (attr))
15709     {
15710       complaint (_("DW_AT_alignment must have constant form"
15711                    " - DIE at %s [in module %s]"),
15712                  sect_offset_str (die->sect_off),
15713                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15714       return 0;
15715     }
15716
15717   ULONGEST align;
15718   if (attr->form == DW_FORM_sdata)
15719     {
15720       LONGEST val = DW_SND (attr);
15721       if (val < 0)
15722         {
15723           complaint (_("DW_AT_alignment value must not be negative"
15724                        " - DIE at %s [in module %s]"),
15725                      sect_offset_str (die->sect_off),
15726                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15727           return 0;
15728         }
15729       align = val;
15730     }
15731   else
15732     align = DW_UNSND (attr);
15733
15734   if (align == 0)
15735     {
15736       complaint (_("DW_AT_alignment value must not be zero"
15737                    " - DIE at %s [in module %s]"),
15738                  sect_offset_str (die->sect_off),
15739                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15740       return 0;
15741     }
15742   if ((align & (align - 1)) != 0)
15743     {
15744       complaint (_("DW_AT_alignment value must be a power of 2"
15745                    " - DIE at %s [in module %s]"),
15746                  sect_offset_str (die->sect_off),
15747                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15748       return 0;
15749     }
15750
15751   return align;
15752 }
15753
15754 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15755    the alignment for TYPE.  */
15756
15757 static void
15758 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15759                      struct type *type)
15760 {
15761   if (!set_type_align (type, get_alignment (cu, die)))
15762     complaint (_("DW_AT_alignment value too large"
15763                  " - DIE at %s [in module %s]"),
15764                sect_offset_str (die->sect_off),
15765                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15766 }
15767
15768 /* Called when we find the DIE that starts a structure or union scope
15769    (definition) to create a type for the structure or union.  Fill in
15770    the type's name and general properties; the members will not be
15771    processed until process_structure_scope.  A symbol table entry for
15772    the type will also not be done until process_structure_scope (assuming
15773    the type has a name).
15774
15775    NOTE: we need to call these functions regardless of whether or not the
15776    DIE has a DW_AT_name attribute, since it might be an anonymous
15777    structure or union.  This gets the type entered into our set of
15778    user defined types.  */
15779
15780 static struct type *
15781 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15782 {
15783   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15784   struct type *type;
15785   struct attribute *attr;
15786   const char *name;
15787
15788   /* If the definition of this type lives in .debug_types, read that type.
15789      Don't follow DW_AT_specification though, that will take us back up
15790      the chain and we want to go down.  */
15791   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15792   if (attr)
15793     {
15794       type = get_DW_AT_signature_type (die, attr, cu);
15795
15796       /* The type's CU may not be the same as CU.
15797          Ensure TYPE is recorded with CU in die_type_hash.  */
15798       return set_die_type (die, type, cu);
15799     }
15800
15801   type = alloc_type (objfile);
15802   INIT_CPLUS_SPECIFIC (type);
15803
15804   name = dwarf2_name (die, cu);
15805   if (name != NULL)
15806     {
15807       if (cu->language == language_cplus
15808           || cu->language == language_d
15809           || cu->language == language_rust)
15810         {
15811           const char *full_name = dwarf2_full_name (name, die, cu);
15812
15813           /* dwarf2_full_name might have already finished building the DIE's
15814              type.  If so, there is no need to continue.  */
15815           if (get_die_type (die, cu) != NULL)
15816             return get_die_type (die, cu);
15817
15818           TYPE_NAME (type) = full_name;
15819         }
15820       else
15821         {
15822           /* The name is already allocated along with this objfile, so
15823              we don't need to duplicate it for the type.  */
15824           TYPE_NAME (type) = name;
15825         }
15826     }
15827
15828   if (die->tag == DW_TAG_structure_type)
15829     {
15830       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15831     }
15832   else if (die->tag == DW_TAG_union_type)
15833     {
15834       TYPE_CODE (type) = TYPE_CODE_UNION;
15835     }
15836   else if (die->tag == DW_TAG_variant_part)
15837     {
15838       TYPE_CODE (type) = TYPE_CODE_UNION;
15839       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15840     }
15841   else
15842     {
15843       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15844     }
15845
15846   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15847     TYPE_DECLARED_CLASS (type) = 1;
15848
15849   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15850   if (attr)
15851     {
15852       if (attr_form_is_constant (attr))
15853         TYPE_LENGTH (type) = DW_UNSND (attr);
15854       else
15855         {
15856           /* For the moment, dynamic type sizes are not supported
15857              by GDB's struct type.  The actual size is determined
15858              on-demand when resolving the type of a given object,
15859              so set the type's length to zero for now.  Otherwise,
15860              we record an expression as the length, and that expression
15861              could lead to a very large value, which could eventually
15862              lead to us trying to allocate that much memory when creating
15863              a value of that type.  */
15864           TYPE_LENGTH (type) = 0;
15865         }
15866     }
15867   else
15868     {
15869       TYPE_LENGTH (type) = 0;
15870     }
15871
15872   maybe_set_alignment (cu, die, type);
15873
15874   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15875     {
15876       /* ICC<14 does not output the required DW_AT_declaration on
15877          incomplete types, but gives them a size of zero.  */
15878       TYPE_STUB (type) = 1;
15879     }
15880   else
15881     TYPE_STUB_SUPPORTED (type) = 1;
15882
15883   if (die_is_declaration (die, cu))
15884     TYPE_STUB (type) = 1;
15885   else if (attr == NULL && die->child == NULL
15886            && producer_is_realview (cu->producer))
15887     /* RealView does not output the required DW_AT_declaration
15888        on incomplete types.  */
15889     TYPE_STUB (type) = 1;
15890
15891   /* We need to add the type field to the die immediately so we don't
15892      infinitely recurse when dealing with pointers to the structure
15893      type within the structure itself.  */
15894   set_die_type (die, type, cu);
15895
15896   /* set_die_type should be already done.  */
15897   set_descriptive_type (type, die, cu);
15898
15899   return type;
15900 }
15901
15902 /* A helper for process_structure_scope that handles a single member
15903    DIE.  */
15904
15905 static void
15906 handle_struct_member_die (struct die_info *child_die, struct type *type,
15907                           struct field_info *fi,
15908                           std::vector<struct symbol *> *template_args,
15909                           struct dwarf2_cu *cu)
15910 {
15911   if (child_die->tag == DW_TAG_member
15912       || child_die->tag == DW_TAG_variable
15913       || child_die->tag == DW_TAG_variant_part)
15914     {
15915       /* NOTE: carlton/2002-11-05: A C++ static data member
15916          should be a DW_TAG_member that is a declaration, but
15917          all versions of G++ as of this writing (so through at
15918          least 3.2.1) incorrectly generate DW_TAG_variable
15919          tags for them instead.  */
15920       dwarf2_add_field (fi, child_die, cu);
15921     }
15922   else if (child_die->tag == DW_TAG_subprogram)
15923     {
15924       /* Rust doesn't have member functions in the C++ sense.
15925          However, it does emit ordinary functions as children
15926          of a struct DIE.  */
15927       if (cu->language == language_rust)
15928         read_func_scope (child_die, cu);
15929       else
15930         {
15931           /* C++ member function.  */
15932           dwarf2_add_member_fn (fi, child_die, type, cu);
15933         }
15934     }
15935   else if (child_die->tag == DW_TAG_inheritance)
15936     {
15937       /* C++ base class field.  */
15938       dwarf2_add_field (fi, child_die, cu);
15939     }
15940   else if (type_can_define_types (child_die))
15941     dwarf2_add_type_defn (fi, child_die, cu);
15942   else if (child_die->tag == DW_TAG_template_type_param
15943            || child_die->tag == DW_TAG_template_value_param)
15944     {
15945       struct symbol *arg = new_symbol (child_die, NULL, cu);
15946
15947       if (arg != NULL)
15948         template_args->push_back (arg);
15949     }
15950   else if (child_die->tag == DW_TAG_variant)
15951     {
15952       /* In a variant we want to get the discriminant and also add a
15953          field for our sole member child.  */
15954       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15955
15956       for (struct die_info *variant_child = child_die->child;
15957            variant_child != NULL;
15958            variant_child = sibling_die (variant_child))
15959         {
15960           if (variant_child->tag == DW_TAG_member)
15961             {
15962               handle_struct_member_die (variant_child, type, fi,
15963                                         template_args, cu);
15964               /* Only handle the one.  */
15965               break;
15966             }
15967         }
15968
15969       /* We don't handle this but we might as well report it if we see
15970          it.  */
15971       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15972           complaint (_("DW_AT_discr_list is not supported yet"
15973                        " - DIE at %s [in module %s]"),
15974                      sect_offset_str (child_die->sect_off),
15975                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15976
15977       /* The first field was just added, so we can stash the
15978          discriminant there.  */
15979       gdb_assert (!fi->fields.empty ());
15980       if (discr == NULL)
15981         fi->fields.back ().variant.default_branch = true;
15982       else
15983         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15984     }
15985 }
15986
15987 /* Finish creating a structure or union type, including filling in
15988    its members and creating a symbol for it.  */
15989
15990 static void
15991 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15992 {
15993   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15994   struct die_info *child_die;
15995   struct type *type;
15996
15997   type = get_die_type (die, cu);
15998   if (type == NULL)
15999     type = read_structure_type (die, cu);
16000
16001   /* When reading a DW_TAG_variant_part, we need to notice when we
16002      read the discriminant member, so we can record it later in the
16003      discriminant_info.  */
16004   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16005   sect_offset discr_offset;
16006   bool has_template_parameters = false;
16007
16008   if (is_variant_part)
16009     {
16010       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16011       if (discr == NULL)
16012         {
16013           /* Maybe it's a univariant form, an extension we support.
16014              In this case arrange not to check the offset.  */
16015           is_variant_part = false;
16016         }
16017       else if (attr_form_is_ref (discr))
16018         {
16019           struct dwarf2_cu *target_cu = cu;
16020           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16021
16022           discr_offset = target_die->sect_off;
16023         }
16024       else
16025         {
16026           complaint (_("DW_AT_discr does not have DIE reference form"
16027                        " - DIE at %s [in module %s]"),
16028                      sect_offset_str (die->sect_off),
16029                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16030           is_variant_part = false;
16031         }
16032     }
16033
16034   if (die->child != NULL && ! die_is_declaration (die, cu))
16035     {
16036       struct field_info fi;
16037       std::vector<struct symbol *> template_args;
16038
16039       child_die = die->child;
16040
16041       while (child_die && child_die->tag)
16042         {
16043           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16044
16045           if (is_variant_part && discr_offset == child_die->sect_off)
16046             fi.fields.back ().variant.is_discriminant = true;
16047
16048           child_die = sibling_die (child_die);
16049         }
16050
16051       /* Attach template arguments to type.  */
16052       if (!template_args.empty ())
16053         {
16054           has_template_parameters = true;
16055           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16056           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16057           TYPE_TEMPLATE_ARGUMENTS (type)
16058             = XOBNEWVEC (&objfile->objfile_obstack,
16059                          struct symbol *,
16060                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16061           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16062                   template_args.data (),
16063                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16064                    * sizeof (struct symbol *)));
16065         }
16066
16067       /* Attach fields and member functions to the type.  */
16068       if (fi.nfields)
16069         dwarf2_attach_fields_to_type (&fi, type, cu);
16070       if (!fi.fnfieldlists.empty ())
16071         {
16072           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16073
16074           /* Get the type which refers to the base class (possibly this
16075              class itself) which contains the vtable pointer for the current
16076              class from the DW_AT_containing_type attribute.  This use of
16077              DW_AT_containing_type is a GNU extension.  */
16078
16079           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16080             {
16081               struct type *t = die_containing_type (die, cu);
16082
16083               set_type_vptr_basetype (type, t);
16084               if (type == t)
16085                 {
16086                   int i;
16087
16088                   /* Our own class provides vtbl ptr.  */
16089                   for (i = TYPE_NFIELDS (t) - 1;
16090                        i >= TYPE_N_BASECLASSES (t);
16091                        --i)
16092                     {
16093                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16094
16095                       if (is_vtable_name (fieldname, cu))
16096                         {
16097                           set_type_vptr_fieldno (type, i);
16098                           break;
16099                         }
16100                     }
16101
16102                   /* Complain if virtual function table field not found.  */
16103                   if (i < TYPE_N_BASECLASSES (t))
16104                     complaint (_("virtual function table pointer "
16105                                  "not found when defining class '%s'"),
16106                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16107                 }
16108               else
16109                 {
16110                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16111                 }
16112             }
16113           else if (cu->producer
16114                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16115             {
16116               /* The IBM XLC compiler does not provide direct indication
16117                  of the containing type, but the vtable pointer is
16118                  always named __vfp.  */
16119
16120               int i;
16121
16122               for (i = TYPE_NFIELDS (type) - 1;
16123                    i >= TYPE_N_BASECLASSES (type);
16124                    --i)
16125                 {
16126                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16127                     {
16128                       set_type_vptr_fieldno (type, i);
16129                       set_type_vptr_basetype (type, type);
16130                       break;
16131                     }
16132                 }
16133             }
16134         }
16135
16136       /* Copy fi.typedef_field_list linked list elements content into the
16137          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16138       if (!fi.typedef_field_list.empty ())
16139         {
16140           int count = fi.typedef_field_list.size ();
16141
16142           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16143           TYPE_TYPEDEF_FIELD_ARRAY (type)
16144             = ((struct decl_field *)
16145                TYPE_ALLOC (type,
16146                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16147           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16148
16149           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16150             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16151         }
16152
16153       /* Copy fi.nested_types_list linked list elements content into the
16154          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16155       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16156         {
16157           int count = fi.nested_types_list.size ();
16158
16159           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16160           TYPE_NESTED_TYPES_ARRAY (type)
16161             = ((struct decl_field *)
16162                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16163           TYPE_NESTED_TYPES_COUNT (type) = count;
16164
16165           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16166             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16167         }
16168     }
16169
16170   quirk_gcc_member_function_pointer (type, objfile);
16171   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16172     cu->rust_unions.push_back (type);
16173
16174   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16175      snapshots) has been known to create a die giving a declaration
16176      for a class that has, as a child, a die giving a definition for a
16177      nested class.  So we have to process our children even if the
16178      current die is a declaration.  Normally, of course, a declaration
16179      won't have any children at all.  */
16180
16181   child_die = die->child;
16182
16183   while (child_die != NULL && child_die->tag)
16184     {
16185       if (child_die->tag == DW_TAG_member
16186           || child_die->tag == DW_TAG_variable
16187           || child_die->tag == DW_TAG_inheritance
16188           || child_die->tag == DW_TAG_template_value_param
16189           || child_die->tag == DW_TAG_template_type_param)
16190         {
16191           /* Do nothing.  */
16192         }
16193       else
16194         process_die (child_die, cu);
16195
16196       child_die = sibling_die (child_die);
16197     }
16198
16199   /* Do not consider external references.  According to the DWARF standard,
16200      these DIEs are identified by the fact that they have no byte_size
16201      attribute, and a declaration attribute.  */
16202   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16203       || !die_is_declaration (die, cu))
16204     {
16205       struct symbol *sym = new_symbol (die, type, cu);
16206
16207       if (has_template_parameters)
16208         {
16209           /* Make sure that the symtab is set on the new symbols.
16210              Even though they don't appear in this symtab directly,
16211              other parts of gdb assume that symbols do, and this is
16212              reasonably true.  */
16213           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16214             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16215                                symbol_symtab (sym));
16216         }
16217     }
16218 }
16219
16220 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16221    update TYPE using some information only available in DIE's children.  */
16222
16223 static void
16224 update_enumeration_type_from_children (struct die_info *die,
16225                                        struct type *type,
16226                                        struct dwarf2_cu *cu)
16227 {
16228   struct die_info *child_die;
16229   int unsigned_enum = 1;
16230   int flag_enum = 1;
16231   ULONGEST mask = 0;
16232
16233   auto_obstack obstack;
16234
16235   for (child_die = die->child;
16236        child_die != NULL && child_die->tag;
16237        child_die = sibling_die (child_die))
16238     {
16239       struct attribute *attr;
16240       LONGEST value;
16241       const gdb_byte *bytes;
16242       struct dwarf2_locexpr_baton *baton;
16243       const char *name;
16244
16245       if (child_die->tag != DW_TAG_enumerator)
16246         continue;
16247
16248       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16249       if (attr == NULL)
16250         continue;
16251
16252       name = dwarf2_name (child_die, cu);
16253       if (name == NULL)
16254         name = "<anonymous enumerator>";
16255
16256       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16257                                &value, &bytes, &baton);
16258       if (value < 0)
16259         {
16260           unsigned_enum = 0;
16261           flag_enum = 0;
16262         }
16263       else if ((mask & value) != 0)
16264         flag_enum = 0;
16265       else
16266         mask |= value;
16267
16268       /* If we already know that the enum type is neither unsigned, nor
16269          a flag type, no need to look at the rest of the enumerates.  */
16270       if (!unsigned_enum && !flag_enum)
16271         break;
16272     }
16273
16274   if (unsigned_enum)
16275     TYPE_UNSIGNED (type) = 1;
16276   if (flag_enum)
16277     TYPE_FLAG_ENUM (type) = 1;
16278 }
16279
16280 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16281    complete the type's fields yet, or create any symbols.  */
16282
16283 static struct type *
16284 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16285 {
16286   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16287   struct type *type;
16288   struct attribute *attr;
16289   const char *name;
16290
16291   /* If the definition of this type lives in .debug_types, read that type.
16292      Don't follow DW_AT_specification though, that will take us back up
16293      the chain and we want to go down.  */
16294   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16295   if (attr)
16296     {
16297       type = get_DW_AT_signature_type (die, attr, cu);
16298
16299       /* The type's CU may not be the same as CU.
16300          Ensure TYPE is recorded with CU in die_type_hash.  */
16301       return set_die_type (die, type, cu);
16302     }
16303
16304   type = alloc_type (objfile);
16305
16306   TYPE_CODE (type) = TYPE_CODE_ENUM;
16307   name = dwarf2_full_name (NULL, die, cu);
16308   if (name != NULL)
16309     TYPE_NAME (type) = name;
16310
16311   attr = dwarf2_attr (die, DW_AT_type, cu);
16312   if (attr != NULL)
16313     {
16314       struct type *underlying_type = die_type (die, cu);
16315
16316       TYPE_TARGET_TYPE (type) = underlying_type;
16317     }
16318
16319   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16320   if (attr)
16321     {
16322       TYPE_LENGTH (type) = DW_UNSND (attr);
16323     }
16324   else
16325     {
16326       TYPE_LENGTH (type) = 0;
16327     }
16328
16329   maybe_set_alignment (cu, die, type);
16330
16331   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16332      declared as private in the package spec, and then defined only
16333      inside the package body.  Such types are known as Taft Amendment
16334      Types.  When another package uses such a type, an incomplete DIE
16335      may be generated by the compiler.  */
16336   if (die_is_declaration (die, cu))
16337     TYPE_STUB (type) = 1;
16338
16339   /* Finish the creation of this type by using the enum's children.
16340      We must call this even when the underlying type has been provided
16341      so that we can determine if we're looking at a "flag" enum.  */
16342   update_enumeration_type_from_children (die, type, cu);
16343
16344   /* If this type has an underlying type that is not a stub, then we
16345      may use its attributes.  We always use the "unsigned" attribute
16346      in this situation, because ordinarily we guess whether the type
16347      is unsigned -- but the guess can be wrong and the underlying type
16348      can tell us the reality.  However, we defer to a local size
16349      attribute if one exists, because this lets the compiler override
16350      the underlying type if needed.  */
16351   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16352     {
16353       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16354       if (TYPE_LENGTH (type) == 0)
16355         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16356       if (TYPE_RAW_ALIGN (type) == 0
16357           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16358         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16359     }
16360
16361   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16362
16363   return set_die_type (die, type, cu);
16364 }
16365
16366 /* Given a pointer to a die which begins an enumeration, process all
16367    the dies that define the members of the enumeration, and create the
16368    symbol for the enumeration type.
16369
16370    NOTE: We reverse the order of the element list.  */
16371
16372 static void
16373 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16374 {
16375   struct type *this_type;
16376
16377   this_type = get_die_type (die, cu);
16378   if (this_type == NULL)
16379     this_type = read_enumeration_type (die, cu);
16380
16381   if (die->child != NULL)
16382     {
16383       struct die_info *child_die;
16384       struct symbol *sym;
16385       struct field *fields = NULL;
16386       int num_fields = 0;
16387       const char *name;
16388
16389       child_die = die->child;
16390       while (child_die && child_die->tag)
16391         {
16392           if (child_die->tag != DW_TAG_enumerator)
16393             {
16394               process_die (child_die, cu);
16395             }
16396           else
16397             {
16398               name = dwarf2_name (child_die, cu);
16399               if (name)
16400                 {
16401                   sym = new_symbol (child_die, this_type, cu);
16402
16403                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16404                     {
16405                       fields = (struct field *)
16406                         xrealloc (fields,
16407                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16408                                   * sizeof (struct field));
16409                     }
16410
16411                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16412                   FIELD_TYPE (fields[num_fields]) = NULL;
16413                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16414                   FIELD_BITSIZE (fields[num_fields]) = 0;
16415
16416                   num_fields++;
16417                 }
16418             }
16419
16420           child_die = sibling_die (child_die);
16421         }
16422
16423       if (num_fields)
16424         {
16425           TYPE_NFIELDS (this_type) = num_fields;
16426           TYPE_FIELDS (this_type) = (struct field *)
16427             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16428           memcpy (TYPE_FIELDS (this_type), fields,
16429                   sizeof (struct field) * num_fields);
16430           xfree (fields);
16431         }
16432     }
16433
16434   /* If we are reading an enum from a .debug_types unit, and the enum
16435      is a declaration, and the enum is not the signatured type in the
16436      unit, then we do not want to add a symbol for it.  Adding a
16437      symbol would in some cases obscure the true definition of the
16438      enum, giving users an incomplete type when the definition is
16439      actually available.  Note that we do not want to do this for all
16440      enums which are just declarations, because C++0x allows forward
16441      enum declarations.  */
16442   if (cu->per_cu->is_debug_types
16443       && die_is_declaration (die, cu))
16444     {
16445       struct signatured_type *sig_type;
16446
16447       sig_type = (struct signatured_type *) cu->per_cu;
16448       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16449       if (sig_type->type_offset_in_section != die->sect_off)
16450         return;
16451     }
16452
16453   new_symbol (die, this_type, cu);
16454 }
16455
16456 /* Extract all information from a DW_TAG_array_type DIE and put it in
16457    the DIE's type field.  For now, this only handles one dimensional
16458    arrays.  */
16459
16460 static struct type *
16461 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16462 {
16463   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16464   struct die_info *child_die;
16465   struct type *type;
16466   struct type *element_type, *range_type, *index_type;
16467   struct attribute *attr;
16468   const char *name;
16469   struct dynamic_prop *byte_stride_prop = NULL;
16470   unsigned int bit_stride = 0;
16471
16472   element_type = die_type (die, cu);
16473
16474   /* The die_type call above may have already set the type for this DIE.  */
16475   type = get_die_type (die, cu);
16476   if (type)
16477     return type;
16478
16479   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16480   if (attr != NULL)
16481     {
16482       int stride_ok;
16483
16484       byte_stride_prop
16485         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16486       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16487       if (!stride_ok)
16488         {
16489           complaint (_("unable to read array DW_AT_byte_stride "
16490                        " - DIE at %s [in module %s]"),
16491                      sect_offset_str (die->sect_off),
16492                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16493           /* Ignore this attribute.  We will likely not be able to print
16494              arrays of this type correctly, but there is little we can do
16495              to help if we cannot read the attribute's value.  */
16496           byte_stride_prop = NULL;
16497         }
16498     }
16499
16500   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16501   if (attr != NULL)
16502     bit_stride = DW_UNSND (attr);
16503
16504   /* Irix 6.2 native cc creates array types without children for
16505      arrays with unspecified length.  */
16506   if (die->child == NULL)
16507     {
16508       index_type = objfile_type (objfile)->builtin_int;
16509       range_type = create_static_range_type (NULL, index_type, 0, -1);
16510       type = create_array_type_with_stride (NULL, element_type, range_type,
16511                                             byte_stride_prop, bit_stride);
16512       return set_die_type (die, type, cu);
16513     }
16514
16515   std::vector<struct type *> range_types;
16516   child_die = die->child;
16517   while (child_die && child_die->tag)
16518     {
16519       if (child_die->tag == DW_TAG_subrange_type)
16520         {
16521           struct type *child_type = read_type_die (child_die, cu);
16522
16523           if (child_type != NULL)
16524             {
16525               /* The range type was succesfully read.  Save it for the
16526                  array type creation.  */
16527               range_types.push_back (child_type);
16528             }
16529         }
16530       child_die = sibling_die (child_die);
16531     }
16532
16533   /* Dwarf2 dimensions are output from left to right, create the
16534      necessary array types in backwards order.  */
16535
16536   type = element_type;
16537
16538   if (read_array_order (die, cu) == DW_ORD_col_major)
16539     {
16540       int i = 0;
16541
16542       while (i < range_types.size ())
16543         type = create_array_type_with_stride (NULL, type, range_types[i++],
16544                                               byte_stride_prop, bit_stride);
16545     }
16546   else
16547     {
16548       size_t ndim = range_types.size ();
16549       while (ndim-- > 0)
16550         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16551                                               byte_stride_prop, bit_stride);
16552     }
16553
16554   /* Understand Dwarf2 support for vector types (like they occur on
16555      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16556      array type.  This is not part of the Dwarf2/3 standard yet, but a
16557      custom vendor extension.  The main difference between a regular
16558      array and the vector variant is that vectors are passed by value
16559      to functions.  */
16560   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16561   if (attr)
16562     make_vector_type (type);
16563
16564   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16565      implementation may choose to implement triple vectors using this
16566      attribute.  */
16567   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16568   if (attr)
16569     {
16570       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16571         TYPE_LENGTH (type) = DW_UNSND (attr);
16572       else
16573         complaint (_("DW_AT_byte_size for array type smaller "
16574                      "than the total size of elements"));
16575     }
16576
16577   name = dwarf2_name (die, cu);
16578   if (name)
16579     TYPE_NAME (type) = name;
16580
16581   maybe_set_alignment (cu, die, type);
16582
16583   /* Install the type in the die.  */
16584   set_die_type (die, type, cu);
16585
16586   /* set_die_type should be already done.  */
16587   set_descriptive_type (type, die, cu);
16588
16589   return type;
16590 }
16591
16592 static enum dwarf_array_dim_ordering
16593 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16594 {
16595   struct attribute *attr;
16596
16597   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16598
16599   if (attr)
16600     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16601
16602   /* GNU F77 is a special case, as at 08/2004 array type info is the
16603      opposite order to the dwarf2 specification, but data is still
16604      laid out as per normal fortran.
16605
16606      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16607      version checking.  */
16608
16609   if (cu->language == language_fortran
16610       && cu->producer && strstr (cu->producer, "GNU F77"))
16611     {
16612       return DW_ORD_row_major;
16613     }
16614
16615   switch (cu->language_defn->la_array_ordering)
16616     {
16617     case array_column_major:
16618       return DW_ORD_col_major;
16619     case array_row_major:
16620     default:
16621       return DW_ORD_row_major;
16622     };
16623 }
16624
16625 /* Extract all information from a DW_TAG_set_type DIE and put it in
16626    the DIE's type field.  */
16627
16628 static struct type *
16629 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16630 {
16631   struct type *domain_type, *set_type;
16632   struct attribute *attr;
16633
16634   domain_type = die_type (die, cu);
16635
16636   /* The die_type call above may have already set the type for this DIE.  */
16637   set_type = get_die_type (die, cu);
16638   if (set_type)
16639     return set_type;
16640
16641   set_type = create_set_type (NULL, domain_type);
16642
16643   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16644   if (attr)
16645     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16646
16647   maybe_set_alignment (cu, die, set_type);
16648
16649   return set_die_type (die, set_type, cu);
16650 }
16651
16652 /* A helper for read_common_block that creates a locexpr baton.
16653    SYM is the symbol which we are marking as computed.
16654    COMMON_DIE is the DIE for the common block.
16655    COMMON_LOC is the location expression attribute for the common
16656    block itself.
16657    MEMBER_LOC is the location expression attribute for the particular
16658    member of the common block that we are processing.
16659    CU is the CU from which the above come.  */
16660
16661 static void
16662 mark_common_block_symbol_computed (struct symbol *sym,
16663                                    struct die_info *common_die,
16664                                    struct attribute *common_loc,
16665                                    struct attribute *member_loc,
16666                                    struct dwarf2_cu *cu)
16667 {
16668   struct dwarf2_per_objfile *dwarf2_per_objfile
16669     = cu->per_cu->dwarf2_per_objfile;
16670   struct objfile *objfile = dwarf2_per_objfile->objfile;
16671   struct dwarf2_locexpr_baton *baton;
16672   gdb_byte *ptr;
16673   unsigned int cu_off;
16674   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16675   LONGEST offset = 0;
16676
16677   gdb_assert (common_loc && member_loc);
16678   gdb_assert (attr_form_is_block (common_loc));
16679   gdb_assert (attr_form_is_block (member_loc)
16680               || attr_form_is_constant (member_loc));
16681
16682   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16683   baton->per_cu = cu->per_cu;
16684   gdb_assert (baton->per_cu);
16685
16686   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16687
16688   if (attr_form_is_constant (member_loc))
16689     {
16690       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16691       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16692     }
16693   else
16694     baton->size += DW_BLOCK (member_loc)->size;
16695
16696   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16697   baton->data = ptr;
16698
16699   *ptr++ = DW_OP_call4;
16700   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16701   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16702   ptr += 4;
16703
16704   if (attr_form_is_constant (member_loc))
16705     {
16706       *ptr++ = DW_OP_addr;
16707       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16708       ptr += cu->header.addr_size;
16709     }
16710   else
16711     {
16712       /* We have to copy the data here, because DW_OP_call4 will only
16713          use a DW_AT_location attribute.  */
16714       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16715       ptr += DW_BLOCK (member_loc)->size;
16716     }
16717
16718   *ptr++ = DW_OP_plus;
16719   gdb_assert (ptr - baton->data == baton->size);
16720
16721   SYMBOL_LOCATION_BATON (sym) = baton;
16722   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16723 }
16724
16725 /* Create appropriate locally-scoped variables for all the
16726    DW_TAG_common_block entries.  Also create a struct common_block
16727    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16728    is used to sepate the common blocks name namespace from regular
16729    variable names.  */
16730
16731 static void
16732 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16733 {
16734   struct attribute *attr;
16735
16736   attr = dwarf2_attr (die, DW_AT_location, cu);
16737   if (attr)
16738     {
16739       /* Support the .debug_loc offsets.  */
16740       if (attr_form_is_block (attr))
16741         {
16742           /* Ok.  */
16743         }
16744       else if (attr_form_is_section_offset (attr))
16745         {
16746           dwarf2_complex_location_expr_complaint ();
16747           attr = NULL;
16748         }
16749       else
16750         {
16751           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16752                                                  "common block member");
16753           attr = NULL;
16754         }
16755     }
16756
16757   if (die->child != NULL)
16758     {
16759       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16760       struct die_info *child_die;
16761       size_t n_entries = 0, size;
16762       struct common_block *common_block;
16763       struct symbol *sym;
16764
16765       for (child_die = die->child;
16766            child_die && child_die->tag;
16767            child_die = sibling_die (child_die))
16768         ++n_entries;
16769
16770       size = (sizeof (struct common_block)
16771               + (n_entries - 1) * sizeof (struct symbol *));
16772       common_block
16773         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16774                                                  size);
16775       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16776       common_block->n_entries = 0;
16777
16778       for (child_die = die->child;
16779            child_die && child_die->tag;
16780            child_die = sibling_die (child_die))
16781         {
16782           /* Create the symbol in the DW_TAG_common_block block in the current
16783              symbol scope.  */
16784           sym = new_symbol (child_die, NULL, cu);
16785           if (sym != NULL)
16786             {
16787               struct attribute *member_loc;
16788
16789               common_block->contents[common_block->n_entries++] = sym;
16790
16791               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16792                                         cu);
16793               if (member_loc)
16794                 {
16795                   /* GDB has handled this for a long time, but it is
16796                      not specified by DWARF.  It seems to have been
16797                      emitted by gfortran at least as recently as:
16798                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16799                   complaint (_("Variable in common block has "
16800                                "DW_AT_data_member_location "
16801                                "- DIE at %s [in module %s]"),
16802                                sect_offset_str (child_die->sect_off),
16803                              objfile_name (objfile));
16804
16805                   if (attr_form_is_section_offset (member_loc))
16806                     dwarf2_complex_location_expr_complaint ();
16807                   else if (attr_form_is_constant (member_loc)
16808                            || attr_form_is_block (member_loc))
16809                     {
16810                       if (attr)
16811                         mark_common_block_symbol_computed (sym, die, attr,
16812                                                            member_loc, cu);
16813                     }
16814                   else
16815                     dwarf2_complex_location_expr_complaint ();
16816                 }
16817             }
16818         }
16819
16820       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16821       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16822     }
16823 }
16824
16825 /* Create a type for a C++ namespace.  */
16826
16827 static struct type *
16828 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16829 {
16830   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16831   const char *previous_prefix, *name;
16832   int is_anonymous;
16833   struct type *type;
16834
16835   /* For extensions, reuse the type of the original namespace.  */
16836   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16837     {
16838       struct die_info *ext_die;
16839       struct dwarf2_cu *ext_cu = cu;
16840
16841       ext_die = dwarf2_extension (die, &ext_cu);
16842       type = read_type_die (ext_die, ext_cu);
16843
16844       /* EXT_CU may not be the same as CU.
16845          Ensure TYPE is recorded with CU in die_type_hash.  */
16846       return set_die_type (die, type, cu);
16847     }
16848
16849   name = namespace_name (die, &is_anonymous, cu);
16850
16851   /* Now build the name of the current namespace.  */
16852
16853   previous_prefix = determine_prefix (die, cu);
16854   if (previous_prefix[0] != '\0')
16855     name = typename_concat (&objfile->objfile_obstack,
16856                             previous_prefix, name, 0, cu);
16857
16858   /* Create the type.  */
16859   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16860
16861   return set_die_type (die, type, cu);
16862 }
16863
16864 /* Read a namespace scope.  */
16865
16866 static void
16867 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16868 {
16869   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16870   int is_anonymous;
16871
16872   /* Add a symbol associated to this if we haven't seen the namespace
16873      before.  Also, add a using directive if it's an anonymous
16874      namespace.  */
16875
16876   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16877     {
16878       struct type *type;
16879
16880       type = read_type_die (die, cu);
16881       new_symbol (die, type, cu);
16882
16883       namespace_name (die, &is_anonymous, cu);
16884       if (is_anonymous)
16885         {
16886           const char *previous_prefix = determine_prefix (die, cu);
16887
16888           std::vector<const char *> excludes;
16889           add_using_directive (using_directives (cu),
16890                                previous_prefix, TYPE_NAME (type), NULL,
16891                                NULL, excludes, 0, &objfile->objfile_obstack);
16892         }
16893     }
16894
16895   if (die->child != NULL)
16896     {
16897       struct die_info *child_die = die->child;
16898
16899       while (child_die && child_die->tag)
16900         {
16901           process_die (child_die, cu);
16902           child_die = sibling_die (child_die);
16903         }
16904     }
16905 }
16906
16907 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16908    imported module.  Still we need that type as local Fortran "use ... only"
16909    declaration imports depend on the created type in determine_prefix.  */
16910
16911 static struct type *
16912 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16913 {
16914   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16915   const char *module_name;
16916   struct type *type;
16917
16918   module_name = dwarf2_name (die, cu);
16919   if (!module_name)
16920     complaint (_("DW_TAG_module has no name, offset %s"),
16921                sect_offset_str (die->sect_off));
16922   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16923
16924   return set_die_type (die, type, cu);
16925 }
16926
16927 /* Read a Fortran module.  */
16928
16929 static void
16930 read_module (struct die_info *die, struct dwarf2_cu *cu)
16931 {
16932   struct die_info *child_die = die->child;
16933   struct type *type;
16934
16935   type = read_type_die (die, cu);
16936   new_symbol (die, type, cu);
16937
16938   while (child_die && child_die->tag)
16939     {
16940       process_die (child_die, cu);
16941       child_die = sibling_die (child_die);
16942     }
16943 }
16944
16945 /* Return the name of the namespace represented by DIE.  Set
16946    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16947    namespace.  */
16948
16949 static const char *
16950 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16951 {
16952   struct die_info *current_die;
16953   const char *name = NULL;
16954
16955   /* Loop through the extensions until we find a name.  */
16956
16957   for (current_die = die;
16958        current_die != NULL;
16959        current_die = dwarf2_extension (die, &cu))
16960     {
16961       /* We don't use dwarf2_name here so that we can detect the absence
16962          of a name -> anonymous namespace.  */
16963       name = dwarf2_string_attr (die, DW_AT_name, cu);
16964
16965       if (name != NULL)
16966         break;
16967     }
16968
16969   /* Is it an anonymous namespace?  */
16970
16971   *is_anonymous = (name == NULL);
16972   if (*is_anonymous)
16973     name = CP_ANONYMOUS_NAMESPACE_STR;
16974
16975   return name;
16976 }
16977
16978 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16979    the user defined type vector.  */
16980
16981 static struct type *
16982 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16983 {
16984   struct gdbarch *gdbarch
16985     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16986   struct comp_unit_head *cu_header = &cu->header;
16987   struct type *type;
16988   struct attribute *attr_byte_size;
16989   struct attribute *attr_address_class;
16990   int byte_size, addr_class;
16991   struct type *target_type;
16992
16993   target_type = die_type (die, cu);
16994
16995   /* The die_type call above may have already set the type for this DIE.  */
16996   type = get_die_type (die, cu);
16997   if (type)
16998     return type;
16999
17000   type = lookup_pointer_type (target_type);
17001
17002   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17003   if (attr_byte_size)
17004     byte_size = DW_UNSND (attr_byte_size);
17005   else
17006     byte_size = cu_header->addr_size;
17007
17008   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17009   if (attr_address_class)
17010     addr_class = DW_UNSND (attr_address_class);
17011   else
17012     addr_class = DW_ADDR_none;
17013
17014   ULONGEST alignment = get_alignment (cu, die);
17015
17016   /* If the pointer size, alignment, or address class is different
17017      than the default, create a type variant marked as such and set
17018      the length accordingly.  */
17019   if (TYPE_LENGTH (type) != byte_size
17020       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17021           && alignment != TYPE_RAW_ALIGN (type))
17022       || addr_class != DW_ADDR_none)
17023     {
17024       if (gdbarch_address_class_type_flags_p (gdbarch))
17025         {
17026           int type_flags;
17027
17028           type_flags = gdbarch_address_class_type_flags
17029                          (gdbarch, byte_size, addr_class);
17030           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17031                       == 0);
17032           type = make_type_with_address_space (type, type_flags);
17033         }
17034       else if (TYPE_LENGTH (type) != byte_size)
17035         {
17036           complaint (_("invalid pointer size %d"), byte_size);
17037         }
17038       else if (TYPE_RAW_ALIGN (type) != alignment)
17039         {
17040           complaint (_("Invalid DW_AT_alignment"
17041                        " - DIE at %s [in module %s]"),
17042                      sect_offset_str (die->sect_off),
17043                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17044         }
17045       else
17046         {
17047           /* Should we also complain about unhandled address classes?  */
17048         }
17049     }
17050
17051   TYPE_LENGTH (type) = byte_size;
17052   set_type_align (type, alignment);
17053   return set_die_type (die, type, cu);
17054 }
17055
17056 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17057    the user defined type vector.  */
17058
17059 static struct type *
17060 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17061 {
17062   struct type *type;
17063   struct type *to_type;
17064   struct type *domain;
17065
17066   to_type = die_type (die, cu);
17067   domain = die_containing_type (die, cu);
17068
17069   /* The calls above may have already set the type for this DIE.  */
17070   type = get_die_type (die, cu);
17071   if (type)
17072     return type;
17073
17074   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17075     type = lookup_methodptr_type (to_type);
17076   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17077     {
17078       struct type *new_type
17079         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17080
17081       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17082                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17083                             TYPE_VARARGS (to_type));
17084       type = lookup_methodptr_type (new_type);
17085     }
17086   else
17087     type = lookup_memberptr_type (to_type, domain);
17088
17089   return set_die_type (die, type, cu);
17090 }
17091
17092 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17093    the user defined type vector.  */
17094
17095 static struct type *
17096 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17097                           enum type_code refcode)
17098 {
17099   struct comp_unit_head *cu_header = &cu->header;
17100   struct type *type, *target_type;
17101   struct attribute *attr;
17102
17103   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17104
17105   target_type = die_type (die, cu);
17106
17107   /* The die_type call above may have already set the type for this DIE.  */
17108   type = get_die_type (die, cu);
17109   if (type)
17110     return type;
17111
17112   type = lookup_reference_type (target_type, refcode);
17113   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17114   if (attr)
17115     {
17116       TYPE_LENGTH (type) = DW_UNSND (attr);
17117     }
17118   else
17119     {
17120       TYPE_LENGTH (type) = cu_header->addr_size;
17121     }
17122   maybe_set_alignment (cu, die, type);
17123   return set_die_type (die, type, cu);
17124 }
17125
17126 /* Add the given cv-qualifiers to the element type of the array.  GCC
17127    outputs DWARF type qualifiers that apply to an array, not the
17128    element type.  But GDB relies on the array element type to carry
17129    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17130    specification.  */
17131
17132 static struct type *
17133 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17134                    struct type *base_type, int cnst, int voltl)
17135 {
17136   struct type *el_type, *inner_array;
17137
17138   base_type = copy_type (base_type);
17139   inner_array = base_type;
17140
17141   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17142     {
17143       TYPE_TARGET_TYPE (inner_array) =
17144         copy_type (TYPE_TARGET_TYPE (inner_array));
17145       inner_array = TYPE_TARGET_TYPE (inner_array);
17146     }
17147
17148   el_type = TYPE_TARGET_TYPE (inner_array);
17149   cnst |= TYPE_CONST (el_type);
17150   voltl |= TYPE_VOLATILE (el_type);
17151   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17152
17153   return set_die_type (die, base_type, cu);
17154 }
17155
17156 static struct type *
17157 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17158 {
17159   struct type *base_type, *cv_type;
17160
17161   base_type = die_type (die, cu);
17162
17163   /* The die_type call above may have already set the type for this DIE.  */
17164   cv_type = get_die_type (die, cu);
17165   if (cv_type)
17166     return cv_type;
17167
17168   /* In case the const qualifier is applied to an array type, the element type
17169      is so qualified, not the array type (section 6.7.3 of C99).  */
17170   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17171     return add_array_cv_type (die, cu, base_type, 1, 0);
17172
17173   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17174   return set_die_type (die, cv_type, cu);
17175 }
17176
17177 static struct type *
17178 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17179 {
17180   struct type *base_type, *cv_type;
17181
17182   base_type = die_type (die, cu);
17183
17184   /* The die_type call above may have already set the type for this DIE.  */
17185   cv_type = get_die_type (die, cu);
17186   if (cv_type)
17187     return cv_type;
17188
17189   /* In case the volatile qualifier is applied to an array type, the
17190      element type is so qualified, not the array type (section 6.7.3
17191      of C99).  */
17192   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17193     return add_array_cv_type (die, cu, base_type, 0, 1);
17194
17195   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17196   return set_die_type (die, cv_type, cu);
17197 }
17198
17199 /* Handle DW_TAG_restrict_type.  */
17200
17201 static struct type *
17202 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17203 {
17204   struct type *base_type, *cv_type;
17205
17206   base_type = die_type (die, cu);
17207
17208   /* The die_type call above may have already set the type for this DIE.  */
17209   cv_type = get_die_type (die, cu);
17210   if (cv_type)
17211     return cv_type;
17212
17213   cv_type = make_restrict_type (base_type);
17214   return set_die_type (die, cv_type, cu);
17215 }
17216
17217 /* Handle DW_TAG_atomic_type.  */
17218
17219 static struct type *
17220 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17221 {
17222   struct type *base_type, *cv_type;
17223
17224   base_type = die_type (die, cu);
17225
17226   /* The die_type call above may have already set the type for this DIE.  */
17227   cv_type = get_die_type (die, cu);
17228   if (cv_type)
17229     return cv_type;
17230
17231   cv_type = make_atomic_type (base_type);
17232   return set_die_type (die, cv_type, cu);
17233 }
17234
17235 /* Extract all information from a DW_TAG_string_type DIE and add to
17236    the user defined type vector.  It isn't really a user defined type,
17237    but it behaves like one, with other DIE's using an AT_user_def_type
17238    attribute to reference it.  */
17239
17240 static struct type *
17241 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17242 {
17243   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17244   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17245   struct type *type, *range_type, *index_type, *char_type;
17246   struct attribute *attr;
17247   unsigned int length;
17248
17249   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17250   if (attr)
17251     {
17252       length = DW_UNSND (attr);
17253     }
17254   else
17255     {
17256       /* Check for the DW_AT_byte_size attribute.  */
17257       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17258       if (attr)
17259         {
17260           length = DW_UNSND (attr);
17261         }
17262       else
17263         {
17264           length = 1;
17265         }
17266     }
17267
17268   index_type = objfile_type (objfile)->builtin_int;
17269   range_type = create_static_range_type (NULL, index_type, 1, length);
17270   char_type = language_string_char_type (cu->language_defn, gdbarch);
17271   type = create_string_type (NULL, char_type, range_type);
17272
17273   return set_die_type (die, type, cu);
17274 }
17275
17276 /* Assuming that DIE corresponds to a function, returns nonzero
17277    if the function is prototyped.  */
17278
17279 static int
17280 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17281 {
17282   struct attribute *attr;
17283
17284   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17285   if (attr && (DW_UNSND (attr) != 0))
17286     return 1;
17287
17288   /* The DWARF standard implies that the DW_AT_prototyped attribute
17289      is only meaninful for C, but the concept also extends to other
17290      languages that allow unprototyped functions (Eg: Objective C).
17291      For all other languages, assume that functions are always
17292      prototyped.  */
17293   if (cu->language != language_c
17294       && cu->language != language_objc
17295       && cu->language != language_opencl)
17296     return 1;
17297
17298   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17299      prototyped and unprototyped functions; default to prototyped,
17300      since that is more common in modern code (and RealView warns
17301      about unprototyped functions).  */
17302   if (producer_is_realview (cu->producer))
17303     return 1;
17304
17305   return 0;
17306 }
17307
17308 /* Handle DIES due to C code like:
17309
17310    struct foo
17311    {
17312    int (*funcp)(int a, long l);
17313    int b;
17314    };
17315
17316    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17317
17318 static struct type *
17319 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17320 {
17321   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17322   struct type *type;            /* Type that this function returns.  */
17323   struct type *ftype;           /* Function that returns above type.  */
17324   struct attribute *attr;
17325
17326   type = die_type (die, cu);
17327
17328   /* The die_type call above may have already set the type for this DIE.  */
17329   ftype = get_die_type (die, cu);
17330   if (ftype)
17331     return ftype;
17332
17333   ftype = lookup_function_type (type);
17334
17335   if (prototyped_function_p (die, cu))
17336     TYPE_PROTOTYPED (ftype) = 1;
17337
17338   /* Store the calling convention in the type if it's available in
17339      the subroutine die.  Otherwise set the calling convention to
17340      the default value DW_CC_normal.  */
17341   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17342   if (attr)
17343     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17344   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17345     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17346   else
17347     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17348
17349   /* Record whether the function returns normally to its caller or not
17350      if the DWARF producer set that information.  */
17351   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17352   if (attr && (DW_UNSND (attr) != 0))
17353     TYPE_NO_RETURN (ftype) = 1;
17354
17355   /* We need to add the subroutine type to the die immediately so
17356      we don't infinitely recurse when dealing with parameters
17357      declared as the same subroutine type.  */
17358   set_die_type (die, ftype, cu);
17359
17360   if (die->child != NULL)
17361     {
17362       struct type *void_type = objfile_type (objfile)->builtin_void;
17363       struct die_info *child_die;
17364       int nparams, iparams;
17365
17366       /* Count the number of parameters.
17367          FIXME: GDB currently ignores vararg functions, but knows about
17368          vararg member functions.  */
17369       nparams = 0;
17370       child_die = die->child;
17371       while (child_die && child_die->tag)
17372         {
17373           if (child_die->tag == DW_TAG_formal_parameter)
17374             nparams++;
17375           else if (child_die->tag == DW_TAG_unspecified_parameters)
17376             TYPE_VARARGS (ftype) = 1;
17377           child_die = sibling_die (child_die);
17378         }
17379
17380       /* Allocate storage for parameters and fill them in.  */
17381       TYPE_NFIELDS (ftype) = nparams;
17382       TYPE_FIELDS (ftype) = (struct field *)
17383         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17384
17385       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17386          even if we error out during the parameters reading below.  */
17387       for (iparams = 0; iparams < nparams; iparams++)
17388         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17389
17390       iparams = 0;
17391       child_die = die->child;
17392       while (child_die && child_die->tag)
17393         {
17394           if (child_die->tag == DW_TAG_formal_parameter)
17395             {
17396               struct type *arg_type;
17397
17398               /* DWARF version 2 has no clean way to discern C++
17399                  static and non-static member functions.  G++ helps
17400                  GDB by marking the first parameter for non-static
17401                  member functions (which is the this pointer) as
17402                  artificial.  We pass this information to
17403                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17404
17405                  DWARF version 3 added DW_AT_object_pointer, which GCC
17406                  4.5 does not yet generate.  */
17407               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17408               if (attr)
17409                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17410               else
17411                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17412               arg_type = die_type (child_die, cu);
17413
17414               /* RealView does not mark THIS as const, which the testsuite
17415                  expects.  GCC marks THIS as const in method definitions,
17416                  but not in the class specifications (GCC PR 43053).  */
17417               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17418                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17419                 {
17420                   int is_this = 0;
17421                   struct dwarf2_cu *arg_cu = cu;
17422                   const char *name = dwarf2_name (child_die, cu);
17423
17424                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17425                   if (attr)
17426                     {
17427                       /* If the compiler emits this, use it.  */
17428                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17429                         is_this = 1;
17430                     }
17431                   else if (name && strcmp (name, "this") == 0)
17432                     /* Function definitions will have the argument names.  */
17433                     is_this = 1;
17434                   else if (name == NULL && iparams == 0)
17435                     /* Declarations may not have the names, so like
17436                        elsewhere in GDB, assume an artificial first
17437                        argument is "this".  */
17438                     is_this = 1;
17439
17440                   if (is_this)
17441                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17442                                              arg_type, 0);
17443                 }
17444
17445               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17446               iparams++;
17447             }
17448           child_die = sibling_die (child_die);
17449         }
17450     }
17451
17452   return ftype;
17453 }
17454
17455 static struct type *
17456 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17457 {
17458   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17459   const char *name = NULL;
17460   struct type *this_type, *target_type;
17461
17462   name = dwarf2_full_name (NULL, die, cu);
17463   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17464   TYPE_TARGET_STUB (this_type) = 1;
17465   set_die_type (die, this_type, cu);
17466   target_type = die_type (die, cu);
17467   if (target_type != this_type)
17468     TYPE_TARGET_TYPE (this_type) = target_type;
17469   else
17470     {
17471       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17472          spec and cause infinite loops in GDB.  */
17473       complaint (_("Self-referential DW_TAG_typedef "
17474                    "- DIE at %s [in module %s]"),
17475                  sect_offset_str (die->sect_off), objfile_name (objfile));
17476       TYPE_TARGET_TYPE (this_type) = NULL;
17477     }
17478   return this_type;
17479 }
17480
17481 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17482    (which may be different from NAME) to the architecture back-end to allow
17483    it to guess the correct format if necessary.  */
17484
17485 static struct type *
17486 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17487                         const char *name_hint)
17488 {
17489   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17490   const struct floatformat **format;
17491   struct type *type;
17492
17493   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17494   if (format)
17495     type = init_float_type (objfile, bits, name, format);
17496   else
17497     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17498
17499   return type;
17500 }
17501
17502 /* Find a representation of a given base type and install
17503    it in the TYPE field of the die.  */
17504
17505 static struct type *
17506 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17507 {
17508   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17509   struct type *type;
17510   struct attribute *attr;
17511   int encoding = 0, bits = 0;
17512   const char *name;
17513
17514   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17515   if (attr)
17516     {
17517       encoding = DW_UNSND (attr);
17518     }
17519   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17520   if (attr)
17521     {
17522       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17523     }
17524   name = dwarf2_name (die, cu);
17525   if (!name)
17526     {
17527       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17528     }
17529
17530   switch (encoding)
17531     {
17532       case DW_ATE_address:
17533         /* Turn DW_ATE_address into a void * pointer.  */
17534         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17535         type = init_pointer_type (objfile, bits, name, type);
17536         break;
17537       case DW_ATE_boolean:
17538         type = init_boolean_type (objfile, bits, 1, name);
17539         break;
17540       case DW_ATE_complex_float:
17541         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17542         type = init_complex_type (objfile, name, type);
17543         break;
17544       case DW_ATE_decimal_float:
17545         type = init_decfloat_type (objfile, bits, name);
17546         break;
17547       case DW_ATE_float:
17548         type = dwarf2_init_float_type (objfile, bits, name, name);
17549         break;
17550       case DW_ATE_signed:
17551         type = init_integer_type (objfile, bits, 0, name);
17552         break;
17553       case DW_ATE_unsigned:
17554         if (cu->language == language_fortran
17555             && name
17556             && startswith (name, "character("))
17557           type = init_character_type (objfile, bits, 1, name);
17558         else
17559           type = init_integer_type (objfile, bits, 1, name);
17560         break;
17561       case DW_ATE_signed_char:
17562         if (cu->language == language_ada || cu->language == language_m2
17563             || cu->language == language_pascal
17564             || cu->language == language_fortran)
17565           type = init_character_type (objfile, bits, 0, name);
17566         else
17567           type = init_integer_type (objfile, bits, 0, name);
17568         break;
17569       case DW_ATE_unsigned_char:
17570         if (cu->language == language_ada || cu->language == language_m2
17571             || cu->language == language_pascal
17572             || cu->language == language_fortran
17573             || cu->language == language_rust)
17574           type = init_character_type (objfile, bits, 1, name);
17575         else
17576           type = init_integer_type (objfile, bits, 1, name);
17577         break;
17578       case DW_ATE_UTF:
17579         {
17580           gdbarch *arch = get_objfile_arch (objfile);
17581
17582           if (bits == 16)
17583             type = builtin_type (arch)->builtin_char16;
17584           else if (bits == 32)
17585             type = builtin_type (arch)->builtin_char32;
17586           else
17587             {
17588               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17589                          bits);
17590               type = init_integer_type (objfile, bits, 1, name);
17591             }
17592           return set_die_type (die, type, cu);
17593         }
17594         break;
17595
17596       default:
17597         complaint (_("unsupported DW_AT_encoding: '%s'"),
17598                    dwarf_type_encoding_name (encoding));
17599         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17600         break;
17601     }
17602
17603   if (name && strcmp (name, "char") == 0)
17604     TYPE_NOSIGN (type) = 1;
17605
17606   maybe_set_alignment (cu, die, type);
17607
17608   return set_die_type (die, type, cu);
17609 }
17610
17611 /* Parse dwarf attribute if it's a block, reference or constant and put the
17612    resulting value of the attribute into struct bound_prop.
17613    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17614
17615 static int
17616 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17617                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17618 {
17619   struct dwarf2_property_baton *baton;
17620   struct obstack *obstack
17621     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17622
17623   if (attr == NULL || prop == NULL)
17624     return 0;
17625
17626   if (attr_form_is_block (attr))
17627     {
17628       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17629       baton->referenced_type = NULL;
17630       baton->locexpr.per_cu = cu->per_cu;
17631       baton->locexpr.size = DW_BLOCK (attr)->size;
17632       baton->locexpr.data = DW_BLOCK (attr)->data;
17633       prop->data.baton = baton;
17634       prop->kind = PROP_LOCEXPR;
17635       gdb_assert (prop->data.baton != NULL);
17636     }
17637   else if (attr_form_is_ref (attr))
17638     {
17639       struct dwarf2_cu *target_cu = cu;
17640       struct die_info *target_die;
17641       struct attribute *target_attr;
17642
17643       target_die = follow_die_ref (die, attr, &target_cu);
17644       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17645       if (target_attr == NULL)
17646         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17647                                    target_cu);
17648       if (target_attr == NULL)
17649         return 0;
17650
17651       switch (target_attr->name)
17652         {
17653           case DW_AT_location:
17654             if (attr_form_is_section_offset (target_attr))
17655               {
17656                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17657                 baton->referenced_type = die_type (target_die, target_cu);
17658                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17659                 prop->data.baton = baton;
17660                 prop->kind = PROP_LOCLIST;
17661                 gdb_assert (prop->data.baton != NULL);
17662               }
17663             else if (attr_form_is_block (target_attr))
17664               {
17665                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17666                 baton->referenced_type = die_type (target_die, target_cu);
17667                 baton->locexpr.per_cu = cu->per_cu;
17668                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17669                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17670                 prop->data.baton = baton;
17671                 prop->kind = PROP_LOCEXPR;
17672                 gdb_assert (prop->data.baton != NULL);
17673               }
17674             else
17675               {
17676                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17677                                                        "dynamic property");
17678                 return 0;
17679               }
17680             break;
17681           case DW_AT_data_member_location:
17682             {
17683               LONGEST offset;
17684
17685               if (!handle_data_member_location (target_die, target_cu,
17686                                                 &offset))
17687                 return 0;
17688
17689               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17690               baton->referenced_type = read_type_die (target_die->parent,
17691                                                       target_cu);
17692               baton->offset_info.offset = offset;
17693               baton->offset_info.type = die_type (target_die, target_cu);
17694               prop->data.baton = baton;
17695               prop->kind = PROP_ADDR_OFFSET;
17696               break;
17697             }
17698         }
17699     }
17700   else if (attr_form_is_constant (attr))
17701     {
17702       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17703       prop->kind = PROP_CONST;
17704     }
17705   else
17706     {
17707       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17708                                              dwarf2_name (die, cu));
17709       return 0;
17710     }
17711
17712   return 1;
17713 }
17714
17715 /* Read the given DW_AT_subrange DIE.  */
17716
17717 static struct type *
17718 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17719 {
17720   struct type *base_type, *orig_base_type;
17721   struct type *range_type;
17722   struct attribute *attr;
17723   struct dynamic_prop low, high;
17724   int low_default_is_valid;
17725   int high_bound_is_count = 0;
17726   const char *name;
17727   ULONGEST negative_mask;
17728
17729   orig_base_type = die_type (die, cu);
17730   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17731      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17732      creating the range type, but we use the result of check_typedef
17733      when examining properties of the type.  */
17734   base_type = check_typedef (orig_base_type);
17735
17736   /* The die_type call above may have already set the type for this DIE.  */
17737   range_type = get_die_type (die, cu);
17738   if (range_type)
17739     return range_type;
17740
17741   low.kind = PROP_CONST;
17742   high.kind = PROP_CONST;
17743   high.data.const_val = 0;
17744
17745   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17746      omitting DW_AT_lower_bound.  */
17747   switch (cu->language)
17748     {
17749     case language_c:
17750     case language_cplus:
17751       low.data.const_val = 0;
17752       low_default_is_valid = 1;
17753       break;
17754     case language_fortran:
17755       low.data.const_val = 1;
17756       low_default_is_valid = 1;
17757       break;
17758     case language_d:
17759     case language_objc:
17760     case language_rust:
17761       low.data.const_val = 0;
17762       low_default_is_valid = (cu->header.version >= 4);
17763       break;
17764     case language_ada:
17765     case language_m2:
17766     case language_pascal:
17767       low.data.const_val = 1;
17768       low_default_is_valid = (cu->header.version >= 4);
17769       break;
17770     default:
17771       low.data.const_val = 0;
17772       low_default_is_valid = 0;
17773       break;
17774     }
17775
17776   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17777   if (attr)
17778     attr_to_dynamic_prop (attr, die, cu, &low);
17779   else if (!low_default_is_valid)
17780     complaint (_("Missing DW_AT_lower_bound "
17781                                       "- DIE at %s [in module %s]"),
17782                sect_offset_str (die->sect_off),
17783                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17784
17785   struct attribute *attr_ub, *attr_count;
17786   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17787   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17788     {
17789       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17790       if (attr_to_dynamic_prop (attr, die, cu, &high))
17791         {
17792           /* If bounds are constant do the final calculation here.  */
17793           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17794             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17795           else
17796             high_bound_is_count = 1;
17797         }
17798       else
17799         {
17800           if (attr_ub != NULL)
17801             complaint (_("Unresolved DW_AT_upper_bound "
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           if (attr_count != NULL)
17806             complaint (_("Unresolved DW_AT_count "
17807                          "- DIE at %s [in module %s]"),
17808                        sect_offset_str (die->sect_off),
17809                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17810         }
17811         
17812     }
17813
17814   /* Dwarf-2 specifications explicitly allows to create subrange types
17815      without specifying a base type.
17816      In that case, the base type must be set to the type of
17817      the lower bound, upper bound or count, in that order, if any of these
17818      three attributes references an object that has a type.
17819      If no base type is found, the Dwarf-2 specifications say that
17820      a signed integer type of size equal to the size of an address should
17821      be used.
17822      For the following C code: `extern char gdb_int [];'
17823      GCC produces an empty range DIE.
17824      FIXME: muller/2010-05-28: Possible references to object for low bound,
17825      high bound or count are not yet handled by this code.  */
17826   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17827     {
17828       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17829       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17830       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17831       struct type *int_type = objfile_type (objfile)->builtin_int;
17832
17833       /* Test "int", "long int", and "long long int" objfile types,
17834          and select the first one having a size above or equal to the
17835          architecture address size.  */
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;
17841           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17842             base_type = int_type;
17843           else
17844             {
17845               int_type = objfile_type (objfile)->builtin_long_long;
17846               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17847                 base_type = int_type;
17848             }
17849         }
17850     }
17851
17852   /* Normally, the DWARF producers are expected to use a signed
17853      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17854      But this is unfortunately not always the case, as witnessed
17855      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17856      is used instead.  To work around that ambiguity, we treat
17857      the bounds as signed, and thus sign-extend their values, when
17858      the base type is signed.  */
17859   negative_mask =
17860     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17861   if (low.kind == PROP_CONST
17862       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17863     low.data.const_val |= negative_mask;
17864   if (high.kind == PROP_CONST
17865       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17866     high.data.const_val |= negative_mask;
17867
17868   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17869
17870   if (high_bound_is_count)
17871     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17872
17873   /* Ada expects an empty array on no boundary attributes.  */
17874   if (attr == NULL && cu->language != language_ada)
17875     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17876
17877   name = dwarf2_name (die, cu);
17878   if (name)
17879     TYPE_NAME (range_type) = name;
17880
17881   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17882   if (attr)
17883     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17884
17885   maybe_set_alignment (cu, die, range_type);
17886
17887   set_die_type (die, range_type, cu);
17888
17889   /* set_die_type should be already done.  */
17890   set_descriptive_type (range_type, die, cu);
17891
17892   return range_type;
17893 }
17894
17895 static struct type *
17896 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17897 {
17898   struct type *type;
17899
17900   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17901                     NULL);
17902   TYPE_NAME (type) = dwarf2_name (die, cu);
17903
17904   /* In Ada, an unspecified type is typically used when the description
17905      of the type is defered to a different unit.  When encountering
17906      such a type, we treat it as a stub, and try to resolve it later on,
17907      when needed.  */
17908   if (cu->language == language_ada)
17909     TYPE_STUB (type) = 1;
17910
17911   return set_die_type (die, type, cu);
17912 }
17913
17914 /* Read a single die and all its descendents.  Set the die's sibling
17915    field to NULL; set other fields in the die correctly, and set all
17916    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17917    location of the info_ptr after reading all of those dies.  PARENT
17918    is the parent of the die in question.  */
17919
17920 static struct die_info *
17921 read_die_and_children (const struct die_reader_specs *reader,
17922                        const gdb_byte *info_ptr,
17923                        const gdb_byte **new_info_ptr,
17924                        struct die_info *parent)
17925 {
17926   struct die_info *die;
17927   const gdb_byte *cur_ptr;
17928   int has_children;
17929
17930   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17931   if (die == NULL)
17932     {
17933       *new_info_ptr = cur_ptr;
17934       return NULL;
17935     }
17936   store_in_ref_table (die, reader->cu);
17937
17938   if (has_children)
17939     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17940   else
17941     {
17942       die->child = NULL;
17943       *new_info_ptr = cur_ptr;
17944     }
17945
17946   die->sibling = NULL;
17947   die->parent = parent;
17948   return die;
17949 }
17950
17951 /* Read a die, all of its descendents, and all of its siblings; set
17952    all of the fields of all of the dies correctly.  Arguments are as
17953    in read_die_and_children.  */
17954
17955 static struct die_info *
17956 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17957                          const gdb_byte *info_ptr,
17958                          const gdb_byte **new_info_ptr,
17959                          struct die_info *parent)
17960 {
17961   struct die_info *first_die, *last_sibling;
17962   const gdb_byte *cur_ptr;
17963
17964   cur_ptr = info_ptr;
17965   first_die = last_sibling = NULL;
17966
17967   while (1)
17968     {
17969       struct die_info *die
17970         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17971
17972       if (die == NULL)
17973         {
17974           *new_info_ptr = cur_ptr;
17975           return first_die;
17976         }
17977
17978       if (!first_die)
17979         first_die = die;
17980       else
17981         last_sibling->sibling = die;
17982
17983       last_sibling = die;
17984     }
17985 }
17986
17987 /* Read a die, all of its descendents, and all of its siblings; set
17988    all of the fields of all of the dies correctly.  Arguments are as
17989    in read_die_and_children.
17990    This the main entry point for reading a DIE and all its children.  */
17991
17992 static struct die_info *
17993 read_die_and_siblings (const struct die_reader_specs *reader,
17994                        const gdb_byte *info_ptr,
17995                        const gdb_byte **new_info_ptr,
17996                        struct die_info *parent)
17997 {
17998   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17999                                                   new_info_ptr, parent);
18000
18001   if (dwarf_die_debug)
18002     {
18003       fprintf_unfiltered (gdb_stdlog,
18004                           "Read die from %s@0x%x of %s:\n",
18005                           get_section_name (reader->die_section),
18006                           (unsigned) (info_ptr - reader->die_section->buffer),
18007                           bfd_get_filename (reader->abfd));
18008       dump_die (die, dwarf_die_debug);
18009     }
18010
18011   return die;
18012 }
18013
18014 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18015    attributes.
18016    The caller is responsible for filling in the extra attributes
18017    and updating (*DIEP)->num_attrs.
18018    Set DIEP to point to a newly allocated die with its information,
18019    except for its child, sibling, and parent fields.
18020    Set HAS_CHILDREN to tell whether the die has children or not.  */
18021
18022 static const gdb_byte *
18023 read_full_die_1 (const struct die_reader_specs *reader,
18024                  struct die_info **diep, const gdb_byte *info_ptr,
18025                  int *has_children, int num_extra_attrs)
18026 {
18027   unsigned int abbrev_number, bytes_read, i;
18028   struct abbrev_info *abbrev;
18029   struct die_info *die;
18030   struct dwarf2_cu *cu = reader->cu;
18031   bfd *abfd = reader->abfd;
18032
18033   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18034   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18035   info_ptr += bytes_read;
18036   if (!abbrev_number)
18037     {
18038       *diep = NULL;
18039       *has_children = 0;
18040       return info_ptr;
18041     }
18042
18043   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18044   if (!abbrev)
18045     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18046            abbrev_number,
18047            bfd_get_filename (abfd));
18048
18049   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18050   die->sect_off = sect_off;
18051   die->tag = abbrev->tag;
18052   die->abbrev = abbrev_number;
18053
18054   /* Make the result usable.
18055      The caller needs to update num_attrs after adding the extra
18056      attributes.  */
18057   die->num_attrs = abbrev->num_attrs;
18058
18059   for (i = 0; i < abbrev->num_attrs; ++i)
18060     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18061                                info_ptr);
18062
18063   *diep = die;
18064   *has_children = abbrev->has_children;
18065   return info_ptr;
18066 }
18067
18068 /* Read a die and all its attributes.
18069    Set DIEP to point to a newly allocated die with its information,
18070    except for its child, sibling, and parent fields.
18071    Set HAS_CHILDREN to tell whether the die has children or not.  */
18072
18073 static const gdb_byte *
18074 read_full_die (const struct die_reader_specs *reader,
18075                struct die_info **diep, const gdb_byte *info_ptr,
18076                int *has_children)
18077 {
18078   const gdb_byte *result;
18079
18080   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18081
18082   if (dwarf_die_debug)
18083     {
18084       fprintf_unfiltered (gdb_stdlog,
18085                           "Read die from %s@0x%x of %s:\n",
18086                           get_section_name (reader->die_section),
18087                           (unsigned) (info_ptr - reader->die_section->buffer),
18088                           bfd_get_filename (reader->abfd));
18089       dump_die (*diep, dwarf_die_debug);
18090     }
18091
18092   return result;
18093 }
18094 \f
18095 /* Abbreviation tables.
18096
18097    In DWARF version 2, the description of the debugging information is
18098    stored in a separate .debug_abbrev section.  Before we read any
18099    dies from a section we read in all abbreviations and install them
18100    in a hash table.  */
18101
18102 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18103
18104 struct abbrev_info *
18105 abbrev_table::alloc_abbrev ()
18106 {
18107   struct abbrev_info *abbrev;
18108
18109   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18110   memset (abbrev, 0, sizeof (struct abbrev_info));
18111
18112   return abbrev;
18113 }
18114
18115 /* Add an abbreviation to the table.  */
18116
18117 void
18118 abbrev_table::add_abbrev (unsigned int abbrev_number,
18119                           struct abbrev_info *abbrev)
18120 {
18121   unsigned int hash_number;
18122
18123   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18124   abbrev->next = m_abbrevs[hash_number];
18125   m_abbrevs[hash_number] = abbrev;
18126 }
18127
18128 /* Look up an abbrev in the table.
18129    Returns NULL if the abbrev is not found.  */
18130
18131 struct abbrev_info *
18132 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18133 {
18134   unsigned int hash_number;
18135   struct abbrev_info *abbrev;
18136
18137   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18138   abbrev = m_abbrevs[hash_number];
18139
18140   while (abbrev)
18141     {
18142       if (abbrev->number == abbrev_number)
18143         return abbrev;
18144       abbrev = abbrev->next;
18145     }
18146   return NULL;
18147 }
18148
18149 /* Read in an abbrev table.  */
18150
18151 static abbrev_table_up
18152 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18153                          struct dwarf2_section_info *section,
18154                          sect_offset sect_off)
18155 {
18156   struct objfile *objfile = dwarf2_per_objfile->objfile;
18157   bfd *abfd = get_section_bfd_owner (section);
18158   const gdb_byte *abbrev_ptr;
18159   struct abbrev_info *cur_abbrev;
18160   unsigned int abbrev_number, bytes_read, abbrev_name;
18161   unsigned int abbrev_form;
18162   struct attr_abbrev *cur_attrs;
18163   unsigned int allocated_attrs;
18164
18165   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18166
18167   dwarf2_read_section (objfile, section);
18168   abbrev_ptr = section->buffer + to_underlying (sect_off);
18169   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18170   abbrev_ptr += bytes_read;
18171
18172   allocated_attrs = ATTR_ALLOC_CHUNK;
18173   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18174
18175   /* Loop until we reach an abbrev number of 0.  */
18176   while (abbrev_number)
18177     {
18178       cur_abbrev = abbrev_table->alloc_abbrev ();
18179
18180       /* read in abbrev header */
18181       cur_abbrev->number = abbrev_number;
18182       cur_abbrev->tag
18183         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18184       abbrev_ptr += bytes_read;
18185       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18186       abbrev_ptr += 1;
18187
18188       /* now read in declarations */
18189       for (;;)
18190         {
18191           LONGEST implicit_const;
18192
18193           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18194           abbrev_ptr += bytes_read;
18195           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18196           abbrev_ptr += bytes_read;
18197           if (abbrev_form == DW_FORM_implicit_const)
18198             {
18199               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18200                                                    &bytes_read);
18201               abbrev_ptr += bytes_read;
18202             }
18203           else
18204             {
18205               /* Initialize it due to a false compiler warning.  */
18206               implicit_const = -1;
18207             }
18208
18209           if (abbrev_name == 0)
18210             break;
18211
18212           if (cur_abbrev->num_attrs == allocated_attrs)
18213             {
18214               allocated_attrs += ATTR_ALLOC_CHUNK;
18215               cur_attrs
18216                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18217             }
18218
18219           cur_attrs[cur_abbrev->num_attrs].name
18220             = (enum dwarf_attribute) abbrev_name;
18221           cur_attrs[cur_abbrev->num_attrs].form
18222             = (enum dwarf_form) abbrev_form;
18223           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18224           ++cur_abbrev->num_attrs;
18225         }
18226
18227       cur_abbrev->attrs =
18228         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18229                    cur_abbrev->num_attrs);
18230       memcpy (cur_abbrev->attrs, cur_attrs,
18231               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18232
18233       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18234
18235       /* Get next abbreviation.
18236          Under Irix6 the abbreviations for a compilation unit are not
18237          always properly terminated with an abbrev number of 0.
18238          Exit loop if we encounter an abbreviation which we have
18239          already read (which means we are about to read the abbreviations
18240          for the next compile unit) or if the end of the abbreviation
18241          table is reached.  */
18242       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18243         break;
18244       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18245       abbrev_ptr += bytes_read;
18246       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18247         break;
18248     }
18249
18250   xfree (cur_attrs);
18251   return abbrev_table;
18252 }
18253
18254 /* Returns nonzero if TAG represents a type that we might generate a partial
18255    symbol for.  */
18256
18257 static int
18258 is_type_tag_for_partial (int tag)
18259 {
18260   switch (tag)
18261     {
18262 #if 0
18263     /* Some types that would be reasonable to generate partial symbols for,
18264        that we don't at present.  */
18265     case DW_TAG_array_type:
18266     case DW_TAG_file_type:
18267     case DW_TAG_ptr_to_member_type:
18268     case DW_TAG_set_type:
18269     case DW_TAG_string_type:
18270     case DW_TAG_subroutine_type:
18271 #endif
18272     case DW_TAG_base_type:
18273     case DW_TAG_class_type:
18274     case DW_TAG_interface_type:
18275     case DW_TAG_enumeration_type:
18276     case DW_TAG_structure_type:
18277     case DW_TAG_subrange_type:
18278     case DW_TAG_typedef:
18279     case DW_TAG_union_type:
18280       return 1;
18281     default:
18282       return 0;
18283     }
18284 }
18285
18286 /* Load all DIEs that are interesting for partial symbols into memory.  */
18287
18288 static struct partial_die_info *
18289 load_partial_dies (const struct die_reader_specs *reader,
18290                    const gdb_byte *info_ptr, int building_psymtab)
18291 {
18292   struct dwarf2_cu *cu = reader->cu;
18293   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18294   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18295   unsigned int bytes_read;
18296   unsigned int load_all = 0;
18297   int nesting_level = 1;
18298
18299   parent_die = NULL;
18300   last_die = NULL;
18301
18302   gdb_assert (cu->per_cu != NULL);
18303   if (cu->per_cu->load_all_dies)
18304     load_all = 1;
18305
18306   cu->partial_dies
18307     = htab_create_alloc_ex (cu->header.length / 12,
18308                             partial_die_hash,
18309                             partial_die_eq,
18310                             NULL,
18311                             &cu->comp_unit_obstack,
18312                             hashtab_obstack_allocate,
18313                             dummy_obstack_deallocate);
18314
18315   while (1)
18316     {
18317       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18318
18319       /* A NULL abbrev means the end of a series of children.  */
18320       if (abbrev == NULL)
18321         {
18322           if (--nesting_level == 0)
18323             return first_die;
18324
18325           info_ptr += bytes_read;
18326           last_die = parent_die;
18327           parent_die = parent_die->die_parent;
18328           continue;
18329         }
18330
18331       /* Check for template arguments.  We never save these; if
18332          they're seen, we just mark the parent, and go on our way.  */
18333       if (parent_die != NULL
18334           && cu->language == language_cplus
18335           && (abbrev->tag == DW_TAG_template_type_param
18336               || abbrev->tag == DW_TAG_template_value_param))
18337         {
18338           parent_die->has_template_arguments = 1;
18339
18340           if (!load_all)
18341             {
18342               /* We don't need a partial DIE for the template argument.  */
18343               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18344               continue;
18345             }
18346         }
18347
18348       /* We only recurse into c++ subprograms looking for template arguments.
18349          Skip their other children.  */
18350       if (!load_all
18351           && cu->language == language_cplus
18352           && parent_die != NULL
18353           && parent_die->tag == DW_TAG_subprogram)
18354         {
18355           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18356           continue;
18357         }
18358
18359       /* Check whether this DIE is interesting enough to save.  Normally
18360          we would not be interested in members here, but there may be
18361          later variables referencing them via DW_AT_specification (for
18362          static members).  */
18363       if (!load_all
18364           && !is_type_tag_for_partial (abbrev->tag)
18365           && abbrev->tag != DW_TAG_constant
18366           && abbrev->tag != DW_TAG_enumerator
18367           && abbrev->tag != DW_TAG_subprogram
18368           && abbrev->tag != DW_TAG_inlined_subroutine
18369           && abbrev->tag != DW_TAG_lexical_block
18370           && abbrev->tag != DW_TAG_variable
18371           && abbrev->tag != DW_TAG_namespace
18372           && abbrev->tag != DW_TAG_module
18373           && abbrev->tag != DW_TAG_member
18374           && abbrev->tag != DW_TAG_imported_unit
18375           && abbrev->tag != DW_TAG_imported_declaration)
18376         {
18377           /* Otherwise we skip to the next sibling, if any.  */
18378           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18379           continue;
18380         }
18381
18382       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18383                                    abbrev);
18384
18385       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18386
18387       /* This two-pass algorithm for processing partial symbols has a
18388          high cost in cache pressure.  Thus, handle some simple cases
18389          here which cover the majority of C partial symbols.  DIEs
18390          which neither have specification tags in them, nor could have
18391          specification tags elsewhere pointing at them, can simply be
18392          processed and discarded.
18393
18394          This segment is also optional; scan_partial_symbols and
18395          add_partial_symbol will handle these DIEs if we chain
18396          them in normally.  When compilers which do not emit large
18397          quantities of duplicate debug information are more common,
18398          this code can probably be removed.  */
18399
18400       /* Any complete simple types at the top level (pretty much all
18401          of them, for a language without namespaces), can be processed
18402          directly.  */
18403       if (parent_die == NULL
18404           && pdi.has_specification == 0
18405           && pdi.is_declaration == 0
18406           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18407               || pdi.tag == DW_TAG_base_type
18408               || pdi.tag == DW_TAG_subrange_type))
18409         {
18410           if (building_psymtab && pdi.name != NULL)
18411             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18412                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18413                                  &objfile->static_psymbols,
18414                                  0, cu->language, objfile);
18415           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18416           continue;
18417         }
18418
18419       /* The exception for DW_TAG_typedef with has_children above is
18420          a workaround of GCC PR debug/47510.  In the case of this complaint
18421          type_name_or_error will error on such types later.
18422
18423          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18424          it could not find the child DIEs referenced later, this is checked
18425          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18426
18427       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18428         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18429                      "- DIE at %s [in module %s]"),
18430                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18431
18432       /* If we're at the second level, and we're an enumerator, and
18433          our parent has no specification (meaning possibly lives in a
18434          namespace elsewhere), then we can add the partial symbol now
18435          instead of queueing it.  */
18436       if (pdi.tag == DW_TAG_enumerator
18437           && parent_die != NULL
18438           && parent_die->die_parent == NULL
18439           && parent_die->tag == DW_TAG_enumeration_type
18440           && parent_die->has_specification == 0)
18441         {
18442           if (pdi.name == NULL)
18443             complaint (_("malformed enumerator DIE ignored"));
18444           else if (building_psymtab)
18445             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18446                                  VAR_DOMAIN, LOC_CONST, -1,
18447                                  cu->language == language_cplus
18448                                  ? &objfile->global_psymbols
18449                                  : &objfile->static_psymbols,
18450                                  0, cu->language, objfile);
18451
18452           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18453           continue;
18454         }
18455
18456       struct partial_die_info *part_die
18457         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18458
18459       /* We'll save this DIE so link it in.  */
18460       part_die->die_parent = parent_die;
18461       part_die->die_sibling = NULL;
18462       part_die->die_child = NULL;
18463
18464       if (last_die && last_die == parent_die)
18465         last_die->die_child = part_die;
18466       else if (last_die)
18467         last_die->die_sibling = part_die;
18468
18469       last_die = part_die;
18470
18471       if (first_die == NULL)
18472         first_die = part_die;
18473
18474       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18475          find interesting need to be in the hash table, because we
18476          also have the parent/sibling/child chains; only those that we
18477          might refer to by offset later during partial symbol reading.
18478
18479          For now this means things that might have be the target of a
18480          DW_AT_specification, DW_AT_abstract_origin, or
18481          DW_AT_extension.  DW_AT_extension will refer only to
18482          namespaces; DW_AT_abstract_origin refers to functions (and
18483          many things under the function DIE, but we do not recurse
18484          into function DIEs during partial symbol reading) and
18485          possibly variables as well; DW_AT_specification refers to
18486          declarations.  Declarations ought to have the DW_AT_declaration
18487          flag.  It happens that GCC forgets to put it in sometimes, but
18488          only for functions, not for types.
18489
18490          Adding more things than necessary to the hash table is harmless
18491          except for the performance cost.  Adding too few will result in
18492          wasted time in find_partial_die, when we reread the compilation
18493          unit with load_all_dies set.  */
18494
18495       if (load_all
18496           || abbrev->tag == DW_TAG_constant
18497           || abbrev->tag == DW_TAG_subprogram
18498           || abbrev->tag == DW_TAG_variable
18499           || abbrev->tag == DW_TAG_namespace
18500           || part_die->is_declaration)
18501         {
18502           void **slot;
18503
18504           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18505                                            to_underlying (part_die->sect_off),
18506                                            INSERT);
18507           *slot = part_die;
18508         }
18509
18510       /* For some DIEs we want to follow their children (if any).  For C
18511          we have no reason to follow the children of structures; for other
18512          languages we have to, so that we can get at method physnames
18513          to infer fully qualified class names, for DW_AT_specification,
18514          and for C++ template arguments.  For C++, we also look one level
18515          inside functions to find template arguments (if the name of the
18516          function does not already contain the template arguments).
18517
18518          For Ada, we need to scan the children of subprograms and lexical
18519          blocks as well because Ada allows the definition of nested
18520          entities that could be interesting for the debugger, such as
18521          nested subprograms for instance.  */
18522       if (last_die->has_children
18523           && (load_all
18524               || last_die->tag == DW_TAG_namespace
18525               || last_die->tag == DW_TAG_module
18526               || last_die->tag == DW_TAG_enumeration_type
18527               || (cu->language == language_cplus
18528                   && last_die->tag == DW_TAG_subprogram
18529                   && (last_die->name == NULL
18530                       || strchr (last_die->name, '<') == NULL))
18531               || (cu->language != language_c
18532                   && (last_die->tag == DW_TAG_class_type
18533                       || last_die->tag == DW_TAG_interface_type
18534                       || last_die->tag == DW_TAG_structure_type
18535                       || last_die->tag == DW_TAG_union_type))
18536               || (cu->language == language_ada
18537                   && (last_die->tag == DW_TAG_subprogram
18538                       || last_die->tag == DW_TAG_lexical_block))))
18539         {
18540           nesting_level++;
18541           parent_die = last_die;
18542           continue;
18543         }
18544
18545       /* Otherwise we skip to the next sibling, if any.  */
18546       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18547
18548       /* Back to the top, do it again.  */
18549     }
18550 }
18551
18552 partial_die_info::partial_die_info (sect_offset sect_off_,
18553                                     struct abbrev_info *abbrev)
18554   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18555 {
18556 }
18557
18558 /* Read a minimal amount of information into the minimal die structure.
18559    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18560
18561 const gdb_byte *
18562 partial_die_info::read (const struct die_reader_specs *reader,
18563                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18564 {
18565   struct dwarf2_cu *cu = reader->cu;
18566   struct dwarf2_per_objfile *dwarf2_per_objfile
18567     = cu->per_cu->dwarf2_per_objfile;
18568   unsigned int i;
18569   int has_low_pc_attr = 0;
18570   int has_high_pc_attr = 0;
18571   int high_pc_relative = 0;
18572
18573   for (i = 0; i < abbrev.num_attrs; ++i)
18574     {
18575       struct attribute attr;
18576
18577       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18578
18579       /* Store the data if it is of an attribute we want to keep in a
18580          partial symbol table.  */
18581       switch (attr.name)
18582         {
18583         case DW_AT_name:
18584           switch (tag)
18585             {
18586             case DW_TAG_compile_unit:
18587             case DW_TAG_partial_unit:
18588             case DW_TAG_type_unit:
18589               /* Compilation units have a DW_AT_name that is a filename, not
18590                  a source language identifier.  */
18591             case DW_TAG_enumeration_type:
18592             case DW_TAG_enumerator:
18593               /* These tags always have simple identifiers already; no need
18594                  to canonicalize them.  */
18595               name = DW_STRING (&attr);
18596               break;
18597             default:
18598               {
18599                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18600
18601                 name
18602                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18603                                               &objfile->per_bfd->storage_obstack);
18604               }
18605               break;
18606             }
18607           break;
18608         case DW_AT_linkage_name:
18609         case DW_AT_MIPS_linkage_name:
18610           /* Note that both forms of linkage name might appear.  We
18611              assume they will be the same, and we only store the last
18612              one we see.  */
18613           if (cu->language == language_ada)
18614             name = DW_STRING (&attr);
18615           linkage_name = DW_STRING (&attr);
18616           break;
18617         case DW_AT_low_pc:
18618           has_low_pc_attr = 1;
18619           lowpc = attr_value_as_address (&attr);
18620           break;
18621         case DW_AT_high_pc:
18622           has_high_pc_attr = 1;
18623           highpc = attr_value_as_address (&attr);
18624           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18625                 high_pc_relative = 1;
18626           break;
18627         case DW_AT_location:
18628           /* Support the .debug_loc offsets.  */
18629           if (attr_form_is_block (&attr))
18630             {
18631                d.locdesc = DW_BLOCK (&attr);
18632             }
18633           else if (attr_form_is_section_offset (&attr))
18634             {
18635               dwarf2_complex_location_expr_complaint ();
18636             }
18637           else
18638             {
18639               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18640                                                      "partial symbol information");
18641             }
18642           break;
18643         case DW_AT_external:
18644           is_external = DW_UNSND (&attr);
18645           break;
18646         case DW_AT_declaration:
18647           is_declaration = DW_UNSND (&attr);
18648           break;
18649         case DW_AT_type:
18650           has_type = 1;
18651           break;
18652         case DW_AT_abstract_origin:
18653         case DW_AT_specification:
18654         case DW_AT_extension:
18655           has_specification = 1;
18656           spec_offset = dwarf2_get_ref_die_offset (&attr);
18657           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18658                                    || cu->per_cu->is_dwz);
18659           break;
18660         case DW_AT_sibling:
18661           /* Ignore absolute siblings, they might point outside of
18662              the current compile unit.  */
18663           if (attr.form == DW_FORM_ref_addr)
18664             complaint (_("ignoring absolute DW_AT_sibling"));
18665           else
18666             {
18667               const gdb_byte *buffer = reader->buffer;
18668               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18669               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18670
18671               if (sibling_ptr < info_ptr)
18672                 complaint (_("DW_AT_sibling points backwards"));
18673               else if (sibling_ptr > reader->buffer_end)
18674                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18675               else
18676                 sibling = sibling_ptr;
18677             }
18678           break;
18679         case DW_AT_byte_size:
18680           has_byte_size = 1;
18681           break;
18682         case DW_AT_const_value:
18683           has_const_value = 1;
18684           break;
18685         case DW_AT_calling_convention:
18686           /* DWARF doesn't provide a way to identify a program's source-level
18687              entry point.  DW_AT_calling_convention attributes are only meant
18688              to describe functions' calling conventions.
18689
18690              However, because it's a necessary piece of information in
18691              Fortran, and before DWARF 4 DW_CC_program was the only
18692              piece of debugging information whose definition refers to
18693              a 'main program' at all, several compilers marked Fortran
18694              main programs with DW_CC_program --- even when those
18695              functions use the standard calling conventions.
18696
18697              Although DWARF now specifies a way to provide this
18698              information, we support this practice for backward
18699              compatibility.  */
18700           if (DW_UNSND (&attr) == DW_CC_program
18701               && cu->language == language_fortran)
18702             main_subprogram = 1;
18703           break;
18704         case DW_AT_inline:
18705           if (DW_UNSND (&attr) == DW_INL_inlined
18706               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18707             may_be_inlined = 1;
18708           break;
18709
18710         case DW_AT_import:
18711           if (tag == DW_TAG_imported_unit)
18712             {
18713               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18714               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18715                                   || cu->per_cu->is_dwz);
18716             }
18717           break;
18718
18719         case DW_AT_main_subprogram:
18720           main_subprogram = DW_UNSND (&attr);
18721           break;
18722
18723         default:
18724           break;
18725         }
18726     }
18727
18728   if (high_pc_relative)
18729     highpc += lowpc;
18730
18731   if (has_low_pc_attr && has_high_pc_attr)
18732     {
18733       /* When using the GNU linker, .gnu.linkonce. sections are used to
18734          eliminate duplicate copies of functions and vtables and such.
18735          The linker will arbitrarily choose one and discard the others.
18736          The AT_*_pc values for such functions refer to local labels in
18737          these sections.  If the section from that file was discarded, the
18738          labels are not in the output, so the relocs get a value of 0.
18739          If this is a discarded function, mark the pc bounds as invalid,
18740          so that GDB will ignore it.  */
18741       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18742         {
18743           struct objfile *objfile = dwarf2_per_objfile->objfile;
18744           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18745
18746           complaint (_("DW_AT_low_pc %s is zero "
18747                        "for DIE at %s [in module %s]"),
18748                      paddress (gdbarch, lowpc),
18749                      sect_offset_str (sect_off),
18750                      objfile_name (objfile));
18751         }
18752       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18753       else if (lowpc >= highpc)
18754         {
18755           struct objfile *objfile = dwarf2_per_objfile->objfile;
18756           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18757
18758           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18759                        "for DIE at %s [in module %s]"),
18760                      paddress (gdbarch, lowpc),
18761                      paddress (gdbarch, highpc),
18762                      sect_offset_str (sect_off),
18763                      objfile_name (objfile));
18764         }
18765       else
18766         has_pc_info = 1;
18767     }
18768
18769   return info_ptr;
18770 }
18771
18772 /* Find a cached partial DIE at OFFSET in CU.  */
18773
18774 struct partial_die_info *
18775 dwarf2_cu::find_partial_die (sect_offset sect_off)
18776 {
18777   struct partial_die_info *lookup_die = NULL;
18778   struct partial_die_info part_die (sect_off);
18779
18780   lookup_die = ((struct partial_die_info *)
18781                 htab_find_with_hash (partial_dies, &part_die,
18782                                      to_underlying (sect_off)));
18783
18784   return lookup_die;
18785 }
18786
18787 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18788    except in the case of .debug_types DIEs which do not reference
18789    outside their CU (they do however referencing other types via
18790    DW_FORM_ref_sig8).  */
18791
18792 static struct partial_die_info *
18793 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18794 {
18795   struct dwarf2_per_objfile *dwarf2_per_objfile
18796     = cu->per_cu->dwarf2_per_objfile;
18797   struct objfile *objfile = dwarf2_per_objfile->objfile;
18798   struct dwarf2_per_cu_data *per_cu = NULL;
18799   struct partial_die_info *pd = NULL;
18800
18801   if (offset_in_dwz == cu->per_cu->is_dwz
18802       && offset_in_cu_p (&cu->header, sect_off))
18803     {
18804       pd = cu->find_partial_die (sect_off);
18805       if (pd != NULL)
18806         return pd;
18807       /* We missed recording what we needed.
18808          Load all dies and try again.  */
18809       per_cu = cu->per_cu;
18810     }
18811   else
18812     {
18813       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18814       if (cu->per_cu->is_debug_types)
18815         {
18816           error (_("Dwarf Error: Type Unit at offset %s contains"
18817                    " external reference to offset %s [in module %s].\n"),
18818                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18819                  bfd_get_filename (objfile->obfd));
18820         }
18821       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18822                                                  dwarf2_per_objfile);
18823
18824       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18825         load_partial_comp_unit (per_cu);
18826
18827       per_cu->cu->last_used = 0;
18828       pd = per_cu->cu->find_partial_die (sect_off);
18829     }
18830
18831   /* If we didn't find it, and not all dies have been loaded,
18832      load them all and try again.  */
18833
18834   if (pd == NULL && per_cu->load_all_dies == 0)
18835     {
18836       per_cu->load_all_dies = 1;
18837
18838       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18839          THIS_CU->cu may already be in use.  So we can't just free it and
18840          replace its DIEs with the ones we read in.  Instead, we leave those
18841          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18842          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18843          set.  */
18844       load_partial_comp_unit (per_cu);
18845
18846       pd = per_cu->cu->find_partial_die (sect_off);
18847     }
18848
18849   if (pd == NULL)
18850     internal_error (__FILE__, __LINE__,
18851                     _("could not find partial DIE %s "
18852                       "in cache [from module %s]\n"),
18853                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18854   return pd;
18855 }
18856
18857 /* See if we can figure out if the class lives in a namespace.  We do
18858    this by looking for a member function; its demangled name will
18859    contain namespace info, if there is any.  */
18860
18861 static void
18862 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18863                                   struct dwarf2_cu *cu)
18864 {
18865   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18866      what template types look like, because the demangler
18867      frequently doesn't give the same name as the debug info.  We
18868      could fix this by only using the demangled name to get the
18869      prefix (but see comment in read_structure_type).  */
18870
18871   struct partial_die_info *real_pdi;
18872   struct partial_die_info *child_pdi;
18873
18874   /* If this DIE (this DIE's specification, if any) has a parent, then
18875      we should not do this.  We'll prepend the parent's fully qualified
18876      name when we create the partial symbol.  */
18877
18878   real_pdi = struct_pdi;
18879   while (real_pdi->has_specification)
18880     real_pdi = find_partial_die (real_pdi->spec_offset,
18881                                  real_pdi->spec_is_dwz, cu);
18882
18883   if (real_pdi->die_parent != NULL)
18884     return;
18885
18886   for (child_pdi = struct_pdi->die_child;
18887        child_pdi != NULL;
18888        child_pdi = child_pdi->die_sibling)
18889     {
18890       if (child_pdi->tag == DW_TAG_subprogram
18891           && child_pdi->linkage_name != NULL)
18892         {
18893           char *actual_class_name
18894             = language_class_name_from_physname (cu->language_defn,
18895                                                  child_pdi->linkage_name);
18896           if (actual_class_name != NULL)
18897             {
18898               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18899               struct_pdi->name
18900                 = ((const char *)
18901                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18902                                   actual_class_name,
18903                                   strlen (actual_class_name)));
18904               xfree (actual_class_name);
18905             }
18906           break;
18907         }
18908     }
18909 }
18910
18911 void
18912 partial_die_info::fixup (struct dwarf2_cu *cu)
18913 {
18914   /* Once we've fixed up a die, there's no point in doing so again.
18915      This also avoids a memory leak if we were to call
18916      guess_partial_die_structure_name multiple times.  */
18917   if (fixup_called)
18918     return;
18919
18920   /* If we found a reference attribute and the DIE has no name, try
18921      to find a name in the referred to DIE.  */
18922
18923   if (name == NULL && has_specification)
18924     {
18925       struct partial_die_info *spec_die;
18926
18927       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18928
18929       spec_die->fixup (cu);
18930
18931       if (spec_die->name)
18932         {
18933           name = spec_die->name;
18934
18935           /* Copy DW_AT_external attribute if it is set.  */
18936           if (spec_die->is_external)
18937             is_external = spec_die->is_external;
18938         }
18939     }
18940
18941   /* Set default names for some unnamed DIEs.  */
18942
18943   if (name == NULL && tag == DW_TAG_namespace)
18944     name = CP_ANONYMOUS_NAMESPACE_STR;
18945
18946   /* If there is no parent die to provide a namespace, and there are
18947      children, see if we can determine the namespace from their linkage
18948      name.  */
18949   if (cu->language == language_cplus
18950       && !VEC_empty (dwarf2_section_info_def,
18951                      cu->per_cu->dwarf2_per_objfile->types)
18952       && die_parent == NULL
18953       && has_children
18954       && (tag == DW_TAG_class_type
18955           || tag == DW_TAG_structure_type
18956           || tag == DW_TAG_union_type))
18957     guess_partial_die_structure_name (this, cu);
18958
18959   /* GCC might emit a nameless struct or union that has a linkage
18960      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18961   if (name == NULL
18962       && (tag == DW_TAG_class_type
18963           || tag == DW_TAG_interface_type
18964           || tag == DW_TAG_structure_type
18965           || tag == DW_TAG_union_type)
18966       && linkage_name != NULL)
18967     {
18968       char *demangled;
18969
18970       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18971       if (demangled)
18972         {
18973           const char *base;
18974
18975           /* Strip any leading namespaces/classes, keep only the base name.
18976              DW_AT_name for named DIEs does not contain the prefixes.  */
18977           base = strrchr (demangled, ':');
18978           if (base && base > demangled && base[-1] == ':')
18979             base++;
18980           else
18981             base = demangled;
18982
18983           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18984           name
18985             = ((const char *)
18986                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18987                               base, strlen (base)));
18988           xfree (demangled);
18989         }
18990     }
18991
18992   fixup_called = 1;
18993 }
18994
18995 /* Read an attribute value described by an attribute form.  */
18996
18997 static const gdb_byte *
18998 read_attribute_value (const struct die_reader_specs *reader,
18999                       struct attribute *attr, unsigned form,
19000                       LONGEST implicit_const, const gdb_byte *info_ptr)
19001 {
19002   struct dwarf2_cu *cu = reader->cu;
19003   struct dwarf2_per_objfile *dwarf2_per_objfile
19004     = cu->per_cu->dwarf2_per_objfile;
19005   struct objfile *objfile = dwarf2_per_objfile->objfile;
19006   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19007   bfd *abfd = reader->abfd;
19008   struct comp_unit_head *cu_header = &cu->header;
19009   unsigned int bytes_read;
19010   struct dwarf_block *blk;
19011
19012   attr->form = (enum dwarf_form) form;
19013   switch (form)
19014     {
19015     case DW_FORM_ref_addr:
19016       if (cu->header.version == 2)
19017         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19018       else
19019         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19020                                        &cu->header, &bytes_read);
19021       info_ptr += bytes_read;
19022       break;
19023     case DW_FORM_GNU_ref_alt:
19024       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19025       info_ptr += bytes_read;
19026       break;
19027     case DW_FORM_addr:
19028       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19029       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19030       info_ptr += bytes_read;
19031       break;
19032     case DW_FORM_block2:
19033       blk = dwarf_alloc_block (cu);
19034       blk->size = read_2_bytes (abfd, info_ptr);
19035       info_ptr += 2;
19036       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19037       info_ptr += blk->size;
19038       DW_BLOCK (attr) = blk;
19039       break;
19040     case DW_FORM_block4:
19041       blk = dwarf_alloc_block (cu);
19042       blk->size = read_4_bytes (abfd, info_ptr);
19043       info_ptr += 4;
19044       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19045       info_ptr += blk->size;
19046       DW_BLOCK (attr) = blk;
19047       break;
19048     case DW_FORM_data2:
19049       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19050       info_ptr += 2;
19051       break;
19052     case DW_FORM_data4:
19053       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19054       info_ptr += 4;
19055       break;
19056     case DW_FORM_data8:
19057       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19058       info_ptr += 8;
19059       break;
19060     case DW_FORM_data16:
19061       blk = dwarf_alloc_block (cu);
19062       blk->size = 16;
19063       blk->data = read_n_bytes (abfd, info_ptr, 16);
19064       info_ptr += 16;
19065       DW_BLOCK (attr) = blk;
19066       break;
19067     case DW_FORM_sec_offset:
19068       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19069       info_ptr += bytes_read;
19070       break;
19071     case DW_FORM_string:
19072       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19073       DW_STRING_IS_CANONICAL (attr) = 0;
19074       info_ptr += bytes_read;
19075       break;
19076     case DW_FORM_strp:
19077       if (!cu->per_cu->is_dwz)
19078         {
19079           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19080                                                    abfd, info_ptr, cu_header,
19081                                                    &bytes_read);
19082           DW_STRING_IS_CANONICAL (attr) = 0;
19083           info_ptr += bytes_read;
19084           break;
19085         }
19086       /* FALLTHROUGH */
19087     case DW_FORM_line_strp:
19088       if (!cu->per_cu->is_dwz)
19089         {
19090           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19091                                                         abfd, info_ptr,
19092                                                         cu_header, &bytes_read);
19093           DW_STRING_IS_CANONICAL (attr) = 0;
19094           info_ptr += bytes_read;
19095           break;
19096         }
19097       /* FALLTHROUGH */
19098     case DW_FORM_GNU_strp_alt:
19099       {
19100         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19101         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19102                                           &bytes_read);
19103
19104         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19105                                                           dwz, str_offset);
19106         DW_STRING_IS_CANONICAL (attr) = 0;
19107         info_ptr += bytes_read;
19108       }
19109       break;
19110     case DW_FORM_exprloc:
19111     case DW_FORM_block:
19112       blk = dwarf_alloc_block (cu);
19113       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19114       info_ptr += bytes_read;
19115       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19116       info_ptr += blk->size;
19117       DW_BLOCK (attr) = blk;
19118       break;
19119     case DW_FORM_block1:
19120       blk = dwarf_alloc_block (cu);
19121       blk->size = read_1_byte (abfd, info_ptr);
19122       info_ptr += 1;
19123       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19124       info_ptr += blk->size;
19125       DW_BLOCK (attr) = blk;
19126       break;
19127     case DW_FORM_data1:
19128       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19129       info_ptr += 1;
19130       break;
19131     case DW_FORM_flag:
19132       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19133       info_ptr += 1;
19134       break;
19135     case DW_FORM_flag_present:
19136       DW_UNSND (attr) = 1;
19137       break;
19138     case DW_FORM_sdata:
19139       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19140       info_ptr += bytes_read;
19141       break;
19142     case DW_FORM_udata:
19143       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19144       info_ptr += bytes_read;
19145       break;
19146     case DW_FORM_ref1:
19147       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19148                          + read_1_byte (abfd, info_ptr));
19149       info_ptr += 1;
19150       break;
19151     case DW_FORM_ref2:
19152       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19153                          + read_2_bytes (abfd, info_ptr));
19154       info_ptr += 2;
19155       break;
19156     case DW_FORM_ref4:
19157       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19158                          + read_4_bytes (abfd, info_ptr));
19159       info_ptr += 4;
19160       break;
19161     case DW_FORM_ref8:
19162       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19163                          + read_8_bytes (abfd, info_ptr));
19164       info_ptr += 8;
19165       break;
19166     case DW_FORM_ref_sig8:
19167       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19168       info_ptr += 8;
19169       break;
19170     case DW_FORM_ref_udata:
19171       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19172                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19173       info_ptr += bytes_read;
19174       break;
19175     case DW_FORM_indirect:
19176       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19177       info_ptr += bytes_read;
19178       if (form == DW_FORM_implicit_const)
19179         {
19180           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19181           info_ptr += bytes_read;
19182         }
19183       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19184                                        info_ptr);
19185       break;
19186     case DW_FORM_implicit_const:
19187       DW_SND (attr) = implicit_const;
19188       break;
19189     case DW_FORM_GNU_addr_index:
19190       if (reader->dwo_file == NULL)
19191         {
19192           /* For now flag a hard error.
19193              Later we can turn this into a complaint.  */
19194           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19195                  dwarf_form_name (form),
19196                  bfd_get_filename (abfd));
19197         }
19198       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19199       info_ptr += bytes_read;
19200       break;
19201     case DW_FORM_GNU_str_index:
19202       if (reader->dwo_file == NULL)
19203         {
19204           /* For now flag a hard error.
19205              Later we can turn this into a complaint if warranted.  */
19206           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19207                  dwarf_form_name (form),
19208                  bfd_get_filename (abfd));
19209         }
19210       {
19211         ULONGEST str_index =
19212           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19213
19214         DW_STRING (attr) = read_str_index (reader, str_index);
19215         DW_STRING_IS_CANONICAL (attr) = 0;
19216         info_ptr += bytes_read;
19217       }
19218       break;
19219     default:
19220       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19221              dwarf_form_name (form),
19222              bfd_get_filename (abfd));
19223     }
19224
19225   /* Super hack.  */
19226   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19227     attr->form = DW_FORM_GNU_ref_alt;
19228
19229   /* We have seen instances where the compiler tried to emit a byte
19230      size attribute of -1 which ended up being encoded as an unsigned
19231      0xffffffff.  Although 0xffffffff is technically a valid size value,
19232      an object of this size seems pretty unlikely so we can relatively
19233      safely treat these cases as if the size attribute was invalid and
19234      treat them as zero by default.  */
19235   if (attr->name == DW_AT_byte_size
19236       && form == DW_FORM_data4
19237       && DW_UNSND (attr) >= 0xffffffff)
19238     {
19239       complaint
19240         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19241          hex_string (DW_UNSND (attr)));
19242       DW_UNSND (attr) = 0;
19243     }
19244
19245   return info_ptr;
19246 }
19247
19248 /* Read an attribute described by an abbreviated attribute.  */
19249
19250 static const gdb_byte *
19251 read_attribute (const struct die_reader_specs *reader,
19252                 struct attribute *attr, struct attr_abbrev *abbrev,
19253                 const gdb_byte *info_ptr)
19254 {
19255   attr->name = abbrev->name;
19256   return read_attribute_value (reader, attr, abbrev->form,
19257                                abbrev->implicit_const, info_ptr);
19258 }
19259
19260 /* Read dwarf information from a buffer.  */
19261
19262 static unsigned int
19263 read_1_byte (bfd *abfd, const gdb_byte *buf)
19264 {
19265   return bfd_get_8 (abfd, buf);
19266 }
19267
19268 static int
19269 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19270 {
19271   return bfd_get_signed_8 (abfd, buf);
19272 }
19273
19274 static unsigned int
19275 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19276 {
19277   return bfd_get_16 (abfd, buf);
19278 }
19279
19280 static int
19281 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19282 {
19283   return bfd_get_signed_16 (abfd, buf);
19284 }
19285
19286 static unsigned int
19287 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19288 {
19289   return bfd_get_32 (abfd, buf);
19290 }
19291
19292 static int
19293 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19294 {
19295   return bfd_get_signed_32 (abfd, buf);
19296 }
19297
19298 static ULONGEST
19299 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19300 {
19301   return bfd_get_64 (abfd, buf);
19302 }
19303
19304 static CORE_ADDR
19305 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19306               unsigned int *bytes_read)
19307 {
19308   struct comp_unit_head *cu_header = &cu->header;
19309   CORE_ADDR retval = 0;
19310
19311   if (cu_header->signed_addr_p)
19312     {
19313       switch (cu_header->addr_size)
19314         {
19315         case 2:
19316           retval = bfd_get_signed_16 (abfd, buf);
19317           break;
19318         case 4:
19319           retval = bfd_get_signed_32 (abfd, buf);
19320           break;
19321         case 8:
19322           retval = bfd_get_signed_64 (abfd, buf);
19323           break;
19324         default:
19325           internal_error (__FILE__, __LINE__,
19326                           _("read_address: bad switch, signed [in module %s]"),
19327                           bfd_get_filename (abfd));
19328         }
19329     }
19330   else
19331     {
19332       switch (cu_header->addr_size)
19333         {
19334         case 2:
19335           retval = bfd_get_16 (abfd, buf);
19336           break;
19337         case 4:
19338           retval = bfd_get_32 (abfd, buf);
19339           break;
19340         case 8:
19341           retval = bfd_get_64 (abfd, buf);
19342           break;
19343         default:
19344           internal_error (__FILE__, __LINE__,
19345                           _("read_address: bad switch, "
19346                             "unsigned [in module %s]"),
19347                           bfd_get_filename (abfd));
19348         }
19349     }
19350
19351   *bytes_read = cu_header->addr_size;
19352   return retval;
19353 }
19354
19355 /* Read the initial length from a section.  The (draft) DWARF 3
19356    specification allows the initial length to take up either 4 bytes
19357    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19358    bytes describe the length and all offsets will be 8 bytes in length
19359    instead of 4.
19360
19361    An older, non-standard 64-bit format is also handled by this
19362    function.  The older format in question stores the initial length
19363    as an 8-byte quantity without an escape value.  Lengths greater
19364    than 2^32 aren't very common which means that the initial 4 bytes
19365    is almost always zero.  Since a length value of zero doesn't make
19366    sense for the 32-bit format, this initial zero can be considered to
19367    be an escape value which indicates the presence of the older 64-bit
19368    format.  As written, the code can't detect (old format) lengths
19369    greater than 4GB.  If it becomes necessary to handle lengths
19370    somewhat larger than 4GB, we could allow other small values (such
19371    as the non-sensical values of 1, 2, and 3) to also be used as
19372    escape values indicating the presence of the old format.
19373
19374    The value returned via bytes_read should be used to increment the
19375    relevant pointer after calling read_initial_length().
19376
19377    [ Note:  read_initial_length() and read_offset() are based on the
19378      document entitled "DWARF Debugging Information Format", revision
19379      3, draft 8, dated November 19, 2001.  This document was obtained
19380      from:
19381
19382         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19383
19384      This document is only a draft and is subject to change.  (So beware.)
19385
19386      Details regarding the older, non-standard 64-bit format were
19387      determined empirically by examining 64-bit ELF files produced by
19388      the SGI toolchain on an IRIX 6.5 machine.
19389
19390      - Kevin, July 16, 2002
19391    ] */
19392
19393 static LONGEST
19394 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19395 {
19396   LONGEST length = bfd_get_32 (abfd, buf);
19397
19398   if (length == 0xffffffff)
19399     {
19400       length = bfd_get_64 (abfd, buf + 4);
19401       *bytes_read = 12;
19402     }
19403   else if (length == 0)
19404     {
19405       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19406       length = bfd_get_64 (abfd, buf);
19407       *bytes_read = 8;
19408     }
19409   else
19410     {
19411       *bytes_read = 4;
19412     }
19413
19414   return length;
19415 }
19416
19417 /* Cover function for read_initial_length.
19418    Returns the length of the object at BUF, and stores the size of the
19419    initial length in *BYTES_READ and stores the size that offsets will be in
19420    *OFFSET_SIZE.
19421    If the initial length size is not equivalent to that specified in
19422    CU_HEADER then issue a complaint.
19423    This is useful when reading non-comp-unit headers.  */
19424
19425 static LONGEST
19426 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19427                                         const struct comp_unit_head *cu_header,
19428                                         unsigned int *bytes_read,
19429                                         unsigned int *offset_size)
19430 {
19431   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19432
19433   gdb_assert (cu_header->initial_length_size == 4
19434               || cu_header->initial_length_size == 8
19435               || cu_header->initial_length_size == 12);
19436
19437   if (cu_header->initial_length_size != *bytes_read)
19438     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19439
19440   *offset_size = (*bytes_read == 4) ? 4 : 8;
19441   return length;
19442 }
19443
19444 /* Read an offset from the data stream.  The size of the offset is
19445    given by cu_header->offset_size.  */
19446
19447 static LONGEST
19448 read_offset (bfd *abfd, const gdb_byte *buf,
19449              const struct comp_unit_head *cu_header,
19450              unsigned int *bytes_read)
19451 {
19452   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19453
19454   *bytes_read = cu_header->offset_size;
19455   return offset;
19456 }
19457
19458 /* Read an offset from the data stream.  */
19459
19460 static LONGEST
19461 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19462 {
19463   LONGEST retval = 0;
19464
19465   switch (offset_size)
19466     {
19467     case 4:
19468       retval = bfd_get_32 (abfd, buf);
19469       break;
19470     case 8:
19471       retval = bfd_get_64 (abfd, buf);
19472       break;
19473     default:
19474       internal_error (__FILE__, __LINE__,
19475                       _("read_offset_1: bad switch [in module %s]"),
19476                       bfd_get_filename (abfd));
19477     }
19478
19479   return retval;
19480 }
19481
19482 static const gdb_byte *
19483 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19484 {
19485   /* If the size of a host char is 8 bits, we can return a pointer
19486      to the buffer, otherwise we have to copy the data to a buffer
19487      allocated on the temporary obstack.  */
19488   gdb_assert (HOST_CHAR_BIT == 8);
19489   return buf;
19490 }
19491
19492 static const char *
19493 read_direct_string (bfd *abfd, const gdb_byte *buf,
19494                     unsigned int *bytes_read_ptr)
19495 {
19496   /* If the size of a host char is 8 bits, we can return a pointer
19497      to the string, otherwise we have to copy the string to a buffer
19498      allocated on the temporary obstack.  */
19499   gdb_assert (HOST_CHAR_BIT == 8);
19500   if (*buf == '\0')
19501     {
19502       *bytes_read_ptr = 1;
19503       return NULL;
19504     }
19505   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19506   return (const char *) buf;
19507 }
19508
19509 /* Return pointer to string at section SECT offset STR_OFFSET with error
19510    reporting strings FORM_NAME and SECT_NAME.  */
19511
19512 static const char *
19513 read_indirect_string_at_offset_from (struct objfile *objfile,
19514                                      bfd *abfd, LONGEST str_offset,
19515                                      struct dwarf2_section_info *sect,
19516                                      const char *form_name,
19517                                      const char *sect_name)
19518 {
19519   dwarf2_read_section (objfile, sect);
19520   if (sect->buffer == NULL)
19521     error (_("%s used without %s section [in module %s]"),
19522            form_name, sect_name, bfd_get_filename (abfd));
19523   if (str_offset >= sect->size)
19524     error (_("%s pointing outside of %s section [in module %s]"),
19525            form_name, sect_name, bfd_get_filename (abfd));
19526   gdb_assert (HOST_CHAR_BIT == 8);
19527   if (sect->buffer[str_offset] == '\0')
19528     return NULL;
19529   return (const char *) (sect->buffer + str_offset);
19530 }
19531
19532 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19533
19534 static const char *
19535 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19536                                 bfd *abfd, LONGEST str_offset)
19537 {
19538   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19539                                               abfd, str_offset,
19540                                               &dwarf2_per_objfile->str,
19541                                               "DW_FORM_strp", ".debug_str");
19542 }
19543
19544 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19545
19546 static const char *
19547 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19548                                      bfd *abfd, LONGEST str_offset)
19549 {
19550   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19551                                               abfd, str_offset,
19552                                               &dwarf2_per_objfile->line_str,
19553                                               "DW_FORM_line_strp",
19554                                               ".debug_line_str");
19555 }
19556
19557 /* Read a string at offset STR_OFFSET in the .debug_str section from
19558    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19559    the string consists of a single NUL byte, return NULL; otherwise
19560    return a pointer to the string.  */
19561
19562 static const char *
19563 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19564                                LONGEST str_offset)
19565 {
19566   dwarf2_read_section (objfile, &dwz->str);
19567
19568   if (dwz->str.buffer == NULL)
19569     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19570              "section [in module %s]"),
19571            bfd_get_filename (dwz->dwz_bfd));
19572   if (str_offset >= dwz->str.size)
19573     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19574              ".debug_str section [in module %s]"),
19575            bfd_get_filename (dwz->dwz_bfd));
19576   gdb_assert (HOST_CHAR_BIT == 8);
19577   if (dwz->str.buffer[str_offset] == '\0')
19578     return NULL;
19579   return (const char *) (dwz->str.buffer + str_offset);
19580 }
19581
19582 /* Return pointer to string at .debug_str offset as read from BUF.
19583    BUF is assumed to be in a compilation unit described by CU_HEADER.
19584    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19585
19586 static const char *
19587 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19588                       const gdb_byte *buf,
19589                       const struct comp_unit_head *cu_header,
19590                       unsigned int *bytes_read_ptr)
19591 {
19592   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19593
19594   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19595 }
19596
19597 /* Return pointer to string at .debug_line_str offset as read from BUF.
19598    BUF is assumed to be in a compilation unit described by CU_HEADER.
19599    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19600
19601 static const char *
19602 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19603                            bfd *abfd, const gdb_byte *buf,
19604                            const struct comp_unit_head *cu_header,
19605                            unsigned int *bytes_read_ptr)
19606 {
19607   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19608
19609   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19610                                               str_offset);
19611 }
19612
19613 ULONGEST
19614 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19615                           unsigned int *bytes_read_ptr)
19616 {
19617   ULONGEST result;
19618   unsigned int num_read;
19619   int shift;
19620   unsigned char byte;
19621
19622   result = 0;
19623   shift = 0;
19624   num_read = 0;
19625   while (1)
19626     {
19627       byte = bfd_get_8 (abfd, buf);
19628       buf++;
19629       num_read++;
19630       result |= ((ULONGEST) (byte & 127) << shift);
19631       if ((byte & 128) == 0)
19632         {
19633           break;
19634         }
19635       shift += 7;
19636     }
19637   *bytes_read_ptr = num_read;
19638   return result;
19639 }
19640
19641 static LONGEST
19642 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19643                     unsigned int *bytes_read_ptr)
19644 {
19645   ULONGEST result;
19646   int shift, num_read;
19647   unsigned char byte;
19648
19649   result = 0;
19650   shift = 0;
19651   num_read = 0;
19652   while (1)
19653     {
19654       byte = bfd_get_8 (abfd, buf);
19655       buf++;
19656       num_read++;
19657       result |= ((ULONGEST) (byte & 127) << shift);
19658       shift += 7;
19659       if ((byte & 128) == 0)
19660         {
19661           break;
19662         }
19663     }
19664   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19665     result |= -(((ULONGEST) 1) << shift);
19666   *bytes_read_ptr = num_read;
19667   return result;
19668 }
19669
19670 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19671    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19672    ADDR_SIZE is the size of addresses from the CU header.  */
19673
19674 static CORE_ADDR
19675 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19676                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19677 {
19678   struct objfile *objfile = dwarf2_per_objfile->objfile;
19679   bfd *abfd = objfile->obfd;
19680   const gdb_byte *info_ptr;
19681
19682   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19683   if (dwarf2_per_objfile->addr.buffer == NULL)
19684     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19685            objfile_name (objfile));
19686   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19687     error (_("DW_FORM_addr_index pointing outside of "
19688              ".debug_addr section [in module %s]"),
19689            objfile_name (objfile));
19690   info_ptr = (dwarf2_per_objfile->addr.buffer
19691               + addr_base + addr_index * addr_size);
19692   if (addr_size == 4)
19693     return bfd_get_32 (abfd, info_ptr);
19694   else
19695     return bfd_get_64 (abfd, info_ptr);
19696 }
19697
19698 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19699
19700 static CORE_ADDR
19701 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19702 {
19703   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19704                             cu->addr_base, cu->header.addr_size);
19705 }
19706
19707 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19708
19709 static CORE_ADDR
19710 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19711                              unsigned int *bytes_read)
19712 {
19713   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19714   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19715
19716   return read_addr_index (cu, addr_index);
19717 }
19718
19719 /* Data structure to pass results from dwarf2_read_addr_index_reader
19720    back to dwarf2_read_addr_index.  */
19721
19722 struct dwarf2_read_addr_index_data
19723 {
19724   ULONGEST addr_base;
19725   int addr_size;
19726 };
19727
19728 /* die_reader_func for dwarf2_read_addr_index.  */
19729
19730 static void
19731 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19732                                const gdb_byte *info_ptr,
19733                                struct die_info *comp_unit_die,
19734                                int has_children,
19735                                void *data)
19736 {
19737   struct dwarf2_cu *cu = reader->cu;
19738   struct dwarf2_read_addr_index_data *aidata =
19739     (struct dwarf2_read_addr_index_data *) data;
19740
19741   aidata->addr_base = cu->addr_base;
19742   aidata->addr_size = cu->header.addr_size;
19743 }
19744
19745 /* Given an index in .debug_addr, fetch the value.
19746    NOTE: This can be called during dwarf expression evaluation,
19747    long after the debug information has been read, and thus per_cu->cu
19748    may no longer exist.  */
19749
19750 CORE_ADDR
19751 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19752                         unsigned int addr_index)
19753 {
19754   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19755   struct dwarf2_cu *cu = per_cu->cu;
19756   ULONGEST addr_base;
19757   int addr_size;
19758
19759   /* We need addr_base and addr_size.
19760      If we don't have PER_CU->cu, we have to get it.
19761      Nasty, but the alternative is storing the needed info in PER_CU,
19762      which at this point doesn't seem justified: it's not clear how frequently
19763      it would get used and it would increase the size of every PER_CU.
19764      Entry points like dwarf2_per_cu_addr_size do a similar thing
19765      so we're not in uncharted territory here.
19766      Alas we need to be a bit more complicated as addr_base is contained
19767      in the DIE.
19768
19769      We don't need to read the entire CU(/TU).
19770      We just need the header and top level die.
19771
19772      IWBN to use the aging mechanism to let us lazily later discard the CU.
19773      For now we skip this optimization.  */
19774
19775   if (cu != NULL)
19776     {
19777       addr_base = cu->addr_base;
19778       addr_size = cu->header.addr_size;
19779     }
19780   else
19781     {
19782       struct dwarf2_read_addr_index_data aidata;
19783
19784       /* Note: We can't use init_cutu_and_read_dies_simple here,
19785          we need addr_base.  */
19786       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19787                                dwarf2_read_addr_index_reader, &aidata);
19788       addr_base = aidata.addr_base;
19789       addr_size = aidata.addr_size;
19790     }
19791
19792   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19793                             addr_size);
19794 }
19795
19796 /* Given a DW_FORM_GNU_str_index, fetch the string.
19797    This is only used by the Fission support.  */
19798
19799 static const char *
19800 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19801 {
19802   struct dwarf2_cu *cu = reader->cu;
19803   struct dwarf2_per_objfile *dwarf2_per_objfile
19804     = cu->per_cu->dwarf2_per_objfile;
19805   struct objfile *objfile = dwarf2_per_objfile->objfile;
19806   const char *objf_name = objfile_name (objfile);
19807   bfd *abfd = objfile->obfd;
19808   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19809   struct dwarf2_section_info *str_offsets_section =
19810     &reader->dwo_file->sections.str_offsets;
19811   const gdb_byte *info_ptr;
19812   ULONGEST str_offset;
19813   static const char form_name[] = "DW_FORM_GNU_str_index";
19814
19815   dwarf2_read_section (objfile, str_section);
19816   dwarf2_read_section (objfile, str_offsets_section);
19817   if (str_section->buffer == NULL)
19818     error (_("%s used without .debug_str.dwo section"
19819              " in CU at offset %s [in module %s]"),
19820            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19821   if (str_offsets_section->buffer == NULL)
19822     error (_("%s used without .debug_str_offsets.dwo section"
19823              " in CU at offset %s [in module %s]"),
19824            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19825   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19826     error (_("%s pointing outside of .debug_str_offsets.dwo"
19827              " section in CU at offset %s [in module %s]"),
19828            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19829   info_ptr = (str_offsets_section->buffer
19830               + str_index * cu->header.offset_size);
19831   if (cu->header.offset_size == 4)
19832     str_offset = bfd_get_32 (abfd, info_ptr);
19833   else
19834     str_offset = bfd_get_64 (abfd, info_ptr);
19835   if (str_offset >= str_section->size)
19836     error (_("Offset from %s pointing outside of"
19837              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19838            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19839   return (const char *) (str_section->buffer + str_offset);
19840 }
19841
19842 /* Return the length of an LEB128 number in BUF.  */
19843
19844 static int
19845 leb128_size (const gdb_byte *buf)
19846 {
19847   const gdb_byte *begin = buf;
19848   gdb_byte byte;
19849
19850   while (1)
19851     {
19852       byte = *buf++;
19853       if ((byte & 128) == 0)
19854         return buf - begin;
19855     }
19856 }
19857
19858 static void
19859 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19860 {
19861   switch (lang)
19862     {
19863     case DW_LANG_C89:
19864     case DW_LANG_C99:
19865     case DW_LANG_C11:
19866     case DW_LANG_C:
19867     case DW_LANG_UPC:
19868       cu->language = language_c;
19869       break;
19870     case DW_LANG_Java:
19871     case DW_LANG_C_plus_plus:
19872     case DW_LANG_C_plus_plus_11:
19873     case DW_LANG_C_plus_plus_14:
19874       cu->language = language_cplus;
19875       break;
19876     case DW_LANG_D:
19877       cu->language = language_d;
19878       break;
19879     case DW_LANG_Fortran77:
19880     case DW_LANG_Fortran90:
19881     case DW_LANG_Fortran95:
19882     case DW_LANG_Fortran03:
19883     case DW_LANG_Fortran08:
19884       cu->language = language_fortran;
19885       break;
19886     case DW_LANG_Go:
19887       cu->language = language_go;
19888       break;
19889     case DW_LANG_Mips_Assembler:
19890       cu->language = language_asm;
19891       break;
19892     case DW_LANG_Ada83:
19893     case DW_LANG_Ada95:
19894       cu->language = language_ada;
19895       break;
19896     case DW_LANG_Modula2:
19897       cu->language = language_m2;
19898       break;
19899     case DW_LANG_Pascal83:
19900       cu->language = language_pascal;
19901       break;
19902     case DW_LANG_ObjC:
19903       cu->language = language_objc;
19904       break;
19905     case DW_LANG_Rust:
19906     case DW_LANG_Rust_old:
19907       cu->language = language_rust;
19908       break;
19909     case DW_LANG_Cobol74:
19910     case DW_LANG_Cobol85:
19911     default:
19912       cu->language = language_minimal;
19913       break;
19914     }
19915   cu->language_defn = language_def (cu->language);
19916 }
19917
19918 /* Return the named attribute or NULL if not there.  */
19919
19920 static struct attribute *
19921 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19922 {
19923   for (;;)
19924     {
19925       unsigned int i;
19926       struct attribute *spec = NULL;
19927
19928       for (i = 0; i < die->num_attrs; ++i)
19929         {
19930           if (die->attrs[i].name == name)
19931             return &die->attrs[i];
19932           if (die->attrs[i].name == DW_AT_specification
19933               || die->attrs[i].name == DW_AT_abstract_origin)
19934             spec = &die->attrs[i];
19935         }
19936
19937       if (!spec)
19938         break;
19939
19940       die = follow_die_ref (die, spec, &cu);
19941     }
19942
19943   return NULL;
19944 }
19945
19946 /* Return the named attribute or NULL if not there,
19947    but do not follow DW_AT_specification, etc.
19948    This is for use in contexts where we're reading .debug_types dies.
19949    Following DW_AT_specification, DW_AT_abstract_origin will take us
19950    back up the chain, and we want to go down.  */
19951
19952 static struct attribute *
19953 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19954 {
19955   unsigned int i;
19956
19957   for (i = 0; i < die->num_attrs; ++i)
19958     if (die->attrs[i].name == name)
19959       return &die->attrs[i];
19960
19961   return NULL;
19962 }
19963
19964 /* Return the string associated with a string-typed attribute, or NULL if it
19965    is either not found or is of an incorrect type.  */
19966
19967 static const char *
19968 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19969 {
19970   struct attribute *attr;
19971   const char *str = NULL;
19972
19973   attr = dwarf2_attr (die, name, cu);
19974
19975   if (attr != NULL)
19976     {
19977       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19978           || attr->form == DW_FORM_string
19979           || attr->form == DW_FORM_GNU_str_index
19980           || attr->form == DW_FORM_GNU_strp_alt)
19981         str = DW_STRING (attr);
19982       else
19983         complaint (_("string type expected for attribute %s for "
19984                      "DIE at %s in module %s"),
19985                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19986                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19987     }
19988
19989   return str;
19990 }
19991
19992 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19993    and holds a non-zero value.  This function should only be used for
19994    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19995
19996 static int
19997 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19998 {
19999   struct attribute *attr = dwarf2_attr (die, name, cu);
20000
20001   return (attr && DW_UNSND (attr));
20002 }
20003
20004 static int
20005 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20006 {
20007   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20008      which value is non-zero.  However, we have to be careful with
20009      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20010      (via dwarf2_flag_true_p) follows this attribute.  So we may
20011      end up accidently finding a declaration attribute that belongs
20012      to a different DIE referenced by the specification attribute,
20013      even though the given DIE does not have a declaration attribute.  */
20014   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20015           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20016 }
20017
20018 /* Return the die giving the specification for DIE, if there is
20019    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20020    containing the return value on output.  If there is no
20021    specification, but there is an abstract origin, that is
20022    returned.  */
20023
20024 static struct die_info *
20025 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20026 {
20027   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20028                                              *spec_cu);
20029
20030   if (spec_attr == NULL)
20031     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20032
20033   if (spec_attr == NULL)
20034     return NULL;
20035   else
20036     return follow_die_ref (die, spec_attr, spec_cu);
20037 }
20038
20039 /* Stub for free_line_header to match void * callback types.  */
20040
20041 static void
20042 free_line_header_voidp (void *arg)
20043 {
20044   struct line_header *lh = (struct line_header *) arg;
20045
20046   delete lh;
20047 }
20048
20049 void
20050 line_header::add_include_dir (const char *include_dir)
20051 {
20052   if (dwarf_line_debug >= 2)
20053     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20054                         include_dirs.size () + 1, include_dir);
20055
20056   include_dirs.push_back (include_dir);
20057 }
20058
20059 void
20060 line_header::add_file_name (const char *name,
20061                             dir_index d_index,
20062                             unsigned int mod_time,
20063                             unsigned int length)
20064 {
20065   if (dwarf_line_debug >= 2)
20066     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20067                         (unsigned) file_names.size () + 1, name);
20068
20069   file_names.emplace_back (name, d_index, mod_time, length);
20070 }
20071
20072 /* A convenience function to find the proper .debug_line section for a CU.  */
20073
20074 static struct dwarf2_section_info *
20075 get_debug_line_section (struct dwarf2_cu *cu)
20076 {
20077   struct dwarf2_section_info *section;
20078   struct dwarf2_per_objfile *dwarf2_per_objfile
20079     = cu->per_cu->dwarf2_per_objfile;
20080
20081   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20082      DWO file.  */
20083   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20084     section = &cu->dwo_unit->dwo_file->sections.line;
20085   else if (cu->per_cu->is_dwz)
20086     {
20087       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20088
20089       section = &dwz->line;
20090     }
20091   else
20092     section = &dwarf2_per_objfile->line;
20093
20094   return section;
20095 }
20096
20097 /* Read directory or file name entry format, starting with byte of
20098    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20099    entries count and the entries themselves in the described entry
20100    format.  */
20101
20102 static void
20103 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20104                         bfd *abfd, const gdb_byte **bufp,
20105                         struct line_header *lh,
20106                         const struct comp_unit_head *cu_header,
20107                         void (*callback) (struct line_header *lh,
20108                                           const char *name,
20109                                           dir_index d_index,
20110                                           unsigned int mod_time,
20111                                           unsigned int length))
20112 {
20113   gdb_byte format_count, formati;
20114   ULONGEST data_count, datai;
20115   const gdb_byte *buf = *bufp;
20116   const gdb_byte *format_header_data;
20117   unsigned int bytes_read;
20118
20119   format_count = read_1_byte (abfd, buf);
20120   buf += 1;
20121   format_header_data = buf;
20122   for (formati = 0; formati < format_count; formati++)
20123     {
20124       read_unsigned_leb128 (abfd, buf, &bytes_read);
20125       buf += bytes_read;
20126       read_unsigned_leb128 (abfd, buf, &bytes_read);
20127       buf += bytes_read;
20128     }
20129
20130   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20131   buf += bytes_read;
20132   for (datai = 0; datai < data_count; datai++)
20133     {
20134       const gdb_byte *format = format_header_data;
20135       struct file_entry fe;
20136
20137       for (formati = 0; formati < format_count; formati++)
20138         {
20139           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20140           format += bytes_read;
20141
20142           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20143           format += bytes_read;
20144
20145           gdb::optional<const char *> string;
20146           gdb::optional<unsigned int> uint;
20147
20148           switch (form)
20149             {
20150             case DW_FORM_string:
20151               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20152               buf += bytes_read;
20153               break;
20154
20155             case DW_FORM_line_strp:
20156               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20157                                                          abfd, buf,
20158                                                          cu_header,
20159                                                          &bytes_read));
20160               buf += bytes_read;
20161               break;
20162
20163             case DW_FORM_data1:
20164               uint.emplace (read_1_byte (abfd, buf));
20165               buf += 1;
20166               break;
20167
20168             case DW_FORM_data2:
20169               uint.emplace (read_2_bytes (abfd, buf));
20170               buf += 2;
20171               break;
20172
20173             case DW_FORM_data4:
20174               uint.emplace (read_4_bytes (abfd, buf));
20175               buf += 4;
20176               break;
20177
20178             case DW_FORM_data8:
20179               uint.emplace (read_8_bytes (abfd, buf));
20180               buf += 8;
20181               break;
20182
20183             case DW_FORM_udata:
20184               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20185               buf += bytes_read;
20186               break;
20187
20188             case DW_FORM_block:
20189               /* It is valid only for DW_LNCT_timestamp which is ignored by
20190                  current GDB.  */
20191               break;
20192             }
20193
20194           switch (content_type)
20195             {
20196             case DW_LNCT_path:
20197               if (string.has_value ())
20198                 fe.name = *string;
20199               break;
20200             case DW_LNCT_directory_index:
20201               if (uint.has_value ())
20202                 fe.d_index = (dir_index) *uint;
20203               break;
20204             case DW_LNCT_timestamp:
20205               if (uint.has_value ())
20206                 fe.mod_time = *uint;
20207               break;
20208             case DW_LNCT_size:
20209               if (uint.has_value ())
20210                 fe.length = *uint;
20211               break;
20212             case DW_LNCT_MD5:
20213               break;
20214             default:
20215               complaint (_("Unknown format content type %s"),
20216                          pulongest (content_type));
20217             }
20218         }
20219
20220       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20221     }
20222
20223   *bufp = buf;
20224 }
20225
20226 /* Read the statement program header starting at OFFSET in
20227    .debug_line, or .debug_line.dwo.  Return a pointer
20228    to a struct line_header, allocated using xmalloc.
20229    Returns NULL if there is a problem reading the header, e.g., if it
20230    has a version we don't understand.
20231
20232    NOTE: the strings in the include directory and file name tables of
20233    the returned object point into the dwarf line section buffer,
20234    and must not be freed.  */
20235
20236 static line_header_up
20237 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20238 {
20239   const gdb_byte *line_ptr;
20240   unsigned int bytes_read, offset_size;
20241   int i;
20242   const char *cur_dir, *cur_file;
20243   struct dwarf2_section_info *section;
20244   bfd *abfd;
20245   struct dwarf2_per_objfile *dwarf2_per_objfile
20246     = cu->per_cu->dwarf2_per_objfile;
20247
20248   section = get_debug_line_section (cu);
20249   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20250   if (section->buffer == NULL)
20251     {
20252       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20253         complaint (_("missing .debug_line.dwo section"));
20254       else
20255         complaint (_("missing .debug_line section"));
20256       return 0;
20257     }
20258
20259   /* We can't do this until we know the section is non-empty.
20260      Only then do we know we have such a section.  */
20261   abfd = get_section_bfd_owner (section);
20262
20263   /* Make sure that at least there's room for the total_length field.
20264      That could be 12 bytes long, but we're just going to fudge that.  */
20265   if (to_underlying (sect_off) + 4 >= section->size)
20266     {
20267       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20268       return 0;
20269     }
20270
20271   line_header_up lh (new line_header ());
20272
20273   lh->sect_off = sect_off;
20274   lh->offset_in_dwz = cu->per_cu->is_dwz;
20275
20276   line_ptr = section->buffer + to_underlying (sect_off);
20277
20278   /* Read in the header.  */
20279   lh->total_length =
20280     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20281                                             &bytes_read, &offset_size);
20282   line_ptr += bytes_read;
20283   if (line_ptr + lh->total_length > (section->buffer + section->size))
20284     {
20285       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20286       return 0;
20287     }
20288   lh->statement_program_end = line_ptr + lh->total_length;
20289   lh->version = read_2_bytes (abfd, line_ptr);
20290   line_ptr += 2;
20291   if (lh->version > 5)
20292     {
20293       /* This is a version we don't understand.  The format could have
20294          changed in ways we don't handle properly so just punt.  */
20295       complaint (_("unsupported version in .debug_line section"));
20296       return NULL;
20297     }
20298   if (lh->version >= 5)
20299     {
20300       gdb_byte segment_selector_size;
20301
20302       /* Skip address size.  */
20303       read_1_byte (abfd, line_ptr);
20304       line_ptr += 1;
20305
20306       segment_selector_size = read_1_byte (abfd, line_ptr);
20307       line_ptr += 1;
20308       if (segment_selector_size != 0)
20309         {
20310           complaint (_("unsupported segment selector size %u "
20311                        "in .debug_line section"),
20312                      segment_selector_size);
20313           return NULL;
20314         }
20315     }
20316   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20317   line_ptr += offset_size;
20318   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20319   line_ptr += 1;
20320   if (lh->version >= 4)
20321     {
20322       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20323       line_ptr += 1;
20324     }
20325   else
20326     lh->maximum_ops_per_instruction = 1;
20327
20328   if (lh->maximum_ops_per_instruction == 0)
20329     {
20330       lh->maximum_ops_per_instruction = 1;
20331       complaint (_("invalid maximum_ops_per_instruction "
20332                    "in `.debug_line' section"));
20333     }
20334
20335   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20336   line_ptr += 1;
20337   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20338   line_ptr += 1;
20339   lh->line_range = read_1_byte (abfd, line_ptr);
20340   line_ptr += 1;
20341   lh->opcode_base = read_1_byte (abfd, line_ptr);
20342   line_ptr += 1;
20343   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20344
20345   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20346   for (i = 1; i < lh->opcode_base; ++i)
20347     {
20348       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20349       line_ptr += 1;
20350     }
20351
20352   if (lh->version >= 5)
20353     {
20354       /* Read directory table.  */
20355       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20356                               &cu->header,
20357                               [] (struct line_header *header, const char *name,
20358                                   dir_index d_index, unsigned int mod_time,
20359                                   unsigned int length)
20360         {
20361           header->add_include_dir (name);
20362         });
20363
20364       /* Read file name table.  */
20365       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20366                               &cu->header,
20367                               [] (struct line_header *header, const char *name,
20368                                   dir_index d_index, unsigned int mod_time,
20369                                   unsigned int length)
20370         {
20371           header->add_file_name (name, d_index, mod_time, length);
20372         });
20373     }
20374   else
20375     {
20376       /* Read directory table.  */
20377       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20378         {
20379           line_ptr += bytes_read;
20380           lh->add_include_dir (cur_dir);
20381         }
20382       line_ptr += bytes_read;
20383
20384       /* Read file name table.  */
20385       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20386         {
20387           unsigned int mod_time, length;
20388           dir_index d_index;
20389
20390           line_ptr += bytes_read;
20391           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20392           line_ptr += bytes_read;
20393           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20394           line_ptr += bytes_read;
20395           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20396           line_ptr += bytes_read;
20397
20398           lh->add_file_name (cur_file, d_index, mod_time, length);
20399         }
20400       line_ptr += bytes_read;
20401     }
20402   lh->statement_program_start = line_ptr;
20403
20404   if (line_ptr > (section->buffer + section->size))
20405     complaint (_("line number info header doesn't "
20406                  "fit in `.debug_line' section"));
20407
20408   return lh;
20409 }
20410
20411 /* Subroutine of dwarf_decode_lines to simplify it.
20412    Return the file name of the psymtab for included file FILE_INDEX
20413    in line header LH of PST.
20414    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20415    If space for the result is malloc'd, *NAME_HOLDER will be set.
20416    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20417
20418 static const char *
20419 psymtab_include_file_name (const struct line_header *lh, int file_index,
20420                            const struct partial_symtab *pst,
20421                            const char *comp_dir,
20422                            gdb::unique_xmalloc_ptr<char> *name_holder)
20423 {
20424   const file_entry &fe = lh->file_names[file_index];
20425   const char *include_name = fe.name;
20426   const char *include_name_to_compare = include_name;
20427   const char *pst_filename;
20428   int file_is_pst;
20429
20430   const char *dir_name = fe.include_dir (lh);
20431
20432   gdb::unique_xmalloc_ptr<char> hold_compare;
20433   if (!IS_ABSOLUTE_PATH (include_name)
20434       && (dir_name != NULL || comp_dir != NULL))
20435     {
20436       /* Avoid creating a duplicate psymtab for PST.
20437          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20438          Before we do the comparison, however, we need to account
20439          for DIR_NAME and COMP_DIR.
20440          First prepend dir_name (if non-NULL).  If we still don't
20441          have an absolute path prepend comp_dir (if non-NULL).
20442          However, the directory we record in the include-file's
20443          psymtab does not contain COMP_DIR (to match the
20444          corresponding symtab(s)).
20445
20446          Example:
20447
20448          bash$ cd /tmp
20449          bash$ gcc -g ./hello.c
20450          include_name = "hello.c"
20451          dir_name = "."
20452          DW_AT_comp_dir = comp_dir = "/tmp"
20453          DW_AT_name = "./hello.c"
20454
20455       */
20456
20457       if (dir_name != NULL)
20458         {
20459           name_holder->reset (concat (dir_name, SLASH_STRING,
20460                                       include_name, (char *) NULL));
20461           include_name = name_holder->get ();
20462           include_name_to_compare = include_name;
20463         }
20464       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20465         {
20466           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20467                                       include_name, (char *) NULL));
20468           include_name_to_compare = hold_compare.get ();
20469         }
20470     }
20471
20472   pst_filename = pst->filename;
20473   gdb::unique_xmalloc_ptr<char> copied_name;
20474   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20475     {
20476       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20477                                  pst_filename, (char *) NULL));
20478       pst_filename = copied_name.get ();
20479     }
20480
20481   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20482
20483   if (file_is_pst)
20484     return NULL;
20485   return include_name;
20486 }
20487
20488 /* State machine to track the state of the line number program.  */
20489
20490 class lnp_state_machine
20491 {
20492 public:
20493   /* Initialize a machine state for the start of a line number
20494      program.  */
20495   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20496                      bool record_lines_p);
20497
20498   file_entry *current_file ()
20499   {
20500     /* lh->file_names is 0-based, but the file name numbers in the
20501        statement program are 1-based.  */
20502     return m_line_header->file_name_at (m_file);
20503   }
20504
20505   /* Record the line in the state machine.  END_SEQUENCE is true if
20506      we're processing the end of a sequence.  */
20507   void record_line (bool end_sequence);
20508
20509   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20510      nop-out rest of the lines in this sequence.  */
20511   void check_line_address (struct dwarf2_cu *cu,
20512                            const gdb_byte *line_ptr,
20513                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20514
20515   void handle_set_discriminator (unsigned int discriminator)
20516   {
20517     m_discriminator = discriminator;
20518     m_line_has_non_zero_discriminator |= discriminator != 0;
20519   }
20520
20521   /* Handle DW_LNE_set_address.  */
20522   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20523   {
20524     m_op_index = 0;
20525     address += baseaddr;
20526     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20527   }
20528
20529   /* Handle DW_LNS_advance_pc.  */
20530   void handle_advance_pc (CORE_ADDR adjust);
20531
20532   /* Handle a special opcode.  */
20533   void handle_special_opcode (unsigned char op_code);
20534
20535   /* Handle DW_LNS_advance_line.  */
20536   void handle_advance_line (int line_delta)
20537   {
20538     advance_line (line_delta);
20539   }
20540
20541   /* Handle DW_LNS_set_file.  */
20542   void handle_set_file (file_name_index file);
20543
20544   /* Handle DW_LNS_negate_stmt.  */
20545   void handle_negate_stmt ()
20546   {
20547     m_is_stmt = !m_is_stmt;
20548   }
20549
20550   /* Handle DW_LNS_const_add_pc.  */
20551   void handle_const_add_pc ();
20552
20553   /* Handle DW_LNS_fixed_advance_pc.  */
20554   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20555   {
20556     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20557     m_op_index = 0;
20558   }
20559
20560   /* Handle DW_LNS_copy.  */
20561   void handle_copy ()
20562   {
20563     record_line (false);
20564     m_discriminator = 0;
20565   }
20566
20567   /* Handle DW_LNE_end_sequence.  */
20568   void handle_end_sequence ()
20569   {
20570     m_currently_recording_lines = true;
20571   }
20572
20573 private:
20574   /* Advance the line by LINE_DELTA.  */
20575   void advance_line (int line_delta)
20576   {
20577     m_line += line_delta;
20578
20579     if (line_delta != 0)
20580       m_line_has_non_zero_discriminator = m_discriminator != 0;
20581   }
20582
20583   struct dwarf2_cu *m_cu;
20584
20585   gdbarch *m_gdbarch;
20586
20587   /* True if we're recording lines.
20588      Otherwise we're building partial symtabs and are just interested in
20589      finding include files mentioned by the line number program.  */
20590   bool m_record_lines_p;
20591
20592   /* The line number header.  */
20593   line_header *m_line_header;
20594
20595   /* These are part of the standard DWARF line number state machine,
20596      and initialized according to the DWARF spec.  */
20597
20598   unsigned char m_op_index = 0;
20599   /* The line table index (1-based) of the current file.  */
20600   file_name_index m_file = (file_name_index) 1;
20601   unsigned int m_line = 1;
20602
20603   /* These are initialized in the constructor.  */
20604
20605   CORE_ADDR m_address;
20606   bool m_is_stmt;
20607   unsigned int m_discriminator;
20608
20609   /* Additional bits of state we need to track.  */
20610
20611   /* The last file that we called dwarf2_start_subfile for.
20612      This is only used for TLLs.  */
20613   unsigned int m_last_file = 0;
20614   /* The last file a line number was recorded for.  */
20615   struct subfile *m_last_subfile = NULL;
20616
20617   /* When true, record the lines we decode.  */
20618   bool m_currently_recording_lines = false;
20619
20620   /* The last line number that was recorded, used to coalesce
20621      consecutive entries for the same line.  This can happen, for
20622      example, when discriminators are present.  PR 17276.  */
20623   unsigned int m_last_line = 0;
20624   bool m_line_has_non_zero_discriminator = false;
20625 };
20626
20627 void
20628 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20629 {
20630   CORE_ADDR addr_adj = (((m_op_index + adjust)
20631                          / m_line_header->maximum_ops_per_instruction)
20632                         * m_line_header->minimum_instruction_length);
20633   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20634   m_op_index = ((m_op_index + adjust)
20635                 % m_line_header->maximum_ops_per_instruction);
20636 }
20637
20638 void
20639 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20640 {
20641   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20642   CORE_ADDR addr_adj = (((m_op_index
20643                           + (adj_opcode / m_line_header->line_range))
20644                          / m_line_header->maximum_ops_per_instruction)
20645                         * m_line_header->minimum_instruction_length);
20646   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20647   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20648                 % m_line_header->maximum_ops_per_instruction);
20649
20650   int line_delta = (m_line_header->line_base
20651                     + (adj_opcode % m_line_header->line_range));
20652   advance_line (line_delta);
20653   record_line (false);
20654   m_discriminator = 0;
20655 }
20656
20657 void
20658 lnp_state_machine::handle_set_file (file_name_index file)
20659 {
20660   m_file = file;
20661
20662   const file_entry *fe = current_file ();
20663   if (fe == NULL)
20664     dwarf2_debug_line_missing_file_complaint ();
20665   else if (m_record_lines_p)
20666     {
20667       const char *dir = fe->include_dir (m_line_header);
20668
20669       m_last_subfile = m_cu->builder->get_current_subfile ();
20670       m_line_has_non_zero_discriminator = m_discriminator != 0;
20671       dwarf2_start_subfile (m_cu, fe->name, dir);
20672     }
20673 }
20674
20675 void
20676 lnp_state_machine::handle_const_add_pc ()
20677 {
20678   CORE_ADDR adjust
20679     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20680
20681   CORE_ADDR addr_adj
20682     = (((m_op_index + adjust)
20683         / m_line_header->maximum_ops_per_instruction)
20684        * m_line_header->minimum_instruction_length);
20685
20686   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20687   m_op_index = ((m_op_index + adjust)
20688                 % m_line_header->maximum_ops_per_instruction);
20689 }
20690
20691 /* Return non-zero if we should add LINE to the line number table.
20692    LINE is the line to add, LAST_LINE is the last line that was added,
20693    LAST_SUBFILE is the subfile for LAST_LINE.
20694    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20695    had a non-zero discriminator.
20696
20697    We have to be careful in the presence of discriminators.
20698    E.g., for this line:
20699
20700      for (i = 0; i < 100000; i++);
20701
20702    clang can emit four line number entries for that one line,
20703    each with a different discriminator.
20704    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20705
20706    However, we want gdb to coalesce all four entries into one.
20707    Otherwise the user could stepi into the middle of the line and
20708    gdb would get confused about whether the pc really was in the
20709    middle of the line.
20710
20711    Things are further complicated by the fact that two consecutive
20712    line number entries for the same line is a heuristic used by gcc
20713    to denote the end of the prologue.  So we can't just discard duplicate
20714    entries, we have to be selective about it.  The heuristic we use is
20715    that we only collapse consecutive entries for the same line if at least
20716    one of those entries has a non-zero discriminator.  PR 17276.
20717
20718    Note: Addresses in the line number state machine can never go backwards
20719    within one sequence, thus this coalescing is ok.  */
20720
20721 static int
20722 dwarf_record_line_p (struct dwarf2_cu *cu,
20723                      unsigned int line, unsigned int last_line,
20724                      int line_has_non_zero_discriminator,
20725                      struct subfile *last_subfile)
20726 {
20727   if (cu->builder->get_current_subfile () != last_subfile)
20728     return 1;
20729   if (line != last_line)
20730     return 1;
20731   /* Same line for the same file that we've seen already.
20732      As a last check, for pr 17276, only record the line if the line
20733      has never had a non-zero discriminator.  */
20734   if (!line_has_non_zero_discriminator)
20735     return 1;
20736   return 0;
20737 }
20738
20739 /* Use the CU's builder to record line number LINE beginning at
20740    address ADDRESS in the line table of subfile SUBFILE.  */
20741
20742 static void
20743 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20744                      unsigned int line, CORE_ADDR address,
20745                      struct dwarf2_cu *cu)
20746 {
20747   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20748
20749   if (dwarf_line_debug)
20750     {
20751       fprintf_unfiltered (gdb_stdlog,
20752                           "Recording line %u, file %s, address %s\n",
20753                           line, lbasename (subfile->name),
20754                           paddress (gdbarch, address));
20755     }
20756
20757   if (cu != nullptr)
20758     cu->builder->record_line (subfile, line, addr);
20759 }
20760
20761 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20762    Mark the end of a set of line number records.
20763    The arguments are the same as for dwarf_record_line_1.
20764    If SUBFILE is NULL the request is ignored.  */
20765
20766 static void
20767 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20768                    CORE_ADDR address, struct dwarf2_cu *cu)
20769 {
20770   if (subfile == NULL)
20771     return;
20772
20773   if (dwarf_line_debug)
20774     {
20775       fprintf_unfiltered (gdb_stdlog,
20776                           "Finishing current line, file %s, address %s\n",
20777                           lbasename (subfile->name),
20778                           paddress (gdbarch, address));
20779     }
20780
20781   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20782 }
20783
20784 void
20785 lnp_state_machine::record_line (bool end_sequence)
20786 {
20787   if (dwarf_line_debug)
20788     {
20789       fprintf_unfiltered (gdb_stdlog,
20790                           "Processing actual line %u: file %u,"
20791                           " address %s, is_stmt %u, discrim %u\n",
20792                           m_line, to_underlying (m_file),
20793                           paddress (m_gdbarch, m_address),
20794                           m_is_stmt, m_discriminator);
20795     }
20796
20797   file_entry *fe = current_file ();
20798
20799   if (fe == NULL)
20800     dwarf2_debug_line_missing_file_complaint ();
20801   /* For now we ignore lines not starting on an instruction boundary.
20802      But not when processing end_sequence for compatibility with the
20803      previous version of the code.  */
20804   else if (m_op_index == 0 || end_sequence)
20805     {
20806       fe->included_p = 1;
20807       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20808         {
20809           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20810               || end_sequence)
20811             {
20812               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20813                                  m_currently_recording_lines ? m_cu : nullptr);
20814             }
20815
20816           if (!end_sequence)
20817             {
20818               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20819                                        m_line_has_non_zero_discriminator,
20820                                        m_last_subfile))
20821                 {
20822                   dwarf_record_line_1 (m_gdbarch,
20823                                        m_cu->builder->get_current_subfile (),
20824                                        m_line, m_address,
20825                                        m_currently_recording_lines ? m_cu : nullptr);
20826                 }
20827               m_last_subfile = m_cu->builder->get_current_subfile ();
20828               m_last_line = m_line;
20829             }
20830         }
20831     }
20832 }
20833
20834 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20835                                       line_header *lh, bool record_lines_p)
20836 {
20837   m_cu = cu;
20838   m_gdbarch = arch;
20839   m_record_lines_p = record_lines_p;
20840   m_line_header = lh;
20841
20842   m_currently_recording_lines = true;
20843
20844   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20845      was a line entry for it so that the backend has a chance to adjust it
20846      and also record it in case it needs it.  This is currently used by MIPS
20847      code, cf. `mips_adjust_dwarf2_line'.  */
20848   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20849   m_is_stmt = lh->default_is_stmt;
20850   m_discriminator = 0;
20851 }
20852
20853 void
20854 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20855                                        const gdb_byte *line_ptr,
20856                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20857 {
20858   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20859      the pc range of the CU.  However, we restrict the test to only ADDRESS
20860      values of zero to preserve GDB's previous behaviour which is to handle
20861      the specific case of a function being GC'd by the linker.  */
20862
20863   if (address == 0 && address < unrelocated_lowpc)
20864     {
20865       /* This line table is for a function which has been
20866          GCd by the linker.  Ignore it.  PR gdb/12528 */
20867
20868       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20869       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20870
20871       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20872                  line_offset, objfile_name (objfile));
20873       m_currently_recording_lines = false;
20874       /* Note: m_currently_recording_lines is left as false until we see
20875          DW_LNE_end_sequence.  */
20876     }
20877 }
20878
20879 /* Subroutine of dwarf_decode_lines to simplify it.
20880    Process the line number information in LH.
20881    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20882    program in order to set included_p for every referenced header.  */
20883
20884 static void
20885 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20886                       const int decode_for_pst_p, CORE_ADDR lowpc)
20887 {
20888   const gdb_byte *line_ptr, *extended_end;
20889   const gdb_byte *line_end;
20890   unsigned int bytes_read, extended_len;
20891   unsigned char op_code, extended_op;
20892   CORE_ADDR baseaddr;
20893   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20894   bfd *abfd = objfile->obfd;
20895   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20896   /* True if we're recording line info (as opposed to building partial
20897      symtabs and just interested in finding include files mentioned by
20898      the line number program).  */
20899   bool record_lines_p = !decode_for_pst_p;
20900
20901   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20902
20903   line_ptr = lh->statement_program_start;
20904   line_end = lh->statement_program_end;
20905
20906   /* Read the statement sequences until there's nothing left.  */
20907   while (line_ptr < line_end)
20908     {
20909       /* The DWARF line number program state machine.  Reset the state
20910          machine at the start of each sequence.  */
20911       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20912       bool end_sequence = false;
20913
20914       if (record_lines_p)
20915         {
20916           /* Start a subfile for the current file of the state
20917              machine.  */
20918           const file_entry *fe = state_machine.current_file ();
20919
20920           if (fe != NULL)
20921             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20922         }
20923
20924       /* Decode the table.  */
20925       while (line_ptr < line_end && !end_sequence)
20926         {
20927           op_code = read_1_byte (abfd, line_ptr);
20928           line_ptr += 1;
20929
20930           if (op_code >= lh->opcode_base)
20931             {
20932               /* Special opcode.  */
20933               state_machine.handle_special_opcode (op_code);
20934             }
20935           else switch (op_code)
20936             {
20937             case DW_LNS_extended_op:
20938               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20939                                                    &bytes_read);
20940               line_ptr += bytes_read;
20941               extended_end = line_ptr + extended_len;
20942               extended_op = read_1_byte (abfd, line_ptr);
20943               line_ptr += 1;
20944               switch (extended_op)
20945                 {
20946                 case DW_LNE_end_sequence:
20947                   state_machine.handle_end_sequence ();
20948                   end_sequence = true;
20949                   break;
20950                 case DW_LNE_set_address:
20951                   {
20952                     CORE_ADDR address
20953                       = read_address (abfd, line_ptr, cu, &bytes_read);
20954                     line_ptr += bytes_read;
20955
20956                     state_machine.check_line_address (cu, line_ptr,
20957                                                       lowpc - baseaddr, address);
20958                     state_machine.handle_set_address (baseaddr, address);
20959                   }
20960                   break;
20961                 case DW_LNE_define_file:
20962                   {
20963                     const char *cur_file;
20964                     unsigned int mod_time, length;
20965                     dir_index dindex;
20966
20967                     cur_file = read_direct_string (abfd, line_ptr,
20968                                                    &bytes_read);
20969                     line_ptr += bytes_read;
20970                     dindex = (dir_index)
20971                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20972                     line_ptr += bytes_read;
20973                     mod_time =
20974                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20975                     line_ptr += bytes_read;
20976                     length =
20977                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20978                     line_ptr += bytes_read;
20979                     lh->add_file_name (cur_file, dindex, mod_time, length);
20980                   }
20981                   break;
20982                 case DW_LNE_set_discriminator:
20983                   {
20984                     /* The discriminator is not interesting to the
20985                        debugger; just ignore it.  We still need to
20986                        check its value though:
20987                        if there are consecutive entries for the same
20988                        (non-prologue) line we want to coalesce them.
20989                        PR 17276.  */
20990                     unsigned int discr
20991                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20992                     line_ptr += bytes_read;
20993
20994                     state_machine.handle_set_discriminator (discr);
20995                   }
20996                   break;
20997                 default:
20998                   complaint (_("mangled .debug_line section"));
20999                   return;
21000                 }
21001               /* Make sure that we parsed the extended op correctly.  If e.g.
21002                  we expected a different address size than the producer used,
21003                  we may have read the wrong number of bytes.  */
21004               if (line_ptr != extended_end)
21005                 {
21006                   complaint (_("mangled .debug_line section"));
21007                   return;
21008                 }
21009               break;
21010             case DW_LNS_copy:
21011               state_machine.handle_copy ();
21012               break;
21013             case DW_LNS_advance_pc:
21014               {
21015                 CORE_ADDR adjust
21016                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21017                 line_ptr += bytes_read;
21018
21019                 state_machine.handle_advance_pc (adjust);
21020               }
21021               break;
21022             case DW_LNS_advance_line:
21023               {
21024                 int line_delta
21025                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21026                 line_ptr += bytes_read;
21027
21028                 state_machine.handle_advance_line (line_delta);
21029               }
21030               break;
21031             case DW_LNS_set_file:
21032               {
21033                 file_name_index file
21034                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21035                                                             &bytes_read);
21036                 line_ptr += bytes_read;
21037
21038                 state_machine.handle_set_file (file);
21039               }
21040               break;
21041             case DW_LNS_set_column:
21042               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21043               line_ptr += bytes_read;
21044               break;
21045             case DW_LNS_negate_stmt:
21046               state_machine.handle_negate_stmt ();
21047               break;
21048             case DW_LNS_set_basic_block:
21049               break;
21050             /* Add to the address register of the state machine the
21051                address increment value corresponding to special opcode
21052                255.  I.e., this value is scaled by the minimum
21053                instruction length since special opcode 255 would have
21054                scaled the increment.  */
21055             case DW_LNS_const_add_pc:
21056               state_machine.handle_const_add_pc ();
21057               break;
21058             case DW_LNS_fixed_advance_pc:
21059               {
21060                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21061                 line_ptr += 2;
21062
21063                 state_machine.handle_fixed_advance_pc (addr_adj);
21064               }
21065               break;
21066             default:
21067               {
21068                 /* Unknown standard opcode, ignore it.  */
21069                 int i;
21070
21071                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21072                   {
21073                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21074                     line_ptr += bytes_read;
21075                   }
21076               }
21077             }
21078         }
21079
21080       if (!end_sequence)
21081         dwarf2_debug_line_missing_end_sequence_complaint ();
21082
21083       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21084          in which case we still finish recording the last line).  */
21085       state_machine.record_line (true);
21086     }
21087 }
21088
21089 /* Decode the Line Number Program (LNP) for the given line_header
21090    structure and CU.  The actual information extracted and the type
21091    of structures created from the LNP depends on the value of PST.
21092
21093    1. If PST is NULL, then this procedure uses the data from the program
21094       to create all necessary symbol tables, and their linetables.
21095
21096    2. If PST is not NULL, this procedure reads the program to determine
21097       the list of files included by the unit represented by PST, and
21098       builds all the associated partial symbol tables.
21099
21100    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21101    It is used for relative paths in the line table.
21102    NOTE: When processing partial symtabs (pst != NULL),
21103    comp_dir == pst->dirname.
21104
21105    NOTE: It is important that psymtabs have the same file name (via strcmp)
21106    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21107    symtab we don't use it in the name of the psymtabs we create.
21108    E.g. expand_line_sal requires this when finding psymtabs to expand.
21109    A good testcase for this is mb-inline.exp.
21110
21111    LOWPC is the lowest address in CU (or 0 if not known).
21112
21113    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21114    for its PC<->lines mapping information.  Otherwise only the filename
21115    table is read in.  */
21116
21117 static void
21118 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21119                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21120                     CORE_ADDR lowpc, int decode_mapping)
21121 {
21122   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21123   const int decode_for_pst_p = (pst != NULL);
21124
21125   if (decode_mapping)
21126     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21127
21128   if (decode_for_pst_p)
21129     {
21130       int file_index;
21131
21132       /* Now that we're done scanning the Line Header Program, we can
21133          create the psymtab of each included file.  */
21134       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21135         if (lh->file_names[file_index].included_p == 1)
21136           {
21137             gdb::unique_xmalloc_ptr<char> name_holder;
21138             const char *include_name =
21139               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21140                                          &name_holder);
21141             if (include_name != NULL)
21142               dwarf2_create_include_psymtab (include_name, pst, objfile);
21143           }
21144     }
21145   else
21146     {
21147       /* Make sure a symtab is created for every file, even files
21148          which contain only variables (i.e. no code with associated
21149          line numbers).  */
21150       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21151       int i;
21152
21153       for (i = 0; i < lh->file_names.size (); i++)
21154         {
21155           file_entry &fe = lh->file_names[i];
21156
21157           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21158
21159           if (cu->builder->get_current_subfile ()->symtab == NULL)
21160             {
21161               cu->builder->get_current_subfile ()->symtab
21162                 = allocate_symtab (cust,
21163                                    cu->builder->get_current_subfile ()->name);
21164             }
21165           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21166         }
21167     }
21168 }
21169
21170 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21171    DIRNAME the name of the source directory which contains FILENAME
21172    or NULL if not known.
21173    This routine tries to keep line numbers from identical absolute and
21174    relative file names in a common subfile.
21175
21176    Using the `list' example from the GDB testsuite, which resides in
21177    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21178    of /srcdir/list0.c yields the following debugging information for list0.c:
21179
21180    DW_AT_name:          /srcdir/list0.c
21181    DW_AT_comp_dir:      /compdir
21182    files.files[0].name: list0.h
21183    files.files[0].dir:  /srcdir
21184    files.files[1].name: list0.c
21185    files.files[1].dir:  /srcdir
21186
21187    The line number information for list0.c has to end up in a single
21188    subfile, so that `break /srcdir/list0.c:1' works as expected.
21189    start_subfile will ensure that this happens provided that we pass the
21190    concatenation of files.files[1].dir and files.files[1].name as the
21191    subfile's name.  */
21192
21193 static void
21194 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21195                       const char *dirname)
21196 {
21197   char *copy = NULL;
21198
21199   /* In order not to lose the line information directory,
21200      we concatenate it to the filename when it makes sense.
21201      Note that the Dwarf3 standard says (speaking of filenames in line
21202      information): ``The directory index is ignored for file names
21203      that represent full path names''.  Thus ignoring dirname in the
21204      `else' branch below isn't an issue.  */
21205
21206   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21207     {
21208       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21209       filename = copy;
21210     }
21211
21212   cu->builder->start_subfile (filename);
21213
21214   if (copy != NULL)
21215     xfree (copy);
21216 }
21217
21218 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21219    buildsym_compunit constructor.  */
21220
21221 static struct compunit_symtab *
21222 dwarf2_start_symtab (struct dwarf2_cu *cu,
21223                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21224 {
21225   gdb_assert (cu->builder == nullptr);
21226
21227   cu->builder.reset (new struct buildsym_compunit
21228                      (cu->per_cu->dwarf2_per_objfile->objfile,
21229                       name, comp_dir, cu->language, low_pc));
21230
21231   cu->list_in_scope = cu->builder->get_file_symbols ();
21232
21233   cu->builder->record_debugformat ("DWARF 2");
21234   cu->builder->record_producer (cu->producer);
21235
21236   cu->processing_has_namespace_info = 0;
21237
21238   return cu->builder->get_compunit_symtab ();
21239 }
21240
21241 static void
21242 var_decode_location (struct attribute *attr, struct symbol *sym,
21243                      struct dwarf2_cu *cu)
21244 {
21245   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21246   struct comp_unit_head *cu_header = &cu->header;
21247
21248   /* NOTE drow/2003-01-30: There used to be a comment and some special
21249      code here to turn a symbol with DW_AT_external and a
21250      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21251      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21252      with some versions of binutils) where shared libraries could have
21253      relocations against symbols in their debug information - the
21254      minimal symbol would have the right address, but the debug info
21255      would not.  It's no longer necessary, because we will explicitly
21256      apply relocations when we read in the debug information now.  */
21257
21258   /* A DW_AT_location attribute with no contents indicates that a
21259      variable has been optimized away.  */
21260   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21261     {
21262       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21263       return;
21264     }
21265
21266   /* Handle one degenerate form of location expression specially, to
21267      preserve GDB's previous behavior when section offsets are
21268      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21269      then mark this symbol as LOC_STATIC.  */
21270
21271   if (attr_form_is_block (attr)
21272       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21273            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21274           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21275               && (DW_BLOCK (attr)->size
21276                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21277     {
21278       unsigned int dummy;
21279
21280       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21281         SYMBOL_VALUE_ADDRESS (sym) =
21282           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21283       else
21284         SYMBOL_VALUE_ADDRESS (sym) =
21285           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21286       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21287       fixup_symbol_section (sym, objfile);
21288       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21289                                               SYMBOL_SECTION (sym));
21290       return;
21291     }
21292
21293   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21294      expression evaluator, and use LOC_COMPUTED only when necessary
21295      (i.e. when the value of a register or memory location is
21296      referenced, or a thread-local block, etc.).  Then again, it might
21297      not be worthwhile.  I'm assuming that it isn't unless performance
21298      or memory numbers show me otherwise.  */
21299
21300   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21301
21302   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21303     cu->has_loclist = 1;
21304 }
21305
21306 /* Given a pointer to a DWARF information entry, figure out if we need
21307    to make a symbol table entry for it, and if so, create a new entry
21308    and return a pointer to it.
21309    If TYPE is NULL, determine symbol type from the die, otherwise
21310    used the passed type.
21311    If SPACE is not NULL, use it to hold the new symbol.  If it is
21312    NULL, allocate a new symbol on the objfile's obstack.  */
21313
21314 static struct symbol *
21315 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21316             struct symbol *space)
21317 {
21318   struct dwarf2_per_objfile *dwarf2_per_objfile
21319     = cu->per_cu->dwarf2_per_objfile;
21320   struct objfile *objfile = dwarf2_per_objfile->objfile;
21321   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21322   struct symbol *sym = NULL;
21323   const char *name;
21324   struct attribute *attr = NULL;
21325   struct attribute *attr2 = NULL;
21326   CORE_ADDR baseaddr;
21327   struct pending **list_to_add = NULL;
21328
21329   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21330
21331   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21332
21333   name = dwarf2_name (die, cu);
21334   if (name)
21335     {
21336       const char *linkagename;
21337       int suppress_add = 0;
21338
21339       if (space)
21340         sym = space;
21341       else
21342         sym = allocate_symbol (objfile);
21343       OBJSTAT (objfile, n_syms++);
21344
21345       /* Cache this symbol's name and the name's demangled form (if any).  */
21346       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21347       linkagename = dwarf2_physname (name, die, cu);
21348       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21349
21350       /* Fortran does not have mangling standard and the mangling does differ
21351          between gfortran, iFort etc.  */
21352       if (cu->language == language_fortran
21353           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21354         symbol_set_demangled_name (&(sym->ginfo),
21355                                    dwarf2_full_name (name, die, cu),
21356                                    NULL);
21357
21358       /* Default assumptions.
21359          Use the passed type or decode it from the die.  */
21360       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21361       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21362       if (type != NULL)
21363         SYMBOL_TYPE (sym) = type;
21364       else
21365         SYMBOL_TYPE (sym) = die_type (die, cu);
21366       attr = dwarf2_attr (die,
21367                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21368                           cu);
21369       if (attr)
21370         {
21371           SYMBOL_LINE (sym) = DW_UNSND (attr);
21372         }
21373
21374       attr = dwarf2_attr (die,
21375                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21376                           cu);
21377       if (attr)
21378         {
21379           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21380           struct file_entry *fe;
21381
21382           if (cu->line_header != NULL)
21383             fe = cu->line_header->file_name_at (file_index);
21384           else
21385             fe = NULL;
21386
21387           if (fe == NULL)
21388             complaint (_("file index out of range"));
21389           else
21390             symbol_set_symtab (sym, fe->symtab);
21391         }
21392
21393       switch (die->tag)
21394         {
21395         case DW_TAG_label:
21396           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21397           if (attr)
21398             {
21399               CORE_ADDR addr;
21400
21401               addr = attr_value_as_address (attr);
21402               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21403               SYMBOL_VALUE_ADDRESS (sym) = addr;
21404             }
21405           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21406           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21407           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21408           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21409           break;
21410         case DW_TAG_subprogram:
21411           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21412              finish_block.  */
21413           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21414           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21415           if ((attr2 && (DW_UNSND (attr2) != 0))
21416               || cu->language == language_ada)
21417             {
21418               /* Subprograms marked external are stored as a global symbol.
21419                  Ada subprograms, whether marked external or not, are always
21420                  stored as a global symbol, because we want to be able to
21421                  access them globally.  For instance, we want to be able
21422                  to break on a nested subprogram without having to
21423                  specify the context.  */
21424               list_to_add = cu->builder->get_global_symbols ();
21425             }
21426           else
21427             {
21428               list_to_add = cu->list_in_scope;
21429             }
21430           break;
21431         case DW_TAG_inlined_subroutine:
21432           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21433              finish_block.  */
21434           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21435           SYMBOL_INLINED (sym) = 1;
21436           list_to_add = cu->list_in_scope;
21437           break;
21438         case DW_TAG_template_value_param:
21439           suppress_add = 1;
21440           /* Fall through.  */
21441         case DW_TAG_constant:
21442         case DW_TAG_variable:
21443         case DW_TAG_member:
21444           /* Compilation with minimal debug info may result in
21445              variables with missing type entries.  Change the
21446              misleading `void' type to something sensible.  */
21447           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21448             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21449
21450           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21451           /* In the case of DW_TAG_member, we should only be called for
21452              static const members.  */
21453           if (die->tag == DW_TAG_member)
21454             {
21455               /* dwarf2_add_field uses die_is_declaration,
21456                  so we do the same.  */
21457               gdb_assert (die_is_declaration (die, cu));
21458               gdb_assert (attr);
21459             }
21460           if (attr)
21461             {
21462               dwarf2_const_value (attr, sym, cu);
21463               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21464               if (!suppress_add)
21465                 {
21466                   if (attr2 && (DW_UNSND (attr2) != 0))
21467                     list_to_add = cu->builder->get_global_symbols ();
21468                   else
21469                     list_to_add = cu->list_in_scope;
21470                 }
21471               break;
21472             }
21473           attr = dwarf2_attr (die, DW_AT_location, cu);
21474           if (attr)
21475             {
21476               var_decode_location (attr, sym, cu);
21477               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21478
21479               /* Fortran explicitly imports any global symbols to the local
21480                  scope by DW_TAG_common_block.  */
21481               if (cu->language == language_fortran && die->parent
21482                   && die->parent->tag == DW_TAG_common_block)
21483                 attr2 = NULL;
21484
21485               if (SYMBOL_CLASS (sym) == LOC_STATIC
21486                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21487                   && !dwarf2_per_objfile->has_section_at_zero)
21488                 {
21489                   /* When a static variable is eliminated by the linker,
21490                      the corresponding debug information is not stripped
21491                      out, but the variable address is set to null;
21492                      do not add such variables into symbol table.  */
21493                 }
21494               else if (attr2 && (DW_UNSND (attr2) != 0))
21495                 {
21496                   /* Workaround gfortran PR debug/40040 - it uses
21497                      DW_AT_location for variables in -fPIC libraries which may
21498                      get overriden by other libraries/executable and get
21499                      a different address.  Resolve it by the minimal symbol
21500                      which may come from inferior's executable using copy
21501                      relocation.  Make this workaround only for gfortran as for
21502                      other compilers GDB cannot guess the minimal symbol
21503                      Fortran mangling kind.  */
21504                   if (cu->language == language_fortran && die->parent
21505                       && die->parent->tag == DW_TAG_module
21506                       && cu->producer
21507                       && startswith (cu->producer, "GNU Fortran"))
21508                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21509
21510                   /* A variable with DW_AT_external is never static,
21511                      but it may be block-scoped.  */
21512                   list_to_add
21513                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21514                        ? cu->builder->get_global_symbols ()
21515                        : cu->list_in_scope);
21516                 }
21517               else
21518                 list_to_add = cu->list_in_scope;
21519             }
21520           else
21521             {
21522               /* We do not know the address of this symbol.
21523                  If it is an external symbol and we have type information
21524                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21525                  The address of the variable will then be determined from
21526                  the minimal symbol table whenever the variable is
21527                  referenced.  */
21528               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21529
21530               /* Fortran explicitly imports any global symbols to the local
21531                  scope by DW_TAG_common_block.  */
21532               if (cu->language == language_fortran && die->parent
21533                   && die->parent->tag == DW_TAG_common_block)
21534                 {
21535                   /* SYMBOL_CLASS doesn't matter here because
21536                      read_common_block is going to reset it.  */
21537                   if (!suppress_add)
21538                     list_to_add = cu->list_in_scope;
21539                 }
21540               else if (attr2 && (DW_UNSND (attr2) != 0)
21541                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21542                 {
21543                   /* A variable with DW_AT_external is never static, but it
21544                      may be block-scoped.  */
21545                   list_to_add
21546                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21547                        ? cu->builder->get_global_symbols ()
21548                        : cu->list_in_scope);
21549
21550                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21551                 }
21552               else if (!die_is_declaration (die, cu))
21553                 {
21554                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21555                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21556                   if (!suppress_add)
21557                     list_to_add = cu->list_in_scope;
21558                 }
21559             }
21560           break;
21561         case DW_TAG_formal_parameter:
21562           {
21563             /* If we are inside a function, mark this as an argument.  If
21564                not, we might be looking at an argument to an inlined function
21565                when we do not have enough information to show inlined frames;
21566                pretend it's a local variable in that case so that the user can
21567                still see it.  */
21568             struct context_stack *curr
21569               = cu->builder->get_current_context_stack ();
21570             if (curr != nullptr && curr->name != nullptr)
21571               SYMBOL_IS_ARGUMENT (sym) = 1;
21572             attr = dwarf2_attr (die, DW_AT_location, cu);
21573             if (attr)
21574               {
21575                 var_decode_location (attr, sym, cu);
21576               }
21577             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21578             if (attr)
21579               {
21580                 dwarf2_const_value (attr, sym, cu);
21581               }
21582
21583             list_to_add = cu->list_in_scope;
21584           }
21585           break;
21586         case DW_TAG_unspecified_parameters:
21587           /* From varargs functions; gdb doesn't seem to have any
21588              interest in this information, so just ignore it for now.
21589              (FIXME?) */
21590           break;
21591         case DW_TAG_template_type_param:
21592           suppress_add = 1;
21593           /* Fall through.  */
21594         case DW_TAG_class_type:
21595         case DW_TAG_interface_type:
21596         case DW_TAG_structure_type:
21597         case DW_TAG_union_type:
21598         case DW_TAG_set_type:
21599         case DW_TAG_enumeration_type:
21600           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21601           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21602
21603           {
21604             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21605                really ever be static objects: otherwise, if you try
21606                to, say, break of a class's method and you're in a file
21607                which doesn't mention that class, it won't work unless
21608                the check for all static symbols in lookup_symbol_aux
21609                saves you.  See the OtherFileClass tests in
21610                gdb.c++/namespace.exp.  */
21611
21612             if (!suppress_add)
21613               {
21614                 list_to_add
21615                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21616                      && cu->language == language_cplus
21617                      ? cu->builder->get_global_symbols ()
21618                      : cu->list_in_scope);
21619
21620                 /* The semantics of C++ state that "struct foo {
21621                    ... }" also defines a typedef for "foo".  */
21622                 if (cu->language == language_cplus
21623                     || cu->language == language_ada
21624                     || cu->language == language_d
21625                     || cu->language == language_rust)
21626                   {
21627                     /* The symbol's name is already allocated along
21628                        with this objfile, so we don't need to
21629                        duplicate it for the type.  */
21630                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21631                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21632                   }
21633               }
21634           }
21635           break;
21636         case DW_TAG_typedef:
21637           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21638           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21639           list_to_add = cu->list_in_scope;
21640           break;
21641         case DW_TAG_base_type:
21642         case DW_TAG_subrange_type:
21643           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21644           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21645           list_to_add = cu->list_in_scope;
21646           break;
21647         case DW_TAG_enumerator:
21648           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21649           if (attr)
21650             {
21651               dwarf2_const_value (attr, sym, cu);
21652             }
21653           {
21654             /* NOTE: carlton/2003-11-10: See comment above in the
21655                DW_TAG_class_type, etc. block.  */
21656
21657             list_to_add
21658               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21659                  && cu->language == language_cplus
21660                  ? cu->builder->get_global_symbols ()
21661                  : cu->list_in_scope);
21662           }
21663           break;
21664         case DW_TAG_imported_declaration:
21665         case DW_TAG_namespace:
21666           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21667           list_to_add = cu->builder->get_global_symbols ();
21668           break;
21669         case DW_TAG_module:
21670           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21671           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21672           list_to_add = cu->builder->get_global_symbols ();
21673           break;
21674         case DW_TAG_common_block:
21675           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21676           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21677           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21678           break;
21679         default:
21680           /* Not a tag we recognize.  Hopefully we aren't processing
21681              trash data, but since we must specifically ignore things
21682              we don't recognize, there is nothing else we should do at
21683              this point.  */
21684           complaint (_("unsupported tag: '%s'"),
21685                      dwarf_tag_name (die->tag));
21686           break;
21687         }
21688
21689       if (suppress_add)
21690         {
21691           sym->hash_next = objfile->template_symbols;
21692           objfile->template_symbols = sym;
21693           list_to_add = NULL;
21694         }
21695
21696       if (list_to_add != NULL)
21697         dw2_add_symbol_to_list (sym, list_to_add);
21698
21699       /* For the benefit of old versions of GCC, check for anonymous
21700          namespaces based on the demangled name.  */
21701       if (!cu->processing_has_namespace_info
21702           && cu->language == language_cplus)
21703         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21704     }
21705   return (sym);
21706 }
21707
21708 /* Given an attr with a DW_FORM_dataN value in host byte order,
21709    zero-extend it as appropriate for the symbol's type.  The DWARF
21710    standard (v4) is not entirely clear about the meaning of using
21711    DW_FORM_dataN for a constant with a signed type, where the type is
21712    wider than the data.  The conclusion of a discussion on the DWARF
21713    list was that this is unspecified.  We choose to always zero-extend
21714    because that is the interpretation long in use by GCC.  */
21715
21716 static gdb_byte *
21717 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21718                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21719 {
21720   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21721   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21722                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21723   LONGEST l = DW_UNSND (attr);
21724
21725   if (bits < sizeof (*value) * 8)
21726     {
21727       l &= ((LONGEST) 1 << bits) - 1;
21728       *value = l;
21729     }
21730   else if (bits == sizeof (*value) * 8)
21731     *value = l;
21732   else
21733     {
21734       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21735       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21736       return bytes;
21737     }
21738
21739   return NULL;
21740 }
21741
21742 /* Read a constant value from an attribute.  Either set *VALUE, or if
21743    the value does not fit in *VALUE, set *BYTES - either already
21744    allocated on the objfile obstack, or newly allocated on OBSTACK,
21745    or, set *BATON, if we translated the constant to a location
21746    expression.  */
21747
21748 static void
21749 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21750                          const char *name, struct obstack *obstack,
21751                          struct dwarf2_cu *cu,
21752                          LONGEST *value, const gdb_byte **bytes,
21753                          struct dwarf2_locexpr_baton **baton)
21754 {
21755   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21756   struct comp_unit_head *cu_header = &cu->header;
21757   struct dwarf_block *blk;
21758   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21759                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21760
21761   *value = 0;
21762   *bytes = NULL;
21763   *baton = NULL;
21764
21765   switch (attr->form)
21766     {
21767     case DW_FORM_addr:
21768     case DW_FORM_GNU_addr_index:
21769       {
21770         gdb_byte *data;
21771
21772         if (TYPE_LENGTH (type) != cu_header->addr_size)
21773           dwarf2_const_value_length_mismatch_complaint (name,
21774                                                         cu_header->addr_size,
21775                                                         TYPE_LENGTH (type));
21776         /* Symbols of this form are reasonably rare, so we just
21777            piggyback on the existing location code rather than writing
21778            a new implementation of symbol_computed_ops.  */
21779         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21780         (*baton)->per_cu = cu->per_cu;
21781         gdb_assert ((*baton)->per_cu);
21782
21783         (*baton)->size = 2 + cu_header->addr_size;
21784         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21785         (*baton)->data = data;
21786
21787         data[0] = DW_OP_addr;
21788         store_unsigned_integer (&data[1], cu_header->addr_size,
21789                                 byte_order, DW_ADDR (attr));
21790         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21791       }
21792       break;
21793     case DW_FORM_string:
21794     case DW_FORM_strp:
21795     case DW_FORM_GNU_str_index:
21796     case DW_FORM_GNU_strp_alt:
21797       /* DW_STRING is already allocated on the objfile obstack, point
21798          directly to it.  */
21799       *bytes = (const gdb_byte *) DW_STRING (attr);
21800       break;
21801     case DW_FORM_block1:
21802     case DW_FORM_block2:
21803     case DW_FORM_block4:
21804     case DW_FORM_block:
21805     case DW_FORM_exprloc:
21806     case DW_FORM_data16:
21807       blk = DW_BLOCK (attr);
21808       if (TYPE_LENGTH (type) != blk->size)
21809         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21810                                                       TYPE_LENGTH (type));
21811       *bytes = blk->data;
21812       break;
21813
21814       /* The DW_AT_const_value attributes are supposed to carry the
21815          symbol's value "represented as it would be on the target
21816          architecture."  By the time we get here, it's already been
21817          converted to host endianness, so we just need to sign- or
21818          zero-extend it as appropriate.  */
21819     case DW_FORM_data1:
21820       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21821       break;
21822     case DW_FORM_data2:
21823       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21824       break;
21825     case DW_FORM_data4:
21826       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21827       break;
21828     case DW_FORM_data8:
21829       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21830       break;
21831
21832     case DW_FORM_sdata:
21833     case DW_FORM_implicit_const:
21834       *value = DW_SND (attr);
21835       break;
21836
21837     case DW_FORM_udata:
21838       *value = DW_UNSND (attr);
21839       break;
21840
21841     default:
21842       complaint (_("unsupported const value attribute form: '%s'"),
21843                  dwarf_form_name (attr->form));
21844       *value = 0;
21845       break;
21846     }
21847 }
21848
21849
21850 /* Copy constant value from an attribute to a symbol.  */
21851
21852 static void
21853 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21854                     struct dwarf2_cu *cu)
21855 {
21856   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21857   LONGEST value;
21858   const gdb_byte *bytes;
21859   struct dwarf2_locexpr_baton *baton;
21860
21861   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21862                            SYMBOL_PRINT_NAME (sym),
21863                            &objfile->objfile_obstack, cu,
21864                            &value, &bytes, &baton);
21865
21866   if (baton != NULL)
21867     {
21868       SYMBOL_LOCATION_BATON (sym) = baton;
21869       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21870     }
21871   else if (bytes != NULL)
21872      {
21873       SYMBOL_VALUE_BYTES (sym) = bytes;
21874       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21875     }
21876   else
21877     {
21878       SYMBOL_VALUE (sym) = value;
21879       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21880     }
21881 }
21882
21883 /* Return the type of the die in question using its DW_AT_type attribute.  */
21884
21885 static struct type *
21886 die_type (struct die_info *die, struct dwarf2_cu *cu)
21887 {
21888   struct attribute *type_attr;
21889
21890   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21891   if (!type_attr)
21892     {
21893       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21894       /* A missing DW_AT_type represents a void type.  */
21895       return objfile_type (objfile)->builtin_void;
21896     }
21897
21898   return lookup_die_type (die, type_attr, cu);
21899 }
21900
21901 /* True iff CU's producer generates GNAT Ada auxiliary information
21902    that allows to find parallel types through that information instead
21903    of having to do expensive parallel lookups by type name.  */
21904
21905 static int
21906 need_gnat_info (struct dwarf2_cu *cu)
21907 {
21908   /* Assume that the Ada compiler was GNAT, which always produces
21909      the auxiliary information.  */
21910   return (cu->language == language_ada);
21911 }
21912
21913 /* Return the auxiliary type of the die in question using its
21914    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21915    attribute is not present.  */
21916
21917 static struct type *
21918 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21919 {
21920   struct attribute *type_attr;
21921
21922   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21923   if (!type_attr)
21924     return NULL;
21925
21926   return lookup_die_type (die, type_attr, cu);
21927 }
21928
21929 /* If DIE has a descriptive_type attribute, then set the TYPE's
21930    descriptive type accordingly.  */
21931
21932 static void
21933 set_descriptive_type (struct type *type, struct die_info *die,
21934                       struct dwarf2_cu *cu)
21935 {
21936   struct type *descriptive_type = die_descriptive_type (die, cu);
21937
21938   if (descriptive_type)
21939     {
21940       ALLOCATE_GNAT_AUX_TYPE (type);
21941       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21942     }
21943 }
21944
21945 /* Return the containing type of the die in question using its
21946    DW_AT_containing_type attribute.  */
21947
21948 static struct type *
21949 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21950 {
21951   struct attribute *type_attr;
21952   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21953
21954   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21955   if (!type_attr)
21956     error (_("Dwarf Error: Problem turning containing type into gdb type "
21957              "[in module %s]"), objfile_name (objfile));
21958
21959   return lookup_die_type (die, type_attr, cu);
21960 }
21961
21962 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21963
21964 static struct type *
21965 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21966 {
21967   struct dwarf2_per_objfile *dwarf2_per_objfile
21968     = cu->per_cu->dwarf2_per_objfile;
21969   struct objfile *objfile = dwarf2_per_objfile->objfile;
21970   char *saved;
21971
21972   std::string message
21973     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21974                      objfile_name (objfile),
21975                      sect_offset_str (cu->header.sect_off),
21976                      sect_offset_str (die->sect_off));
21977   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21978                                   message.c_str (), message.length ());
21979
21980   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21981 }
21982
21983 /* Look up the type of DIE in CU using its type attribute ATTR.
21984    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21985    DW_AT_containing_type.
21986    If there is no type substitute an error marker.  */
21987
21988 static struct type *
21989 lookup_die_type (struct die_info *die, const struct attribute *attr,
21990                  struct dwarf2_cu *cu)
21991 {
21992   struct dwarf2_per_objfile *dwarf2_per_objfile
21993     = cu->per_cu->dwarf2_per_objfile;
21994   struct objfile *objfile = dwarf2_per_objfile->objfile;
21995   struct type *this_type;
21996
21997   gdb_assert (attr->name == DW_AT_type
21998               || attr->name == DW_AT_GNAT_descriptive_type
21999               || attr->name == DW_AT_containing_type);
22000
22001   /* First see if we have it cached.  */
22002
22003   if (attr->form == DW_FORM_GNU_ref_alt)
22004     {
22005       struct dwarf2_per_cu_data *per_cu;
22006       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22007
22008       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22009                                                  dwarf2_per_objfile);
22010       this_type = get_die_type_at_offset (sect_off, per_cu);
22011     }
22012   else if (attr_form_is_ref (attr))
22013     {
22014       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22015
22016       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22017     }
22018   else if (attr->form == DW_FORM_ref_sig8)
22019     {
22020       ULONGEST signature = DW_SIGNATURE (attr);
22021
22022       return get_signatured_type (die, signature, cu);
22023     }
22024   else
22025     {
22026       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22027                    " at %s [in module %s]"),
22028                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22029                  objfile_name (objfile));
22030       return build_error_marker_type (cu, die);
22031     }
22032
22033   /* If not cached we need to read it in.  */
22034
22035   if (this_type == NULL)
22036     {
22037       struct die_info *type_die = NULL;
22038       struct dwarf2_cu *type_cu = cu;
22039
22040       if (attr_form_is_ref (attr))
22041         type_die = follow_die_ref (die, attr, &type_cu);
22042       if (type_die == NULL)
22043         return build_error_marker_type (cu, die);
22044       /* If we find the type now, it's probably because the type came
22045          from an inter-CU reference and the type's CU got expanded before
22046          ours.  */
22047       this_type = read_type_die (type_die, type_cu);
22048     }
22049
22050   /* If we still don't have a type use an error marker.  */
22051
22052   if (this_type == NULL)
22053     return build_error_marker_type (cu, die);
22054
22055   return this_type;
22056 }
22057
22058 /* Return the type in DIE, CU.
22059    Returns NULL for invalid types.
22060
22061    This first does a lookup in die_type_hash,
22062    and only reads the die in if necessary.
22063
22064    NOTE: This can be called when reading in partial or full symbols.  */
22065
22066 static struct type *
22067 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22068 {
22069   struct type *this_type;
22070
22071   this_type = get_die_type (die, cu);
22072   if (this_type)
22073     return this_type;
22074
22075   return read_type_die_1 (die, cu);
22076 }
22077
22078 /* Read the type in DIE, CU.
22079    Returns NULL for invalid types.  */
22080
22081 static struct type *
22082 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22083 {
22084   struct type *this_type = NULL;
22085
22086   switch (die->tag)
22087     {
22088     case DW_TAG_class_type:
22089     case DW_TAG_interface_type:
22090     case DW_TAG_structure_type:
22091     case DW_TAG_union_type:
22092       this_type = read_structure_type (die, cu);
22093       break;
22094     case DW_TAG_enumeration_type:
22095       this_type = read_enumeration_type (die, cu);
22096       break;
22097     case DW_TAG_subprogram:
22098     case DW_TAG_subroutine_type:
22099     case DW_TAG_inlined_subroutine:
22100       this_type = read_subroutine_type (die, cu);
22101       break;
22102     case DW_TAG_array_type:
22103       this_type = read_array_type (die, cu);
22104       break;
22105     case DW_TAG_set_type:
22106       this_type = read_set_type (die, cu);
22107       break;
22108     case DW_TAG_pointer_type:
22109       this_type = read_tag_pointer_type (die, cu);
22110       break;
22111     case DW_TAG_ptr_to_member_type:
22112       this_type = read_tag_ptr_to_member_type (die, cu);
22113       break;
22114     case DW_TAG_reference_type:
22115       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22116       break;
22117     case DW_TAG_rvalue_reference_type:
22118       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22119       break;
22120     case DW_TAG_const_type:
22121       this_type = read_tag_const_type (die, cu);
22122       break;
22123     case DW_TAG_volatile_type:
22124       this_type = read_tag_volatile_type (die, cu);
22125       break;
22126     case DW_TAG_restrict_type:
22127       this_type = read_tag_restrict_type (die, cu);
22128       break;
22129     case DW_TAG_string_type:
22130       this_type = read_tag_string_type (die, cu);
22131       break;
22132     case DW_TAG_typedef:
22133       this_type = read_typedef (die, cu);
22134       break;
22135     case DW_TAG_subrange_type:
22136       this_type = read_subrange_type (die, cu);
22137       break;
22138     case DW_TAG_base_type:
22139       this_type = read_base_type (die, cu);
22140       break;
22141     case DW_TAG_unspecified_type:
22142       this_type = read_unspecified_type (die, cu);
22143       break;
22144     case DW_TAG_namespace:
22145       this_type = read_namespace_type (die, cu);
22146       break;
22147     case DW_TAG_module:
22148       this_type = read_module_type (die, cu);
22149       break;
22150     case DW_TAG_atomic_type:
22151       this_type = read_tag_atomic_type (die, cu);
22152       break;
22153     default:
22154       complaint (_("unexpected tag in read_type_die: '%s'"),
22155                  dwarf_tag_name (die->tag));
22156       break;
22157     }
22158
22159   return this_type;
22160 }
22161
22162 /* See if we can figure out if the class lives in a namespace.  We do
22163    this by looking for a member function; its demangled name will
22164    contain namespace info, if there is any.
22165    Return the computed name or NULL.
22166    Space for the result is allocated on the objfile's obstack.
22167    This is the full-die version of guess_partial_die_structure_name.
22168    In this case we know DIE has no useful parent.  */
22169
22170 static char *
22171 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22172 {
22173   struct die_info *spec_die;
22174   struct dwarf2_cu *spec_cu;
22175   struct die_info *child;
22176   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22177
22178   spec_cu = cu;
22179   spec_die = die_specification (die, &spec_cu);
22180   if (spec_die != NULL)
22181     {
22182       die = spec_die;
22183       cu = spec_cu;
22184     }
22185
22186   for (child = die->child;
22187        child != NULL;
22188        child = child->sibling)
22189     {
22190       if (child->tag == DW_TAG_subprogram)
22191         {
22192           const char *linkage_name = dw2_linkage_name (child, cu);
22193
22194           if (linkage_name != NULL)
22195             {
22196               char *actual_name
22197                 = language_class_name_from_physname (cu->language_defn,
22198                                                      linkage_name);
22199               char *name = NULL;
22200
22201               if (actual_name != NULL)
22202                 {
22203                   const char *die_name = dwarf2_name (die, cu);
22204
22205                   if (die_name != NULL
22206                       && strcmp (die_name, actual_name) != 0)
22207                     {
22208                       /* Strip off the class name from the full name.
22209                          We want the prefix.  */
22210                       int die_name_len = strlen (die_name);
22211                       int actual_name_len = strlen (actual_name);
22212
22213                       /* Test for '::' as a sanity check.  */
22214                       if (actual_name_len > die_name_len + 2
22215                           && actual_name[actual_name_len
22216                                          - die_name_len - 1] == ':')
22217                         name = (char *) obstack_copy0 (
22218                           &objfile->per_bfd->storage_obstack,
22219                           actual_name, actual_name_len - die_name_len - 2);
22220                     }
22221                 }
22222               xfree (actual_name);
22223               return name;
22224             }
22225         }
22226     }
22227
22228   return NULL;
22229 }
22230
22231 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22232    prefix part in such case.  See
22233    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22234
22235 static const char *
22236 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22237 {
22238   struct attribute *attr;
22239   const char *base;
22240
22241   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22242       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22243     return NULL;
22244
22245   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22246     return NULL;
22247
22248   attr = dw2_linkage_name_attr (die, cu);
22249   if (attr == NULL || DW_STRING (attr) == NULL)
22250     return NULL;
22251
22252   /* dwarf2_name had to be already called.  */
22253   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22254
22255   /* Strip the base name, keep any leading namespaces/classes.  */
22256   base = strrchr (DW_STRING (attr), ':');
22257   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22258     return "";
22259
22260   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22261   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22262                                  DW_STRING (attr),
22263                                  &base[-1] - DW_STRING (attr));
22264 }
22265
22266 /* Return the name of the namespace/class that DIE is defined within,
22267    or "" if we can't tell.  The caller should not xfree the result.
22268
22269    For example, if we're within the method foo() in the following
22270    code:
22271
22272    namespace N {
22273      class C {
22274        void foo () {
22275        }
22276      };
22277    }
22278
22279    then determine_prefix on foo's die will return "N::C".  */
22280
22281 static const char *
22282 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22283 {
22284   struct dwarf2_per_objfile *dwarf2_per_objfile
22285     = cu->per_cu->dwarf2_per_objfile;
22286   struct die_info *parent, *spec_die;
22287   struct dwarf2_cu *spec_cu;
22288   struct type *parent_type;
22289   const char *retval;
22290
22291   if (cu->language != language_cplus
22292       && cu->language != language_fortran && cu->language != language_d
22293       && cu->language != language_rust)
22294     return "";
22295
22296   retval = anonymous_struct_prefix (die, cu);
22297   if (retval)
22298     return retval;
22299
22300   /* We have to be careful in the presence of DW_AT_specification.
22301      For example, with GCC 3.4, given the code
22302
22303      namespace N {
22304        void foo() {
22305          // Definition of N::foo.
22306        }
22307      }
22308
22309      then we'll have a tree of DIEs like this:
22310
22311      1: DW_TAG_compile_unit
22312        2: DW_TAG_namespace        // N
22313          3: DW_TAG_subprogram     // declaration of N::foo
22314        4: DW_TAG_subprogram       // definition of N::foo
22315             DW_AT_specification   // refers to die #3
22316
22317      Thus, when processing die #4, we have to pretend that we're in
22318      the context of its DW_AT_specification, namely the contex of die
22319      #3.  */
22320   spec_cu = cu;
22321   spec_die = die_specification (die, &spec_cu);
22322   if (spec_die == NULL)
22323     parent = die->parent;
22324   else
22325     {
22326       parent = spec_die->parent;
22327       cu = spec_cu;
22328     }
22329
22330   if (parent == NULL)
22331     return "";
22332   else if (parent->building_fullname)
22333     {
22334       const char *name;
22335       const char *parent_name;
22336
22337       /* It has been seen on RealView 2.2 built binaries,
22338          DW_TAG_template_type_param types actually _defined_ as
22339          children of the parent class:
22340
22341          enum E {};
22342          template class <class Enum> Class{};
22343          Class<enum E> class_e;
22344
22345          1: DW_TAG_class_type (Class)
22346            2: DW_TAG_enumeration_type (E)
22347              3: DW_TAG_enumerator (enum1:0)
22348              3: DW_TAG_enumerator (enum2:1)
22349              ...
22350            2: DW_TAG_template_type_param
22351               DW_AT_type  DW_FORM_ref_udata (E)
22352
22353          Besides being broken debug info, it can put GDB into an
22354          infinite loop.  Consider:
22355
22356          When we're building the full name for Class<E>, we'll start
22357          at Class, and go look over its template type parameters,
22358          finding E.  We'll then try to build the full name of E, and
22359          reach here.  We're now trying to build the full name of E,
22360          and look over the parent DIE for containing scope.  In the
22361          broken case, if we followed the parent DIE of E, we'd again
22362          find Class, and once again go look at its template type
22363          arguments, etc., etc.  Simply don't consider such parent die
22364          as source-level parent of this die (it can't be, the language
22365          doesn't allow it), and break the loop here.  */
22366       name = dwarf2_name (die, cu);
22367       parent_name = dwarf2_name (parent, cu);
22368       complaint (_("template param type '%s' defined within parent '%s'"),
22369                  name ? name : "<unknown>",
22370                  parent_name ? parent_name : "<unknown>");
22371       return "";
22372     }
22373   else
22374     switch (parent->tag)
22375       {
22376       case DW_TAG_namespace:
22377         parent_type = read_type_die (parent, cu);
22378         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22379            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22380            Work around this problem here.  */
22381         if (cu->language == language_cplus
22382             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22383           return "";
22384         /* We give a name to even anonymous namespaces.  */
22385         return TYPE_NAME (parent_type);
22386       case DW_TAG_class_type:
22387       case DW_TAG_interface_type:
22388       case DW_TAG_structure_type:
22389       case DW_TAG_union_type:
22390       case DW_TAG_module:
22391         parent_type = read_type_die (parent, cu);
22392         if (TYPE_NAME (parent_type) != NULL)
22393           return TYPE_NAME (parent_type);
22394         else
22395           /* An anonymous structure is only allowed non-static data
22396              members; no typedefs, no member functions, et cetera.
22397              So it does not need a prefix.  */
22398           return "";
22399       case DW_TAG_compile_unit:
22400       case DW_TAG_partial_unit:
22401         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22402         if (cu->language == language_cplus
22403             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22404             && die->child != NULL
22405             && (die->tag == DW_TAG_class_type
22406                 || die->tag == DW_TAG_structure_type
22407                 || die->tag == DW_TAG_union_type))
22408           {
22409             char *name = guess_full_die_structure_name (die, cu);
22410             if (name != NULL)
22411               return name;
22412           }
22413         return "";
22414       case DW_TAG_enumeration_type:
22415         parent_type = read_type_die (parent, cu);
22416         if (TYPE_DECLARED_CLASS (parent_type))
22417           {
22418             if (TYPE_NAME (parent_type) != NULL)
22419               return TYPE_NAME (parent_type);
22420             return "";
22421           }
22422         /* Fall through.  */
22423       default:
22424         return determine_prefix (parent, cu);
22425       }
22426 }
22427
22428 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22429    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22430    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22431    an obconcat, otherwise allocate storage for the result.  The CU argument is
22432    used to determine the language and hence, the appropriate separator.  */
22433
22434 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22435
22436 static char *
22437 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22438                  int physname, struct dwarf2_cu *cu)
22439 {
22440   const char *lead = "";
22441   const char *sep;
22442
22443   if (suffix == NULL || suffix[0] == '\0'
22444       || prefix == NULL || prefix[0] == '\0')
22445     sep = "";
22446   else if (cu->language == language_d)
22447     {
22448       /* For D, the 'main' function could be defined in any module, but it
22449          should never be prefixed.  */
22450       if (strcmp (suffix, "D main") == 0)
22451         {
22452           prefix = "";
22453           sep = "";
22454         }
22455       else
22456         sep = ".";
22457     }
22458   else if (cu->language == language_fortran && physname)
22459     {
22460       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22461          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22462
22463       lead = "__";
22464       sep = "_MOD_";
22465     }
22466   else
22467     sep = "::";
22468
22469   if (prefix == NULL)
22470     prefix = "";
22471   if (suffix == NULL)
22472     suffix = "";
22473
22474   if (obs == NULL)
22475     {
22476       char *retval
22477         = ((char *)
22478            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22479
22480       strcpy (retval, lead);
22481       strcat (retval, prefix);
22482       strcat (retval, sep);
22483       strcat (retval, suffix);
22484       return retval;
22485     }
22486   else
22487     {
22488       /* We have an obstack.  */
22489       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22490     }
22491 }
22492
22493 /* Return sibling of die, NULL if no sibling.  */
22494
22495 static struct die_info *
22496 sibling_die (struct die_info *die)
22497 {
22498   return die->sibling;
22499 }
22500
22501 /* Get name of a die, return NULL if not found.  */
22502
22503 static const char *
22504 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22505                           struct obstack *obstack)
22506 {
22507   if (name && cu->language == language_cplus)
22508     {
22509       std::string canon_name = cp_canonicalize_string (name);
22510
22511       if (!canon_name.empty ())
22512         {
22513           if (canon_name != name)
22514             name = (const char *) obstack_copy0 (obstack,
22515                                                  canon_name.c_str (),
22516                                                  canon_name.length ());
22517         }
22518     }
22519
22520   return name;
22521 }
22522
22523 /* Get name of a die, return NULL if not found.
22524    Anonymous namespaces are converted to their magic string.  */
22525
22526 static const char *
22527 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22528 {
22529   struct attribute *attr;
22530   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22531
22532   attr = dwarf2_attr (die, DW_AT_name, cu);
22533   if ((!attr || !DW_STRING (attr))
22534       && die->tag != DW_TAG_namespace
22535       && die->tag != DW_TAG_class_type
22536       && die->tag != DW_TAG_interface_type
22537       && die->tag != DW_TAG_structure_type
22538       && die->tag != DW_TAG_union_type)
22539     return NULL;
22540
22541   switch (die->tag)
22542     {
22543     case DW_TAG_compile_unit:
22544     case DW_TAG_partial_unit:
22545       /* Compilation units have a DW_AT_name that is a filename, not
22546          a source language identifier.  */
22547     case DW_TAG_enumeration_type:
22548     case DW_TAG_enumerator:
22549       /* These tags always have simple identifiers already; no need
22550          to canonicalize them.  */
22551       return DW_STRING (attr);
22552
22553     case DW_TAG_namespace:
22554       if (attr != NULL && DW_STRING (attr) != NULL)
22555         return DW_STRING (attr);
22556       return CP_ANONYMOUS_NAMESPACE_STR;
22557
22558     case DW_TAG_class_type:
22559     case DW_TAG_interface_type:
22560     case DW_TAG_structure_type:
22561     case DW_TAG_union_type:
22562       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22563          structures or unions.  These were of the form "._%d" in GCC 4.1,
22564          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22565          and GCC 4.4.  We work around this problem by ignoring these.  */
22566       if (attr && DW_STRING (attr)
22567           && (startswith (DW_STRING (attr), "._")
22568               || startswith (DW_STRING (attr), "<anonymous")))
22569         return NULL;
22570
22571       /* GCC might emit a nameless typedef that has a linkage name.  See
22572          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22573       if (!attr || DW_STRING (attr) == NULL)
22574         {
22575           char *demangled = NULL;
22576
22577           attr = dw2_linkage_name_attr (die, cu);
22578           if (attr == NULL || DW_STRING (attr) == NULL)
22579             return NULL;
22580
22581           /* Avoid demangling DW_STRING (attr) the second time on a second
22582              call for the same DIE.  */
22583           if (!DW_STRING_IS_CANONICAL (attr))
22584             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22585
22586           if (demangled)
22587             {
22588               const char *base;
22589
22590               /* FIXME: we already did this for the partial symbol... */
22591               DW_STRING (attr)
22592                 = ((const char *)
22593                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22594                                   demangled, strlen (demangled)));
22595               DW_STRING_IS_CANONICAL (attr) = 1;
22596               xfree (demangled);
22597
22598               /* Strip any leading namespaces/classes, keep only the base name.
22599                  DW_AT_name for named DIEs does not contain the prefixes.  */
22600               base = strrchr (DW_STRING (attr), ':');
22601               if (base && base > DW_STRING (attr) && base[-1] == ':')
22602                 return &base[1];
22603               else
22604                 return DW_STRING (attr);
22605             }
22606         }
22607       break;
22608
22609     default:
22610       break;
22611     }
22612
22613   if (!DW_STRING_IS_CANONICAL (attr))
22614     {
22615       DW_STRING (attr)
22616         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22617                                     &objfile->per_bfd->storage_obstack);
22618       DW_STRING_IS_CANONICAL (attr) = 1;
22619     }
22620   return DW_STRING (attr);
22621 }
22622
22623 /* Return the die that this die in an extension of, or NULL if there
22624    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22625    containing the return value on output.  */
22626
22627 static struct die_info *
22628 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22629 {
22630   struct attribute *attr;
22631
22632   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22633   if (attr == NULL)
22634     return NULL;
22635
22636   return follow_die_ref (die, attr, ext_cu);
22637 }
22638
22639 /* Convert a DIE tag into its string name.  */
22640
22641 static const char *
22642 dwarf_tag_name (unsigned tag)
22643 {
22644   const char *name = get_DW_TAG_name (tag);
22645
22646   if (name == NULL)
22647     return "DW_TAG_<unknown>";
22648
22649   return name;
22650 }
22651
22652 /* Convert a DWARF attribute code into its string name.  */
22653
22654 static const char *
22655 dwarf_attr_name (unsigned attr)
22656 {
22657   const char *name;
22658
22659 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22660   if (attr == DW_AT_MIPS_fde)
22661     return "DW_AT_MIPS_fde";
22662 #else
22663   if (attr == DW_AT_HP_block_index)
22664     return "DW_AT_HP_block_index";
22665 #endif
22666
22667   name = get_DW_AT_name (attr);
22668
22669   if (name == NULL)
22670     return "DW_AT_<unknown>";
22671
22672   return name;
22673 }
22674
22675 /* Convert a DWARF value form code into its string name.  */
22676
22677 static const char *
22678 dwarf_form_name (unsigned form)
22679 {
22680   const char *name = get_DW_FORM_name (form);
22681
22682   if (name == NULL)
22683     return "DW_FORM_<unknown>";
22684
22685   return name;
22686 }
22687
22688 static const char *
22689 dwarf_bool_name (unsigned mybool)
22690 {
22691   if (mybool)
22692     return "TRUE";
22693   else
22694     return "FALSE";
22695 }
22696
22697 /* Convert a DWARF type code into its string name.  */
22698
22699 static const char *
22700 dwarf_type_encoding_name (unsigned enc)
22701 {
22702   const char *name = get_DW_ATE_name (enc);
22703
22704   if (name == NULL)
22705     return "DW_ATE_<unknown>";
22706
22707   return name;
22708 }
22709
22710 static void
22711 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22712 {
22713   unsigned int i;
22714
22715   print_spaces (indent, f);
22716   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22717                       dwarf_tag_name (die->tag), die->abbrev,
22718                       sect_offset_str (die->sect_off));
22719
22720   if (die->parent != NULL)
22721     {
22722       print_spaces (indent, f);
22723       fprintf_unfiltered (f, "  parent at offset: %s\n",
22724                           sect_offset_str (die->parent->sect_off));
22725     }
22726
22727   print_spaces (indent, f);
22728   fprintf_unfiltered (f, "  has children: %s\n",
22729            dwarf_bool_name (die->child != NULL));
22730
22731   print_spaces (indent, f);
22732   fprintf_unfiltered (f, "  attributes:\n");
22733
22734   for (i = 0; i < die->num_attrs; ++i)
22735     {
22736       print_spaces (indent, f);
22737       fprintf_unfiltered (f, "    %s (%s) ",
22738                dwarf_attr_name (die->attrs[i].name),
22739                dwarf_form_name (die->attrs[i].form));
22740
22741       switch (die->attrs[i].form)
22742         {
22743         case DW_FORM_addr:
22744         case DW_FORM_GNU_addr_index:
22745           fprintf_unfiltered (f, "address: ");
22746           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22747           break;
22748         case DW_FORM_block2:
22749         case DW_FORM_block4:
22750         case DW_FORM_block:
22751         case DW_FORM_block1:
22752           fprintf_unfiltered (f, "block: size %s",
22753                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22754           break;
22755         case DW_FORM_exprloc:
22756           fprintf_unfiltered (f, "expression: size %s",
22757                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22758           break;
22759         case DW_FORM_data16:
22760           fprintf_unfiltered (f, "constant of 16 bytes");
22761           break;
22762         case DW_FORM_ref_addr:
22763           fprintf_unfiltered (f, "ref address: ");
22764           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22765           break;
22766         case DW_FORM_GNU_ref_alt:
22767           fprintf_unfiltered (f, "alt ref address: ");
22768           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22769           break;
22770         case DW_FORM_ref1:
22771         case DW_FORM_ref2:
22772         case DW_FORM_ref4:
22773         case DW_FORM_ref8:
22774         case DW_FORM_ref_udata:
22775           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22776                               (long) (DW_UNSND (&die->attrs[i])));
22777           break;
22778         case DW_FORM_data1:
22779         case DW_FORM_data2:
22780         case DW_FORM_data4:
22781         case DW_FORM_data8:
22782         case DW_FORM_udata:
22783         case DW_FORM_sdata:
22784           fprintf_unfiltered (f, "constant: %s",
22785                               pulongest (DW_UNSND (&die->attrs[i])));
22786           break;
22787         case DW_FORM_sec_offset:
22788           fprintf_unfiltered (f, "section offset: %s",
22789                               pulongest (DW_UNSND (&die->attrs[i])));
22790           break;
22791         case DW_FORM_ref_sig8:
22792           fprintf_unfiltered (f, "signature: %s",
22793                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22794           break;
22795         case DW_FORM_string:
22796         case DW_FORM_strp:
22797         case DW_FORM_line_strp:
22798         case DW_FORM_GNU_str_index:
22799         case DW_FORM_GNU_strp_alt:
22800           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22801                    DW_STRING (&die->attrs[i])
22802                    ? DW_STRING (&die->attrs[i]) : "",
22803                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22804           break;
22805         case DW_FORM_flag:
22806           if (DW_UNSND (&die->attrs[i]))
22807             fprintf_unfiltered (f, "flag: TRUE");
22808           else
22809             fprintf_unfiltered (f, "flag: FALSE");
22810           break;
22811         case DW_FORM_flag_present:
22812           fprintf_unfiltered (f, "flag: TRUE");
22813           break;
22814         case DW_FORM_indirect:
22815           /* The reader will have reduced the indirect form to
22816              the "base form" so this form should not occur.  */
22817           fprintf_unfiltered (f, 
22818                               "unexpected attribute form: DW_FORM_indirect");
22819           break;
22820         case DW_FORM_implicit_const:
22821           fprintf_unfiltered (f, "constant: %s",
22822                               plongest (DW_SND (&die->attrs[i])));
22823           break;
22824         default:
22825           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22826                    die->attrs[i].form);
22827           break;
22828         }
22829       fprintf_unfiltered (f, "\n");
22830     }
22831 }
22832
22833 static void
22834 dump_die_for_error (struct die_info *die)
22835 {
22836   dump_die_shallow (gdb_stderr, 0, die);
22837 }
22838
22839 static void
22840 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22841 {
22842   int indent = level * 4;
22843
22844   gdb_assert (die != NULL);
22845
22846   if (level >= max_level)
22847     return;
22848
22849   dump_die_shallow (f, indent, die);
22850
22851   if (die->child != NULL)
22852     {
22853       print_spaces (indent, f);
22854       fprintf_unfiltered (f, "  Children:");
22855       if (level + 1 < max_level)
22856         {
22857           fprintf_unfiltered (f, "\n");
22858           dump_die_1 (f, level + 1, max_level, die->child);
22859         }
22860       else
22861         {
22862           fprintf_unfiltered (f,
22863                               " [not printed, max nesting level reached]\n");
22864         }
22865     }
22866
22867   if (die->sibling != NULL && level > 0)
22868     {
22869       dump_die_1 (f, level, max_level, die->sibling);
22870     }
22871 }
22872
22873 /* This is called from the pdie macro in gdbinit.in.
22874    It's not static so gcc will keep a copy callable from gdb.  */
22875
22876 void
22877 dump_die (struct die_info *die, int max_level)
22878 {
22879   dump_die_1 (gdb_stdlog, 0, max_level, die);
22880 }
22881
22882 static void
22883 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22884 {
22885   void **slot;
22886
22887   slot = htab_find_slot_with_hash (cu->die_hash, die,
22888                                    to_underlying (die->sect_off),
22889                                    INSERT);
22890
22891   *slot = die;
22892 }
22893
22894 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22895    required kind.  */
22896
22897 static sect_offset
22898 dwarf2_get_ref_die_offset (const struct attribute *attr)
22899 {
22900   if (attr_form_is_ref (attr))
22901     return (sect_offset) DW_UNSND (attr);
22902
22903   complaint (_("unsupported die ref attribute form: '%s'"),
22904              dwarf_form_name (attr->form));
22905   return {};
22906 }
22907
22908 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22909  * the value held by the attribute is not constant.  */
22910
22911 static LONGEST
22912 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22913 {
22914   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22915     return DW_SND (attr);
22916   else if (attr->form == DW_FORM_udata
22917            || attr->form == DW_FORM_data1
22918            || attr->form == DW_FORM_data2
22919            || attr->form == DW_FORM_data4
22920            || attr->form == DW_FORM_data8)
22921     return DW_UNSND (attr);
22922   else
22923     {
22924       /* For DW_FORM_data16 see attr_form_is_constant.  */
22925       complaint (_("Attribute value is not a constant (%s)"),
22926                  dwarf_form_name (attr->form));
22927       return default_value;
22928     }
22929 }
22930
22931 /* Follow reference or signature attribute ATTR of SRC_DIE.
22932    On entry *REF_CU is the CU of SRC_DIE.
22933    On exit *REF_CU is the CU of the result.  */
22934
22935 static struct die_info *
22936 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22937                        struct dwarf2_cu **ref_cu)
22938 {
22939   struct die_info *die;
22940
22941   if (attr_form_is_ref (attr))
22942     die = follow_die_ref (src_die, attr, ref_cu);
22943   else if (attr->form == DW_FORM_ref_sig8)
22944     die = follow_die_sig (src_die, attr, ref_cu);
22945   else
22946     {
22947       dump_die_for_error (src_die);
22948       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22949              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22950     }
22951
22952   return die;
22953 }
22954
22955 /* Follow reference OFFSET.
22956    On entry *REF_CU is the CU of the source die referencing OFFSET.
22957    On exit *REF_CU is the CU of the result.
22958    Returns NULL if OFFSET is invalid.  */
22959
22960 static struct die_info *
22961 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22962                    struct dwarf2_cu **ref_cu)
22963 {
22964   struct die_info temp_die;
22965   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22966   struct dwarf2_per_objfile *dwarf2_per_objfile
22967     = cu->per_cu->dwarf2_per_objfile;
22968
22969   gdb_assert (cu->per_cu != NULL);
22970
22971   target_cu = cu;
22972
22973   if (cu->per_cu->is_debug_types)
22974     {
22975       /* .debug_types CUs cannot reference anything outside their CU.
22976          If they need to, they have to reference a signatured type via
22977          DW_FORM_ref_sig8.  */
22978       if (!offset_in_cu_p (&cu->header, sect_off))
22979         return NULL;
22980     }
22981   else if (offset_in_dwz != cu->per_cu->is_dwz
22982            || !offset_in_cu_p (&cu->header, sect_off))
22983     {
22984       struct dwarf2_per_cu_data *per_cu;
22985
22986       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22987                                                  dwarf2_per_objfile);
22988
22989       /* If necessary, add it to the queue and load its DIEs.  */
22990       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22991         load_full_comp_unit (per_cu, false, cu->language);
22992
22993       target_cu = per_cu->cu;
22994     }
22995   else if (cu->dies == NULL)
22996     {
22997       /* We're loading full DIEs during partial symbol reading.  */
22998       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22999       load_full_comp_unit (cu->per_cu, false, language_minimal);
23000     }
23001
23002   *ref_cu = target_cu;
23003   temp_die.sect_off = sect_off;
23004   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23005                                                   &temp_die,
23006                                                   to_underlying (sect_off));
23007 }
23008
23009 /* Follow reference attribute ATTR of SRC_DIE.
23010    On entry *REF_CU is the CU of SRC_DIE.
23011    On exit *REF_CU is the CU of the result.  */
23012
23013 static struct die_info *
23014 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23015                 struct dwarf2_cu **ref_cu)
23016 {
23017   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23018   struct dwarf2_cu *cu = *ref_cu;
23019   struct die_info *die;
23020
23021   die = follow_die_offset (sect_off,
23022                            (attr->form == DW_FORM_GNU_ref_alt
23023                             || cu->per_cu->is_dwz),
23024                            ref_cu);
23025   if (!die)
23026     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23027            "at %s [in module %s]"),
23028            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23029            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23030
23031   return die;
23032 }
23033
23034 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23035    Returned value is intended for DW_OP_call*.  Returned
23036    dwarf2_locexpr_baton->data has lifetime of
23037    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23038
23039 struct dwarf2_locexpr_baton
23040 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23041                                struct dwarf2_per_cu_data *per_cu,
23042                                CORE_ADDR (*get_frame_pc) (void *baton),
23043                                void *baton, bool resolve_abstract_p)
23044 {
23045   struct dwarf2_cu *cu;
23046   struct die_info *die;
23047   struct attribute *attr;
23048   struct dwarf2_locexpr_baton retval;
23049   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23050   struct objfile *objfile = dwarf2_per_objfile->objfile;
23051
23052   if (per_cu->cu == NULL)
23053     load_cu (per_cu, false);
23054   cu = per_cu->cu;
23055   if (cu == NULL)
23056     {
23057       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23058          Instead just throw an error, not much else we can do.  */
23059       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23060              sect_offset_str (sect_off), objfile_name (objfile));
23061     }
23062
23063   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23064   if (!die)
23065     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23066            sect_offset_str (sect_off), objfile_name (objfile));
23067
23068   attr = dwarf2_attr (die, DW_AT_location, cu);
23069   if (!attr && resolve_abstract_p
23070       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23071           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23072     {
23073       CORE_ADDR pc = (*get_frame_pc) (baton);
23074
23075       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23076         {
23077           if (!cand->parent
23078               || cand->parent->tag != DW_TAG_subprogram)
23079             continue;
23080
23081           CORE_ADDR pc_low, pc_high;
23082           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23083           if (pc_low == ((CORE_ADDR) -1)
23084               || !(pc_low <= pc && pc < pc_high))
23085             continue;
23086
23087           die = cand;
23088           attr = dwarf2_attr (die, DW_AT_location, cu);
23089           break;
23090         }
23091     }
23092
23093   if (!attr)
23094     {
23095       /* DWARF: "If there is no such attribute, then there is no effect.".
23096          DATA is ignored if SIZE is 0.  */
23097
23098       retval.data = NULL;
23099       retval.size = 0;
23100     }
23101   else if (attr_form_is_section_offset (attr))
23102     {
23103       struct dwarf2_loclist_baton loclist_baton;
23104       CORE_ADDR pc = (*get_frame_pc) (baton);
23105       size_t size;
23106
23107       fill_in_loclist_baton (cu, &loclist_baton, attr);
23108
23109       retval.data = dwarf2_find_location_expression (&loclist_baton,
23110                                                      &size, pc);
23111       retval.size = size;
23112     }
23113   else
23114     {
23115       if (!attr_form_is_block (attr))
23116         error (_("Dwarf Error: DIE at %s referenced in module %s "
23117                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23118                sect_offset_str (sect_off), objfile_name (objfile));
23119
23120       retval.data = DW_BLOCK (attr)->data;
23121       retval.size = DW_BLOCK (attr)->size;
23122     }
23123   retval.per_cu = cu->per_cu;
23124
23125   age_cached_comp_units (dwarf2_per_objfile);
23126
23127   return retval;
23128 }
23129
23130 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23131    offset.  */
23132
23133 struct dwarf2_locexpr_baton
23134 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23135                              struct dwarf2_per_cu_data *per_cu,
23136                              CORE_ADDR (*get_frame_pc) (void *baton),
23137                              void *baton)
23138 {
23139   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23140
23141   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23142 }
23143
23144 /* Write a constant of a given type as target-ordered bytes into
23145    OBSTACK.  */
23146
23147 static const gdb_byte *
23148 write_constant_as_bytes (struct obstack *obstack,
23149                          enum bfd_endian byte_order,
23150                          struct type *type,
23151                          ULONGEST value,
23152                          LONGEST *len)
23153 {
23154   gdb_byte *result;
23155
23156   *len = TYPE_LENGTH (type);
23157   result = (gdb_byte *) obstack_alloc (obstack, *len);
23158   store_unsigned_integer (result, *len, byte_order, value);
23159
23160   return result;
23161 }
23162
23163 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23164    pointer to the constant bytes and set LEN to the length of the
23165    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23166    does not have a DW_AT_const_value, return NULL.  */
23167
23168 const gdb_byte *
23169 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23170                              struct dwarf2_per_cu_data *per_cu,
23171                              struct obstack *obstack,
23172                              LONGEST *len)
23173 {
23174   struct dwarf2_cu *cu;
23175   struct die_info *die;
23176   struct attribute *attr;
23177   const gdb_byte *result = NULL;
23178   struct type *type;
23179   LONGEST value;
23180   enum bfd_endian byte_order;
23181   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23182
23183   if (per_cu->cu == NULL)
23184     load_cu (per_cu, false);
23185   cu = per_cu->cu;
23186   if (cu == NULL)
23187     {
23188       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23189          Instead just throw an error, not much else we can do.  */
23190       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23191              sect_offset_str (sect_off), objfile_name (objfile));
23192     }
23193
23194   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23195   if (!die)
23196     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23197            sect_offset_str (sect_off), objfile_name (objfile));
23198
23199   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23200   if (attr == NULL)
23201     return NULL;
23202
23203   byte_order = (bfd_big_endian (objfile->obfd)
23204                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23205
23206   switch (attr->form)
23207     {
23208     case DW_FORM_addr:
23209     case DW_FORM_GNU_addr_index:
23210       {
23211         gdb_byte *tem;
23212
23213         *len = cu->header.addr_size;
23214         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23215         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23216         result = tem;
23217       }
23218       break;
23219     case DW_FORM_string:
23220     case DW_FORM_strp:
23221     case DW_FORM_GNU_str_index:
23222     case DW_FORM_GNU_strp_alt:
23223       /* DW_STRING is already allocated on the objfile obstack, point
23224          directly to it.  */
23225       result = (const gdb_byte *) DW_STRING (attr);
23226       *len = strlen (DW_STRING (attr));
23227       break;
23228     case DW_FORM_block1:
23229     case DW_FORM_block2:
23230     case DW_FORM_block4:
23231     case DW_FORM_block:
23232     case DW_FORM_exprloc:
23233     case DW_FORM_data16:
23234       result = DW_BLOCK (attr)->data;
23235       *len = DW_BLOCK (attr)->size;
23236       break;
23237
23238       /* The DW_AT_const_value attributes are supposed to carry the
23239          symbol's value "represented as it would be on the target
23240          architecture."  By the time we get here, it's already been
23241          converted to host endianness, so we just need to sign- or
23242          zero-extend it as appropriate.  */
23243     case DW_FORM_data1:
23244       type = die_type (die, cu);
23245       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23246       if (result == NULL)
23247         result = write_constant_as_bytes (obstack, byte_order,
23248                                           type, value, len);
23249       break;
23250     case DW_FORM_data2:
23251       type = die_type (die, cu);
23252       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23253       if (result == NULL)
23254         result = write_constant_as_bytes (obstack, byte_order,
23255                                           type, value, len);
23256       break;
23257     case DW_FORM_data4:
23258       type = die_type (die, cu);
23259       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23260       if (result == NULL)
23261         result = write_constant_as_bytes (obstack, byte_order,
23262                                           type, value, len);
23263       break;
23264     case DW_FORM_data8:
23265       type = die_type (die, cu);
23266       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23267       if (result == NULL)
23268         result = write_constant_as_bytes (obstack, byte_order,
23269                                           type, value, len);
23270       break;
23271
23272     case DW_FORM_sdata:
23273     case DW_FORM_implicit_const:
23274       type = die_type (die, cu);
23275       result = write_constant_as_bytes (obstack, byte_order,
23276                                         type, DW_SND (attr), len);
23277       break;
23278
23279     case DW_FORM_udata:
23280       type = die_type (die, cu);
23281       result = write_constant_as_bytes (obstack, byte_order,
23282                                         type, DW_UNSND (attr), len);
23283       break;
23284
23285     default:
23286       complaint (_("unsupported const value attribute form: '%s'"),
23287                  dwarf_form_name (attr->form));
23288       break;
23289     }
23290
23291   return result;
23292 }
23293
23294 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23295    valid type for this die is found.  */
23296
23297 struct type *
23298 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23299                                 struct dwarf2_per_cu_data *per_cu)
23300 {
23301   struct dwarf2_cu *cu;
23302   struct die_info *die;
23303
23304   if (per_cu->cu == NULL)
23305     load_cu (per_cu, false);
23306   cu = per_cu->cu;
23307   if (!cu)
23308     return NULL;
23309
23310   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23311   if (!die)
23312     return NULL;
23313
23314   return die_type (die, cu);
23315 }
23316
23317 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23318    PER_CU.  */
23319
23320 struct type *
23321 dwarf2_get_die_type (cu_offset die_offset,
23322                      struct dwarf2_per_cu_data *per_cu)
23323 {
23324   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23325   return get_die_type_at_offset (die_offset_sect, per_cu);
23326 }
23327
23328 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23329    On entry *REF_CU is the CU of SRC_DIE.
23330    On exit *REF_CU is the CU of the result.
23331    Returns NULL if the referenced DIE isn't found.  */
23332
23333 static struct die_info *
23334 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23335                   struct dwarf2_cu **ref_cu)
23336 {
23337   struct die_info temp_die;
23338   struct dwarf2_cu *sig_cu;
23339   struct die_info *die;
23340
23341   /* While it might be nice to assert sig_type->type == NULL here,
23342      we can get here for DW_AT_imported_declaration where we need
23343      the DIE not the type.  */
23344
23345   /* If necessary, add it to the queue and load its DIEs.  */
23346
23347   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23348     read_signatured_type (sig_type);
23349
23350   sig_cu = sig_type->per_cu.cu;
23351   gdb_assert (sig_cu != NULL);
23352   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23353   temp_die.sect_off = sig_type->type_offset_in_section;
23354   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23355                                                  to_underlying (temp_die.sect_off));
23356   if (die)
23357     {
23358       struct dwarf2_per_objfile *dwarf2_per_objfile
23359         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23360
23361       /* For .gdb_index version 7 keep track of included TUs.
23362          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23363       if (dwarf2_per_objfile->index_table != NULL
23364           && dwarf2_per_objfile->index_table->version <= 7)
23365         {
23366           VEC_safe_push (dwarf2_per_cu_ptr,
23367                          (*ref_cu)->per_cu->imported_symtabs,
23368                          sig_cu->per_cu);
23369         }
23370
23371       *ref_cu = sig_cu;
23372       return die;
23373     }
23374
23375   return NULL;
23376 }
23377
23378 /* Follow signatured type referenced by ATTR in SRC_DIE.
23379    On entry *REF_CU is the CU of SRC_DIE.
23380    On exit *REF_CU is the CU of the result.
23381    The result is the DIE of the type.
23382    If the referenced type cannot be found an error is thrown.  */
23383
23384 static struct die_info *
23385 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23386                 struct dwarf2_cu **ref_cu)
23387 {
23388   ULONGEST signature = DW_SIGNATURE (attr);
23389   struct signatured_type *sig_type;
23390   struct die_info *die;
23391
23392   gdb_assert (attr->form == DW_FORM_ref_sig8);
23393
23394   sig_type = lookup_signatured_type (*ref_cu, signature);
23395   /* sig_type will be NULL if the signatured type is missing from
23396      the debug info.  */
23397   if (sig_type == NULL)
23398     {
23399       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23400                " from DIE at %s [in module %s]"),
23401              hex_string (signature), sect_offset_str (src_die->sect_off),
23402              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23403     }
23404
23405   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23406   if (die == NULL)
23407     {
23408       dump_die_for_error (src_die);
23409       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23410                " from DIE at %s [in module %s]"),
23411              hex_string (signature), sect_offset_str (src_die->sect_off),
23412              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23413     }
23414
23415   return die;
23416 }
23417
23418 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23419    reading in and processing the type unit if necessary.  */
23420
23421 static struct type *
23422 get_signatured_type (struct die_info *die, ULONGEST signature,
23423                      struct dwarf2_cu *cu)
23424 {
23425   struct dwarf2_per_objfile *dwarf2_per_objfile
23426     = cu->per_cu->dwarf2_per_objfile;
23427   struct signatured_type *sig_type;
23428   struct dwarf2_cu *type_cu;
23429   struct die_info *type_die;
23430   struct type *type;
23431
23432   sig_type = lookup_signatured_type (cu, signature);
23433   /* sig_type will be NULL if the signatured type is missing from
23434      the debug info.  */
23435   if (sig_type == NULL)
23436     {
23437       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23438                    " from DIE at %s [in module %s]"),
23439                  hex_string (signature), sect_offset_str (die->sect_off),
23440                  objfile_name (dwarf2_per_objfile->objfile));
23441       return build_error_marker_type (cu, die);
23442     }
23443
23444   /* If we already know the type we're done.  */
23445   if (sig_type->type != NULL)
23446     return sig_type->type;
23447
23448   type_cu = cu;
23449   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23450   if (type_die != NULL)
23451     {
23452       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23453          is created.  This is important, for example, because for c++ classes
23454          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23455       type = read_type_die (type_die, type_cu);
23456       if (type == NULL)
23457         {
23458           complaint (_("Dwarf Error: Cannot build signatured type %s"
23459                        " referenced from DIE at %s [in module %s]"),
23460                      hex_string (signature), sect_offset_str (die->sect_off),
23461                      objfile_name (dwarf2_per_objfile->objfile));
23462           type = build_error_marker_type (cu, die);
23463         }
23464     }
23465   else
23466     {
23467       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23468                    " from DIE at %s [in module %s]"),
23469                  hex_string (signature), sect_offset_str (die->sect_off),
23470                  objfile_name (dwarf2_per_objfile->objfile));
23471       type = build_error_marker_type (cu, die);
23472     }
23473   sig_type->type = type;
23474
23475   return type;
23476 }
23477
23478 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23479    reading in and processing the type unit if necessary.  */
23480
23481 static struct type *
23482 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23483                           struct dwarf2_cu *cu) /* ARI: editCase function */
23484 {
23485   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23486   if (attr_form_is_ref (attr))
23487     {
23488       struct dwarf2_cu *type_cu = cu;
23489       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23490
23491       return read_type_die (type_die, type_cu);
23492     }
23493   else if (attr->form == DW_FORM_ref_sig8)
23494     {
23495       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23496     }
23497   else
23498     {
23499       struct dwarf2_per_objfile *dwarf2_per_objfile
23500         = cu->per_cu->dwarf2_per_objfile;
23501
23502       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23503                    " at %s [in module %s]"),
23504                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23505                  objfile_name (dwarf2_per_objfile->objfile));
23506       return build_error_marker_type (cu, die);
23507     }
23508 }
23509
23510 /* Load the DIEs associated with type unit PER_CU into memory.  */
23511
23512 static void
23513 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23514 {
23515   struct signatured_type *sig_type;
23516
23517   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23518   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23519
23520   /* We have the per_cu, but we need the signatured_type.
23521      Fortunately this is an easy translation.  */
23522   gdb_assert (per_cu->is_debug_types);
23523   sig_type = (struct signatured_type *) per_cu;
23524
23525   gdb_assert (per_cu->cu == NULL);
23526
23527   read_signatured_type (sig_type);
23528
23529   gdb_assert (per_cu->cu != NULL);
23530 }
23531
23532 /* die_reader_func for read_signatured_type.
23533    This is identical to load_full_comp_unit_reader,
23534    but is kept separate for now.  */
23535
23536 static void
23537 read_signatured_type_reader (const struct die_reader_specs *reader,
23538                              const gdb_byte *info_ptr,
23539                              struct die_info *comp_unit_die,
23540                              int has_children,
23541                              void *data)
23542 {
23543   struct dwarf2_cu *cu = reader->cu;
23544
23545   gdb_assert (cu->die_hash == NULL);
23546   cu->die_hash =
23547     htab_create_alloc_ex (cu->header.length / 12,
23548                           die_hash,
23549                           die_eq,
23550                           NULL,
23551                           &cu->comp_unit_obstack,
23552                           hashtab_obstack_allocate,
23553                           dummy_obstack_deallocate);
23554
23555   if (has_children)
23556     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23557                                                   &info_ptr, comp_unit_die);
23558   cu->dies = comp_unit_die;
23559   /* comp_unit_die is not stored in die_hash, no need.  */
23560
23561   /* We try not to read any attributes in this function, because not
23562      all CUs needed for references have been loaded yet, and symbol
23563      table processing isn't initialized.  But we have to set the CU language,
23564      or we won't be able to build types correctly.
23565      Similarly, if we do not read the producer, we can not apply
23566      producer-specific interpretation.  */
23567   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23568 }
23569
23570 /* Read in a signatured type and build its CU and DIEs.
23571    If the type is a stub for the real type in a DWO file,
23572    read in the real type from the DWO file as well.  */
23573
23574 static void
23575 read_signatured_type (struct signatured_type *sig_type)
23576 {
23577   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23578
23579   gdb_assert (per_cu->is_debug_types);
23580   gdb_assert (per_cu->cu == NULL);
23581
23582   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23583                            read_signatured_type_reader, NULL);
23584   sig_type->per_cu.tu_read = 1;
23585 }
23586
23587 /* Decode simple location descriptions.
23588    Given a pointer to a dwarf block that defines a location, compute
23589    the location and return the value.
23590
23591    NOTE drow/2003-11-18: This function is called in two situations
23592    now: for the address of static or global variables (partial symbols
23593    only) and for offsets into structures which are expected to be
23594    (more or less) constant.  The partial symbol case should go away,
23595    and only the constant case should remain.  That will let this
23596    function complain more accurately.  A few special modes are allowed
23597    without complaint for global variables (for instance, global
23598    register values and thread-local values).
23599
23600    A location description containing no operations indicates that the
23601    object is optimized out.  The return value is 0 for that case.
23602    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23603    callers will only want a very basic result and this can become a
23604    complaint.
23605
23606    Note that stack[0] is unused except as a default error return.  */
23607
23608 static CORE_ADDR
23609 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23610 {
23611   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23612   size_t i;
23613   size_t size = blk->size;
23614   const gdb_byte *data = blk->data;
23615   CORE_ADDR stack[64];
23616   int stacki;
23617   unsigned int bytes_read, unsnd;
23618   gdb_byte op;
23619
23620   i = 0;
23621   stacki = 0;
23622   stack[stacki] = 0;
23623   stack[++stacki] = 0;
23624
23625   while (i < size)
23626     {
23627       op = data[i++];
23628       switch (op)
23629         {
23630         case DW_OP_lit0:
23631         case DW_OP_lit1:
23632         case DW_OP_lit2:
23633         case DW_OP_lit3:
23634         case DW_OP_lit4:
23635         case DW_OP_lit5:
23636         case DW_OP_lit6:
23637         case DW_OP_lit7:
23638         case DW_OP_lit8:
23639         case DW_OP_lit9:
23640         case DW_OP_lit10:
23641         case DW_OP_lit11:
23642         case DW_OP_lit12:
23643         case DW_OP_lit13:
23644         case DW_OP_lit14:
23645         case DW_OP_lit15:
23646         case DW_OP_lit16:
23647         case DW_OP_lit17:
23648         case DW_OP_lit18:
23649         case DW_OP_lit19:
23650         case DW_OP_lit20:
23651         case DW_OP_lit21:
23652         case DW_OP_lit22:
23653         case DW_OP_lit23:
23654         case DW_OP_lit24:
23655         case DW_OP_lit25:
23656         case DW_OP_lit26:
23657         case DW_OP_lit27:
23658         case DW_OP_lit28:
23659         case DW_OP_lit29:
23660         case DW_OP_lit30:
23661         case DW_OP_lit31:
23662           stack[++stacki] = op - DW_OP_lit0;
23663           break;
23664
23665         case DW_OP_reg0:
23666         case DW_OP_reg1:
23667         case DW_OP_reg2:
23668         case DW_OP_reg3:
23669         case DW_OP_reg4:
23670         case DW_OP_reg5:
23671         case DW_OP_reg6:
23672         case DW_OP_reg7:
23673         case DW_OP_reg8:
23674         case DW_OP_reg9:
23675         case DW_OP_reg10:
23676         case DW_OP_reg11:
23677         case DW_OP_reg12:
23678         case DW_OP_reg13:
23679         case DW_OP_reg14:
23680         case DW_OP_reg15:
23681         case DW_OP_reg16:
23682         case DW_OP_reg17:
23683         case DW_OP_reg18:
23684         case DW_OP_reg19:
23685         case DW_OP_reg20:
23686         case DW_OP_reg21:
23687         case DW_OP_reg22:
23688         case DW_OP_reg23:
23689         case DW_OP_reg24:
23690         case DW_OP_reg25:
23691         case DW_OP_reg26:
23692         case DW_OP_reg27:
23693         case DW_OP_reg28:
23694         case DW_OP_reg29:
23695         case DW_OP_reg30:
23696         case DW_OP_reg31:
23697           stack[++stacki] = op - DW_OP_reg0;
23698           if (i < size)
23699             dwarf2_complex_location_expr_complaint ();
23700           break;
23701
23702         case DW_OP_regx:
23703           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23704           i += bytes_read;
23705           stack[++stacki] = unsnd;
23706           if (i < size)
23707             dwarf2_complex_location_expr_complaint ();
23708           break;
23709
23710         case DW_OP_addr:
23711           stack[++stacki] = read_address (objfile->obfd, &data[i],
23712                                           cu, &bytes_read);
23713           i += bytes_read;
23714           break;
23715
23716         case DW_OP_const1u:
23717           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23718           i += 1;
23719           break;
23720
23721         case DW_OP_const1s:
23722           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23723           i += 1;
23724           break;
23725
23726         case DW_OP_const2u:
23727           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23728           i += 2;
23729           break;
23730
23731         case DW_OP_const2s:
23732           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23733           i += 2;
23734           break;
23735
23736         case DW_OP_const4u:
23737           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23738           i += 4;
23739           break;
23740
23741         case DW_OP_const4s:
23742           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23743           i += 4;
23744           break;
23745
23746         case DW_OP_const8u:
23747           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23748           i += 8;
23749           break;
23750
23751         case DW_OP_constu:
23752           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23753                                                   &bytes_read);
23754           i += bytes_read;
23755           break;
23756
23757         case DW_OP_consts:
23758           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23759           i += bytes_read;
23760           break;
23761
23762         case DW_OP_dup:
23763           stack[stacki + 1] = stack[stacki];
23764           stacki++;
23765           break;
23766
23767         case DW_OP_plus:
23768           stack[stacki - 1] += stack[stacki];
23769           stacki--;
23770           break;
23771
23772         case DW_OP_plus_uconst:
23773           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23774                                                  &bytes_read);
23775           i += bytes_read;
23776           break;
23777
23778         case DW_OP_minus:
23779           stack[stacki - 1] -= stack[stacki];
23780           stacki--;
23781           break;
23782
23783         case DW_OP_deref:
23784           /* If we're not the last op, then we definitely can't encode
23785              this using GDB's address_class enum.  This is valid for partial
23786              global symbols, although the variable's address will be bogus
23787              in the psymtab.  */
23788           if (i < size)
23789             dwarf2_complex_location_expr_complaint ();
23790           break;
23791
23792         case DW_OP_GNU_push_tls_address:
23793         case DW_OP_form_tls_address:
23794           /* The top of the stack has the offset from the beginning
23795              of the thread control block at which the variable is located.  */
23796           /* Nothing should follow this operator, so the top of stack would
23797              be returned.  */
23798           /* This is valid for partial global symbols, but the variable's
23799              address will be bogus in the psymtab.  Make it always at least
23800              non-zero to not look as a variable garbage collected by linker
23801              which have DW_OP_addr 0.  */
23802           if (i < size)
23803             dwarf2_complex_location_expr_complaint ();
23804           stack[stacki]++;
23805           break;
23806
23807         case DW_OP_GNU_uninit:
23808           break;
23809
23810         case DW_OP_GNU_addr_index:
23811         case DW_OP_GNU_const_index:
23812           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23813                                                          &bytes_read);
23814           i += bytes_read;
23815           break;
23816
23817         default:
23818           {
23819             const char *name = get_DW_OP_name (op);
23820
23821             if (name)
23822               complaint (_("unsupported stack op: '%s'"),
23823                          name);
23824             else
23825               complaint (_("unsupported stack op: '%02x'"),
23826                          op);
23827           }
23828
23829           return (stack[stacki]);
23830         }
23831
23832       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23833          outside of the allocated space.  Also enforce minimum>0.  */
23834       if (stacki >= ARRAY_SIZE (stack) - 1)
23835         {
23836           complaint (_("location description stack overflow"));
23837           return 0;
23838         }
23839
23840       if (stacki <= 0)
23841         {
23842           complaint (_("location description stack underflow"));
23843           return 0;
23844         }
23845     }
23846   return (stack[stacki]);
23847 }
23848
23849 /* memory allocation interface */
23850
23851 static struct dwarf_block *
23852 dwarf_alloc_block (struct dwarf2_cu *cu)
23853 {
23854   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23855 }
23856
23857 static struct die_info *
23858 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23859 {
23860   struct die_info *die;
23861   size_t size = sizeof (struct die_info);
23862
23863   if (num_attrs > 1)
23864     size += (num_attrs - 1) * sizeof (struct attribute);
23865
23866   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23867   memset (die, 0, sizeof (struct die_info));
23868   return (die);
23869 }
23870
23871 \f
23872 /* Macro support.  */
23873
23874 /* Return file name relative to the compilation directory of file number I in
23875    *LH's file name table.  The result is allocated using xmalloc; the caller is
23876    responsible for freeing it.  */
23877
23878 static char *
23879 file_file_name (int file, struct line_header *lh)
23880 {
23881   /* Is the file number a valid index into the line header's file name
23882      table?  Remember that file numbers start with one, not zero.  */
23883   if (1 <= file && file <= lh->file_names.size ())
23884     {
23885       const file_entry &fe = lh->file_names[file - 1];
23886
23887       if (!IS_ABSOLUTE_PATH (fe.name))
23888         {
23889           const char *dir = fe.include_dir (lh);
23890           if (dir != NULL)
23891             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23892         }
23893       return xstrdup (fe.name);
23894     }
23895   else
23896     {
23897       /* The compiler produced a bogus file number.  We can at least
23898          record the macro definitions made in the file, even if we
23899          won't be able to find the file by name.  */
23900       char fake_name[80];
23901
23902       xsnprintf (fake_name, sizeof (fake_name),
23903                  "<bad macro file number %d>", file);
23904
23905       complaint (_("bad file number in macro information (%d)"),
23906                  file);
23907
23908       return xstrdup (fake_name);
23909     }
23910 }
23911
23912 /* Return the full name of file number I in *LH's file name table.
23913    Use COMP_DIR as the name of the current directory of the
23914    compilation.  The result is allocated using xmalloc; the caller is
23915    responsible for freeing it.  */
23916 static char *
23917 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23918 {
23919   /* Is the file number a valid index into the line header's file name
23920      table?  Remember that file numbers start with one, not zero.  */
23921   if (1 <= file && file <= lh->file_names.size ())
23922     {
23923       char *relative = file_file_name (file, lh);
23924
23925       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23926         return relative;
23927       return reconcat (relative, comp_dir, SLASH_STRING,
23928                        relative, (char *) NULL);
23929     }
23930   else
23931     return file_file_name (file, lh);
23932 }
23933
23934
23935 static struct macro_source_file *
23936 macro_start_file (struct dwarf2_cu *cu,
23937                   int file, int line,
23938                   struct macro_source_file *current_file,
23939                   struct line_header *lh)
23940 {
23941   /* File name relative to the compilation directory of this source file.  */
23942   char *file_name = file_file_name (file, lh);
23943
23944   if (! current_file)
23945     {
23946       /* Note: We don't create a macro table for this compilation unit
23947          at all until we actually get a filename.  */
23948       struct macro_table *macro_table = cu->builder->get_macro_table ();
23949
23950       /* If we have no current file, then this must be the start_file
23951          directive for the compilation unit's main source file.  */
23952       current_file = macro_set_main (macro_table, file_name);
23953       macro_define_special (macro_table);
23954     }
23955   else
23956     current_file = macro_include (current_file, line, file_name);
23957
23958   xfree (file_name);
23959
23960   return current_file;
23961 }
23962
23963 static const char *
23964 consume_improper_spaces (const char *p, const char *body)
23965 {
23966   if (*p == ' ')
23967     {
23968       complaint (_("macro definition contains spaces "
23969                    "in formal argument list:\n`%s'"),
23970                  body);
23971
23972       while (*p == ' ')
23973         p++;
23974     }
23975
23976   return p;
23977 }
23978
23979
23980 static void
23981 parse_macro_definition (struct macro_source_file *file, int line,
23982                         const char *body)
23983 {
23984   const char *p;
23985
23986   /* The body string takes one of two forms.  For object-like macro
23987      definitions, it should be:
23988
23989         <macro name> " " <definition>
23990
23991      For function-like macro definitions, it should be:
23992
23993         <macro name> "() " <definition>
23994      or
23995         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23996
23997      Spaces may appear only where explicitly indicated, and in the
23998      <definition>.
23999
24000      The Dwarf 2 spec says that an object-like macro's name is always
24001      followed by a space, but versions of GCC around March 2002 omit
24002      the space when the macro's definition is the empty string.
24003
24004      The Dwarf 2 spec says that there should be no spaces between the
24005      formal arguments in a function-like macro's formal argument list,
24006      but versions of GCC around March 2002 include spaces after the
24007      commas.  */
24008
24009
24010   /* Find the extent of the macro name.  The macro name is terminated
24011      by either a space or null character (for an object-like macro) or
24012      an opening paren (for a function-like macro).  */
24013   for (p = body; *p; p++)
24014     if (*p == ' ' || *p == '(')
24015       break;
24016
24017   if (*p == ' ' || *p == '\0')
24018     {
24019       /* It's an object-like macro.  */
24020       int name_len = p - body;
24021       char *name = savestring (body, name_len);
24022       const char *replacement;
24023
24024       if (*p == ' ')
24025         replacement = body + name_len + 1;
24026       else
24027         {
24028           dwarf2_macro_malformed_definition_complaint (body);
24029           replacement = body + name_len;
24030         }
24031
24032       macro_define_object (file, line, name, replacement);
24033
24034       xfree (name);
24035     }
24036   else if (*p == '(')
24037     {
24038       /* It's a function-like macro.  */
24039       char *name = savestring (body, p - body);
24040       int argc = 0;
24041       int argv_size = 1;
24042       char **argv = XNEWVEC (char *, argv_size);
24043
24044       p++;
24045
24046       p = consume_improper_spaces (p, body);
24047
24048       /* Parse the formal argument list.  */
24049       while (*p && *p != ')')
24050         {
24051           /* Find the extent of the current argument name.  */
24052           const char *arg_start = p;
24053
24054           while (*p && *p != ',' && *p != ')' && *p != ' ')
24055             p++;
24056
24057           if (! *p || p == arg_start)
24058             dwarf2_macro_malformed_definition_complaint (body);
24059           else
24060             {
24061               /* Make sure argv has room for the new argument.  */
24062               if (argc >= argv_size)
24063                 {
24064                   argv_size *= 2;
24065                   argv = XRESIZEVEC (char *, argv, argv_size);
24066                 }
24067
24068               argv[argc++] = savestring (arg_start, p - arg_start);
24069             }
24070
24071           p = consume_improper_spaces (p, body);
24072
24073           /* Consume the comma, if present.  */
24074           if (*p == ',')
24075             {
24076               p++;
24077
24078               p = consume_improper_spaces (p, body);
24079             }
24080         }
24081
24082       if (*p == ')')
24083         {
24084           p++;
24085
24086           if (*p == ' ')
24087             /* Perfectly formed definition, no complaints.  */
24088             macro_define_function (file, line, name,
24089                                    argc, (const char **) argv,
24090                                    p + 1);
24091           else if (*p == '\0')
24092             {
24093               /* Complain, but do define it.  */
24094               dwarf2_macro_malformed_definition_complaint (body);
24095               macro_define_function (file, line, name,
24096                                      argc, (const char **) argv,
24097                                      p);
24098             }
24099           else
24100             /* Just complain.  */
24101             dwarf2_macro_malformed_definition_complaint (body);
24102         }
24103       else
24104         /* Just complain.  */
24105         dwarf2_macro_malformed_definition_complaint (body);
24106
24107       xfree (name);
24108       {
24109         int i;
24110
24111         for (i = 0; i < argc; i++)
24112           xfree (argv[i]);
24113       }
24114       xfree (argv);
24115     }
24116   else
24117     dwarf2_macro_malformed_definition_complaint (body);
24118 }
24119
24120 /* Skip some bytes from BYTES according to the form given in FORM.
24121    Returns the new pointer.  */
24122
24123 static const gdb_byte *
24124 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24125                  enum dwarf_form form,
24126                  unsigned int offset_size,
24127                  struct dwarf2_section_info *section)
24128 {
24129   unsigned int bytes_read;
24130
24131   switch (form)
24132     {
24133     case DW_FORM_data1:
24134     case DW_FORM_flag:
24135       ++bytes;
24136       break;
24137
24138     case DW_FORM_data2:
24139       bytes += 2;
24140       break;
24141
24142     case DW_FORM_data4:
24143       bytes += 4;
24144       break;
24145
24146     case DW_FORM_data8:
24147       bytes += 8;
24148       break;
24149
24150     case DW_FORM_data16:
24151       bytes += 16;
24152       break;
24153
24154     case DW_FORM_string:
24155       read_direct_string (abfd, bytes, &bytes_read);
24156       bytes += bytes_read;
24157       break;
24158
24159     case DW_FORM_sec_offset:
24160     case DW_FORM_strp:
24161     case DW_FORM_GNU_strp_alt:
24162       bytes += offset_size;
24163       break;
24164
24165     case DW_FORM_block:
24166       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24167       bytes += bytes_read;
24168       break;
24169
24170     case DW_FORM_block1:
24171       bytes += 1 + read_1_byte (abfd, bytes);
24172       break;
24173     case DW_FORM_block2:
24174       bytes += 2 + read_2_bytes (abfd, bytes);
24175       break;
24176     case DW_FORM_block4:
24177       bytes += 4 + read_4_bytes (abfd, bytes);
24178       break;
24179
24180     case DW_FORM_sdata:
24181     case DW_FORM_udata:
24182     case DW_FORM_GNU_addr_index:
24183     case DW_FORM_GNU_str_index:
24184       bytes = gdb_skip_leb128 (bytes, buffer_end);
24185       if (bytes == NULL)
24186         {
24187           dwarf2_section_buffer_overflow_complaint (section);
24188           return NULL;
24189         }
24190       break;
24191
24192     case DW_FORM_implicit_const:
24193       break;
24194
24195     default:
24196       {
24197         complaint (_("invalid form 0x%x in `%s'"),
24198                    form, get_section_name (section));
24199         return NULL;
24200       }
24201     }
24202
24203   return bytes;
24204 }
24205
24206 /* A helper for dwarf_decode_macros that handles skipping an unknown
24207    opcode.  Returns an updated pointer to the macro data buffer; or,
24208    on error, issues a complaint and returns NULL.  */
24209
24210 static const gdb_byte *
24211 skip_unknown_opcode (unsigned int opcode,
24212                      const gdb_byte **opcode_definitions,
24213                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24214                      bfd *abfd,
24215                      unsigned int offset_size,
24216                      struct dwarf2_section_info *section)
24217 {
24218   unsigned int bytes_read, i;
24219   unsigned long arg;
24220   const gdb_byte *defn;
24221
24222   if (opcode_definitions[opcode] == NULL)
24223     {
24224       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24225                  opcode);
24226       return NULL;
24227     }
24228
24229   defn = opcode_definitions[opcode];
24230   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24231   defn += bytes_read;
24232
24233   for (i = 0; i < arg; ++i)
24234     {
24235       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24236                                  (enum dwarf_form) defn[i], offset_size,
24237                                  section);
24238       if (mac_ptr == NULL)
24239         {
24240           /* skip_form_bytes already issued the complaint.  */
24241           return NULL;
24242         }
24243     }
24244
24245   return mac_ptr;
24246 }
24247
24248 /* A helper function which parses the header of a macro section.
24249    If the macro section is the extended (for now called "GNU") type,
24250    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24251    the header, or issues a complaint and returns NULL on error.  */
24252
24253 static const gdb_byte *
24254 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24255                           bfd *abfd,
24256                           const gdb_byte *mac_ptr,
24257                           unsigned int *offset_size,
24258                           int section_is_gnu)
24259 {
24260   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24261
24262   if (section_is_gnu)
24263     {
24264       unsigned int version, flags;
24265
24266       version = read_2_bytes (abfd, mac_ptr);
24267       if (version != 4 && version != 5)
24268         {
24269           complaint (_("unrecognized version `%d' in .debug_macro section"),
24270                      version);
24271           return NULL;
24272         }
24273       mac_ptr += 2;
24274
24275       flags = read_1_byte (abfd, mac_ptr);
24276       ++mac_ptr;
24277       *offset_size = (flags & 1) ? 8 : 4;
24278
24279       if ((flags & 2) != 0)
24280         /* We don't need the line table offset.  */
24281         mac_ptr += *offset_size;
24282
24283       /* Vendor opcode descriptions.  */
24284       if ((flags & 4) != 0)
24285         {
24286           unsigned int i, count;
24287
24288           count = read_1_byte (abfd, mac_ptr);
24289           ++mac_ptr;
24290           for (i = 0; i < count; ++i)
24291             {
24292               unsigned int opcode, bytes_read;
24293               unsigned long arg;
24294
24295               opcode = read_1_byte (abfd, mac_ptr);
24296               ++mac_ptr;
24297               opcode_definitions[opcode] = mac_ptr;
24298               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24299               mac_ptr += bytes_read;
24300               mac_ptr += arg;
24301             }
24302         }
24303     }
24304
24305   return mac_ptr;
24306 }
24307
24308 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24309    including DW_MACRO_import.  */
24310
24311 static void
24312 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24313                           bfd *abfd,
24314                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24315                           struct macro_source_file *current_file,
24316                           struct line_header *lh,
24317                           struct dwarf2_section_info *section,
24318                           int section_is_gnu, int section_is_dwz,
24319                           unsigned int offset_size,
24320                           htab_t include_hash)
24321 {
24322   struct dwarf2_per_objfile *dwarf2_per_objfile
24323     = cu->per_cu->dwarf2_per_objfile;
24324   struct objfile *objfile = dwarf2_per_objfile->objfile;
24325   enum dwarf_macro_record_type macinfo_type;
24326   int at_commandline;
24327   const gdb_byte *opcode_definitions[256];
24328
24329   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24330                                       &offset_size, section_is_gnu);
24331   if (mac_ptr == NULL)
24332     {
24333       /* We already issued a complaint.  */
24334       return;
24335     }
24336
24337   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24338      GDB is still reading the definitions from command line.  First
24339      DW_MACINFO_start_file will need to be ignored as it was already executed
24340      to create CURRENT_FILE for the main source holding also the command line
24341      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24342      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24343
24344   at_commandline = 1;
24345
24346   do
24347     {
24348       /* Do we at least have room for a macinfo type byte?  */
24349       if (mac_ptr >= mac_end)
24350         {
24351           dwarf2_section_buffer_overflow_complaint (section);
24352           break;
24353         }
24354
24355       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24356       mac_ptr++;
24357
24358       /* Note that we rely on the fact that the corresponding GNU and
24359          DWARF constants are the same.  */
24360       DIAGNOSTIC_PUSH
24361       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24362       switch (macinfo_type)
24363         {
24364           /* A zero macinfo type indicates the end of the macro
24365              information.  */
24366         case 0:
24367           break;
24368
24369         case DW_MACRO_define:
24370         case DW_MACRO_undef:
24371         case DW_MACRO_define_strp:
24372         case DW_MACRO_undef_strp:
24373         case DW_MACRO_define_sup:
24374         case DW_MACRO_undef_sup:
24375           {
24376             unsigned int bytes_read;
24377             int line;
24378             const char *body;
24379             int is_define;
24380
24381             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24382             mac_ptr += bytes_read;
24383
24384             if (macinfo_type == DW_MACRO_define
24385                 || macinfo_type == DW_MACRO_undef)
24386               {
24387                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24388                 mac_ptr += bytes_read;
24389               }
24390             else
24391               {
24392                 LONGEST str_offset;
24393
24394                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24395                 mac_ptr += offset_size;
24396
24397                 if (macinfo_type == DW_MACRO_define_sup
24398                     || macinfo_type == DW_MACRO_undef_sup
24399                     || section_is_dwz)
24400                   {
24401                     struct dwz_file *dwz
24402                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24403
24404                     body = read_indirect_string_from_dwz (objfile,
24405                                                           dwz, str_offset);
24406                   }
24407                 else
24408                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24409                                                          abfd, str_offset);
24410               }
24411
24412             is_define = (macinfo_type == DW_MACRO_define
24413                          || macinfo_type == DW_MACRO_define_strp
24414                          || macinfo_type == DW_MACRO_define_sup);
24415             if (! current_file)
24416               {
24417                 /* DWARF violation as no main source is present.  */
24418                 complaint (_("debug info with no main source gives macro %s "
24419                              "on line %d: %s"),
24420                            is_define ? _("definition") : _("undefinition"),
24421                            line, body);
24422                 break;
24423               }
24424             if ((line == 0 && !at_commandline)
24425                 || (line != 0 && at_commandline))
24426               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24427                          at_commandline ? _("command-line") : _("in-file"),
24428                          is_define ? _("definition") : _("undefinition"),
24429                          line == 0 ? _("zero") : _("non-zero"), line, body);
24430
24431             if (is_define)
24432               parse_macro_definition (current_file, line, body);
24433             else
24434               {
24435                 gdb_assert (macinfo_type == DW_MACRO_undef
24436                             || macinfo_type == DW_MACRO_undef_strp
24437                             || macinfo_type == DW_MACRO_undef_sup);
24438                 macro_undef (current_file, line, body);
24439               }
24440           }
24441           break;
24442
24443         case DW_MACRO_start_file:
24444           {
24445             unsigned int bytes_read;
24446             int line, file;
24447
24448             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24449             mac_ptr += bytes_read;
24450             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24451             mac_ptr += bytes_read;
24452
24453             if ((line == 0 && !at_commandline)
24454                 || (line != 0 && at_commandline))
24455               complaint (_("debug info gives source %d included "
24456                            "from %s at %s line %d"),
24457                          file, at_commandline ? _("command-line") : _("file"),
24458                          line == 0 ? _("zero") : _("non-zero"), line);
24459
24460             if (at_commandline)
24461               {
24462                 /* This DW_MACRO_start_file was executed in the
24463                    pass one.  */
24464                 at_commandline = 0;
24465               }
24466             else
24467               current_file = macro_start_file (cu, file, line, current_file,
24468                                                lh);
24469           }
24470           break;
24471
24472         case DW_MACRO_end_file:
24473           if (! current_file)
24474             complaint (_("macro debug info has an unmatched "
24475                          "`close_file' directive"));
24476           else
24477             {
24478               current_file = current_file->included_by;
24479               if (! current_file)
24480                 {
24481                   enum dwarf_macro_record_type next_type;
24482
24483                   /* GCC circa March 2002 doesn't produce the zero
24484                      type byte marking the end of the compilation
24485                      unit.  Complain if it's not there, but exit no
24486                      matter what.  */
24487
24488                   /* Do we at least have room for a macinfo type byte?  */
24489                   if (mac_ptr >= mac_end)
24490                     {
24491                       dwarf2_section_buffer_overflow_complaint (section);
24492                       return;
24493                     }
24494
24495                   /* We don't increment mac_ptr here, so this is just
24496                      a look-ahead.  */
24497                   next_type
24498                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24499                                                                   mac_ptr);
24500                   if (next_type != 0)
24501                     complaint (_("no terminating 0-type entry for "
24502                                  "macros in `.debug_macinfo' section"));
24503
24504                   return;
24505                 }
24506             }
24507           break;
24508
24509         case DW_MACRO_import:
24510         case DW_MACRO_import_sup:
24511           {
24512             LONGEST offset;
24513             void **slot;
24514             bfd *include_bfd = abfd;
24515             struct dwarf2_section_info *include_section = section;
24516             const gdb_byte *include_mac_end = mac_end;
24517             int is_dwz = section_is_dwz;
24518             const gdb_byte *new_mac_ptr;
24519
24520             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24521             mac_ptr += offset_size;
24522
24523             if (macinfo_type == DW_MACRO_import_sup)
24524               {
24525                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24526
24527                 dwarf2_read_section (objfile, &dwz->macro);
24528
24529                 include_section = &dwz->macro;
24530                 include_bfd = get_section_bfd_owner (include_section);
24531                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24532                 is_dwz = 1;
24533               }
24534
24535             new_mac_ptr = include_section->buffer + offset;
24536             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24537
24538             if (*slot != NULL)
24539               {
24540                 /* This has actually happened; see
24541                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24542                 complaint (_("recursive DW_MACRO_import in "
24543                              ".debug_macro section"));
24544               }
24545             else
24546               {
24547                 *slot = (void *) new_mac_ptr;
24548
24549                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24550                                           include_mac_end, current_file, lh,
24551                                           section, section_is_gnu, is_dwz,
24552                                           offset_size, include_hash);
24553
24554                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24555               }
24556           }
24557           break;
24558
24559         case DW_MACINFO_vendor_ext:
24560           if (!section_is_gnu)
24561             {
24562               unsigned int bytes_read;
24563
24564               /* This reads the constant, but since we don't recognize
24565                  any vendor extensions, we ignore it.  */
24566               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24567               mac_ptr += bytes_read;
24568               read_direct_string (abfd, mac_ptr, &bytes_read);
24569               mac_ptr += bytes_read;
24570
24571               /* We don't recognize any vendor extensions.  */
24572               break;
24573             }
24574           /* FALLTHROUGH */
24575
24576         default:
24577           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24578                                          mac_ptr, mac_end, abfd, offset_size,
24579                                          section);
24580           if (mac_ptr == NULL)
24581             return;
24582           break;
24583         }
24584       DIAGNOSTIC_POP
24585     } while (macinfo_type != 0);
24586 }
24587
24588 static void
24589 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24590                      int section_is_gnu)
24591 {
24592   struct dwarf2_per_objfile *dwarf2_per_objfile
24593     = cu->per_cu->dwarf2_per_objfile;
24594   struct objfile *objfile = dwarf2_per_objfile->objfile;
24595   struct line_header *lh = cu->line_header;
24596   bfd *abfd;
24597   const gdb_byte *mac_ptr, *mac_end;
24598   struct macro_source_file *current_file = 0;
24599   enum dwarf_macro_record_type macinfo_type;
24600   unsigned int offset_size = cu->header.offset_size;
24601   const gdb_byte *opcode_definitions[256];
24602   void **slot;
24603   struct dwarf2_section_info *section;
24604   const char *section_name;
24605
24606   if (cu->dwo_unit != NULL)
24607     {
24608       if (section_is_gnu)
24609         {
24610           section = &cu->dwo_unit->dwo_file->sections.macro;
24611           section_name = ".debug_macro.dwo";
24612         }
24613       else
24614         {
24615           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24616           section_name = ".debug_macinfo.dwo";
24617         }
24618     }
24619   else
24620     {
24621       if (section_is_gnu)
24622         {
24623           section = &dwarf2_per_objfile->macro;
24624           section_name = ".debug_macro";
24625         }
24626       else
24627         {
24628           section = &dwarf2_per_objfile->macinfo;
24629           section_name = ".debug_macinfo";
24630         }
24631     }
24632
24633   dwarf2_read_section (objfile, section);
24634   if (section->buffer == NULL)
24635     {
24636       complaint (_("missing %s section"), section_name);
24637       return;
24638     }
24639   abfd = get_section_bfd_owner (section);
24640
24641   /* First pass: Find the name of the base filename.
24642      This filename is needed in order to process all macros whose definition
24643      (or undefinition) comes from the command line.  These macros are defined
24644      before the first DW_MACINFO_start_file entry, and yet still need to be
24645      associated to the base file.
24646
24647      To determine the base file name, we scan the macro definitions until we
24648      reach the first DW_MACINFO_start_file entry.  We then initialize
24649      CURRENT_FILE accordingly so that any macro definition found before the
24650      first DW_MACINFO_start_file can still be associated to the base file.  */
24651
24652   mac_ptr = section->buffer + offset;
24653   mac_end = section->buffer + section->size;
24654
24655   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24656                                       &offset_size, section_is_gnu);
24657   if (mac_ptr == NULL)
24658     {
24659       /* We already issued a complaint.  */
24660       return;
24661     }
24662
24663   do
24664     {
24665       /* Do we at least have room for a macinfo type byte?  */
24666       if (mac_ptr >= mac_end)
24667         {
24668           /* Complaint is printed during the second pass as GDB will probably
24669              stop the first pass earlier upon finding
24670              DW_MACINFO_start_file.  */
24671           break;
24672         }
24673
24674       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24675       mac_ptr++;
24676
24677       /* Note that we rely on the fact that the corresponding GNU and
24678          DWARF constants are the same.  */
24679       DIAGNOSTIC_PUSH
24680       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24681       switch (macinfo_type)
24682         {
24683           /* A zero macinfo type indicates the end of the macro
24684              information.  */
24685         case 0:
24686           break;
24687
24688         case DW_MACRO_define:
24689         case DW_MACRO_undef:
24690           /* Only skip the data by MAC_PTR.  */
24691           {
24692             unsigned int bytes_read;
24693
24694             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24695             mac_ptr += bytes_read;
24696             read_direct_string (abfd, mac_ptr, &bytes_read);
24697             mac_ptr += bytes_read;
24698           }
24699           break;
24700
24701         case DW_MACRO_start_file:
24702           {
24703             unsigned int bytes_read;
24704             int line, file;
24705
24706             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24707             mac_ptr += bytes_read;
24708             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24709             mac_ptr += bytes_read;
24710
24711             current_file = macro_start_file (cu, file, line, current_file, lh);
24712           }
24713           break;
24714
24715         case DW_MACRO_end_file:
24716           /* No data to skip by MAC_PTR.  */
24717           break;
24718
24719         case DW_MACRO_define_strp:
24720         case DW_MACRO_undef_strp:
24721         case DW_MACRO_define_sup:
24722         case DW_MACRO_undef_sup:
24723           {
24724             unsigned int bytes_read;
24725
24726             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24727             mac_ptr += bytes_read;
24728             mac_ptr += offset_size;
24729           }
24730           break;
24731
24732         case DW_MACRO_import:
24733         case DW_MACRO_import_sup:
24734           /* Note that, according to the spec, a transparent include
24735              chain cannot call DW_MACRO_start_file.  So, we can just
24736              skip this opcode.  */
24737           mac_ptr += offset_size;
24738           break;
24739
24740         case DW_MACINFO_vendor_ext:
24741           /* Only skip the data by MAC_PTR.  */
24742           if (!section_is_gnu)
24743             {
24744               unsigned int bytes_read;
24745
24746               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24747               mac_ptr += bytes_read;
24748               read_direct_string (abfd, mac_ptr, &bytes_read);
24749               mac_ptr += bytes_read;
24750             }
24751           /* FALLTHROUGH */
24752
24753         default:
24754           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24755                                          mac_ptr, mac_end, abfd, offset_size,
24756                                          section);
24757           if (mac_ptr == NULL)
24758             return;
24759           break;
24760         }
24761       DIAGNOSTIC_POP
24762     } while (macinfo_type != 0 && current_file == NULL);
24763
24764   /* Second pass: Process all entries.
24765
24766      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24767      command-line macro definitions/undefinitions.  This flag is unset when we
24768      reach the first DW_MACINFO_start_file entry.  */
24769
24770   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24771                                            htab_eq_pointer,
24772                                            NULL, xcalloc, xfree));
24773   mac_ptr = section->buffer + offset;
24774   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24775   *slot = (void *) mac_ptr;
24776   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24777                             current_file, lh, section,
24778                             section_is_gnu, 0, offset_size,
24779                             include_hash.get ());
24780 }
24781
24782 /* Check if the attribute's form is a DW_FORM_block*
24783    if so return true else false.  */
24784
24785 static int
24786 attr_form_is_block (const struct attribute *attr)
24787 {
24788   return (attr == NULL ? 0 :
24789       attr->form == DW_FORM_block1
24790       || attr->form == DW_FORM_block2
24791       || attr->form == DW_FORM_block4
24792       || attr->form == DW_FORM_block
24793       || attr->form == DW_FORM_exprloc);
24794 }
24795
24796 /* Return non-zero if ATTR's value is a section offset --- classes
24797    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24798    You may use DW_UNSND (attr) to retrieve such offsets.
24799
24800    Section 7.5.4, "Attribute Encodings", explains that no attribute
24801    may have a value that belongs to more than one of these classes; it
24802    would be ambiguous if we did, because we use the same forms for all
24803    of them.  */
24804
24805 static int
24806 attr_form_is_section_offset (const struct attribute *attr)
24807 {
24808   return (attr->form == DW_FORM_data4
24809           || attr->form == DW_FORM_data8
24810           || attr->form == DW_FORM_sec_offset);
24811 }
24812
24813 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24814    zero otherwise.  When this function returns true, you can apply
24815    dwarf2_get_attr_constant_value to it.
24816
24817    However, note that for some attributes you must check
24818    attr_form_is_section_offset before using this test.  DW_FORM_data4
24819    and DW_FORM_data8 are members of both the constant class, and of
24820    the classes that contain offsets into other debug sections
24821    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24822    that, if an attribute's can be either a constant or one of the
24823    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24824    taken as section offsets, not constants.
24825
24826    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24827    cannot handle that.  */
24828
24829 static int
24830 attr_form_is_constant (const struct attribute *attr)
24831 {
24832   switch (attr->form)
24833     {
24834     case DW_FORM_sdata:
24835     case DW_FORM_udata:
24836     case DW_FORM_data1:
24837     case DW_FORM_data2:
24838     case DW_FORM_data4:
24839     case DW_FORM_data8:
24840     case DW_FORM_implicit_const:
24841       return 1;
24842     default:
24843       return 0;
24844     }
24845 }
24846
24847
24848 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24849    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24850
24851 static int
24852 attr_form_is_ref (const struct attribute *attr)
24853 {
24854   switch (attr->form)
24855     {
24856     case DW_FORM_ref_addr:
24857     case DW_FORM_ref1:
24858     case DW_FORM_ref2:
24859     case DW_FORM_ref4:
24860     case DW_FORM_ref8:
24861     case DW_FORM_ref_udata:
24862     case DW_FORM_GNU_ref_alt:
24863       return 1;
24864     default:
24865       return 0;
24866     }
24867 }
24868
24869 /* Return the .debug_loc section to use for CU.
24870    For DWO files use .debug_loc.dwo.  */
24871
24872 static struct dwarf2_section_info *
24873 cu_debug_loc_section (struct dwarf2_cu *cu)
24874 {
24875   struct dwarf2_per_objfile *dwarf2_per_objfile
24876     = cu->per_cu->dwarf2_per_objfile;
24877
24878   if (cu->dwo_unit)
24879     {
24880       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24881       
24882       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24883     }
24884   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24885                                   : &dwarf2_per_objfile->loc);
24886 }
24887
24888 /* A helper function that fills in a dwarf2_loclist_baton.  */
24889
24890 static void
24891 fill_in_loclist_baton (struct dwarf2_cu *cu,
24892                        struct dwarf2_loclist_baton *baton,
24893                        const struct attribute *attr)
24894 {
24895   struct dwarf2_per_objfile *dwarf2_per_objfile
24896     = cu->per_cu->dwarf2_per_objfile;
24897   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24898
24899   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24900
24901   baton->per_cu = cu->per_cu;
24902   gdb_assert (baton->per_cu);
24903   /* We don't know how long the location list is, but make sure we
24904      don't run off the edge of the section.  */
24905   baton->size = section->size - DW_UNSND (attr);
24906   baton->data = section->buffer + DW_UNSND (attr);
24907   baton->base_address = cu->base_address;
24908   baton->from_dwo = cu->dwo_unit != NULL;
24909 }
24910
24911 static void
24912 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24913                              struct dwarf2_cu *cu, int is_block)
24914 {
24915   struct dwarf2_per_objfile *dwarf2_per_objfile
24916     = cu->per_cu->dwarf2_per_objfile;
24917   struct objfile *objfile = dwarf2_per_objfile->objfile;
24918   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24919
24920   if (attr_form_is_section_offset (attr)
24921       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24922          the section.  If so, fall through to the complaint in the
24923          other branch.  */
24924       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24925     {
24926       struct dwarf2_loclist_baton *baton;
24927
24928       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24929
24930       fill_in_loclist_baton (cu, baton, attr);
24931
24932       if (cu->base_known == 0)
24933         complaint (_("Location list used without "
24934                      "specifying the CU base address."));
24935
24936       SYMBOL_ACLASS_INDEX (sym) = (is_block
24937                                    ? dwarf2_loclist_block_index
24938                                    : dwarf2_loclist_index);
24939       SYMBOL_LOCATION_BATON (sym) = baton;
24940     }
24941   else
24942     {
24943       struct dwarf2_locexpr_baton *baton;
24944
24945       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24946       baton->per_cu = cu->per_cu;
24947       gdb_assert (baton->per_cu);
24948
24949       if (attr_form_is_block (attr))
24950         {
24951           /* Note that we're just copying the block's data pointer
24952              here, not the actual data.  We're still pointing into the
24953              info_buffer for SYM's objfile; right now we never release
24954              that buffer, but when we do clean up properly this may
24955              need to change.  */
24956           baton->size = DW_BLOCK (attr)->size;
24957           baton->data = DW_BLOCK (attr)->data;
24958         }
24959       else
24960         {
24961           dwarf2_invalid_attrib_class_complaint ("location description",
24962                                                  SYMBOL_NATURAL_NAME (sym));
24963           baton->size = 0;
24964         }
24965
24966       SYMBOL_ACLASS_INDEX (sym) = (is_block
24967                                    ? dwarf2_locexpr_block_index
24968                                    : dwarf2_locexpr_index);
24969       SYMBOL_LOCATION_BATON (sym) = baton;
24970     }
24971 }
24972
24973 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24974    came from a separate debuginfo file, then the master objfile is
24975    returned.  */
24976
24977 struct objfile *
24978 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24979 {
24980   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24981
24982   /* Return the master objfile, so that we can report and look up the
24983      correct file containing this variable.  */
24984   if (objfile->separate_debug_objfile_backlink)
24985     objfile = objfile->separate_debug_objfile_backlink;
24986
24987   return objfile;
24988 }
24989
24990 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24991    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24992    CU_HEADERP first.  */
24993
24994 static const struct comp_unit_head *
24995 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24996                        struct dwarf2_per_cu_data *per_cu)
24997 {
24998   const gdb_byte *info_ptr;
24999
25000   if (per_cu->cu)
25001     return &per_cu->cu->header;
25002
25003   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25004
25005   memset (cu_headerp, 0, sizeof (*cu_headerp));
25006   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25007                        rcuh_kind::COMPILE);
25008
25009   return cu_headerp;
25010 }
25011
25012 /* Return the address size given in the compilation unit header for CU.  */
25013
25014 int
25015 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25016 {
25017   struct comp_unit_head cu_header_local;
25018   const struct comp_unit_head *cu_headerp;
25019
25020   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25021
25022   return cu_headerp->addr_size;
25023 }
25024
25025 /* Return the offset size given in the compilation unit header for CU.  */
25026
25027 int
25028 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25029 {
25030   struct comp_unit_head cu_header_local;
25031   const struct comp_unit_head *cu_headerp;
25032
25033   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25034
25035   return cu_headerp->offset_size;
25036 }
25037
25038 /* See its dwarf2loc.h declaration.  */
25039
25040 int
25041 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25042 {
25043   struct comp_unit_head cu_header_local;
25044   const struct comp_unit_head *cu_headerp;
25045
25046   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25047
25048   if (cu_headerp->version == 2)
25049     return cu_headerp->addr_size;
25050   else
25051     return cu_headerp->offset_size;
25052 }
25053
25054 /* Return the text offset of the CU.  The returned offset comes from
25055    this CU's objfile.  If this objfile came from a separate debuginfo
25056    file, then the offset may be different from the corresponding
25057    offset in the parent objfile.  */
25058
25059 CORE_ADDR
25060 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25061 {
25062   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25063
25064   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25065 }
25066
25067 /* Return DWARF version number of PER_CU.  */
25068
25069 short
25070 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25071 {
25072   return per_cu->dwarf_version;
25073 }
25074
25075 /* Locate the .debug_info compilation unit from CU's objfile which contains
25076    the DIE at OFFSET.  Raises an error on failure.  */
25077
25078 static struct dwarf2_per_cu_data *
25079 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25080                                   unsigned int offset_in_dwz,
25081                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25082 {
25083   struct dwarf2_per_cu_data *this_cu;
25084   int low, high;
25085   const sect_offset *cu_off;
25086
25087   low = 0;
25088   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25089   while (high > low)
25090     {
25091       struct dwarf2_per_cu_data *mid_cu;
25092       int mid = low + (high - low) / 2;
25093
25094       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25095       cu_off = &mid_cu->sect_off;
25096       if (mid_cu->is_dwz > offset_in_dwz
25097           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25098         high = mid;
25099       else
25100         low = mid + 1;
25101     }
25102   gdb_assert (low == high);
25103   this_cu = dwarf2_per_objfile->all_comp_units[low];
25104   cu_off = &this_cu->sect_off;
25105   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25106     {
25107       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25108         error (_("Dwarf Error: could not find partial DIE containing "
25109                "offset %s [in module %s]"),
25110                sect_offset_str (sect_off),
25111                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25112
25113       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25114                   <= sect_off);
25115       return dwarf2_per_objfile->all_comp_units[low-1];
25116     }
25117   else
25118     {
25119       this_cu = dwarf2_per_objfile->all_comp_units[low];
25120       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25121           && sect_off >= this_cu->sect_off + this_cu->length)
25122         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25123       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25124       return this_cu;
25125     }
25126 }
25127
25128 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25129
25130 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25131   : per_cu (per_cu_),
25132     mark (0),
25133     has_loclist (0),
25134     checked_producer (0),
25135     producer_is_gxx_lt_4_6 (0),
25136     producer_is_gcc_lt_4_3 (0),
25137     producer_is_icc_lt_14 (0),
25138     producer_is_codewarrior (false),
25139     processing_has_namespace_info (0)
25140 {
25141   per_cu->cu = this;
25142 }
25143
25144 /* Destroy a dwarf2_cu.  */
25145
25146 dwarf2_cu::~dwarf2_cu ()
25147 {
25148   per_cu->cu = NULL;
25149 }
25150
25151 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25152
25153 static void
25154 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25155                        enum language pretend_language)
25156 {
25157   struct attribute *attr;
25158
25159   /* Set the language we're debugging.  */
25160   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25161   if (attr)
25162     set_cu_language (DW_UNSND (attr), cu);
25163   else
25164     {
25165       cu->language = pretend_language;
25166       cu->language_defn = language_def (cu->language);
25167     }
25168
25169   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25170 }
25171
25172 /* Increase the age counter on each cached compilation unit, and free
25173    any that are too old.  */
25174
25175 static void
25176 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25177 {
25178   struct dwarf2_per_cu_data *per_cu, **last_chain;
25179
25180   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25181   per_cu = dwarf2_per_objfile->read_in_chain;
25182   while (per_cu != NULL)
25183     {
25184       per_cu->cu->last_used ++;
25185       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25186         dwarf2_mark (per_cu->cu);
25187       per_cu = per_cu->cu->read_in_chain;
25188     }
25189
25190   per_cu = dwarf2_per_objfile->read_in_chain;
25191   last_chain = &dwarf2_per_objfile->read_in_chain;
25192   while (per_cu != NULL)
25193     {
25194       struct dwarf2_per_cu_data *next_cu;
25195
25196       next_cu = per_cu->cu->read_in_chain;
25197
25198       if (!per_cu->cu->mark)
25199         {
25200           delete per_cu->cu;
25201           *last_chain = next_cu;
25202         }
25203       else
25204         last_chain = &per_cu->cu->read_in_chain;
25205
25206       per_cu = next_cu;
25207     }
25208 }
25209
25210 /* Remove a single compilation unit from the cache.  */
25211
25212 static void
25213 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25214 {
25215   struct dwarf2_per_cu_data *per_cu, **last_chain;
25216   struct dwarf2_per_objfile *dwarf2_per_objfile
25217     = target_per_cu->dwarf2_per_objfile;
25218
25219   per_cu = dwarf2_per_objfile->read_in_chain;
25220   last_chain = &dwarf2_per_objfile->read_in_chain;
25221   while (per_cu != NULL)
25222     {
25223       struct dwarf2_per_cu_data *next_cu;
25224
25225       next_cu = per_cu->cu->read_in_chain;
25226
25227       if (per_cu == target_per_cu)
25228         {
25229           delete per_cu->cu;
25230           per_cu->cu = NULL;
25231           *last_chain = next_cu;
25232           break;
25233         }
25234       else
25235         last_chain = &per_cu->cu->read_in_chain;
25236
25237       per_cu = next_cu;
25238     }
25239 }
25240
25241 /* Cleanup function for the dwarf2_per_objfile data.  */
25242
25243 static void
25244 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25245 {
25246   struct dwarf2_per_objfile *dwarf2_per_objfile
25247     = static_cast<struct dwarf2_per_objfile *> (datum);
25248
25249   delete dwarf2_per_objfile;
25250 }
25251
25252 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25253    We store these in a hash table separate from the DIEs, and preserve them
25254    when the DIEs are flushed out of cache.
25255
25256    The CU "per_cu" pointer is needed because offset alone is not enough to
25257    uniquely identify the type.  A file may have multiple .debug_types sections,
25258    or the type may come from a DWO file.  Furthermore, while it's more logical
25259    to use per_cu->section+offset, with Fission the section with the data is in
25260    the DWO file but we don't know that section at the point we need it.
25261    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25262    because we can enter the lookup routine, get_die_type_at_offset, from
25263    outside this file, and thus won't necessarily have PER_CU->cu.
25264    Fortunately, PER_CU is stable for the life of the objfile.  */
25265
25266 struct dwarf2_per_cu_offset_and_type
25267 {
25268   const struct dwarf2_per_cu_data *per_cu;
25269   sect_offset sect_off;
25270   struct type *type;
25271 };
25272
25273 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25274
25275 static hashval_t
25276 per_cu_offset_and_type_hash (const void *item)
25277 {
25278   const struct dwarf2_per_cu_offset_and_type *ofs
25279     = (const struct dwarf2_per_cu_offset_and_type *) item;
25280
25281   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25282 }
25283
25284 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25285
25286 static int
25287 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25288 {
25289   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25290     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25291   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25292     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25293
25294   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25295           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25296 }
25297
25298 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25299    table if necessary.  For convenience, return TYPE.
25300
25301    The DIEs reading must have careful ordering to:
25302     * Not cause infite loops trying to read in DIEs as a prerequisite for
25303       reading current DIE.
25304     * Not trying to dereference contents of still incompletely read in types
25305       while reading in other DIEs.
25306     * Enable referencing still incompletely read in types just by a pointer to
25307       the type without accessing its fields.
25308
25309    Therefore caller should follow these rules:
25310      * Try to fetch any prerequisite types we may need to build this DIE type
25311        before building the type and calling set_die_type.
25312      * After building type call set_die_type for current DIE as soon as
25313        possible before fetching more types to complete the current type.
25314      * Make the type as complete as possible before fetching more types.  */
25315
25316 static struct type *
25317 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25318 {
25319   struct dwarf2_per_objfile *dwarf2_per_objfile
25320     = cu->per_cu->dwarf2_per_objfile;
25321   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25322   struct objfile *objfile = dwarf2_per_objfile->objfile;
25323   struct attribute *attr;
25324   struct dynamic_prop prop;
25325
25326   /* For Ada types, make sure that the gnat-specific data is always
25327      initialized (if not already set).  There are a few types where
25328      we should not be doing so, because the type-specific area is
25329      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25330      where the type-specific area is used to store the floatformat).
25331      But this is not a problem, because the gnat-specific information
25332      is actually not needed for these types.  */
25333   if (need_gnat_info (cu)
25334       && TYPE_CODE (type) != TYPE_CODE_FUNC
25335       && TYPE_CODE (type) != TYPE_CODE_FLT
25336       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25337       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25338       && TYPE_CODE (type) != TYPE_CODE_METHOD
25339       && !HAVE_GNAT_AUX_INFO (type))
25340     INIT_GNAT_SPECIFIC (type);
25341
25342   /* Read DW_AT_allocated and set in type.  */
25343   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25344   if (attr_form_is_block (attr))
25345     {
25346       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25347         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25348     }
25349   else if (attr != NULL)
25350     {
25351       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25352                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25353                  sect_offset_str (die->sect_off));
25354     }
25355
25356   /* Read DW_AT_associated and set in type.  */
25357   attr = dwarf2_attr (die, DW_AT_associated, cu);
25358   if (attr_form_is_block (attr))
25359     {
25360       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25361         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25362     }
25363   else if (attr != NULL)
25364     {
25365       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25366                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25367                  sect_offset_str (die->sect_off));
25368     }
25369
25370   /* Read DW_AT_data_location and set in type.  */
25371   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25372   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25373     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25374
25375   if (dwarf2_per_objfile->die_type_hash == NULL)
25376     {
25377       dwarf2_per_objfile->die_type_hash =
25378         htab_create_alloc_ex (127,
25379                               per_cu_offset_and_type_hash,
25380                               per_cu_offset_and_type_eq,
25381                               NULL,
25382                               &objfile->objfile_obstack,
25383                               hashtab_obstack_allocate,
25384                               dummy_obstack_deallocate);
25385     }
25386
25387   ofs.per_cu = cu->per_cu;
25388   ofs.sect_off = die->sect_off;
25389   ofs.type = type;
25390   slot = (struct dwarf2_per_cu_offset_and_type **)
25391     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25392   if (*slot)
25393     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25394                sect_offset_str (die->sect_off));
25395   *slot = XOBNEW (&objfile->objfile_obstack,
25396                   struct dwarf2_per_cu_offset_and_type);
25397   **slot = ofs;
25398   return type;
25399 }
25400
25401 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25402    or return NULL if the die does not have a saved type.  */
25403
25404 static struct type *
25405 get_die_type_at_offset (sect_offset sect_off,
25406                         struct dwarf2_per_cu_data *per_cu)
25407 {
25408   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25409   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25410
25411   if (dwarf2_per_objfile->die_type_hash == NULL)
25412     return NULL;
25413
25414   ofs.per_cu = per_cu;
25415   ofs.sect_off = sect_off;
25416   slot = ((struct dwarf2_per_cu_offset_and_type *)
25417           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25418   if (slot)
25419     return slot->type;
25420   else
25421     return NULL;
25422 }
25423
25424 /* Look up the type for DIE in CU in die_type_hash,
25425    or return NULL if DIE does not have a saved type.  */
25426
25427 static struct type *
25428 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25429 {
25430   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25431 }
25432
25433 /* Add a dependence relationship from CU to REF_PER_CU.  */
25434
25435 static void
25436 dwarf2_add_dependence (struct dwarf2_cu *cu,
25437                        struct dwarf2_per_cu_data *ref_per_cu)
25438 {
25439   void **slot;
25440
25441   if (cu->dependencies == NULL)
25442     cu->dependencies
25443       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25444                               NULL, &cu->comp_unit_obstack,
25445                               hashtab_obstack_allocate,
25446                               dummy_obstack_deallocate);
25447
25448   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25449   if (*slot == NULL)
25450     *slot = ref_per_cu;
25451 }
25452
25453 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25454    Set the mark field in every compilation unit in the
25455    cache that we must keep because we are keeping CU.  */
25456
25457 static int
25458 dwarf2_mark_helper (void **slot, void *data)
25459 {
25460   struct dwarf2_per_cu_data *per_cu;
25461
25462   per_cu = (struct dwarf2_per_cu_data *) *slot;
25463
25464   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25465      reading of the chain.  As such dependencies remain valid it is not much
25466      useful to track and undo them during QUIT cleanups.  */
25467   if (per_cu->cu == NULL)
25468     return 1;
25469
25470   if (per_cu->cu->mark)
25471     return 1;
25472   per_cu->cu->mark = 1;
25473
25474   if (per_cu->cu->dependencies != NULL)
25475     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25476
25477   return 1;
25478 }
25479
25480 /* Set the mark field in CU and in every other compilation unit in the
25481    cache that we must keep because we are keeping CU.  */
25482
25483 static void
25484 dwarf2_mark (struct dwarf2_cu *cu)
25485 {
25486   if (cu->mark)
25487     return;
25488   cu->mark = 1;
25489   if (cu->dependencies != NULL)
25490     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25491 }
25492
25493 static void
25494 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25495 {
25496   while (per_cu)
25497     {
25498       per_cu->cu->mark = 0;
25499       per_cu = per_cu->cu->read_in_chain;
25500     }
25501 }
25502
25503 /* Trivial hash function for partial_die_info: the hash value of a DIE
25504    is its offset in .debug_info for this objfile.  */
25505
25506 static hashval_t
25507 partial_die_hash (const void *item)
25508 {
25509   const struct partial_die_info *part_die
25510     = (const struct partial_die_info *) item;
25511
25512   return to_underlying (part_die->sect_off);
25513 }
25514
25515 /* Trivial comparison function for partial_die_info structures: two DIEs
25516    are equal if they have the same offset.  */
25517
25518 static int
25519 partial_die_eq (const void *item_lhs, const void *item_rhs)
25520 {
25521   const struct partial_die_info *part_die_lhs
25522     = (const struct partial_die_info *) item_lhs;
25523   const struct partial_die_info *part_die_rhs
25524     = (const struct partial_die_info *) item_rhs;
25525
25526   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25527 }
25528
25529 struct cmd_list_element *set_dwarf_cmdlist;
25530 struct cmd_list_element *show_dwarf_cmdlist;
25531
25532 static void
25533 set_dwarf_cmd (const char *args, int from_tty)
25534 {
25535   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25536              gdb_stdout);
25537 }
25538
25539 static void
25540 show_dwarf_cmd (const char *args, int from_tty)
25541 {
25542   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25543 }
25544
25545 int dwarf_always_disassemble;
25546
25547 static void
25548 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25549                                struct cmd_list_element *c, const char *value)
25550 {
25551   fprintf_filtered (file,
25552                     _("Whether to always disassemble "
25553                       "DWARF expressions is %s.\n"),
25554                     value);
25555 }
25556
25557 static void
25558 show_check_physname (struct ui_file *file, int from_tty,
25559                      struct cmd_list_element *c, const char *value)
25560 {
25561   fprintf_filtered (file,
25562                     _("Whether to check \"physname\" is %s.\n"),
25563                     value);
25564 }
25565
25566 void
25567 _initialize_dwarf2_read (void)
25568 {
25569   dwarf2_objfile_data_key
25570     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25571
25572   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25573 Set DWARF specific variables.\n\
25574 Configure DWARF variables such as the cache size"),
25575                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25576                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25577
25578   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25579 Show DWARF specific variables\n\
25580 Show DWARF variables such as the cache size"),
25581                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25582                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25583
25584   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25585                             &dwarf_max_cache_age, _("\
25586 Set the upper bound on the age of cached DWARF compilation units."), _("\
25587 Show the upper bound on the age of cached DWARF compilation units."), _("\
25588 A higher limit means that cached compilation units will be stored\n\
25589 in memory longer, and more total memory will be used.  Zero disables\n\
25590 caching, which can slow down startup."),
25591                             NULL,
25592                             show_dwarf_max_cache_age,
25593                             &set_dwarf_cmdlist,
25594                             &show_dwarf_cmdlist);
25595
25596   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25597                            &dwarf_always_disassemble, _("\
25598 Set whether `info address' always disassembles DWARF expressions."), _("\
25599 Show whether `info address' always disassembles DWARF expressions."), _("\
25600 When enabled, DWARF expressions are always printed in an assembly-like\n\
25601 syntax.  When disabled, expressions will be printed in a more\n\
25602 conversational style, when possible."),
25603                            NULL,
25604                            show_dwarf_always_disassemble,
25605                            &set_dwarf_cmdlist,
25606                            &show_dwarf_cmdlist);
25607
25608   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25609 Set debugging of the DWARF reader."), _("\
25610 Show debugging of the DWARF reader."), _("\
25611 When enabled (non-zero), debugging messages are printed during DWARF\n\
25612 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25613 information.  A value greater than 1 provides more verbose information."),
25614                             NULL,
25615                             NULL,
25616                             &setdebuglist, &showdebuglist);
25617
25618   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25619 Set debugging of the DWARF DIE reader."), _("\
25620 Show debugging of the DWARF DIE reader."), _("\
25621 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25622 The value is the maximum depth to print."),
25623                              NULL,
25624                              NULL,
25625                              &setdebuglist, &showdebuglist);
25626
25627   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25628 Set debugging of the dwarf line reader."), _("\
25629 Show debugging of the dwarf line reader."), _("\
25630 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25631 A value of 1 (one) provides basic information.\n\
25632 A value greater than 1 provides more verbose information."),
25633                              NULL,
25634                              NULL,
25635                              &setdebuglist, &showdebuglist);
25636
25637   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25638 Set cross-checking of \"physname\" code against demangler."), _("\
25639 Show cross-checking of \"physname\" code against demangler."), _("\
25640 When enabled, GDB's internal \"physname\" code is checked against\n\
25641 the demangler."),
25642                            NULL, show_check_physname,
25643                            &setdebuglist, &showdebuglist);
25644
25645   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25646                            no_class, &use_deprecated_index_sections, _("\
25647 Set whether to use deprecated gdb_index sections."), _("\
25648 Show whether to use deprecated gdb_index sections."), _("\
25649 When enabled, deprecated .gdb_index sections are used anyway.\n\
25650 Normally they are ignored either because of a missing feature or\n\
25651 performance issue.\n\
25652 Warning: This option must be enabled before gdb reads the file."),
25653                            NULL,
25654                            NULL,
25655                            &setlist, &showlist);
25656
25657   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25658                                                         &dwarf2_locexpr_funcs);
25659   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25660                                                         &dwarf2_loclist_funcs);
25661
25662   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25663                                         &dwarf2_block_frame_base_locexpr_funcs);
25664   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25665                                         &dwarf2_block_frame_base_loclist_funcs);
25666
25667 #if GDB_SELF_TEST
25668   selftests::register_test ("dw2_expand_symtabs_matching",
25669                             selftests::dw2_expand_symtabs_matching::run_test);
25670 #endif
25671 }