[gdb/exp] Handle DW_OP_GNU_variable_value refs to abstract dies
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2018 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "dwarf2read.h"
33 #include "dwarf-index-cache.h"
34 #include "dwarf-index-common.h"
35 #include "bfd.h"
36 #include "elf-bfd.h"
37 #include "symtab.h"
38 #include "gdbtypes.h"
39 #include "objfiles.h"
40 #include "dwarf2.h"
41 #include "buildsym.h"
42 #include "demangle.h"
43 #include "gdb-demangle.h"
44 #include "expression.h"
45 #include "filenames.h"  /* for DOSish file names */
46 #include "macrotab.h"
47 #include "language.h"
48 #include "complaints.h"
49 #include "bcache.h"
50 #include "dwarf2expr.h"
51 #include "dwarf2loc.h"
52 #include "cp-support.h"
53 #include "hashtab.h"
54 #include "command.h"
55 #include "gdbcmd.h"
56 #include "block.h"
57 #include "addrmap.h"
58 #include "typeprint.h"
59 #include "psympriv.h"
60 #include <sys/stat.h>
61 #include "completer.h"
62 #include "vec.h"
63 #include "c-lang.h"
64 #include "go-lang.h"
65 #include "valprint.h"
66 #include "gdbcore.h" /* for gnutarget */
67 #include "gdb/gdb-index.h"
68 #include <ctype.h>
69 #include "gdb_bfd.h"
70 #include "f-lang.h"
71 #include "source.h"
72 #include "filestuff.h"
73 #include "build-id.h"
74 #include "namespace.h"
75 #include "common/gdb_unlinker.h"
76 #include "common/function-view.h"
77 #include "common/gdb_optional.h"
78 #include "common/underlying.h"
79 #include "common/byte-vector.h"
80 #include "common/hash_enum.h"
81 #include "filename-seen-cache.h"
82 #include "producer.h"
83 #include <fcntl.h>
84 #include <sys/types.h>
85 #include <algorithm>
86 #include <unordered_set>
87 #include <unordered_map>
88 #include "selftest.h"
89 #include <cmath>
90 #include <set>
91 #include <forward_list>
92 #include "rust-lang.h"
93 #include "common/pathstuff.h"
94
95 /* When == 1, print basic high level tracing messages.
96    When > 1, be more verbose.
97    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
98 static unsigned int dwarf_read_debug = 0;
99
100 /* When non-zero, dump DIEs after they are read in.  */
101 static unsigned int dwarf_die_debug = 0;
102
103 /* When non-zero, dump line number entries as they are read in.  */
104 static unsigned int dwarf_line_debug = 0;
105
106 /* When non-zero, cross-check physname against demangler.  */
107 static int check_physname = 0;
108
109 /* When non-zero, do not reject deprecated .gdb_index sections.  */
110 static int use_deprecated_index_sections = 0;
111
112 static const struct objfile_data *dwarf2_objfile_data_key;
113
114 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
115
116 static int dwarf2_locexpr_index;
117 static int dwarf2_loclist_index;
118 static int dwarf2_locexpr_block_index;
119 static int dwarf2_loclist_block_index;
120
121 /* An index into a (C++) symbol name component in a symbol name as
122    recorded in the mapped_index's symbol table.  For each C++ symbol
123    in the symbol table, we record one entry for the start of each
124    component in the symbol in a table of name components, and then
125    sort the table, in order to be able to binary search symbol names,
126    ignoring leading namespaces, both completion and regular look up.
127    For example, for symbol "A::B::C", we'll have an entry that points
128    to "A::B::C", another that points to "B::C", and another for "C".
129    Note that function symbols in GDB index have no parameter
130    information, just the function/method names.  You can convert a
131    name_component to a "const char *" using the
132    'mapped_index::symbol_name_at(offset_type)' method.  */
133
134 struct name_component
135 {
136   /* Offset in the symbol name where the component starts.  Stored as
137      a (32-bit) offset instead of a pointer to save memory and improve
138      locality on 64-bit architectures.  */
139   offset_type name_offset;
140
141   /* The symbol's index in the symbol and constant pool tables of a
142      mapped_index.  */
143   offset_type idx;
144 };
145
146 /* Base class containing bits shared by both .gdb_index and
147    .debug_name indexes.  */
148
149 struct mapped_index_base
150 {
151   mapped_index_base () = default;
152   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
153
154   /* The name_component table (a sorted vector).  See name_component's
155      description above.  */
156   std::vector<name_component> name_components;
157
158   /* How NAME_COMPONENTS is sorted.  */
159   enum case_sensitivity name_components_casing;
160
161   /* Return the number of names in the symbol table.  */
162   virtual size_t symbol_name_count () const = 0;
163
164   /* Get the name of the symbol at IDX in the symbol table.  */
165   virtual const char *symbol_name_at (offset_type idx) const = 0;
166
167   /* Return whether the name at IDX in the symbol table should be
168      ignored.  */
169   virtual bool symbol_name_slot_invalid (offset_type idx) const
170   {
171     return false;
172   }
173
174   /* Build the symbol name component sorted vector, if we haven't
175      yet.  */
176   void build_name_components ();
177
178   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
179      possible matches for LN_NO_PARAMS in the name component
180      vector.  */
181   std::pair<std::vector<name_component>::const_iterator,
182             std::vector<name_component>::const_iterator>
183     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
184
185   /* Prevent deleting/destroying via a base class pointer.  */
186 protected:
187   ~mapped_index_base() = default;
188 };
189
190 /* A description of the mapped index.  The file format is described in
191    a comment by the code that writes the index.  */
192 struct mapped_index final : public mapped_index_base
193 {
194   /* A slot/bucket in the symbol table hash.  */
195   struct symbol_table_slot
196   {
197     const offset_type name;
198     const offset_type vec;
199   };
200
201   /* Index data format version.  */
202   int version = 0;
203
204   /* The address table data.  */
205   gdb::array_view<const gdb_byte> address_table;
206
207   /* The symbol table, implemented as a hash table.  */
208   gdb::array_view<symbol_table_slot> symbol_table;
209
210   /* A pointer to the constant pool.  */
211   const char *constant_pool = nullptr;
212
213   bool symbol_name_slot_invalid (offset_type idx) const override
214   {
215     const auto &bucket = this->symbol_table[idx];
216     return bucket.name == 0 && bucket.vec;
217   }
218
219   /* Convenience method to get at the name of the symbol at IDX in the
220      symbol table.  */
221   const char *symbol_name_at (offset_type idx) const override
222   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
223
224   size_t symbol_name_count () const override
225   { return this->symbol_table.size (); }
226 };
227
228 /* A description of the mapped .debug_names.
229    Uninitialized map has CU_COUNT 0.  */
230 struct mapped_debug_names final : public mapped_index_base
231 {
232   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
233   : dwarf2_per_objfile (dwarf2_per_objfile_)
234   {}
235
236   struct dwarf2_per_objfile *dwarf2_per_objfile;
237   bfd_endian dwarf5_byte_order;
238   bool dwarf5_is_dwarf64;
239   bool augmentation_is_gdb;
240   uint8_t offset_size;
241   uint32_t cu_count = 0;
242   uint32_t tu_count, bucket_count, name_count;
243   const gdb_byte *cu_table_reordered, *tu_table_reordered;
244   const uint32_t *bucket_table_reordered, *hash_table_reordered;
245   const gdb_byte *name_table_string_offs_reordered;
246   const gdb_byte *name_table_entry_offs_reordered;
247   const gdb_byte *entry_pool;
248
249   struct index_val
250   {
251     ULONGEST dwarf_tag;
252     struct attr
253     {
254       /* Attribute name DW_IDX_*.  */
255       ULONGEST dw_idx;
256
257       /* Attribute form DW_FORM_*.  */
258       ULONGEST form;
259
260       /* Value if FORM is DW_FORM_implicit_const.  */
261       LONGEST implicit_const;
262     };
263     std::vector<attr> attr_vec;
264   };
265
266   std::unordered_map<ULONGEST, index_val> abbrev_map;
267
268   const char *namei_to_name (uint32_t namei) const;
269
270   /* Implementation of the mapped_index_base virtual interface, for
271      the name_components cache.  */
272
273   const char *symbol_name_at (offset_type idx) const override
274   { return namei_to_name (idx); }
275
276   size_t symbol_name_count () const override
277   { return this->name_count; }
278 };
279
280 /* See dwarf2read.h.  */
281
282 dwarf2_per_objfile *
283 get_dwarf2_per_objfile (struct objfile *objfile)
284 {
285   return ((struct dwarf2_per_objfile *)
286           objfile_data (objfile, dwarf2_objfile_data_key));
287 }
288
289 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
290
291 void
292 set_dwarf2_per_objfile (struct objfile *objfile,
293                         struct dwarf2_per_objfile *dwarf2_per_objfile)
294 {
295   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
296   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
297 }
298
299 /* Default names of the debugging sections.  */
300
301 /* Note that if the debugging section has been compressed, it might
302    have a name like .zdebug_info.  */
303
304 static const struct dwarf2_debug_sections dwarf2_elf_names =
305 {
306   { ".debug_info", ".zdebug_info" },
307   { ".debug_abbrev", ".zdebug_abbrev" },
308   { ".debug_line", ".zdebug_line" },
309   { ".debug_loc", ".zdebug_loc" },
310   { ".debug_loclists", ".zdebug_loclists" },
311   { ".debug_macinfo", ".zdebug_macinfo" },
312   { ".debug_macro", ".zdebug_macro" },
313   { ".debug_str", ".zdebug_str" },
314   { ".debug_line_str", ".zdebug_line_str" },
315   { ".debug_ranges", ".zdebug_ranges" },
316   { ".debug_rnglists", ".zdebug_rnglists" },
317   { ".debug_types", ".zdebug_types" },
318   { ".debug_addr", ".zdebug_addr" },
319   { ".debug_frame", ".zdebug_frame" },
320   { ".eh_frame", NULL },
321   { ".gdb_index", ".zgdb_index" },
322   { ".debug_names", ".zdebug_names" },
323   { ".debug_aranges", ".zdebug_aranges" },
324   23
325 };
326
327 /* List of DWO/DWP sections.  */
328
329 static const struct dwop_section_names
330 {
331   struct dwarf2_section_names abbrev_dwo;
332   struct dwarf2_section_names info_dwo;
333   struct dwarf2_section_names line_dwo;
334   struct dwarf2_section_names loc_dwo;
335   struct dwarf2_section_names loclists_dwo;
336   struct dwarf2_section_names macinfo_dwo;
337   struct dwarf2_section_names macro_dwo;
338   struct dwarf2_section_names str_dwo;
339   struct dwarf2_section_names str_offsets_dwo;
340   struct dwarf2_section_names types_dwo;
341   struct dwarf2_section_names cu_index;
342   struct dwarf2_section_names tu_index;
343 }
344 dwop_section_names =
345 {
346   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
347   { ".debug_info.dwo", ".zdebug_info.dwo" },
348   { ".debug_line.dwo", ".zdebug_line.dwo" },
349   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
350   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
351   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
352   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
353   { ".debug_str.dwo", ".zdebug_str.dwo" },
354   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
355   { ".debug_types.dwo", ".zdebug_types.dwo" },
356   { ".debug_cu_index", ".zdebug_cu_index" },
357   { ".debug_tu_index", ".zdebug_tu_index" },
358 };
359
360 /* local data types */
361
362 /* The data in a compilation unit header, after target2host
363    translation, looks like this.  */
364 struct comp_unit_head
365 {
366   unsigned int length;
367   short version;
368   unsigned char addr_size;
369   unsigned char signed_addr_p;
370   sect_offset abbrev_sect_off;
371
372   /* Size of file offsets; either 4 or 8.  */
373   unsigned int offset_size;
374
375   /* Size of the length field; either 4 or 12.  */
376   unsigned int initial_length_size;
377
378   enum dwarf_unit_type unit_type;
379
380   /* Offset to the first byte of this compilation unit header in the
381      .debug_info section, for resolving relative reference dies.  */
382   sect_offset sect_off;
383
384   /* Offset to first die in this cu from the start of the cu.
385      This will be the first byte following the compilation unit header.  */
386   cu_offset first_die_cu_offset;
387
388   /* 64-bit signature of this type unit - it is valid only for
389      UNIT_TYPE DW_UT_type.  */
390   ULONGEST signature;
391
392   /* For types, offset in the type's DIE of the type defined by this TU.  */
393   cu_offset type_cu_offset_in_tu;
394 };
395
396 /* Type used for delaying computation of method physnames.
397    See comments for compute_delayed_physnames.  */
398 struct delayed_method_info
399 {
400   /* The type to which the method is attached, i.e., its parent class.  */
401   struct type *type;
402
403   /* The index of the method in the type's function fieldlists.  */
404   int fnfield_index;
405
406   /* The index of the method in the fieldlist.  */
407   int index;
408
409   /* The name of the DIE.  */
410   const char *name;
411
412   /*  The DIE associated with this method.  */
413   struct die_info *die;
414 };
415
416 /* Internal state when decoding a particular compilation unit.  */
417 struct dwarf2_cu
418 {
419   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
420   ~dwarf2_cu ();
421
422   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
423
424   /* The header of the compilation unit.  */
425   struct comp_unit_head header {};
426
427   /* Base address of this compilation unit.  */
428   CORE_ADDR base_address = 0;
429
430   /* Non-zero if base_address has been set.  */
431   int base_known = 0;
432
433   /* The language we are debugging.  */
434   enum language language = language_unknown;
435   const struct language_defn *language_defn = nullptr;
436
437   const char *producer = nullptr;
438
439   /* The symtab builder for this CU.  This is only non-NULL when full
440      symbols are being read.  */
441   std::unique_ptr<buildsym_compunit> builder;
442
443   /* The generic symbol table building routines have separate lists for
444      file scope symbols and all all other scopes (local scopes).  So
445      we need to select the right one to pass to add_symbol_to_list().
446      We do it by keeping a pointer to the correct list in list_in_scope.
447
448      FIXME: The original dwarf code just treated the file scope as the
449      first local scope, and all other local scopes as nested local
450      scopes, and worked fine.  Check to see if we really need to
451      distinguish these in buildsym.c.  */
452   struct pending **list_in_scope = nullptr;
453
454   /* Hash table holding all the loaded partial DIEs
455      with partial_die->offset.SECT_OFF as hash.  */
456   htab_t partial_dies = nullptr;
457
458   /* Storage for things with the same lifetime as this read-in compilation
459      unit, including partial DIEs.  */
460   auto_obstack comp_unit_obstack;
461
462   /* When multiple dwarf2_cu structures are living in memory, this field
463      chains them all together, so that they can be released efficiently.
464      We will probably also want a generation counter so that most-recently-used
465      compilation units are cached...  */
466   struct dwarf2_per_cu_data *read_in_chain = nullptr;
467
468   /* Backlink to our per_cu entry.  */
469   struct dwarf2_per_cu_data *per_cu;
470
471   /* How many compilation units ago was this CU last referenced?  */
472   int last_used = 0;
473
474   /* A hash table of DIE cu_offset for following references with
475      die_info->offset.sect_off as hash.  */
476   htab_t die_hash = nullptr;
477
478   /* Full DIEs if read in.  */
479   struct die_info *dies = nullptr;
480
481   /* A set of pointers to dwarf2_per_cu_data objects for compilation
482      units referenced by this one.  Only set during full symbol processing;
483      partial symbol tables do not have dependencies.  */
484   htab_t dependencies = nullptr;
485
486   /* Header data from the line table, during full symbol processing.  */
487   struct line_header *line_header = nullptr;
488   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
489      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
490      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
491      to the line header as long as this DIE is being processed.  See
492      process_die_scope.  */
493   die_info *line_header_die_owner = nullptr;
494
495   /* A list of methods which need to have physnames computed
496      after all type information has been read.  */
497   std::vector<delayed_method_info> method_list;
498
499   /* To be copied to symtab->call_site_htab.  */
500   htab_t call_site_htab = nullptr;
501
502   /* Non-NULL if this CU came from a DWO file.
503      There is an invariant here that is important to remember:
504      Except for attributes copied from the top level DIE in the "main"
505      (or "stub") file in preparation for reading the DWO file
506      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
507      Either there isn't a DWO file (in which case this is NULL and the point
508      is moot), or there is and either we're not going to read it (in which
509      case this is NULL) or there is and we are reading it (in which case this
510      is non-NULL).  */
511   struct dwo_unit *dwo_unit = nullptr;
512
513   /* The DW_AT_addr_base attribute if present, zero otherwise
514      (zero is a valid value though).
515      Note this value comes from the Fission stub CU/TU's DIE.  */
516   ULONGEST addr_base = 0;
517
518   /* The DW_AT_ranges_base attribute if present, zero otherwise
519      (zero is a valid value though).
520      Note this value comes from the Fission stub CU/TU's DIE.
521      Also note that the value is zero in the non-DWO case so this value can
522      be used without needing to know whether DWO files are in use or not.
523      N.B. This does not apply to DW_AT_ranges appearing in
524      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
525      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
526      DW_AT_ranges_base *would* have to be applied, and we'd have to care
527      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
528   ULONGEST ranges_base = 0;
529
530   /* When reading debug info generated by older versions of rustc, we
531      have to rewrite some union types to be struct types with a
532      variant part.  This rewriting must be done after the CU is fully
533      read in, because otherwise at the point of rewriting some struct
534      type might not have been fully processed.  So, we keep a list of
535      all such types here and process them after expansion.  */
536   std::vector<struct type *> rust_unions;
537
538   /* Mark used when releasing cached dies.  */
539   unsigned int mark : 1;
540
541   /* This CU references .debug_loc.  See the symtab->locations_valid field.
542      This test is imperfect as there may exist optimized debug code not using
543      any location list and still facing inlining issues if handled as
544      unoptimized code.  For a future better test see GCC PR other/32998.  */
545   unsigned int has_loclist : 1;
546
547   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
548      if all the producer_is_* fields are valid.  This information is cached
549      because profiling CU expansion showed excessive time spent in
550      producer_is_gxx_lt_4_6.  */
551   unsigned int checked_producer : 1;
552   unsigned int producer_is_gxx_lt_4_6 : 1;
553   unsigned int producer_is_gcc_lt_4_3 : 1;
554   unsigned int producer_is_icc_lt_14 : 1;
555
556   /* When set, the file that we're processing is known to have
557      debugging info for C++ namespaces.  GCC 3.3.x did not produce
558      this information, but later versions do.  */
559
560   unsigned int processing_has_namespace_info : 1;
561
562   struct partial_die_info *find_partial_die (sect_offset sect_off);
563 };
564
565 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
566    This includes type_unit_group and quick_file_names.  */
567
568 struct stmt_list_hash
569 {
570   /* The DWO unit this table is from or NULL if there is none.  */
571   struct dwo_unit *dwo_unit;
572
573   /* Offset in .debug_line or .debug_line.dwo.  */
574   sect_offset line_sect_off;
575 };
576
577 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
578    an object of this type.  */
579
580 struct type_unit_group
581 {
582   /* dwarf2read.c's main "handle" on a TU symtab.
583      To simplify things we create an artificial CU that "includes" all the
584      type units using this stmt_list so that the rest of the code still has
585      a "per_cu" handle on the symtab.
586      This PER_CU is recognized by having no section.  */
587 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
588   struct dwarf2_per_cu_data per_cu;
589
590   /* The TUs that share this DW_AT_stmt_list entry.
591      This is added to while parsing type units to build partial symtabs,
592      and is deleted afterwards and not used again.  */
593   VEC (sig_type_ptr) *tus;
594
595   /* The compunit symtab.
596      Type units in a group needn't all be defined in the same source file,
597      so we create an essentially anonymous symtab as the compunit symtab.  */
598   struct compunit_symtab *compunit_symtab;
599
600   /* The data used to construct the hash key.  */
601   struct stmt_list_hash hash;
602
603   /* The number of symtabs from the line header.
604      The value here must match line_header.num_file_names.  */
605   unsigned int num_symtabs;
606
607   /* The symbol tables for this TU (obtained from the files listed in
608      DW_AT_stmt_list).
609      WARNING: The order of entries here must match the order of entries
610      in the line header.  After the first TU using this type_unit_group, the
611      line header for the subsequent TUs is recreated from this.  This is done
612      because we need to use the same symtabs for each TU using the same
613      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
614      there's no guarantee the line header doesn't have duplicate entries.  */
615   struct symtab **symtabs;
616 };
617
618 /* These sections are what may appear in a (real or virtual) DWO file.  */
619
620 struct dwo_sections
621 {
622   struct dwarf2_section_info abbrev;
623   struct dwarf2_section_info line;
624   struct dwarf2_section_info loc;
625   struct dwarf2_section_info loclists;
626   struct dwarf2_section_info macinfo;
627   struct dwarf2_section_info macro;
628   struct dwarf2_section_info str;
629   struct dwarf2_section_info str_offsets;
630   /* In the case of a virtual DWO file, these two are unused.  */
631   struct dwarf2_section_info info;
632   VEC (dwarf2_section_info_def) *types;
633 };
634
635 /* CUs/TUs in DWP/DWO files.  */
636
637 struct dwo_unit
638 {
639   /* Backlink to the containing struct dwo_file.  */
640   struct dwo_file *dwo_file;
641
642   /* The "id" that distinguishes this CU/TU.
643      .debug_info calls this "dwo_id", .debug_types calls this "signature".
644      Since signatures came first, we stick with it for consistency.  */
645   ULONGEST signature;
646
647   /* The section this CU/TU lives in, in the DWO file.  */
648   struct dwarf2_section_info *section;
649
650   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
651   sect_offset sect_off;
652   unsigned int length;
653
654   /* For types, offset in the type's DIE of the type defined by this TU.  */
655   cu_offset type_offset_in_tu;
656 };
657
658 /* include/dwarf2.h defines the DWP section codes.
659    It defines a max value but it doesn't define a min value, which we
660    use for error checking, so provide one.  */
661
662 enum dwp_v2_section_ids
663 {
664   DW_SECT_MIN = 1
665 };
666
667 /* Data for one DWO file.
668
669    This includes virtual DWO files (a virtual DWO file is a DWO file as it
670    appears in a DWP file).  DWP files don't really have DWO files per se -
671    comdat folding of types "loses" the DWO file they came from, and from
672    a high level view DWP files appear to contain a mass of random types.
673    However, to maintain consistency with the non-DWP case we pretend DWP
674    files contain virtual DWO files, and we assign each TU with one virtual
675    DWO file (generally based on the line and abbrev section offsets -
676    a heuristic that seems to work in practice).  */
677
678 struct dwo_file
679 {
680   /* The DW_AT_GNU_dwo_name attribute.
681      For virtual DWO files the name is constructed from the section offsets
682      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
683      from related CU+TUs.  */
684   const char *dwo_name;
685
686   /* The DW_AT_comp_dir attribute.  */
687   const char *comp_dir;
688
689   /* The bfd, when the file is open.  Otherwise this is NULL.
690      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
691   bfd *dbfd;
692
693   /* The sections that make up this DWO file.
694      Remember that for virtual DWO files in DWP V2, these are virtual
695      sections (for lack of a better name).  */
696   struct dwo_sections sections;
697
698   /* The CUs in the file.
699      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
700      an extension to handle LLVM's Link Time Optimization output (where
701      multiple source files may be compiled into a single object/dwo pair). */
702   htab_t cus;
703
704   /* Table of TUs in the file.
705      Each element is a struct dwo_unit.  */
706   htab_t tus;
707 };
708
709 /* These sections are what may appear in a DWP file.  */
710
711 struct dwp_sections
712 {
713   /* These are used by both DWP version 1 and 2.  */
714   struct dwarf2_section_info str;
715   struct dwarf2_section_info cu_index;
716   struct dwarf2_section_info tu_index;
717
718   /* These are only used by DWP version 2 files.
719      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
720      sections are referenced by section number, and are not recorded here.
721      In DWP version 2 there is at most one copy of all these sections, each
722      section being (effectively) comprised of the concatenation of all of the
723      individual sections that exist in the version 1 format.
724      To keep the code simple we treat each of these concatenated pieces as a
725      section itself (a virtual section?).  */
726   struct dwarf2_section_info abbrev;
727   struct dwarf2_section_info info;
728   struct dwarf2_section_info line;
729   struct dwarf2_section_info loc;
730   struct dwarf2_section_info macinfo;
731   struct dwarf2_section_info macro;
732   struct dwarf2_section_info str_offsets;
733   struct dwarf2_section_info types;
734 };
735
736 /* These sections are what may appear in a virtual DWO file in DWP version 1.
737    A virtual DWO file is a DWO file as it appears in a DWP file.  */
738
739 struct virtual_v1_dwo_sections
740 {
741   struct dwarf2_section_info abbrev;
742   struct dwarf2_section_info line;
743   struct dwarf2_section_info loc;
744   struct dwarf2_section_info macinfo;
745   struct dwarf2_section_info macro;
746   struct dwarf2_section_info str_offsets;
747   /* Each DWP hash table entry records one CU or one TU.
748      That is recorded here, and copied to dwo_unit.section.  */
749   struct dwarf2_section_info info_or_types;
750 };
751
752 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
753    In version 2, the sections of the DWO files are concatenated together
754    and stored in one section of that name.  Thus each ELF section contains
755    several "virtual" sections.  */
756
757 struct virtual_v2_dwo_sections
758 {
759   bfd_size_type abbrev_offset;
760   bfd_size_type abbrev_size;
761
762   bfd_size_type line_offset;
763   bfd_size_type line_size;
764
765   bfd_size_type loc_offset;
766   bfd_size_type loc_size;
767
768   bfd_size_type macinfo_offset;
769   bfd_size_type macinfo_size;
770
771   bfd_size_type macro_offset;
772   bfd_size_type macro_size;
773
774   bfd_size_type str_offsets_offset;
775   bfd_size_type str_offsets_size;
776
777   /* Each DWP hash table entry records one CU or one TU.
778      That is recorded here, and copied to dwo_unit.section.  */
779   bfd_size_type info_or_types_offset;
780   bfd_size_type info_or_types_size;
781 };
782
783 /* Contents of DWP hash tables.  */
784
785 struct dwp_hash_table
786 {
787   uint32_t version, nr_columns;
788   uint32_t nr_units, nr_slots;
789   const gdb_byte *hash_table, *unit_table;
790   union
791   {
792     struct
793     {
794       const gdb_byte *indices;
795     } v1;
796     struct
797     {
798       /* This is indexed by column number and gives the id of the section
799          in that column.  */
800 #define MAX_NR_V2_DWO_SECTIONS \
801   (1 /* .debug_info or .debug_types */ \
802    + 1 /* .debug_abbrev */ \
803    + 1 /* .debug_line */ \
804    + 1 /* .debug_loc */ \
805    + 1 /* .debug_str_offsets */ \
806    + 1 /* .debug_macro or .debug_macinfo */)
807       int section_ids[MAX_NR_V2_DWO_SECTIONS];
808       const gdb_byte *offsets;
809       const gdb_byte *sizes;
810     } v2;
811   } section_pool;
812 };
813
814 /* Data for one DWP file.  */
815
816 struct dwp_file
817 {
818   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
819     : name (name_),
820       dbfd (std::move (abfd))
821   {
822   }
823
824   /* Name of the file.  */
825   const char *name;
826
827   /* File format version.  */
828   int version = 0;
829
830   /* The bfd.  */
831   gdb_bfd_ref_ptr dbfd;
832
833   /* Section info for this file.  */
834   struct dwp_sections sections {};
835
836   /* Table of CUs in the file.  */
837   const struct dwp_hash_table *cus = nullptr;
838
839   /* Table of TUs in the file.  */
840   const struct dwp_hash_table *tus = nullptr;
841
842   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
843   htab_t loaded_cus {};
844   htab_t loaded_tus {};
845
846   /* Table to map ELF section numbers to their sections.
847      This is only needed for the DWP V1 file format.  */
848   unsigned int num_sections = 0;
849   asection **elf_sections = nullptr;
850 };
851
852 /* This represents a '.dwz' file.  */
853
854 struct dwz_file
855 {
856   dwz_file (gdb_bfd_ref_ptr &&bfd)
857     : dwz_bfd (std::move (bfd))
858   {
859   }
860
861   /* A dwz file can only contain a few sections.  */
862   struct dwarf2_section_info abbrev {};
863   struct dwarf2_section_info info {};
864   struct dwarf2_section_info str {};
865   struct dwarf2_section_info line {};
866   struct dwarf2_section_info macro {};
867   struct dwarf2_section_info gdb_index {};
868   struct dwarf2_section_info debug_names {};
869
870   /* The dwz's BFD.  */
871   gdb_bfd_ref_ptr dwz_bfd;
872
873   /* If we loaded the index from an external file, this contains the
874      resources associated to the open file, memory mapping, etc.  */
875   std::unique_ptr<index_cache_resource> index_cache_res;
876 };
877
878 /* Struct used to pass misc. parameters to read_die_and_children, et
879    al.  which are used for both .debug_info and .debug_types dies.
880    All parameters here are unchanging for the life of the call.  This
881    struct exists to abstract away the constant parameters of die reading.  */
882
883 struct die_reader_specs
884 {
885   /* The bfd of die_section.  */
886   bfd* abfd;
887
888   /* The CU of the DIE we are parsing.  */
889   struct dwarf2_cu *cu;
890
891   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
892   struct dwo_file *dwo_file;
893
894   /* The section the die comes from.
895      This is either .debug_info or .debug_types, or the .dwo variants.  */
896   struct dwarf2_section_info *die_section;
897
898   /* die_section->buffer.  */
899   const gdb_byte *buffer;
900
901   /* The end of the buffer.  */
902   const gdb_byte *buffer_end;
903
904   /* The value of the DW_AT_comp_dir attribute.  */
905   const char *comp_dir;
906
907   /* The abbreviation table to use when reading the DIEs.  */
908   struct abbrev_table *abbrev_table;
909 };
910
911 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
912 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
913                                       const gdb_byte *info_ptr,
914                                       struct die_info *comp_unit_die,
915                                       int has_children,
916                                       void *data);
917
918 /* A 1-based directory index.  This is a strong typedef to prevent
919    accidentally using a directory index as a 0-based index into an
920    array/vector.  */
921 enum class dir_index : unsigned int {};
922
923 /* Likewise, a 1-based file name index.  */
924 enum class file_name_index : unsigned int {};
925
926 struct file_entry
927 {
928   file_entry () = default;
929
930   file_entry (const char *name_, dir_index d_index_,
931               unsigned int mod_time_, unsigned int length_)
932     : name (name_),
933       d_index (d_index_),
934       mod_time (mod_time_),
935       length (length_)
936   {}
937
938   /* Return the include directory at D_INDEX stored in LH.  Returns
939      NULL if D_INDEX is out of bounds.  */
940   const char *include_dir (const line_header *lh) const;
941
942   /* The file name.  Note this is an observing pointer.  The memory is
943      owned by debug_line_buffer.  */
944   const char *name {};
945
946   /* The directory index (1-based).  */
947   dir_index d_index {};
948
949   unsigned int mod_time {};
950
951   unsigned int length {};
952
953   /* True if referenced by the Line Number Program.  */
954   bool included_p {};
955
956   /* The associated symbol table, if any.  */
957   struct symtab *symtab {};
958 };
959
960 /* The line number information for a compilation unit (found in the
961    .debug_line section) begins with a "statement program header",
962    which contains the following information.  */
963 struct line_header
964 {
965   line_header ()
966     : offset_in_dwz {}
967   {}
968
969   /* Add an entry to the include directory table.  */
970   void add_include_dir (const char *include_dir);
971
972   /* Add an entry to the file name table.  */
973   void add_file_name (const char *name, dir_index d_index,
974                       unsigned int mod_time, unsigned int length);
975
976   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
977      is out of bounds.  */
978   const char *include_dir_at (dir_index index) const
979   {
980     /* Convert directory index number (1-based) to vector index
981        (0-based).  */
982     size_t vec_index = to_underlying (index) - 1;
983
984     if (vec_index >= include_dirs.size ())
985       return NULL;
986     return include_dirs[vec_index];
987   }
988
989   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
990      is out of bounds.  */
991   file_entry *file_name_at (file_name_index index)
992   {
993     /* Convert file name index number (1-based) to vector index
994        (0-based).  */
995     size_t vec_index = to_underlying (index) - 1;
996
997     if (vec_index >= file_names.size ())
998       return NULL;
999     return &file_names[vec_index];
1000   }
1001
1002   /* Const version of the above.  */
1003   const file_entry *file_name_at (unsigned int index) const
1004   {
1005     if (index >= file_names.size ())
1006       return NULL;
1007     return &file_names[index];
1008   }
1009
1010   /* Offset of line number information in .debug_line section.  */
1011   sect_offset sect_off {};
1012
1013   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1014   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1015
1016   unsigned int total_length {};
1017   unsigned short version {};
1018   unsigned int header_length {};
1019   unsigned char minimum_instruction_length {};
1020   unsigned char maximum_ops_per_instruction {};
1021   unsigned char default_is_stmt {};
1022   int line_base {};
1023   unsigned char line_range {};
1024   unsigned char opcode_base {};
1025
1026   /* standard_opcode_lengths[i] is the number of operands for the
1027      standard opcode whose value is i.  This means that
1028      standard_opcode_lengths[0] is unused, and the last meaningful
1029      element is standard_opcode_lengths[opcode_base - 1].  */
1030   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1031
1032   /* The include_directories table.  Note these are observing
1033      pointers.  The memory is owned by debug_line_buffer.  */
1034   std::vector<const char *> include_dirs;
1035
1036   /* The file_names table.  */
1037   std::vector<file_entry> file_names;
1038
1039   /* The start and end of the statement program following this
1040      header.  These point into dwarf2_per_objfile->line_buffer.  */
1041   const gdb_byte *statement_program_start {}, *statement_program_end {};
1042 };
1043
1044 typedef std::unique_ptr<line_header> line_header_up;
1045
1046 const char *
1047 file_entry::include_dir (const line_header *lh) const
1048 {
1049   return lh->include_dir_at (d_index);
1050 }
1051
1052 /* When we construct a partial symbol table entry we only
1053    need this much information.  */
1054 struct partial_die_info : public allocate_on_obstack
1055   {
1056     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1057
1058     /* Disable assign but still keep copy ctor, which is needed
1059        load_partial_dies.   */
1060     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1061
1062     /* Adjust the partial die before generating a symbol for it.  This
1063        function may set the is_external flag or change the DIE's
1064        name.  */
1065     void fixup (struct dwarf2_cu *cu);
1066
1067     /* Read a minimal amount of information into the minimal die
1068        structure.  */
1069     const gdb_byte *read (const struct die_reader_specs *reader,
1070                           const struct abbrev_info &abbrev,
1071                           const gdb_byte *info_ptr);
1072
1073     /* Offset of this DIE.  */
1074     const sect_offset sect_off;
1075
1076     /* DWARF-2 tag for this DIE.  */
1077     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1078
1079     /* Assorted flags describing the data found in this DIE.  */
1080     const unsigned int has_children : 1;
1081
1082     unsigned int is_external : 1;
1083     unsigned int is_declaration : 1;
1084     unsigned int has_type : 1;
1085     unsigned int has_specification : 1;
1086     unsigned int has_pc_info : 1;
1087     unsigned int may_be_inlined : 1;
1088
1089     /* This DIE has been marked DW_AT_main_subprogram.  */
1090     unsigned int main_subprogram : 1;
1091
1092     /* Flag set if the SCOPE field of this structure has been
1093        computed.  */
1094     unsigned int scope_set : 1;
1095
1096     /* Flag set if the DIE has a byte_size attribute.  */
1097     unsigned int has_byte_size : 1;
1098
1099     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1100     unsigned int has_const_value : 1;
1101
1102     /* Flag set if any of the DIE's children are template arguments.  */
1103     unsigned int has_template_arguments : 1;
1104
1105     /* Flag set if fixup has been called on this die.  */
1106     unsigned int fixup_called : 1;
1107
1108     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1109     unsigned int is_dwz : 1;
1110
1111     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1112     unsigned int spec_is_dwz : 1;
1113
1114     /* The name of this DIE.  Normally the value of DW_AT_name, but
1115        sometimes a default name for unnamed DIEs.  */
1116     const char *name = nullptr;
1117
1118     /* The linkage name, if present.  */
1119     const char *linkage_name = nullptr;
1120
1121     /* The scope to prepend to our children.  This is generally
1122        allocated on the comp_unit_obstack, so will disappear
1123        when this compilation unit leaves the cache.  */
1124     const char *scope = nullptr;
1125
1126     /* Some data associated with the partial DIE.  The tag determines
1127        which field is live.  */
1128     union
1129     {
1130       /* The location description associated with this DIE, if any.  */
1131       struct dwarf_block *locdesc;
1132       /* The offset of an import, for DW_TAG_imported_unit.  */
1133       sect_offset sect_off;
1134     } d {};
1135
1136     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1137     CORE_ADDR lowpc = 0;
1138     CORE_ADDR highpc = 0;
1139
1140     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1141        DW_AT_sibling, if any.  */
1142     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1143        could return DW_AT_sibling values to its caller load_partial_dies.  */
1144     const gdb_byte *sibling = nullptr;
1145
1146     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1147        DW_AT_specification (or DW_AT_abstract_origin or
1148        DW_AT_extension).  */
1149     sect_offset spec_offset {};
1150
1151     /* Pointers to this DIE's parent, first child, and next sibling,
1152        if any.  */
1153     struct partial_die_info *die_parent = nullptr;
1154     struct partial_die_info *die_child = nullptr;
1155     struct partial_die_info *die_sibling = nullptr;
1156
1157     friend struct partial_die_info *
1158     dwarf2_cu::find_partial_die (sect_offset sect_off);
1159
1160   private:
1161     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1162     partial_die_info (sect_offset sect_off)
1163       : partial_die_info (sect_off, DW_TAG_padding, 0)
1164     {
1165     }
1166
1167     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1168                       int has_children_)
1169       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1170     {
1171       is_external = 0;
1172       is_declaration = 0;
1173       has_type = 0;
1174       has_specification = 0;
1175       has_pc_info = 0;
1176       may_be_inlined = 0;
1177       main_subprogram = 0;
1178       scope_set = 0;
1179       has_byte_size = 0;
1180       has_const_value = 0;
1181       has_template_arguments = 0;
1182       fixup_called = 0;
1183       is_dwz = 0;
1184       spec_is_dwz = 0;
1185     }
1186   };
1187
1188 /* This data structure holds the information of an abbrev.  */
1189 struct abbrev_info
1190   {
1191     unsigned int number;        /* number identifying abbrev */
1192     enum dwarf_tag tag;         /* dwarf tag */
1193     unsigned short has_children;                /* boolean */
1194     unsigned short num_attrs;   /* number of attributes */
1195     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1196     struct abbrev_info *next;   /* next in chain */
1197   };
1198
1199 struct attr_abbrev
1200   {
1201     ENUM_BITFIELD(dwarf_attribute) name : 16;
1202     ENUM_BITFIELD(dwarf_form) form : 16;
1203
1204     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1205     LONGEST implicit_const;
1206   };
1207
1208 /* Size of abbrev_table.abbrev_hash_table.  */
1209 #define ABBREV_HASH_SIZE 121
1210
1211 /* Top level data structure to contain an abbreviation table.  */
1212
1213 struct abbrev_table
1214 {
1215   explicit abbrev_table (sect_offset off)
1216     : sect_off (off)
1217   {
1218     m_abbrevs =
1219       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1220     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1221   }
1222
1223   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1224
1225   /* Allocate space for a struct abbrev_info object in
1226      ABBREV_TABLE.  */
1227   struct abbrev_info *alloc_abbrev ();
1228
1229   /* Add an abbreviation to the table.  */
1230   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1231
1232   /* Look up an abbrev in the table.
1233      Returns NULL if the abbrev is not found.  */
1234
1235   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1236
1237
1238   /* Where the abbrev table came from.
1239      This is used as a sanity check when the table is used.  */
1240   const sect_offset sect_off;
1241
1242   /* Storage for the abbrev table.  */
1243   auto_obstack abbrev_obstack;
1244
1245 private:
1246
1247   /* Hash table of abbrevs.
1248      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1249      It could be statically allocated, but the previous code didn't so we
1250      don't either.  */
1251   struct abbrev_info **m_abbrevs;
1252 };
1253
1254 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1255
1256 /* Attributes have a name and a value.  */
1257 struct attribute
1258   {
1259     ENUM_BITFIELD(dwarf_attribute) name : 16;
1260     ENUM_BITFIELD(dwarf_form) form : 15;
1261
1262     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1263        field should be in u.str (existing only for DW_STRING) but it is kept
1264        here for better struct attribute alignment.  */
1265     unsigned int string_is_canonical : 1;
1266
1267     union
1268       {
1269         const char *str;
1270         struct dwarf_block *blk;
1271         ULONGEST unsnd;
1272         LONGEST snd;
1273         CORE_ADDR addr;
1274         ULONGEST signature;
1275       }
1276     u;
1277   };
1278
1279 /* This data structure holds a complete die structure.  */
1280 struct die_info
1281   {
1282     /* DWARF-2 tag for this DIE.  */
1283     ENUM_BITFIELD(dwarf_tag) tag : 16;
1284
1285     /* Number of attributes */
1286     unsigned char num_attrs;
1287
1288     /* True if we're presently building the full type name for the
1289        type derived from this DIE.  */
1290     unsigned char building_fullname : 1;
1291
1292     /* True if this die is in process.  PR 16581.  */
1293     unsigned char in_process : 1;
1294
1295     /* Abbrev number */
1296     unsigned int abbrev;
1297
1298     /* Offset in .debug_info or .debug_types section.  */
1299     sect_offset sect_off;
1300
1301     /* The dies in a compilation unit form an n-ary tree.  PARENT
1302        points to this die's parent; CHILD points to the first child of
1303        this node; and all the children of a given node are chained
1304        together via their SIBLING fields.  */
1305     struct die_info *child;     /* Its first child, if any.  */
1306     struct die_info *sibling;   /* Its next sibling, if any.  */
1307     struct die_info *parent;    /* Its parent, if any.  */
1308
1309     /* An array of attributes, with NUM_ATTRS elements.  There may be
1310        zero, but it's not common and zero-sized arrays are not
1311        sufficiently portable C.  */
1312     struct attribute attrs[1];
1313   };
1314
1315 /* Get at parts of an attribute structure.  */
1316
1317 #define DW_STRING(attr)    ((attr)->u.str)
1318 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1319 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1320 #define DW_BLOCK(attr)     ((attr)->u.blk)
1321 #define DW_SND(attr)       ((attr)->u.snd)
1322 #define DW_ADDR(attr)      ((attr)->u.addr)
1323 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1324
1325 /* Blocks are a bunch of untyped bytes.  */
1326 struct dwarf_block
1327   {
1328     size_t size;
1329
1330     /* Valid only if SIZE is not zero.  */
1331     const gdb_byte *data;
1332   };
1333
1334 #ifndef ATTR_ALLOC_CHUNK
1335 #define ATTR_ALLOC_CHUNK 4
1336 #endif
1337
1338 /* Allocate fields for structs, unions and enums in this size.  */
1339 #ifndef DW_FIELD_ALLOC_CHUNK
1340 #define DW_FIELD_ALLOC_CHUNK 4
1341 #endif
1342
1343 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1344    but this would require a corresponding change in unpack_field_as_long
1345    and friends.  */
1346 static int bits_per_byte = 8;
1347
1348 /* When reading a variant or variant part, we track a bit more
1349    information about the field, and store it in an object of this
1350    type.  */
1351
1352 struct variant_field
1353 {
1354   /* If we see a DW_TAG_variant, then this will be the discriminant
1355      value.  */
1356   ULONGEST discriminant_value;
1357   /* If we see a DW_TAG_variant, then this will be set if this is the
1358      default branch.  */
1359   bool default_branch;
1360   /* While reading a DW_TAG_variant_part, this will be set if this
1361      field is the discriminant.  */
1362   bool is_discriminant;
1363 };
1364
1365 struct nextfield
1366 {
1367   int accessibility = 0;
1368   int virtuality = 0;
1369   /* Extra information to describe a variant or variant part.  */
1370   struct variant_field variant {};
1371   struct field field {};
1372 };
1373
1374 struct fnfieldlist
1375 {
1376   const char *name = nullptr;
1377   std::vector<struct fn_field> fnfields;
1378 };
1379
1380 /* The routines that read and process dies for a C struct or C++ class
1381    pass lists of data member fields and lists of member function fields
1382    in an instance of a field_info structure, as defined below.  */
1383 struct field_info
1384   {
1385     /* List of data member and baseclasses fields.  */
1386     std::vector<struct nextfield> fields;
1387     std::vector<struct nextfield> baseclasses;
1388
1389     /* Number of fields (including baseclasses).  */
1390     int nfields = 0;
1391
1392     /* Set if the accesibility of one of the fields is not public.  */
1393     int non_public_fields = 0;
1394
1395     /* Member function fieldlist array, contains name of possibly overloaded
1396        member function, number of overloaded member functions and a pointer
1397        to the head of the member function field chain.  */
1398     std::vector<struct fnfieldlist> fnfieldlists;
1399
1400     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1401        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1402     std::vector<struct decl_field> typedef_field_list;
1403
1404     /* Nested types defined by this class and the number of elements in this
1405        list.  */
1406     std::vector<struct decl_field> nested_types_list;
1407   };
1408
1409 /* One item on the queue of compilation units to read in full symbols
1410    for.  */
1411 struct dwarf2_queue_item
1412 {
1413   struct dwarf2_per_cu_data *per_cu;
1414   enum language pretend_language;
1415   struct dwarf2_queue_item *next;
1416 };
1417
1418 /* The current queue.  */
1419 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1420
1421 /* Loaded secondary compilation units are kept in memory until they
1422    have not been referenced for the processing of this many
1423    compilation units.  Set this to zero to disable caching.  Cache
1424    sizes of up to at least twenty will improve startup time for
1425    typical inter-CU-reference binaries, at an obvious memory cost.  */
1426 static int dwarf_max_cache_age = 5;
1427 static void
1428 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1429                           struct cmd_list_element *c, const char *value)
1430 {
1431   fprintf_filtered (file, _("The upper bound on the age of cached "
1432                             "DWARF compilation units is %s.\n"),
1433                     value);
1434 }
1435 \f
1436 /* local function prototypes */
1437
1438 static const char *get_section_name (const struct dwarf2_section_info *);
1439
1440 static const char *get_section_file_name (const struct dwarf2_section_info *);
1441
1442 static void dwarf2_find_base_address (struct die_info *die,
1443                                       struct dwarf2_cu *cu);
1444
1445 static struct partial_symtab *create_partial_symtab
1446   (struct dwarf2_per_cu_data *per_cu, const char *name);
1447
1448 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1449                                         const gdb_byte *info_ptr,
1450                                         struct die_info *type_unit_die,
1451                                         int has_children, void *data);
1452
1453 static void dwarf2_build_psymtabs_hard
1454   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1455
1456 static void scan_partial_symbols (struct partial_die_info *,
1457                                   CORE_ADDR *, CORE_ADDR *,
1458                                   int, struct dwarf2_cu *);
1459
1460 static void add_partial_symbol (struct partial_die_info *,
1461                                 struct dwarf2_cu *);
1462
1463 static void add_partial_namespace (struct partial_die_info *pdi,
1464                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1465                                    int set_addrmap, struct dwarf2_cu *cu);
1466
1467 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1468                                 CORE_ADDR *highpc, int set_addrmap,
1469                                 struct dwarf2_cu *cu);
1470
1471 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1472                                      struct dwarf2_cu *cu);
1473
1474 static void add_partial_subprogram (struct partial_die_info *pdi,
1475                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1476                                     int need_pc, struct dwarf2_cu *cu);
1477
1478 static void dwarf2_read_symtab (struct partial_symtab *,
1479                                 struct objfile *);
1480
1481 static void psymtab_to_symtab_1 (struct partial_symtab *);
1482
1483 static abbrev_table_up abbrev_table_read_table
1484   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1485    sect_offset);
1486
1487 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1488
1489 static struct partial_die_info *load_partial_dies
1490   (const struct die_reader_specs *, const gdb_byte *, int);
1491
1492 static struct partial_die_info *find_partial_die (sect_offset, int,
1493                                                   struct dwarf2_cu *);
1494
1495 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1496                                        struct attribute *, struct attr_abbrev *,
1497                                        const gdb_byte *);
1498
1499 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1500
1501 static int read_1_signed_byte (bfd *, const gdb_byte *);
1502
1503 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1504
1505 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1506
1507 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1508
1509 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1510                                unsigned int *);
1511
1512 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1513
1514 static LONGEST read_checked_initial_length_and_offset
1515   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1516    unsigned int *, unsigned int *);
1517
1518 static LONGEST read_offset (bfd *, const gdb_byte *,
1519                             const struct comp_unit_head *,
1520                             unsigned int *);
1521
1522 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1523
1524 static sect_offset read_abbrev_offset
1525   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1526    struct dwarf2_section_info *, sect_offset);
1527
1528 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1529
1530 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1531
1532 static const char *read_indirect_string
1533   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1534    const struct comp_unit_head *, unsigned int *);
1535
1536 static const char *read_indirect_line_string
1537   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1538    const struct comp_unit_head *, unsigned int *);
1539
1540 static const char *read_indirect_string_at_offset
1541   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1542    LONGEST str_offset);
1543
1544 static const char *read_indirect_string_from_dwz
1545   (struct objfile *objfile, struct dwz_file *, LONGEST);
1546
1547 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1548
1549 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1550                                               const gdb_byte *,
1551                                               unsigned int *);
1552
1553 static const char *read_str_index (const struct die_reader_specs *reader,
1554                                    ULONGEST str_index);
1555
1556 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1557
1558 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1559                                       struct dwarf2_cu *);
1560
1561 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1562                                                 unsigned int);
1563
1564 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1565                                        struct dwarf2_cu *cu);
1566
1567 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1568                                struct dwarf2_cu *cu);
1569
1570 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1571
1572 static struct die_info *die_specification (struct die_info *die,
1573                                            struct dwarf2_cu **);
1574
1575 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1576                                                 struct dwarf2_cu *cu);
1577
1578 static void dwarf_decode_lines (struct line_header *, const char *,
1579                                 struct dwarf2_cu *, struct partial_symtab *,
1580                                 CORE_ADDR, int decode_mapping);
1581
1582 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1583                                   const char *);
1584
1585 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1586                                                     const char *, const char *,
1587                                                     CORE_ADDR);
1588
1589 static struct symbol *new_symbol (struct die_info *, struct type *,
1590                                   struct dwarf2_cu *, struct symbol * = NULL);
1591
1592 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1593                                 struct dwarf2_cu *);
1594
1595 static void dwarf2_const_value_attr (const struct attribute *attr,
1596                                      struct type *type,
1597                                      const char *name,
1598                                      struct obstack *obstack,
1599                                      struct dwarf2_cu *cu, LONGEST *value,
1600                                      const gdb_byte **bytes,
1601                                      struct dwarf2_locexpr_baton **baton);
1602
1603 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1604
1605 static int need_gnat_info (struct dwarf2_cu *);
1606
1607 static struct type *die_descriptive_type (struct die_info *,
1608                                           struct dwarf2_cu *);
1609
1610 static void set_descriptive_type (struct type *, struct die_info *,
1611                                   struct dwarf2_cu *);
1612
1613 static struct type *die_containing_type (struct die_info *,
1614                                          struct dwarf2_cu *);
1615
1616 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1617                                      struct dwarf2_cu *);
1618
1619 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1620
1621 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1622
1623 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1624
1625 static char *typename_concat (struct obstack *obs, const char *prefix,
1626                               const char *suffix, int physname,
1627                               struct dwarf2_cu *cu);
1628
1629 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1630
1631 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1632
1633 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1634
1635 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1636
1637 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1638
1639 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1640
1641 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1642                                struct dwarf2_cu *, struct partial_symtab *);
1643
1644 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1645    values.  Keep the items ordered with increasing constraints compliance.  */
1646 enum pc_bounds_kind
1647 {
1648   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1649   PC_BOUNDS_NOT_PRESENT,
1650
1651   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1652      were present but they do not form a valid range of PC addresses.  */
1653   PC_BOUNDS_INVALID,
1654
1655   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1656   PC_BOUNDS_RANGES,
1657
1658   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1659   PC_BOUNDS_HIGH_LOW,
1660 };
1661
1662 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1663                                                  CORE_ADDR *, CORE_ADDR *,
1664                                                  struct dwarf2_cu *,
1665                                                  struct partial_symtab *);
1666
1667 static void get_scope_pc_bounds (struct die_info *,
1668                                  CORE_ADDR *, CORE_ADDR *,
1669                                  struct dwarf2_cu *);
1670
1671 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1672                                         CORE_ADDR, struct dwarf2_cu *);
1673
1674 static void dwarf2_add_field (struct field_info *, struct die_info *,
1675                               struct dwarf2_cu *);
1676
1677 static void dwarf2_attach_fields_to_type (struct field_info *,
1678                                           struct type *, struct dwarf2_cu *);
1679
1680 static void dwarf2_add_member_fn (struct field_info *,
1681                                   struct die_info *, struct type *,
1682                                   struct dwarf2_cu *);
1683
1684 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1685                                              struct type *,
1686                                              struct dwarf2_cu *);
1687
1688 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1689
1690 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1691
1692 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1693
1694 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1695
1696 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1697
1698 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1699
1700 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1701
1702 static struct type *read_module_type (struct die_info *die,
1703                                       struct dwarf2_cu *cu);
1704
1705 static const char *namespace_name (struct die_info *die,
1706                                    int *is_anonymous, struct dwarf2_cu *);
1707
1708 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1709
1710 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1711
1712 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1713                                                        struct dwarf2_cu *);
1714
1715 static struct die_info *read_die_and_siblings_1
1716   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1717    struct die_info *);
1718
1719 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1720                                                const gdb_byte *info_ptr,
1721                                                const gdb_byte **new_info_ptr,
1722                                                struct die_info *parent);
1723
1724 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1725                                         struct die_info **, const gdb_byte *,
1726                                         int *, int);
1727
1728 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1729                                       struct die_info **, const gdb_byte *,
1730                                       int *);
1731
1732 static void process_die (struct die_info *, struct dwarf2_cu *);
1733
1734 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1735                                              struct obstack *);
1736
1737 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1738
1739 static const char *dwarf2_full_name (const char *name,
1740                                      struct die_info *die,
1741                                      struct dwarf2_cu *cu);
1742
1743 static const char *dwarf2_physname (const char *name, struct die_info *die,
1744                                     struct dwarf2_cu *cu);
1745
1746 static struct die_info *dwarf2_extension (struct die_info *die,
1747                                           struct dwarf2_cu **);
1748
1749 static const char *dwarf_tag_name (unsigned int);
1750
1751 static const char *dwarf_attr_name (unsigned int);
1752
1753 static const char *dwarf_form_name (unsigned int);
1754
1755 static const char *dwarf_bool_name (unsigned int);
1756
1757 static const char *dwarf_type_encoding_name (unsigned int);
1758
1759 static struct die_info *sibling_die (struct die_info *);
1760
1761 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1762
1763 static void dump_die_for_error (struct die_info *);
1764
1765 static void dump_die_1 (struct ui_file *, int level, int max_level,
1766                         struct die_info *);
1767
1768 /*static*/ void dump_die (struct die_info *, int max_level);
1769
1770 static void store_in_ref_table (struct die_info *,
1771                                 struct dwarf2_cu *);
1772
1773 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1774
1775 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1776
1777 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1778                                                const struct attribute *,
1779                                                struct dwarf2_cu **);
1780
1781 static struct die_info *follow_die_ref (struct die_info *,
1782                                         const struct attribute *,
1783                                         struct dwarf2_cu **);
1784
1785 static struct die_info *follow_die_sig (struct die_info *,
1786                                         const struct attribute *,
1787                                         struct dwarf2_cu **);
1788
1789 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1790                                          struct dwarf2_cu *);
1791
1792 static struct type *get_DW_AT_signature_type (struct die_info *,
1793                                               const struct attribute *,
1794                                               struct dwarf2_cu *);
1795
1796 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1797
1798 static void read_signatured_type (struct signatured_type *);
1799
1800 static int attr_to_dynamic_prop (const struct attribute *attr,
1801                                  struct die_info *die, struct dwarf2_cu *cu,
1802                                  struct dynamic_prop *prop);
1803
1804 /* memory allocation interface */
1805
1806 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1807
1808 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1809
1810 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1811
1812 static int attr_form_is_block (const struct attribute *);
1813
1814 static int attr_form_is_section_offset (const struct attribute *);
1815
1816 static int attr_form_is_constant (const struct attribute *);
1817
1818 static int attr_form_is_ref (const struct attribute *);
1819
1820 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1821                                    struct dwarf2_loclist_baton *baton,
1822                                    const struct attribute *attr);
1823
1824 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1825                                          struct symbol *sym,
1826                                          struct dwarf2_cu *cu,
1827                                          int is_block);
1828
1829 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1830                                      const gdb_byte *info_ptr,
1831                                      struct abbrev_info *abbrev);
1832
1833 static hashval_t partial_die_hash (const void *item);
1834
1835 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1836
1837 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1838   (sect_offset sect_off, unsigned int offset_in_dwz,
1839    struct dwarf2_per_objfile *dwarf2_per_objfile);
1840
1841 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1842                                    struct die_info *comp_unit_die,
1843                                    enum language pretend_language);
1844
1845 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1846
1847 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1848
1849 static struct type *set_die_type (struct die_info *, struct type *,
1850                                   struct dwarf2_cu *);
1851
1852 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1853
1854 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1855
1856 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1857                                  enum language);
1858
1859 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1860                                     enum language);
1861
1862 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1863                                     enum language);
1864
1865 static void dwarf2_add_dependence (struct dwarf2_cu *,
1866                                    struct dwarf2_per_cu_data *);
1867
1868 static void dwarf2_mark (struct dwarf2_cu *);
1869
1870 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1871
1872 static struct type *get_die_type_at_offset (sect_offset,
1873                                             struct dwarf2_per_cu_data *);
1874
1875 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1876
1877 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1878                              enum language pretend_language);
1879
1880 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1881
1882 /* Class, the destructor of which frees all allocated queue entries.  This
1883    will only have work to do if an error was thrown while processing the
1884    dwarf.  If no error was thrown then the queue entries should have all
1885    been processed, and freed, as we went along.  */
1886
1887 class dwarf2_queue_guard
1888 {
1889 public:
1890   dwarf2_queue_guard () = default;
1891
1892   /* Free any entries remaining on the queue.  There should only be
1893      entries left if we hit an error while processing the dwarf.  */
1894   ~dwarf2_queue_guard ()
1895   {
1896     struct dwarf2_queue_item *item, *last;
1897
1898     item = dwarf2_queue;
1899     while (item)
1900       {
1901         /* Anything still marked queued is likely to be in an
1902            inconsistent state, so discard it.  */
1903         if (item->per_cu->queued)
1904           {
1905             if (item->per_cu->cu != NULL)
1906               free_one_cached_comp_unit (item->per_cu);
1907             item->per_cu->queued = 0;
1908           }
1909
1910         last = item;
1911         item = item->next;
1912         xfree (last);
1913       }
1914
1915     dwarf2_queue = dwarf2_queue_tail = NULL;
1916   }
1917 };
1918
1919 /* The return type of find_file_and_directory.  Note, the enclosed
1920    string pointers are only valid while this object is valid.  */
1921
1922 struct file_and_directory
1923 {
1924   /* The filename.  This is never NULL.  */
1925   const char *name;
1926
1927   /* The compilation directory.  NULL if not known.  If we needed to
1928      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1929      points directly to the DW_AT_comp_dir string attribute owned by
1930      the obstack that owns the DIE.  */
1931   const char *comp_dir;
1932
1933   /* If we needed to build a new string for comp_dir, this is what
1934      owns the storage.  */
1935   std::string comp_dir_storage;
1936 };
1937
1938 static file_and_directory find_file_and_directory (struct die_info *die,
1939                                                    struct dwarf2_cu *cu);
1940
1941 static char *file_full_name (int file, struct line_header *lh,
1942                              const char *comp_dir);
1943
1944 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1945 enum class rcuh_kind { COMPILE, TYPE };
1946
1947 static const gdb_byte *read_and_check_comp_unit_head
1948   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1949    struct comp_unit_head *header,
1950    struct dwarf2_section_info *section,
1951    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1952    rcuh_kind section_kind);
1953
1954 static void init_cutu_and_read_dies
1955   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1956    int use_existing_cu, int keep, bool skip_partial,
1957    die_reader_func_ftype *die_reader_func, void *data);
1958
1959 static void init_cutu_and_read_dies_simple
1960   (struct dwarf2_per_cu_data *this_cu,
1961    die_reader_func_ftype *die_reader_func, void *data);
1962
1963 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1964
1965 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1966
1967 static struct dwo_unit *lookup_dwo_unit_in_dwp
1968   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1969    struct dwp_file *dwp_file, const char *comp_dir,
1970    ULONGEST signature, int is_debug_types);
1971
1972 static struct dwp_file *get_dwp_file
1973   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1974
1975 static struct dwo_unit *lookup_dwo_comp_unit
1976   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1977
1978 static struct dwo_unit *lookup_dwo_type_unit
1979   (struct signatured_type *, const char *, const char *);
1980
1981 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1982
1983 static void free_dwo_file (struct dwo_file *);
1984
1985 /* A unique_ptr helper to free a dwo_file.  */
1986
1987 struct dwo_file_deleter
1988 {
1989   void operator() (struct dwo_file *df) const
1990   {
1991     free_dwo_file (df);
1992   }
1993 };
1994
1995 /* A unique pointer to a dwo_file.  */
1996
1997 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1998
1999 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2000
2001 static void check_producer (struct dwarf2_cu *cu);
2002
2003 static void free_line_header_voidp (void *arg);
2004 \f
2005 /* Various complaints about symbol reading that don't abort the process.  */
2006
2007 static void
2008 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2009 {
2010   complaint (_("statement list doesn't fit in .debug_line section"));
2011 }
2012
2013 static void
2014 dwarf2_debug_line_missing_file_complaint (void)
2015 {
2016   complaint (_(".debug_line section has line data without a file"));
2017 }
2018
2019 static void
2020 dwarf2_debug_line_missing_end_sequence_complaint (void)
2021 {
2022   complaint (_(".debug_line section has line "
2023                "program sequence without an end"));
2024 }
2025
2026 static void
2027 dwarf2_complex_location_expr_complaint (void)
2028 {
2029   complaint (_("location expression too complex"));
2030 }
2031
2032 static void
2033 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2034                                               int arg3)
2035 {
2036   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2037              arg1, arg2, arg3);
2038 }
2039
2040 static void
2041 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2042 {
2043   complaint (_("debug info runs off end of %s section"
2044                " [in module %s]"),
2045              get_section_name (section),
2046              get_section_file_name (section));
2047 }
2048
2049 static void
2050 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2051 {
2052   complaint (_("macro debug info contains a "
2053                "malformed macro definition:\n`%s'"),
2054              arg1);
2055 }
2056
2057 static void
2058 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2059 {
2060   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2061              arg1, arg2);
2062 }
2063
2064 /* Hash function for line_header_hash.  */
2065
2066 static hashval_t
2067 line_header_hash (const struct line_header *ofs)
2068 {
2069   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2070 }
2071
2072 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2073
2074 static hashval_t
2075 line_header_hash_voidp (const void *item)
2076 {
2077   const struct line_header *ofs = (const struct line_header *) item;
2078
2079   return line_header_hash (ofs);
2080 }
2081
2082 /* Equality function for line_header_hash.  */
2083
2084 static int
2085 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2086 {
2087   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2088   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2089
2090   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2091           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2092 }
2093
2094 \f
2095
2096 /* Read the given attribute value as an address, taking the attribute's
2097    form into account.  */
2098
2099 static CORE_ADDR
2100 attr_value_as_address (struct attribute *attr)
2101 {
2102   CORE_ADDR addr;
2103
2104   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2105     {
2106       /* Aside from a few clearly defined exceptions, attributes that
2107          contain an address must always be in DW_FORM_addr form.
2108          Unfortunately, some compilers happen to be violating this
2109          requirement by encoding addresses using other forms, such
2110          as DW_FORM_data4 for example.  For those broken compilers,
2111          we try to do our best, without any guarantee of success,
2112          to interpret the address correctly.  It would also be nice
2113          to generate a complaint, but that would require us to maintain
2114          a list of legitimate cases where a non-address form is allowed,
2115          as well as update callers to pass in at least the CU's DWARF
2116          version.  This is more overhead than what we're willing to
2117          expand for a pretty rare case.  */
2118       addr = DW_UNSND (attr);
2119     }
2120   else
2121     addr = DW_ADDR (attr);
2122
2123   return addr;
2124 }
2125
2126 /* See declaration.  */
2127
2128 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2129                                         const dwarf2_debug_sections *names)
2130   : objfile (objfile_)
2131 {
2132   if (names == NULL)
2133     names = &dwarf2_elf_names;
2134
2135   bfd *obfd = objfile->obfd;
2136
2137   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2138     locate_sections (obfd, sec, *names);
2139 }
2140
2141 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2142
2143 dwarf2_per_objfile::~dwarf2_per_objfile ()
2144 {
2145   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2146   free_cached_comp_units ();
2147
2148   if (quick_file_names_table)
2149     htab_delete (quick_file_names_table);
2150
2151   if (line_header_hash)
2152     htab_delete (line_header_hash);
2153
2154   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2155     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2156
2157   for (signatured_type *sig_type : all_type_units)
2158     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2159
2160   VEC_free (dwarf2_section_info_def, types);
2161
2162   if (dwo_files != NULL)
2163     free_dwo_files (dwo_files, objfile);
2164
2165   /* Everything else should be on the objfile obstack.  */
2166 }
2167
2168 /* See declaration.  */
2169
2170 void
2171 dwarf2_per_objfile::free_cached_comp_units ()
2172 {
2173   dwarf2_per_cu_data *per_cu = read_in_chain;
2174   dwarf2_per_cu_data **last_chain = &read_in_chain;
2175   while (per_cu != NULL)
2176     {
2177       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2178
2179       delete per_cu->cu;
2180       *last_chain = next_cu;
2181       per_cu = next_cu;
2182     }
2183 }
2184
2185 /* A helper class that calls free_cached_comp_units on
2186    destruction.  */
2187
2188 class free_cached_comp_units
2189 {
2190 public:
2191
2192   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2193     : m_per_objfile (per_objfile)
2194   {
2195   }
2196
2197   ~free_cached_comp_units ()
2198   {
2199     m_per_objfile->free_cached_comp_units ();
2200   }
2201
2202   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2203
2204 private:
2205
2206   dwarf2_per_objfile *m_per_objfile;
2207 };
2208
2209 /* Try to locate the sections we need for DWARF 2 debugging
2210    information and return true if we have enough to do something.
2211    NAMES points to the dwarf2 section names, or is NULL if the standard
2212    ELF names are used.  */
2213
2214 int
2215 dwarf2_has_info (struct objfile *objfile,
2216                  const struct dwarf2_debug_sections *names)
2217 {
2218   if (objfile->flags & OBJF_READNEVER)
2219     return 0;
2220
2221   struct dwarf2_per_objfile *dwarf2_per_objfile
2222     = get_dwarf2_per_objfile (objfile);
2223
2224   if (dwarf2_per_objfile == NULL)
2225     {
2226       /* Initialize per-objfile state.  */
2227       dwarf2_per_objfile
2228         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2229                                                                      names);
2230       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2231     }
2232   return (!dwarf2_per_objfile->info.is_virtual
2233           && dwarf2_per_objfile->info.s.section != NULL
2234           && !dwarf2_per_objfile->abbrev.is_virtual
2235           && dwarf2_per_objfile->abbrev.s.section != NULL);
2236 }
2237
2238 /* Return the containing section of virtual section SECTION.  */
2239
2240 static struct dwarf2_section_info *
2241 get_containing_section (const struct dwarf2_section_info *section)
2242 {
2243   gdb_assert (section->is_virtual);
2244   return section->s.containing_section;
2245 }
2246
2247 /* Return the bfd owner of SECTION.  */
2248
2249 static struct bfd *
2250 get_section_bfd_owner (const struct dwarf2_section_info *section)
2251 {
2252   if (section->is_virtual)
2253     {
2254       section = get_containing_section (section);
2255       gdb_assert (!section->is_virtual);
2256     }
2257   return section->s.section->owner;
2258 }
2259
2260 /* Return the bfd section of SECTION.
2261    Returns NULL if the section is not present.  */
2262
2263 static asection *
2264 get_section_bfd_section (const struct dwarf2_section_info *section)
2265 {
2266   if (section->is_virtual)
2267     {
2268       section = get_containing_section (section);
2269       gdb_assert (!section->is_virtual);
2270     }
2271   return section->s.section;
2272 }
2273
2274 /* Return the name of SECTION.  */
2275
2276 static const char *
2277 get_section_name (const struct dwarf2_section_info *section)
2278 {
2279   asection *sectp = get_section_bfd_section (section);
2280
2281   gdb_assert (sectp != NULL);
2282   return bfd_section_name (get_section_bfd_owner (section), sectp);
2283 }
2284
2285 /* Return the name of the file SECTION is in.  */
2286
2287 static const char *
2288 get_section_file_name (const struct dwarf2_section_info *section)
2289 {
2290   bfd *abfd = get_section_bfd_owner (section);
2291
2292   return bfd_get_filename (abfd);
2293 }
2294
2295 /* Return the id of SECTION.
2296    Returns 0 if SECTION doesn't exist.  */
2297
2298 static int
2299 get_section_id (const struct dwarf2_section_info *section)
2300 {
2301   asection *sectp = get_section_bfd_section (section);
2302
2303   if (sectp == NULL)
2304     return 0;
2305   return sectp->id;
2306 }
2307
2308 /* Return the flags of SECTION.
2309    SECTION (or containing section if this is a virtual section) must exist.  */
2310
2311 static int
2312 get_section_flags (const struct dwarf2_section_info *section)
2313 {
2314   asection *sectp = get_section_bfd_section (section);
2315
2316   gdb_assert (sectp != NULL);
2317   return bfd_get_section_flags (sectp->owner, sectp);
2318 }
2319
2320 /* When loading sections, we look either for uncompressed section or for
2321    compressed section names.  */
2322
2323 static int
2324 section_is_p (const char *section_name,
2325               const struct dwarf2_section_names *names)
2326 {
2327   if (names->normal != NULL
2328       && strcmp (section_name, names->normal) == 0)
2329     return 1;
2330   if (names->compressed != NULL
2331       && strcmp (section_name, names->compressed) == 0)
2332     return 1;
2333   return 0;
2334 }
2335
2336 /* See declaration.  */
2337
2338 void
2339 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2340                                      const dwarf2_debug_sections &names)
2341 {
2342   flagword aflag = bfd_get_section_flags (abfd, sectp);
2343
2344   if ((aflag & SEC_HAS_CONTENTS) == 0)
2345     {
2346     }
2347   else if (section_is_p (sectp->name, &names.info))
2348     {
2349       this->info.s.section = sectp;
2350       this->info.size = bfd_get_section_size (sectp);
2351     }
2352   else if (section_is_p (sectp->name, &names.abbrev))
2353     {
2354       this->abbrev.s.section = sectp;
2355       this->abbrev.size = bfd_get_section_size (sectp);
2356     }
2357   else if (section_is_p (sectp->name, &names.line))
2358     {
2359       this->line.s.section = sectp;
2360       this->line.size = bfd_get_section_size (sectp);
2361     }
2362   else if (section_is_p (sectp->name, &names.loc))
2363     {
2364       this->loc.s.section = sectp;
2365       this->loc.size = bfd_get_section_size (sectp);
2366     }
2367   else if (section_is_p (sectp->name, &names.loclists))
2368     {
2369       this->loclists.s.section = sectp;
2370       this->loclists.size = bfd_get_section_size (sectp);
2371     }
2372   else if (section_is_p (sectp->name, &names.macinfo))
2373     {
2374       this->macinfo.s.section = sectp;
2375       this->macinfo.size = bfd_get_section_size (sectp);
2376     }
2377   else if (section_is_p (sectp->name, &names.macro))
2378     {
2379       this->macro.s.section = sectp;
2380       this->macro.size = bfd_get_section_size (sectp);
2381     }
2382   else if (section_is_p (sectp->name, &names.str))
2383     {
2384       this->str.s.section = sectp;
2385       this->str.size = bfd_get_section_size (sectp);
2386     }
2387   else if (section_is_p (sectp->name, &names.line_str))
2388     {
2389       this->line_str.s.section = sectp;
2390       this->line_str.size = bfd_get_section_size (sectp);
2391     }
2392   else if (section_is_p (sectp->name, &names.addr))
2393     {
2394       this->addr.s.section = sectp;
2395       this->addr.size = bfd_get_section_size (sectp);
2396     }
2397   else if (section_is_p (sectp->name, &names.frame))
2398     {
2399       this->frame.s.section = sectp;
2400       this->frame.size = bfd_get_section_size (sectp);
2401     }
2402   else if (section_is_p (sectp->name, &names.eh_frame))
2403     {
2404       this->eh_frame.s.section = sectp;
2405       this->eh_frame.size = bfd_get_section_size (sectp);
2406     }
2407   else if (section_is_p (sectp->name, &names.ranges))
2408     {
2409       this->ranges.s.section = sectp;
2410       this->ranges.size = bfd_get_section_size (sectp);
2411     }
2412   else if (section_is_p (sectp->name, &names.rnglists))
2413     {
2414       this->rnglists.s.section = sectp;
2415       this->rnglists.size = bfd_get_section_size (sectp);
2416     }
2417   else if (section_is_p (sectp->name, &names.types))
2418     {
2419       struct dwarf2_section_info type_section;
2420
2421       memset (&type_section, 0, sizeof (type_section));
2422       type_section.s.section = sectp;
2423       type_section.size = bfd_get_section_size (sectp);
2424
2425       VEC_safe_push (dwarf2_section_info_def, this->types,
2426                      &type_section);
2427     }
2428   else if (section_is_p (sectp->name, &names.gdb_index))
2429     {
2430       this->gdb_index.s.section = sectp;
2431       this->gdb_index.size = bfd_get_section_size (sectp);
2432     }
2433   else if (section_is_p (sectp->name, &names.debug_names))
2434     {
2435       this->debug_names.s.section = sectp;
2436       this->debug_names.size = bfd_get_section_size (sectp);
2437     }
2438   else if (section_is_p (sectp->name, &names.debug_aranges))
2439     {
2440       this->debug_aranges.s.section = sectp;
2441       this->debug_aranges.size = bfd_get_section_size (sectp);
2442     }
2443
2444   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2445       && bfd_section_vma (abfd, sectp) == 0)
2446     this->has_section_at_zero = true;
2447 }
2448
2449 /* A helper function that decides whether a section is empty,
2450    or not present.  */
2451
2452 static int
2453 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2454 {
2455   if (section->is_virtual)
2456     return section->size == 0;
2457   return section->s.section == NULL || section->size == 0;
2458 }
2459
2460 /* See dwarf2read.h.  */
2461
2462 void
2463 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2464 {
2465   asection *sectp;
2466   bfd *abfd;
2467   gdb_byte *buf, *retbuf;
2468
2469   if (info->readin)
2470     return;
2471   info->buffer = NULL;
2472   info->readin = 1;
2473
2474   if (dwarf2_section_empty_p (info))
2475     return;
2476
2477   sectp = get_section_bfd_section (info);
2478
2479   /* If this is a virtual section we need to read in the real one first.  */
2480   if (info->is_virtual)
2481     {
2482       struct dwarf2_section_info *containing_section =
2483         get_containing_section (info);
2484
2485       gdb_assert (sectp != NULL);
2486       if ((sectp->flags & SEC_RELOC) != 0)
2487         {
2488           error (_("Dwarf Error: DWP format V2 with relocations is not"
2489                    " supported in section %s [in module %s]"),
2490                  get_section_name (info), get_section_file_name (info));
2491         }
2492       dwarf2_read_section (objfile, containing_section);
2493       /* Other code should have already caught virtual sections that don't
2494          fit.  */
2495       gdb_assert (info->virtual_offset + info->size
2496                   <= containing_section->size);
2497       /* If the real section is empty or there was a problem reading the
2498          section we shouldn't get here.  */
2499       gdb_assert (containing_section->buffer != NULL);
2500       info->buffer = containing_section->buffer + info->virtual_offset;
2501       return;
2502     }
2503
2504   /* If the section has relocations, we must read it ourselves.
2505      Otherwise we attach it to the BFD.  */
2506   if ((sectp->flags & SEC_RELOC) == 0)
2507     {
2508       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2509       return;
2510     }
2511
2512   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2513   info->buffer = buf;
2514
2515   /* When debugging .o files, we may need to apply relocations; see
2516      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2517      We never compress sections in .o files, so we only need to
2518      try this when the section is not compressed.  */
2519   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2520   if (retbuf != NULL)
2521     {
2522       info->buffer = retbuf;
2523       return;
2524     }
2525
2526   abfd = get_section_bfd_owner (info);
2527   gdb_assert (abfd != NULL);
2528
2529   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2530       || bfd_bread (buf, info->size, abfd) != info->size)
2531     {
2532       error (_("Dwarf Error: Can't read DWARF data"
2533                " in section %s [in module %s]"),
2534              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2535     }
2536 }
2537
2538 /* A helper function that returns the size of a section in a safe way.
2539    If you are positive that the section has been read before using the
2540    size, then it is safe to refer to the dwarf2_section_info object's
2541    "size" field directly.  In other cases, you must call this
2542    function, because for compressed sections the size field is not set
2543    correctly until the section has been read.  */
2544
2545 static bfd_size_type
2546 dwarf2_section_size (struct objfile *objfile,
2547                      struct dwarf2_section_info *info)
2548 {
2549   if (!info->readin)
2550     dwarf2_read_section (objfile, info);
2551   return info->size;
2552 }
2553
2554 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2555    SECTION_NAME.  */
2556
2557 void
2558 dwarf2_get_section_info (struct objfile *objfile,
2559                          enum dwarf2_section_enum sect,
2560                          asection **sectp, const gdb_byte **bufp,
2561                          bfd_size_type *sizep)
2562 {
2563   struct dwarf2_per_objfile *data
2564     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2565                                                   dwarf2_objfile_data_key);
2566   struct dwarf2_section_info *info;
2567
2568   /* We may see an objfile without any DWARF, in which case we just
2569      return nothing.  */
2570   if (data == NULL)
2571     {
2572       *sectp = NULL;
2573       *bufp = NULL;
2574       *sizep = 0;
2575       return;
2576     }
2577   switch (sect)
2578     {
2579     case DWARF2_DEBUG_FRAME:
2580       info = &data->frame;
2581       break;
2582     case DWARF2_EH_FRAME:
2583       info = &data->eh_frame;
2584       break;
2585     default:
2586       gdb_assert_not_reached ("unexpected section");
2587     }
2588
2589   dwarf2_read_section (objfile, info);
2590
2591   *sectp = get_section_bfd_section (info);
2592   *bufp = info->buffer;
2593   *sizep = info->size;
2594 }
2595
2596 /* A helper function to find the sections for a .dwz file.  */
2597
2598 static void
2599 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2600 {
2601   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2602
2603   /* Note that we only support the standard ELF names, because .dwz
2604      is ELF-only (at the time of writing).  */
2605   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2606     {
2607       dwz_file->abbrev.s.section = sectp;
2608       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2609     }
2610   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2611     {
2612       dwz_file->info.s.section = sectp;
2613       dwz_file->info.size = bfd_get_section_size (sectp);
2614     }
2615   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2616     {
2617       dwz_file->str.s.section = sectp;
2618       dwz_file->str.size = bfd_get_section_size (sectp);
2619     }
2620   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2621     {
2622       dwz_file->line.s.section = sectp;
2623       dwz_file->line.size = bfd_get_section_size (sectp);
2624     }
2625   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2626     {
2627       dwz_file->macro.s.section = sectp;
2628       dwz_file->macro.size = bfd_get_section_size (sectp);
2629     }
2630   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2631     {
2632       dwz_file->gdb_index.s.section = sectp;
2633       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2634     }
2635   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2636     {
2637       dwz_file->debug_names.s.section = sectp;
2638       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2639     }
2640 }
2641
2642 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2643    there is no .gnu_debugaltlink section in the file.  Error if there
2644    is such a section but the file cannot be found.  */
2645
2646 static struct dwz_file *
2647 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2648 {
2649   const char *filename;
2650   bfd_size_type buildid_len_arg;
2651   size_t buildid_len;
2652   bfd_byte *buildid;
2653
2654   if (dwarf2_per_objfile->dwz_file != NULL)
2655     return dwarf2_per_objfile->dwz_file.get ();
2656
2657   bfd_set_error (bfd_error_no_error);
2658   gdb::unique_xmalloc_ptr<char> data
2659     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2660                                   &buildid_len_arg, &buildid));
2661   if (data == NULL)
2662     {
2663       if (bfd_get_error () == bfd_error_no_error)
2664         return NULL;
2665       error (_("could not read '.gnu_debugaltlink' section: %s"),
2666              bfd_errmsg (bfd_get_error ()));
2667     }
2668
2669   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2670
2671   buildid_len = (size_t) buildid_len_arg;
2672
2673   filename = data.get ();
2674
2675   std::string abs_storage;
2676   if (!IS_ABSOLUTE_PATH (filename))
2677     {
2678       gdb::unique_xmalloc_ptr<char> abs
2679         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2680
2681       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2682       filename = abs_storage.c_str ();
2683     }
2684
2685   /* First try the file name given in the section.  If that doesn't
2686      work, try to use the build-id instead.  */
2687   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2688   if (dwz_bfd != NULL)
2689     {
2690       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2691         dwz_bfd.release ();
2692     }
2693
2694   if (dwz_bfd == NULL)
2695     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2696
2697   if (dwz_bfd == NULL)
2698     error (_("could not find '.gnu_debugaltlink' file for %s"),
2699            objfile_name (dwarf2_per_objfile->objfile));
2700
2701   std::unique_ptr<struct dwz_file> result
2702     (new struct dwz_file (std::move (dwz_bfd)));
2703
2704   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2705                          result.get ());
2706
2707   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2708                             result->dwz_bfd.get ());
2709   dwarf2_per_objfile->dwz_file = std::move (result);
2710   return dwarf2_per_objfile->dwz_file.get ();
2711 }
2712 \f
2713 /* DWARF quick_symbols_functions support.  */
2714
2715 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2716    unique line tables, so we maintain a separate table of all .debug_line
2717    derived entries to support the sharing.
2718    All the quick functions need is the list of file names.  We discard the
2719    line_header when we're done and don't need to record it here.  */
2720 struct quick_file_names
2721 {
2722   /* The data used to construct the hash key.  */
2723   struct stmt_list_hash hash;
2724
2725   /* The number of entries in file_names, real_names.  */
2726   unsigned int num_file_names;
2727
2728   /* The file names from the line table, after being run through
2729      file_full_name.  */
2730   const char **file_names;
2731
2732   /* The file names from the line table after being run through
2733      gdb_realpath.  These are computed lazily.  */
2734   const char **real_names;
2735 };
2736
2737 /* When using the index (and thus not using psymtabs), each CU has an
2738    object of this type.  This is used to hold information needed by
2739    the various "quick" methods.  */
2740 struct dwarf2_per_cu_quick_data
2741 {
2742   /* The file table.  This can be NULL if there was no file table
2743      or it's currently not read in.
2744      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2745   struct quick_file_names *file_names;
2746
2747   /* The corresponding symbol table.  This is NULL if symbols for this
2748      CU have not yet been read.  */
2749   struct compunit_symtab *compunit_symtab;
2750
2751   /* A temporary mark bit used when iterating over all CUs in
2752      expand_symtabs_matching.  */
2753   unsigned int mark : 1;
2754
2755   /* True if we've tried to read the file table and found there isn't one.
2756      There will be no point in trying to read it again next time.  */
2757   unsigned int no_file_data : 1;
2758 };
2759
2760 /* Utility hash function for a stmt_list_hash.  */
2761
2762 static hashval_t
2763 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2764 {
2765   hashval_t v = 0;
2766
2767   if (stmt_list_hash->dwo_unit != NULL)
2768     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2769   v += to_underlying (stmt_list_hash->line_sect_off);
2770   return v;
2771 }
2772
2773 /* Utility equality function for a stmt_list_hash.  */
2774
2775 static int
2776 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2777                     const struct stmt_list_hash *rhs)
2778 {
2779   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2780     return 0;
2781   if (lhs->dwo_unit != NULL
2782       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2783     return 0;
2784
2785   return lhs->line_sect_off == rhs->line_sect_off;
2786 }
2787
2788 /* Hash function for a quick_file_names.  */
2789
2790 static hashval_t
2791 hash_file_name_entry (const void *e)
2792 {
2793   const struct quick_file_names *file_data
2794     = (const struct quick_file_names *) e;
2795
2796   return hash_stmt_list_entry (&file_data->hash);
2797 }
2798
2799 /* Equality function for a quick_file_names.  */
2800
2801 static int
2802 eq_file_name_entry (const void *a, const void *b)
2803 {
2804   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2805   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2806
2807   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2808 }
2809
2810 /* Delete function for a quick_file_names.  */
2811
2812 static void
2813 delete_file_name_entry (void *e)
2814 {
2815   struct quick_file_names *file_data = (struct quick_file_names *) e;
2816   int i;
2817
2818   for (i = 0; i < file_data->num_file_names; ++i)
2819     {
2820       xfree ((void*) file_data->file_names[i]);
2821       if (file_data->real_names)
2822         xfree ((void*) file_data->real_names[i]);
2823     }
2824
2825   /* The space for the struct itself lives on objfile_obstack,
2826      so we don't free it here.  */
2827 }
2828
2829 /* Create a quick_file_names hash table.  */
2830
2831 static htab_t
2832 create_quick_file_names_table (unsigned int nr_initial_entries)
2833 {
2834   return htab_create_alloc (nr_initial_entries,
2835                             hash_file_name_entry, eq_file_name_entry,
2836                             delete_file_name_entry, xcalloc, xfree);
2837 }
2838
2839 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2840    have to be created afterwards.  You should call age_cached_comp_units after
2841    processing PER_CU->CU.  dw2_setup must have been already called.  */
2842
2843 static void
2844 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2845 {
2846   if (per_cu->is_debug_types)
2847     load_full_type_unit (per_cu);
2848   else
2849     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2850
2851   if (per_cu->cu == NULL)
2852     return;  /* Dummy CU.  */
2853
2854   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2855 }
2856
2857 /* Read in the symbols for PER_CU.  */
2858
2859 static void
2860 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2861 {
2862   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2863
2864   /* Skip type_unit_groups, reading the type units they contain
2865      is handled elsewhere.  */
2866   if (IS_TYPE_UNIT_GROUP (per_cu))
2867     return;
2868
2869   /* The destructor of dwarf2_queue_guard frees any entries left on
2870      the queue.  After this point we're guaranteed to leave this function
2871      with the dwarf queue empty.  */
2872   dwarf2_queue_guard q_guard;
2873
2874   if (dwarf2_per_objfile->using_index
2875       ? per_cu->v.quick->compunit_symtab == NULL
2876       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2877     {
2878       queue_comp_unit (per_cu, language_minimal);
2879       load_cu (per_cu, skip_partial);
2880
2881       /* If we just loaded a CU from a DWO, and we're working with an index
2882          that may badly handle TUs, load all the TUs in that DWO as well.
2883          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2884       if (!per_cu->is_debug_types
2885           && per_cu->cu != NULL
2886           && per_cu->cu->dwo_unit != NULL
2887           && dwarf2_per_objfile->index_table != NULL
2888           && dwarf2_per_objfile->index_table->version <= 7
2889           /* DWP files aren't supported yet.  */
2890           && get_dwp_file (dwarf2_per_objfile) == NULL)
2891         queue_and_load_all_dwo_tus (per_cu);
2892     }
2893
2894   process_queue (dwarf2_per_objfile);
2895
2896   /* Age the cache, releasing compilation units that have not
2897      been used recently.  */
2898   age_cached_comp_units (dwarf2_per_objfile);
2899 }
2900
2901 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2902    the objfile from which this CU came.  Returns the resulting symbol
2903    table.  */
2904
2905 static struct compunit_symtab *
2906 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2907 {
2908   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2909
2910   gdb_assert (dwarf2_per_objfile->using_index);
2911   if (!per_cu->v.quick->compunit_symtab)
2912     {
2913       free_cached_comp_units freer (dwarf2_per_objfile);
2914       scoped_restore decrementer = increment_reading_symtab ();
2915       dw2_do_instantiate_symtab (per_cu, skip_partial);
2916       process_cu_includes (dwarf2_per_objfile);
2917     }
2918
2919   return per_cu->v.quick->compunit_symtab;
2920 }
2921
2922 /* See declaration.  */
2923
2924 dwarf2_per_cu_data *
2925 dwarf2_per_objfile::get_cutu (int index)
2926 {
2927   if (index >= this->all_comp_units.size ())
2928     {
2929       index -= this->all_comp_units.size ();
2930       gdb_assert (index < this->all_type_units.size ());
2931       return &this->all_type_units[index]->per_cu;
2932     }
2933
2934   return this->all_comp_units[index];
2935 }
2936
2937 /* See declaration.  */
2938
2939 dwarf2_per_cu_data *
2940 dwarf2_per_objfile::get_cu (int index)
2941 {
2942   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2943
2944   return this->all_comp_units[index];
2945 }
2946
2947 /* See declaration.  */
2948
2949 signatured_type *
2950 dwarf2_per_objfile::get_tu (int index)
2951 {
2952   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2953
2954   return this->all_type_units[index];
2955 }
2956
2957 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2958    objfile_obstack, and constructed with the specified field
2959    values.  */
2960
2961 static dwarf2_per_cu_data *
2962 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2963                           struct dwarf2_section_info *section,
2964                           int is_dwz,
2965                           sect_offset sect_off, ULONGEST length)
2966 {
2967   struct objfile *objfile = dwarf2_per_objfile->objfile;
2968   dwarf2_per_cu_data *the_cu
2969     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970                      struct dwarf2_per_cu_data);
2971   the_cu->sect_off = sect_off;
2972   the_cu->length = length;
2973   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2974   the_cu->section = section;
2975   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2976                                    struct dwarf2_per_cu_quick_data);
2977   the_cu->is_dwz = is_dwz;
2978   return the_cu;
2979 }
2980
2981 /* A helper for create_cus_from_index that handles a given list of
2982    CUs.  */
2983
2984 static void
2985 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2986                             const gdb_byte *cu_list, offset_type n_elements,
2987                             struct dwarf2_section_info *section,
2988                             int is_dwz)
2989 {
2990   for (offset_type i = 0; i < n_elements; i += 2)
2991     {
2992       gdb_static_assert (sizeof (ULONGEST) >= 8);
2993
2994       sect_offset sect_off
2995         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2996       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2997       cu_list += 2 * 8;
2998
2999       dwarf2_per_cu_data *per_cu
3000         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3001                                      sect_off, length);
3002       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3003     }
3004 }
3005
3006 /* Read the CU list from the mapped index, and use it to create all
3007    the CU objects for this objfile.  */
3008
3009 static void
3010 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3011                        const gdb_byte *cu_list, offset_type cu_list_elements,
3012                        const gdb_byte *dwz_list, offset_type dwz_elements)
3013 {
3014   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3015   dwarf2_per_objfile->all_comp_units.reserve
3016     ((cu_list_elements + dwz_elements) / 2);
3017
3018   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3019                               &dwarf2_per_objfile->info, 0);
3020
3021   if (dwz_elements == 0)
3022     return;
3023
3024   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3025   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3026                               &dwz->info, 1);
3027 }
3028
3029 /* Create the signatured type hash table from the index.  */
3030
3031 static void
3032 create_signatured_type_table_from_index
3033   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3034    struct dwarf2_section_info *section,
3035    const gdb_byte *bytes,
3036    offset_type elements)
3037 {
3038   struct objfile *objfile = dwarf2_per_objfile->objfile;
3039
3040   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3041   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3042
3043   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3044
3045   for (offset_type i = 0; i < elements; i += 3)
3046     {
3047       struct signatured_type *sig_type;
3048       ULONGEST signature;
3049       void **slot;
3050       cu_offset type_offset_in_tu;
3051
3052       gdb_static_assert (sizeof (ULONGEST) >= 8);
3053       sect_offset sect_off
3054         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3055       type_offset_in_tu
3056         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3057                                                 BFD_ENDIAN_LITTLE);
3058       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3059       bytes += 3 * 8;
3060
3061       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3062                                  struct signatured_type);
3063       sig_type->signature = signature;
3064       sig_type->type_offset_in_tu = type_offset_in_tu;
3065       sig_type->per_cu.is_debug_types = 1;
3066       sig_type->per_cu.section = section;
3067       sig_type->per_cu.sect_off = sect_off;
3068       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3069       sig_type->per_cu.v.quick
3070         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3071                           struct dwarf2_per_cu_quick_data);
3072
3073       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3074       *slot = sig_type;
3075
3076       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3077     }
3078
3079   dwarf2_per_objfile->signatured_types = sig_types_hash;
3080 }
3081
3082 /* Create the signatured type hash table from .debug_names.  */
3083
3084 static void
3085 create_signatured_type_table_from_debug_names
3086   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3087    const mapped_debug_names &map,
3088    struct dwarf2_section_info *section,
3089    struct dwarf2_section_info *abbrev_section)
3090 {
3091   struct objfile *objfile = dwarf2_per_objfile->objfile;
3092
3093   dwarf2_read_section (objfile, section);
3094   dwarf2_read_section (objfile, abbrev_section);
3095
3096   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3097   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3098
3099   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3100
3101   for (uint32_t i = 0; i < map.tu_count; ++i)
3102     {
3103       struct signatured_type *sig_type;
3104       void **slot;
3105
3106       sect_offset sect_off
3107         = (sect_offset) (extract_unsigned_integer
3108                          (map.tu_table_reordered + i * map.offset_size,
3109                           map.offset_size,
3110                           map.dwarf5_byte_order));
3111
3112       comp_unit_head cu_header;
3113       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3114                                      abbrev_section,
3115                                      section->buffer + to_underlying (sect_off),
3116                                      rcuh_kind::TYPE);
3117
3118       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3119                                  struct signatured_type);
3120       sig_type->signature = cu_header.signature;
3121       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3122       sig_type->per_cu.is_debug_types = 1;
3123       sig_type->per_cu.section = section;
3124       sig_type->per_cu.sect_off = sect_off;
3125       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3126       sig_type->per_cu.v.quick
3127         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3128                           struct dwarf2_per_cu_quick_data);
3129
3130       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3131       *slot = sig_type;
3132
3133       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3134     }
3135
3136   dwarf2_per_objfile->signatured_types = sig_types_hash;
3137 }
3138
3139 /* Read the address map data from the mapped index, and use it to
3140    populate the objfile's psymtabs_addrmap.  */
3141
3142 static void
3143 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3144                            struct mapped_index *index)
3145 {
3146   struct objfile *objfile = dwarf2_per_objfile->objfile;
3147   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3148   const gdb_byte *iter, *end;
3149   struct addrmap *mutable_map;
3150   CORE_ADDR baseaddr;
3151
3152   auto_obstack temp_obstack;
3153
3154   mutable_map = addrmap_create_mutable (&temp_obstack);
3155
3156   iter = index->address_table.data ();
3157   end = iter + index->address_table.size ();
3158
3159   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3160
3161   while (iter < end)
3162     {
3163       ULONGEST hi, lo, cu_index;
3164       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3165       iter += 8;
3166       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3167       iter += 8;
3168       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3169       iter += 4;
3170
3171       if (lo > hi)
3172         {
3173           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3174                      hex_string (lo), hex_string (hi));
3175           continue;
3176         }
3177
3178       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3179         {
3180           complaint (_(".gdb_index address table has invalid CU number %u"),
3181                      (unsigned) cu_index);
3182           continue;
3183         }
3184
3185       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3186       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3187       addrmap_set_empty (mutable_map, lo, hi - 1,
3188                          dwarf2_per_objfile->get_cu (cu_index));
3189     }
3190
3191   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3192                                                     &objfile->objfile_obstack);
3193 }
3194
3195 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3196    populate the objfile's psymtabs_addrmap.  */
3197
3198 static void
3199 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3200                              struct dwarf2_section_info *section)
3201 {
3202   struct objfile *objfile = dwarf2_per_objfile->objfile;
3203   bfd *abfd = objfile->obfd;
3204   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3205   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3206                                        SECT_OFF_TEXT (objfile));
3207
3208   auto_obstack temp_obstack;
3209   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3210
3211   std::unordered_map<sect_offset,
3212                      dwarf2_per_cu_data *,
3213                      gdb::hash_enum<sect_offset>>
3214     debug_info_offset_to_per_cu;
3215   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3216     {
3217       const auto insertpair
3218         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3219       if (!insertpair.second)
3220         {
3221           warning (_("Section .debug_aranges in %s has duplicate "
3222                      "debug_info_offset %s, ignoring .debug_aranges."),
3223                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3224           return;
3225         }
3226     }
3227
3228   dwarf2_read_section (objfile, section);
3229
3230   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3231
3232   const gdb_byte *addr = section->buffer;
3233
3234   while (addr < section->buffer + section->size)
3235     {
3236       const gdb_byte *const entry_addr = addr;
3237       unsigned int bytes_read;
3238
3239       const LONGEST entry_length = read_initial_length (abfd, addr,
3240                                                         &bytes_read);
3241       addr += bytes_read;
3242
3243       const gdb_byte *const entry_end = addr + entry_length;
3244       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3245       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3246       if (addr + entry_length > section->buffer + section->size)
3247         {
3248           warning (_("Section .debug_aranges in %s entry at offset %zu "
3249                      "length %s exceeds section length %s, "
3250                      "ignoring .debug_aranges."),
3251                    objfile_name (objfile), entry_addr - section->buffer,
3252                    plongest (bytes_read + entry_length),
3253                    pulongest (section->size));
3254           return;
3255         }
3256
3257       /* The version number.  */
3258       const uint16_t version = read_2_bytes (abfd, addr);
3259       addr += 2;
3260       if (version != 2)
3261         {
3262           warning (_("Section .debug_aranges in %s entry at offset %zu "
3263                      "has unsupported version %d, ignoring .debug_aranges."),
3264                    objfile_name (objfile), entry_addr - section->buffer,
3265                    version);
3266           return;
3267         }
3268
3269       const uint64_t debug_info_offset
3270         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3271       addr += offset_size;
3272       const auto per_cu_it
3273         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3274       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3275         {
3276           warning (_("Section .debug_aranges in %s entry at offset %zu "
3277                      "debug_info_offset %s does not exists, "
3278                      "ignoring .debug_aranges."),
3279                    objfile_name (objfile), entry_addr - section->buffer,
3280                    pulongest (debug_info_offset));
3281           return;
3282         }
3283       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3284
3285       const uint8_t address_size = *addr++;
3286       if (address_size < 1 || address_size > 8)
3287         {
3288           warning (_("Section .debug_aranges in %s entry at offset %zu "
3289                      "address_size %u is invalid, ignoring .debug_aranges."),
3290                    objfile_name (objfile), entry_addr - section->buffer,
3291                    address_size);
3292           return;
3293         }
3294
3295       const uint8_t segment_selector_size = *addr++;
3296       if (segment_selector_size != 0)
3297         {
3298           warning (_("Section .debug_aranges in %s entry at offset %zu "
3299                      "segment_selector_size %u is not supported, "
3300                      "ignoring .debug_aranges."),
3301                    objfile_name (objfile), entry_addr - section->buffer,
3302                    segment_selector_size);
3303           return;
3304         }
3305
3306       /* Must pad to an alignment boundary that is twice the address
3307          size.  It is undocumented by the DWARF standard but GCC does
3308          use it.  */
3309       for (size_t padding = ((-(addr - section->buffer))
3310                              & (2 * address_size - 1));
3311            padding > 0; padding--)
3312         if (*addr++ != 0)
3313           {
3314             warning (_("Section .debug_aranges in %s entry at offset %zu "
3315                        "padding is not zero, ignoring .debug_aranges."),
3316                      objfile_name (objfile), entry_addr - section->buffer);
3317             return;
3318           }
3319
3320       for (;;)
3321         {
3322           if (addr + 2 * address_size > entry_end)
3323             {
3324               warning (_("Section .debug_aranges in %s entry at offset %zu "
3325                          "address list is not properly terminated, "
3326                          "ignoring .debug_aranges."),
3327                        objfile_name (objfile), entry_addr - section->buffer);
3328               return;
3329             }
3330           ULONGEST start = extract_unsigned_integer (addr, address_size,
3331                                                      dwarf5_byte_order);
3332           addr += address_size;
3333           ULONGEST length = extract_unsigned_integer (addr, address_size,
3334                                                       dwarf5_byte_order);
3335           addr += address_size;
3336           if (start == 0 && length == 0)
3337             break;
3338           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3339             {
3340               /* Symbol was eliminated due to a COMDAT group.  */
3341               continue;
3342             }
3343           ULONGEST end = start + length;
3344           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3345                    - baseaddr);
3346           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3347                  - baseaddr);
3348           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3349         }
3350     }
3351
3352   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3353                                                     &objfile->objfile_obstack);
3354 }
3355
3356 /* Find a slot in the mapped index INDEX for the object named NAME.
3357    If NAME is found, set *VEC_OUT to point to the CU vector in the
3358    constant pool and return true.  If NAME cannot be found, return
3359    false.  */
3360
3361 static bool
3362 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3363                           offset_type **vec_out)
3364 {
3365   offset_type hash;
3366   offset_type slot, step;
3367   int (*cmp) (const char *, const char *);
3368
3369   gdb::unique_xmalloc_ptr<char> without_params;
3370   if (current_language->la_language == language_cplus
3371       || current_language->la_language == language_fortran
3372       || current_language->la_language == language_d)
3373     {
3374       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3375          not contain any.  */
3376
3377       if (strchr (name, '(') != NULL)
3378         {
3379           without_params = cp_remove_params (name);
3380
3381           if (without_params != NULL)
3382             name = without_params.get ();
3383         }
3384     }
3385
3386   /* Index version 4 did not support case insensitive searches.  But the
3387      indices for case insensitive languages are built in lowercase, therefore
3388      simulate our NAME being searched is also lowercased.  */
3389   hash = mapped_index_string_hash ((index->version == 4
3390                                     && case_sensitivity == case_sensitive_off
3391                                     ? 5 : index->version),
3392                                    name);
3393
3394   slot = hash & (index->symbol_table.size () - 1);
3395   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3396   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3397
3398   for (;;)
3399     {
3400       const char *str;
3401
3402       const auto &bucket = index->symbol_table[slot];
3403       if (bucket.name == 0 && bucket.vec == 0)
3404         return false;
3405
3406       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3407       if (!cmp (name, str))
3408         {
3409           *vec_out = (offset_type *) (index->constant_pool
3410                                       + MAYBE_SWAP (bucket.vec));
3411           return true;
3412         }
3413
3414       slot = (slot + step) & (index->symbol_table.size () - 1);
3415     }
3416 }
3417
3418 /* A helper function that reads the .gdb_index from BUFFER and fills
3419    in MAP.  FILENAME is the name of the file containing the data;
3420    it is used for error reporting.  DEPRECATED_OK is true if it is
3421    ok to use deprecated sections.
3422
3423    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3424    out parameters that are filled in with information about the CU and
3425    TU lists in the section.
3426
3427    Returns true if all went well, false otherwise.  */
3428
3429 static bool
3430 read_gdb_index_from_buffer (struct objfile *objfile,
3431                             const char *filename,
3432                             bool deprecated_ok,
3433                             gdb::array_view<const gdb_byte> buffer,
3434                             struct mapped_index *map,
3435                             const gdb_byte **cu_list,
3436                             offset_type *cu_list_elements,
3437                             const gdb_byte **types_list,
3438                             offset_type *types_list_elements)
3439 {
3440   const gdb_byte *addr = &buffer[0];
3441
3442   /* Version check.  */
3443   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3444   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3445      causes the index to behave very poorly for certain requests.  Version 3
3446      contained incomplete addrmap.  So, it seems better to just ignore such
3447      indices.  */
3448   if (version < 4)
3449     {
3450       static int warning_printed = 0;
3451       if (!warning_printed)
3452         {
3453           warning (_("Skipping obsolete .gdb_index section in %s."),
3454                    filename);
3455           warning_printed = 1;
3456         }
3457       return 0;
3458     }
3459   /* Index version 4 uses a different hash function than index version
3460      5 and later.
3461
3462      Versions earlier than 6 did not emit psymbols for inlined
3463      functions.  Using these files will cause GDB not to be able to
3464      set breakpoints on inlined functions by name, so we ignore these
3465      indices unless the user has done
3466      "set use-deprecated-index-sections on".  */
3467   if (version < 6 && !deprecated_ok)
3468     {
3469       static int warning_printed = 0;
3470       if (!warning_printed)
3471         {
3472           warning (_("\
3473 Skipping deprecated .gdb_index section in %s.\n\
3474 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3475 to use the section anyway."),
3476                    filename);
3477           warning_printed = 1;
3478         }
3479       return 0;
3480     }
3481   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3482      of the TU (for symbols coming from TUs),
3483      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3484      Plus gold-generated indices can have duplicate entries for global symbols,
3485      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3486      These are just performance bugs, and we can't distinguish gdb-generated
3487      indices from gold-generated ones, so issue no warning here.  */
3488
3489   /* Indexes with higher version than the one supported by GDB may be no
3490      longer backward compatible.  */
3491   if (version > 8)
3492     return 0;
3493
3494   map->version = version;
3495
3496   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3497
3498   int i = 0;
3499   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3500   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3501                        / 8);
3502   ++i;
3503
3504   *types_list = addr + MAYBE_SWAP (metadata[i]);
3505   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3506                            - MAYBE_SWAP (metadata[i]))
3507                           / 8);
3508   ++i;
3509
3510   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3511   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3512   map->address_table
3513     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3514   ++i;
3515
3516   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3517   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3518   map->symbol_table
3519     = gdb::array_view<mapped_index::symbol_table_slot>
3520        ((mapped_index::symbol_table_slot *) symbol_table,
3521         (mapped_index::symbol_table_slot *) symbol_table_end);
3522
3523   ++i;
3524   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3525
3526   return 1;
3527 }
3528
3529 /* Callback types for dwarf2_read_gdb_index.  */
3530
3531 typedef gdb::function_view
3532     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3533     get_gdb_index_contents_ftype;
3534 typedef gdb::function_view
3535     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3536     get_gdb_index_contents_dwz_ftype;
3537
3538 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3539    elements of all the CUs and return 1.  Otherwise, return 0.  */
3540
3541 static int
3542 dwarf2_read_gdb_index
3543   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3544    get_gdb_index_contents_ftype get_gdb_index_contents,
3545    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3546 {
3547   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3548   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3549   struct dwz_file *dwz;
3550   struct objfile *objfile = dwarf2_per_objfile->objfile;
3551
3552   gdb::array_view<const gdb_byte> main_index_contents
3553     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3554
3555   if (main_index_contents.empty ())
3556     return 0;
3557
3558   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3559   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3560                                    use_deprecated_index_sections,
3561                                    main_index_contents, map.get (), &cu_list,
3562                                    &cu_list_elements, &types_list,
3563                                    &types_list_elements))
3564     return 0;
3565
3566   /* Don't use the index if it's empty.  */
3567   if (map->symbol_table.empty ())
3568     return 0;
3569
3570   /* If there is a .dwz file, read it so we can get its CU list as
3571      well.  */
3572   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3573   if (dwz != NULL)
3574     {
3575       struct mapped_index dwz_map;
3576       const gdb_byte *dwz_types_ignore;
3577       offset_type dwz_types_elements_ignore;
3578
3579       gdb::array_view<const gdb_byte> dwz_index_content
3580         = get_gdb_index_contents_dwz (objfile, dwz);
3581
3582       if (dwz_index_content.empty ())
3583         return 0;
3584
3585       if (!read_gdb_index_from_buffer (objfile,
3586                                        bfd_get_filename (dwz->dwz_bfd), 1,
3587                                        dwz_index_content, &dwz_map,
3588                                        &dwz_list, &dwz_list_elements,
3589                                        &dwz_types_ignore,
3590                                        &dwz_types_elements_ignore))
3591         {
3592           warning (_("could not read '.gdb_index' section from %s; skipping"),
3593                    bfd_get_filename (dwz->dwz_bfd));
3594           return 0;
3595         }
3596     }
3597
3598   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3599                          dwz_list, dwz_list_elements);
3600
3601   if (types_list_elements)
3602     {
3603       struct dwarf2_section_info *section;
3604
3605       /* We can only handle a single .debug_types when we have an
3606          index.  */
3607       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3608         return 0;
3609
3610       section = VEC_index (dwarf2_section_info_def,
3611                            dwarf2_per_objfile->types, 0);
3612
3613       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3614                                                types_list, types_list_elements);
3615     }
3616
3617   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3618
3619   dwarf2_per_objfile->index_table = std::move (map);
3620   dwarf2_per_objfile->using_index = 1;
3621   dwarf2_per_objfile->quick_file_names_table =
3622     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3623
3624   return 1;
3625 }
3626
3627 /* die_reader_func for dw2_get_file_names.  */
3628
3629 static void
3630 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3631                            const gdb_byte *info_ptr,
3632                            struct die_info *comp_unit_die,
3633                            int has_children,
3634                            void *data)
3635 {
3636   struct dwarf2_cu *cu = reader->cu;
3637   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3638   struct dwarf2_per_objfile *dwarf2_per_objfile
3639     = cu->per_cu->dwarf2_per_objfile;
3640   struct objfile *objfile = dwarf2_per_objfile->objfile;
3641   struct dwarf2_per_cu_data *lh_cu;
3642   struct attribute *attr;
3643   int i;
3644   void **slot;
3645   struct quick_file_names *qfn;
3646
3647   gdb_assert (! this_cu->is_debug_types);
3648
3649   /* Our callers never want to match partial units -- instead they
3650      will match the enclosing full CU.  */
3651   if (comp_unit_die->tag == DW_TAG_partial_unit)
3652     {
3653       this_cu->v.quick->no_file_data = 1;
3654       return;
3655     }
3656
3657   lh_cu = this_cu;
3658   slot = NULL;
3659
3660   line_header_up lh;
3661   sect_offset line_offset {};
3662
3663   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3664   if (attr)
3665     {
3666       struct quick_file_names find_entry;
3667
3668       line_offset = (sect_offset) DW_UNSND (attr);
3669
3670       /* We may have already read in this line header (TU line header sharing).
3671          If we have we're done.  */
3672       find_entry.hash.dwo_unit = cu->dwo_unit;
3673       find_entry.hash.line_sect_off = line_offset;
3674       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3675                              &find_entry, INSERT);
3676       if (*slot != NULL)
3677         {
3678           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3679           return;
3680         }
3681
3682       lh = dwarf_decode_line_header (line_offset, cu);
3683     }
3684   if (lh == NULL)
3685     {
3686       lh_cu->v.quick->no_file_data = 1;
3687       return;
3688     }
3689
3690   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3691   qfn->hash.dwo_unit = cu->dwo_unit;
3692   qfn->hash.line_sect_off = line_offset;
3693   gdb_assert (slot != NULL);
3694   *slot = qfn;
3695
3696   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3697
3698   qfn->num_file_names = lh->file_names.size ();
3699   qfn->file_names =
3700     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3701   for (i = 0; i < lh->file_names.size (); ++i)
3702     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3703   qfn->real_names = NULL;
3704
3705   lh_cu->v.quick->file_names = qfn;
3706 }
3707
3708 /* A helper for the "quick" functions which attempts to read the line
3709    table for THIS_CU.  */
3710
3711 static struct quick_file_names *
3712 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3713 {
3714   /* This should never be called for TUs.  */
3715   gdb_assert (! this_cu->is_debug_types);
3716   /* Nor type unit groups.  */
3717   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3718
3719   if (this_cu->v.quick->file_names != NULL)
3720     return this_cu->v.quick->file_names;
3721   /* If we know there is no line data, no point in looking again.  */
3722   if (this_cu->v.quick->no_file_data)
3723     return NULL;
3724
3725   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3726
3727   if (this_cu->v.quick->no_file_data)
3728     return NULL;
3729   return this_cu->v.quick->file_names;
3730 }
3731
3732 /* A helper for the "quick" functions which computes and caches the
3733    real path for a given file name from the line table.  */
3734
3735 static const char *
3736 dw2_get_real_path (struct objfile *objfile,
3737                    struct quick_file_names *qfn, int index)
3738 {
3739   if (qfn->real_names == NULL)
3740     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3741                                       qfn->num_file_names, const char *);
3742
3743   if (qfn->real_names[index] == NULL)
3744     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3745
3746   return qfn->real_names[index];
3747 }
3748
3749 static struct symtab *
3750 dw2_find_last_source_symtab (struct objfile *objfile)
3751 {
3752   struct dwarf2_per_objfile *dwarf2_per_objfile
3753     = get_dwarf2_per_objfile (objfile);
3754   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3755   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3756
3757   if (cust == NULL)
3758     return NULL;
3759
3760   return compunit_primary_filetab (cust);
3761 }
3762
3763 /* Traversal function for dw2_forget_cached_source_info.  */
3764
3765 static int
3766 dw2_free_cached_file_names (void **slot, void *info)
3767 {
3768   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3769
3770   if (file_data->real_names)
3771     {
3772       int i;
3773
3774       for (i = 0; i < file_data->num_file_names; ++i)
3775         {
3776           xfree ((void*) file_data->real_names[i]);
3777           file_data->real_names[i] = NULL;
3778         }
3779     }
3780
3781   return 1;
3782 }
3783
3784 static void
3785 dw2_forget_cached_source_info (struct objfile *objfile)
3786 {
3787   struct dwarf2_per_objfile *dwarf2_per_objfile
3788     = get_dwarf2_per_objfile (objfile);
3789
3790   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3791                           dw2_free_cached_file_names, NULL);
3792 }
3793
3794 /* Helper function for dw2_map_symtabs_matching_filename that expands
3795    the symtabs and calls the iterator.  */
3796
3797 static int
3798 dw2_map_expand_apply (struct objfile *objfile,
3799                       struct dwarf2_per_cu_data *per_cu,
3800                       const char *name, const char *real_path,
3801                       gdb::function_view<bool (symtab *)> callback)
3802 {
3803   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3804
3805   /* Don't visit already-expanded CUs.  */
3806   if (per_cu->v.quick->compunit_symtab)
3807     return 0;
3808
3809   /* This may expand more than one symtab, and we want to iterate over
3810      all of them.  */
3811   dw2_instantiate_symtab (per_cu, false);
3812
3813   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3814                                     last_made, callback);
3815 }
3816
3817 /* Implementation of the map_symtabs_matching_filename method.  */
3818
3819 static bool
3820 dw2_map_symtabs_matching_filename
3821   (struct objfile *objfile, const char *name, const char *real_path,
3822    gdb::function_view<bool (symtab *)> callback)
3823 {
3824   const char *name_basename = lbasename (name);
3825   struct dwarf2_per_objfile *dwarf2_per_objfile
3826     = get_dwarf2_per_objfile (objfile);
3827
3828   /* The rule is CUs specify all the files, including those used by
3829      any TU, so there's no need to scan TUs here.  */
3830
3831   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3832     {
3833       /* We only need to look at symtabs not already expanded.  */
3834       if (per_cu->v.quick->compunit_symtab)
3835         continue;
3836
3837       quick_file_names *file_data = dw2_get_file_names (per_cu);
3838       if (file_data == NULL)
3839         continue;
3840
3841       for (int j = 0; j < file_data->num_file_names; ++j)
3842         {
3843           const char *this_name = file_data->file_names[j];
3844           const char *this_real_name;
3845
3846           if (compare_filenames_for_search (this_name, name))
3847             {
3848               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3849                                         callback))
3850                 return true;
3851               continue;
3852             }
3853
3854           /* Before we invoke realpath, which can get expensive when many
3855              files are involved, do a quick comparison of the basenames.  */
3856           if (! basenames_may_differ
3857               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3858             continue;
3859
3860           this_real_name = dw2_get_real_path (objfile, file_data, j);
3861           if (compare_filenames_for_search (this_real_name, name))
3862             {
3863               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3864                                         callback))
3865                 return true;
3866               continue;
3867             }
3868
3869           if (real_path != NULL)
3870             {
3871               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3872               gdb_assert (IS_ABSOLUTE_PATH (name));
3873               if (this_real_name != NULL
3874                   && FILENAME_CMP (real_path, this_real_name) == 0)
3875                 {
3876                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3877                                             callback))
3878                     return true;
3879                   continue;
3880                 }
3881             }
3882         }
3883     }
3884
3885   return false;
3886 }
3887
3888 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3889
3890 struct dw2_symtab_iterator
3891 {
3892   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3893   struct dwarf2_per_objfile *dwarf2_per_objfile;
3894   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3895   int want_specific_block;
3896   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3897      Unused if !WANT_SPECIFIC_BLOCK.  */
3898   int block_index;
3899   /* The kind of symbol we're looking for.  */
3900   domain_enum domain;
3901   /* The list of CUs from the index entry of the symbol,
3902      or NULL if not found.  */
3903   offset_type *vec;
3904   /* The next element in VEC to look at.  */
3905   int next;
3906   /* The number of elements in VEC, or zero if there is no match.  */
3907   int length;
3908   /* Have we seen a global version of the symbol?
3909      If so we can ignore all further global instances.
3910      This is to work around gold/15646, inefficient gold-generated
3911      indices.  */
3912   int global_seen;
3913 };
3914
3915 /* Initialize the index symtab iterator ITER.
3916    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3917    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3918
3919 static void
3920 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3921                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3922                       int want_specific_block,
3923                       int block_index,
3924                       domain_enum domain,
3925                       const char *name)
3926 {
3927   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3928   iter->want_specific_block = want_specific_block;
3929   iter->block_index = block_index;
3930   iter->domain = domain;
3931   iter->next = 0;
3932   iter->global_seen = 0;
3933
3934   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3935
3936   /* index is NULL if OBJF_READNOW.  */
3937   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3938     iter->length = MAYBE_SWAP (*iter->vec);
3939   else
3940     {
3941       iter->vec = NULL;
3942       iter->length = 0;
3943     }
3944 }
3945
3946 /* Return the next matching CU or NULL if there are no more.  */
3947
3948 static struct dwarf2_per_cu_data *
3949 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3950 {
3951   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3952
3953   for ( ; iter->next < iter->length; ++iter->next)
3954     {
3955       offset_type cu_index_and_attrs =
3956         MAYBE_SWAP (iter->vec[iter->next + 1]);
3957       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3958       int want_static = iter->block_index != GLOBAL_BLOCK;
3959       /* This value is only valid for index versions >= 7.  */
3960       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3961       gdb_index_symbol_kind symbol_kind =
3962         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3963       /* Only check the symbol attributes if they're present.
3964          Indices prior to version 7 don't record them,
3965          and indices >= 7 may elide them for certain symbols
3966          (gold does this).  */
3967       int attrs_valid =
3968         (dwarf2_per_objfile->index_table->version >= 7
3969          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3970
3971       /* Don't crash on bad data.  */
3972       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3973                        + dwarf2_per_objfile->all_type_units.size ()))
3974         {
3975           complaint (_(".gdb_index entry has bad CU index"
3976                        " [in module %s]"),
3977                      objfile_name (dwarf2_per_objfile->objfile));
3978           continue;
3979         }
3980
3981       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3982
3983       /* Skip if already read in.  */
3984       if (per_cu->v.quick->compunit_symtab)
3985         continue;
3986
3987       /* Check static vs global.  */
3988       if (attrs_valid)
3989         {
3990           if (iter->want_specific_block
3991               && want_static != is_static)
3992             continue;
3993           /* Work around gold/15646.  */
3994           if (!is_static && iter->global_seen)
3995             continue;
3996           if (!is_static)
3997             iter->global_seen = 1;
3998         }
3999
4000       /* Only check the symbol's kind if it has one.  */
4001       if (attrs_valid)
4002         {
4003           switch (iter->domain)
4004             {
4005             case VAR_DOMAIN:
4006               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4007                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4008                   /* Some types are also in VAR_DOMAIN.  */
4009                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4010                 continue;
4011               break;
4012             case STRUCT_DOMAIN:
4013               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4014                 continue;
4015               break;
4016             case LABEL_DOMAIN:
4017               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4018                 continue;
4019               break;
4020             default:
4021               break;
4022             }
4023         }
4024
4025       ++iter->next;
4026       return per_cu;
4027     }
4028
4029   return NULL;
4030 }
4031
4032 static struct compunit_symtab *
4033 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4034                    const char *name, domain_enum domain)
4035 {
4036   struct compunit_symtab *stab_best = NULL;
4037   struct dwarf2_per_objfile *dwarf2_per_objfile
4038     = get_dwarf2_per_objfile (objfile);
4039
4040   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4041
4042   struct dw2_symtab_iterator iter;
4043   struct dwarf2_per_cu_data *per_cu;
4044
4045   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4046
4047   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4048     {
4049       struct symbol *sym, *with_opaque = NULL;
4050       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4051       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4052       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4053
4054       sym = block_find_symbol (block, name, domain,
4055                                block_find_non_opaque_type_preferred,
4056                                &with_opaque);
4057
4058       /* Some caution must be observed with overloaded functions
4059          and methods, since the index will not contain any overload
4060          information (but NAME might contain it).  */
4061
4062       if (sym != NULL
4063           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4064         return stab;
4065       if (with_opaque != NULL
4066           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4067         stab_best = stab;
4068
4069       /* Keep looking through other CUs.  */
4070     }
4071
4072   return stab_best;
4073 }
4074
4075 static void
4076 dw2_print_stats (struct objfile *objfile)
4077 {
4078   struct dwarf2_per_objfile *dwarf2_per_objfile
4079     = get_dwarf2_per_objfile (objfile);
4080   int total = (dwarf2_per_objfile->all_comp_units.size ()
4081                + dwarf2_per_objfile->all_type_units.size ());
4082   int count = 0;
4083
4084   for (int i = 0; i < total; ++i)
4085     {
4086       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4087
4088       if (!per_cu->v.quick->compunit_symtab)
4089         ++count;
4090     }
4091   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4092   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4093 }
4094
4095 /* This dumps minimal information about the index.
4096    It is called via "mt print objfiles".
4097    One use is to verify .gdb_index has been loaded by the
4098    gdb.dwarf2/gdb-index.exp testcase.  */
4099
4100 static void
4101 dw2_dump (struct objfile *objfile)
4102 {
4103   struct dwarf2_per_objfile *dwarf2_per_objfile
4104     = get_dwarf2_per_objfile (objfile);
4105
4106   gdb_assert (dwarf2_per_objfile->using_index);
4107   printf_filtered (".gdb_index:");
4108   if (dwarf2_per_objfile->index_table != NULL)
4109     {
4110       printf_filtered (" version %d\n",
4111                        dwarf2_per_objfile->index_table->version);
4112     }
4113   else
4114     printf_filtered (" faked for \"readnow\"\n");
4115   printf_filtered ("\n");
4116 }
4117
4118 static void
4119 dw2_expand_symtabs_for_function (struct objfile *objfile,
4120                                  const char *func_name)
4121 {
4122   struct dwarf2_per_objfile *dwarf2_per_objfile
4123     = get_dwarf2_per_objfile (objfile);
4124
4125   struct dw2_symtab_iterator iter;
4126   struct dwarf2_per_cu_data *per_cu;
4127
4128   /* Note: It doesn't matter what we pass for block_index here.  */
4129   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4130                         func_name);
4131
4132   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4133     dw2_instantiate_symtab (per_cu, false);
4134
4135 }
4136
4137 static void
4138 dw2_expand_all_symtabs (struct objfile *objfile)
4139 {
4140   struct dwarf2_per_objfile *dwarf2_per_objfile
4141     = get_dwarf2_per_objfile (objfile);
4142   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4143                      + dwarf2_per_objfile->all_type_units.size ());
4144
4145   for (int i = 0; i < total_units; ++i)
4146     {
4147       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4148
4149       /* We don't want to directly expand a partial CU, because if we
4150          read it with the wrong language, then assertion failures can
4151          be triggered later on.  See PR symtab/23010.  So, tell
4152          dw2_instantiate_symtab to skip partial CUs -- any important
4153          partial CU will be read via DW_TAG_imported_unit anyway.  */
4154       dw2_instantiate_symtab (per_cu, true);
4155     }
4156 }
4157
4158 static void
4159 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4160                                   const char *fullname)
4161 {
4162   struct dwarf2_per_objfile *dwarf2_per_objfile
4163     = get_dwarf2_per_objfile (objfile);
4164
4165   /* We don't need to consider type units here.
4166      This is only called for examining code, e.g. expand_line_sal.
4167      There can be an order of magnitude (or more) more type units
4168      than comp units, and we avoid them if we can.  */
4169
4170   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4171     {
4172       /* We only need to look at symtabs not already expanded.  */
4173       if (per_cu->v.quick->compunit_symtab)
4174         continue;
4175
4176       quick_file_names *file_data = dw2_get_file_names (per_cu);
4177       if (file_data == NULL)
4178         continue;
4179
4180       for (int j = 0; j < file_data->num_file_names; ++j)
4181         {
4182           const char *this_fullname = file_data->file_names[j];
4183
4184           if (filename_cmp (this_fullname, fullname) == 0)
4185             {
4186               dw2_instantiate_symtab (per_cu, false);
4187               break;
4188             }
4189         }
4190     }
4191 }
4192
4193 static void
4194 dw2_map_matching_symbols (struct objfile *objfile,
4195                           const char * name, domain_enum domain,
4196                           int global,
4197                           int (*callback) (struct block *,
4198                                            struct symbol *, void *),
4199                           void *data, symbol_name_match_type match,
4200                           symbol_compare_ftype *ordered_compare)
4201 {
4202   /* Currently unimplemented; used for Ada.  The function can be called if the
4203      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4204      does not look for non-Ada symbols this function should just return.  */
4205 }
4206
4207 /* Symbol name matcher for .gdb_index names.
4208
4209    Symbol names in .gdb_index have a few particularities:
4210
4211    - There's no indication of which is the language of each symbol.
4212
4213      Since each language has its own symbol name matching algorithm,
4214      and we don't know which language is the right one, we must match
4215      each symbol against all languages.  This would be a potential
4216      performance problem if it were not mitigated by the
4217      mapped_index::name_components lookup table, which significantly
4218      reduces the number of times we need to call into this matcher,
4219      making it a non-issue.
4220
4221    - Symbol names in the index have no overload (parameter)
4222      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4223      appear as "foo" in the index, for example.
4224
4225      This means that the lookup names passed to the symbol name
4226      matcher functions must have no parameter information either
4227      because (e.g.) symbol search name "foo" does not match
4228      lookup-name "foo(int)" [while swapping search name for lookup
4229      name would match].
4230 */
4231 class gdb_index_symbol_name_matcher
4232 {
4233 public:
4234   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4235   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4236
4237   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4238      Returns true if any matcher matches.  */
4239   bool matches (const char *symbol_name);
4240
4241 private:
4242   /* A reference to the lookup name we're matching against.  */
4243   const lookup_name_info &m_lookup_name;
4244
4245   /* A vector holding all the different symbol name matchers, for all
4246      languages.  */
4247   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4248 };
4249
4250 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4251   (const lookup_name_info &lookup_name)
4252     : m_lookup_name (lookup_name)
4253 {
4254   /* Prepare the vector of comparison functions upfront, to avoid
4255      doing the same work for each symbol.  Care is taken to avoid
4256      matching with the same matcher more than once if/when multiple
4257      languages use the same matcher function.  */
4258   auto &matchers = m_symbol_name_matcher_funcs;
4259   matchers.reserve (nr_languages);
4260
4261   matchers.push_back (default_symbol_name_matcher);
4262
4263   for (int i = 0; i < nr_languages; i++)
4264     {
4265       const language_defn *lang = language_def ((enum language) i);
4266       symbol_name_matcher_ftype *name_matcher
4267         = get_symbol_name_matcher (lang, m_lookup_name);
4268
4269       /* Don't insert the same comparison routine more than once.
4270          Note that we do this linear walk instead of a seemingly
4271          cheaper sorted insert, or use a std::set or something like
4272          that, because relative order of function addresses is not
4273          stable.  This is not a problem in practice because the number
4274          of supported languages is low, and the cost here is tiny
4275          compared to the number of searches we'll do afterwards using
4276          this object.  */
4277       if (name_matcher != default_symbol_name_matcher
4278           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4279               == matchers.end ()))
4280         matchers.push_back (name_matcher);
4281     }
4282 }
4283
4284 bool
4285 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4286 {
4287   for (auto matches_name : m_symbol_name_matcher_funcs)
4288     if (matches_name (symbol_name, m_lookup_name, NULL))
4289       return true;
4290
4291   return false;
4292 }
4293
4294 /* Starting from a search name, return the string that finds the upper
4295    bound of all strings that start with SEARCH_NAME in a sorted name
4296    list.  Returns the empty string to indicate that the upper bound is
4297    the end of the list.  */
4298
4299 static std::string
4300 make_sort_after_prefix_name (const char *search_name)
4301 {
4302   /* When looking to complete "func", we find the upper bound of all
4303      symbols that start with "func" by looking for where we'd insert
4304      the closest string that would follow "func" in lexicographical
4305      order.  Usually, that's "func"-with-last-character-incremented,
4306      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4307      will be UTF-8 multi-byte sequences, but we can't be certain.
4308      Especially mind the 0xff character, which is a valid character in
4309      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4310      rule out compilers allowing it in identifiers.  Note that
4311      conveniently, strcmp/strcasecmp are specified to compare
4312      characters interpreted as unsigned char.  So what we do is treat
4313      the whole string as a base 256 number composed of a sequence of
4314      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4315      to 0, and carries 1 to the following more-significant position.
4316      If the very first character in SEARCH_NAME ends up incremented
4317      and carries/overflows, then the upper bound is the end of the
4318      list.  The string after the empty string is also the empty
4319      string.
4320
4321      Some examples of this operation:
4322
4323        SEARCH_NAME  => "+1" RESULT
4324
4325        "abc"              => "abd"
4326        "ab\xff"           => "ac"
4327        "\xff" "a" "\xff"  => "\xff" "b"
4328        "\xff"             => ""
4329        "\xff\xff"         => ""
4330        ""                 => ""
4331
4332      Then, with these symbols for example:
4333
4334       func
4335       func1
4336       fund
4337
4338      completing "func" looks for symbols between "func" and
4339      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4340      which finds "func" and "func1", but not "fund".
4341
4342      And with:
4343
4344       funcÿ     (Latin1 'ÿ' [0xff])
4345       funcÿ1
4346       fund
4347
4348      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4349      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4350
4351      And with:
4352
4353       ÿÿ        (Latin1 'ÿ' [0xff])
4354       ÿÿ1
4355
4356      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4357      the end of the list.
4358   */
4359   std::string after = search_name;
4360   while (!after.empty () && (unsigned char) after.back () == 0xff)
4361     after.pop_back ();
4362   if (!after.empty ())
4363     after.back () = (unsigned char) after.back () + 1;
4364   return after;
4365 }
4366
4367 /* See declaration.  */
4368
4369 std::pair<std::vector<name_component>::const_iterator,
4370           std::vector<name_component>::const_iterator>
4371 mapped_index_base::find_name_components_bounds
4372   (const lookup_name_info &lookup_name_without_params) const
4373 {
4374   auto *name_cmp
4375     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4376
4377   const char *cplus
4378     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4379
4380   /* Comparison function object for lower_bound that matches against a
4381      given symbol name.  */
4382   auto lookup_compare_lower = [&] (const name_component &elem,
4383                                    const char *name)
4384     {
4385       const char *elem_qualified = this->symbol_name_at (elem.idx);
4386       const char *elem_name = elem_qualified + elem.name_offset;
4387       return name_cmp (elem_name, name) < 0;
4388     };
4389
4390   /* Comparison function object for upper_bound that matches against a
4391      given symbol name.  */
4392   auto lookup_compare_upper = [&] (const char *name,
4393                                    const name_component &elem)
4394     {
4395       const char *elem_qualified = this->symbol_name_at (elem.idx);
4396       const char *elem_name = elem_qualified + elem.name_offset;
4397       return name_cmp (name, elem_name) < 0;
4398     };
4399
4400   auto begin = this->name_components.begin ();
4401   auto end = this->name_components.end ();
4402
4403   /* Find the lower bound.  */
4404   auto lower = [&] ()
4405     {
4406       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4407         return begin;
4408       else
4409         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4410     } ();
4411
4412   /* Find the upper bound.  */
4413   auto upper = [&] ()
4414     {
4415       if (lookup_name_without_params.completion_mode ())
4416         {
4417           /* In completion mode, we want UPPER to point past all
4418              symbols names that have the same prefix.  I.e., with
4419              these symbols, and completing "func":
4420
4421               function        << lower bound
4422               function1
4423               other_function  << upper bound
4424
4425              We find the upper bound by looking for the insertion
4426              point of "func"-with-last-character-incremented,
4427              i.e. "fund".  */
4428           std::string after = make_sort_after_prefix_name (cplus);
4429           if (after.empty ())
4430             return end;
4431           return std::lower_bound (lower, end, after.c_str (),
4432                                    lookup_compare_lower);
4433         }
4434       else
4435         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4436     } ();
4437
4438   return {lower, upper};
4439 }
4440
4441 /* See declaration.  */
4442
4443 void
4444 mapped_index_base::build_name_components ()
4445 {
4446   if (!this->name_components.empty ())
4447     return;
4448
4449   this->name_components_casing = case_sensitivity;
4450   auto *name_cmp
4451     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4452
4453   /* The code below only knows how to break apart components of C++
4454      symbol names (and other languages that use '::' as
4455      namespace/module separator).  If we add support for wild matching
4456      to some language that uses some other operator (E.g., Ada, Go and
4457      D use '.'), then we'll need to try splitting the symbol name
4458      according to that language too.  Note that Ada does support wild
4459      matching, but doesn't currently support .gdb_index.  */
4460   auto count = this->symbol_name_count ();
4461   for (offset_type idx = 0; idx < count; idx++)
4462     {
4463       if (this->symbol_name_slot_invalid (idx))
4464         continue;
4465
4466       const char *name = this->symbol_name_at (idx);
4467
4468       /* Add each name component to the name component table.  */
4469       unsigned int previous_len = 0;
4470       for (unsigned int current_len = cp_find_first_component (name);
4471            name[current_len] != '\0';
4472            current_len += cp_find_first_component (name + current_len))
4473         {
4474           gdb_assert (name[current_len] == ':');
4475           this->name_components.push_back ({previous_len, idx});
4476           /* Skip the '::'.  */
4477           current_len += 2;
4478           previous_len = current_len;
4479         }
4480       this->name_components.push_back ({previous_len, idx});
4481     }
4482
4483   /* Sort name_components elements by name.  */
4484   auto name_comp_compare = [&] (const name_component &left,
4485                                 const name_component &right)
4486     {
4487       const char *left_qualified = this->symbol_name_at (left.idx);
4488       const char *right_qualified = this->symbol_name_at (right.idx);
4489
4490       const char *left_name = left_qualified + left.name_offset;
4491       const char *right_name = right_qualified + right.name_offset;
4492
4493       return name_cmp (left_name, right_name) < 0;
4494     };
4495
4496   std::sort (this->name_components.begin (),
4497              this->name_components.end (),
4498              name_comp_compare);
4499 }
4500
4501 /* Helper for dw2_expand_symtabs_matching that works with a
4502    mapped_index_base instead of the containing objfile.  This is split
4503    to a separate function in order to be able to unit test the
4504    name_components matching using a mock mapped_index_base.  For each
4505    symbol name that matches, calls MATCH_CALLBACK, passing it the
4506    symbol's index in the mapped_index_base symbol table.  */
4507
4508 static void
4509 dw2_expand_symtabs_matching_symbol
4510   (mapped_index_base &index,
4511    const lookup_name_info &lookup_name_in,
4512    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4513    enum search_domain kind,
4514    gdb::function_view<void (offset_type)> match_callback)
4515 {
4516   lookup_name_info lookup_name_without_params
4517     = lookup_name_in.make_ignore_params ();
4518   gdb_index_symbol_name_matcher lookup_name_matcher
4519     (lookup_name_without_params);
4520
4521   /* Build the symbol name component sorted vector, if we haven't
4522      yet.  */
4523   index.build_name_components ();
4524
4525   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4526
4527   /* Now for each symbol name in range, check to see if we have a name
4528      match, and if so, call the MATCH_CALLBACK callback.  */
4529
4530   /* The same symbol may appear more than once in the range though.
4531      E.g., if we're looking for symbols that complete "w", and we have
4532      a symbol named "w1::w2", we'll find the two name components for
4533      that same symbol in the range.  To be sure we only call the
4534      callback once per symbol, we first collect the symbol name
4535      indexes that matched in a temporary vector and ignore
4536      duplicates.  */
4537   std::vector<offset_type> matches;
4538   matches.reserve (std::distance (bounds.first, bounds.second));
4539
4540   for (; bounds.first != bounds.second; ++bounds.first)
4541     {
4542       const char *qualified = index.symbol_name_at (bounds.first->idx);
4543
4544       if (!lookup_name_matcher.matches (qualified)
4545           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4546         continue;
4547
4548       matches.push_back (bounds.first->idx);
4549     }
4550
4551   std::sort (matches.begin (), matches.end ());
4552
4553   /* Finally call the callback, once per match.  */
4554   ULONGEST prev = -1;
4555   for (offset_type idx : matches)
4556     {
4557       if (prev != idx)
4558         {
4559           match_callback (idx);
4560           prev = idx;
4561         }
4562     }
4563
4564   /* Above we use a type wider than idx's for 'prev', since 0 and
4565      (offset_type)-1 are both possible values.  */
4566   static_assert (sizeof (prev) > sizeof (offset_type), "");
4567 }
4568
4569 #if GDB_SELF_TEST
4570
4571 namespace selftests { namespace dw2_expand_symtabs_matching {
4572
4573 /* A mock .gdb_index/.debug_names-like name index table, enough to
4574    exercise dw2_expand_symtabs_matching_symbol, which works with the
4575    mapped_index_base interface.  Builds an index from the symbol list
4576    passed as parameter to the constructor.  */
4577 class mock_mapped_index : public mapped_index_base
4578 {
4579 public:
4580   mock_mapped_index (gdb::array_view<const char *> symbols)
4581     : m_symbol_table (symbols)
4582   {}
4583
4584   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4585
4586   /* Return the number of names in the symbol table.  */
4587   size_t symbol_name_count () const override
4588   {
4589     return m_symbol_table.size ();
4590   }
4591
4592   /* Get the name of the symbol at IDX in the symbol table.  */
4593   const char *symbol_name_at (offset_type idx) const override
4594   {
4595     return m_symbol_table[idx];
4596   }
4597
4598 private:
4599   gdb::array_view<const char *> m_symbol_table;
4600 };
4601
4602 /* Convenience function that converts a NULL pointer to a "<null>"
4603    string, to pass to print routines.  */
4604
4605 static const char *
4606 string_or_null (const char *str)
4607 {
4608   return str != NULL ? str : "<null>";
4609 }
4610
4611 /* Check if a lookup_name_info built from
4612    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4613    index.  EXPECTED_LIST is the list of expected matches, in expected
4614    matching order.  If no match expected, then an empty list is
4615    specified.  Returns true on success.  On failure prints a warning
4616    indicating the file:line that failed, and returns false.  */
4617
4618 static bool
4619 check_match (const char *file, int line,
4620              mock_mapped_index &mock_index,
4621              const char *name, symbol_name_match_type match_type,
4622              bool completion_mode,
4623              std::initializer_list<const char *> expected_list)
4624 {
4625   lookup_name_info lookup_name (name, match_type, completion_mode);
4626
4627   bool matched = true;
4628
4629   auto mismatch = [&] (const char *expected_str,
4630                        const char *got)
4631   {
4632     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4633                "expected=\"%s\", got=\"%s\"\n"),
4634              file, line,
4635              (match_type == symbol_name_match_type::FULL
4636               ? "FULL" : "WILD"),
4637              name, string_or_null (expected_str), string_or_null (got));
4638     matched = false;
4639   };
4640
4641   auto expected_it = expected_list.begin ();
4642   auto expected_end = expected_list.end ();
4643
4644   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4645                                       NULL, ALL_DOMAIN,
4646                                       [&] (offset_type idx)
4647   {
4648     const char *matched_name = mock_index.symbol_name_at (idx);
4649     const char *expected_str
4650       = expected_it == expected_end ? NULL : *expected_it++;
4651
4652     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4653       mismatch (expected_str, matched_name);
4654   });
4655
4656   const char *expected_str
4657   = expected_it == expected_end ? NULL : *expected_it++;
4658   if (expected_str != NULL)
4659     mismatch (expected_str, NULL);
4660
4661   return matched;
4662 }
4663
4664 /* The symbols added to the mock mapped_index for testing (in
4665    canonical form).  */
4666 static const char *test_symbols[] = {
4667   "function",
4668   "std::bar",
4669   "std::zfunction",
4670   "std::zfunction2",
4671   "w1::w2",
4672   "ns::foo<char*>",
4673   "ns::foo<int>",
4674   "ns::foo<long>",
4675   "ns2::tmpl<int>::foo2",
4676   "(anonymous namespace)::A::B::C",
4677
4678   /* These are used to check that the increment-last-char in the
4679      matching algorithm for completion doesn't match "t1_fund" when
4680      completing "t1_func".  */
4681   "t1_func",
4682   "t1_func1",
4683   "t1_fund",
4684   "t1_fund1",
4685
4686   /* A UTF-8 name with multi-byte sequences to make sure that
4687      cp-name-parser understands this as a single identifier ("função"
4688      is "function" in PT).  */
4689   u8"u8função",
4690
4691   /* \377 (0xff) is Latin1 'ÿ'.  */
4692   "yfunc\377",
4693
4694   /* \377 (0xff) is Latin1 'ÿ'.  */
4695   "\377",
4696   "\377\377123",
4697
4698   /* A name with all sorts of complications.  Starts with "z" to make
4699      it easier for the completion tests below.  */
4700 #define Z_SYM_NAME \
4701   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4702     "::tuple<(anonymous namespace)::ui*, " \
4703     "std::default_delete<(anonymous namespace)::ui>, void>"
4704
4705   Z_SYM_NAME
4706 };
4707
4708 /* Returns true if the mapped_index_base::find_name_component_bounds
4709    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4710    in completion mode.  */
4711
4712 static bool
4713 check_find_bounds_finds (mapped_index_base &index,
4714                          const char *search_name,
4715                          gdb::array_view<const char *> expected_syms)
4716 {
4717   lookup_name_info lookup_name (search_name,
4718                                 symbol_name_match_type::FULL, true);
4719
4720   auto bounds = index.find_name_components_bounds (lookup_name);
4721
4722   size_t distance = std::distance (bounds.first, bounds.second);
4723   if (distance != expected_syms.size ())
4724     return false;
4725
4726   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4727     {
4728       auto nc_elem = bounds.first + exp_elem;
4729       const char *qualified = index.symbol_name_at (nc_elem->idx);
4730       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4731         return false;
4732     }
4733
4734   return true;
4735 }
4736
4737 /* Test the lower-level mapped_index::find_name_component_bounds
4738    method.  */
4739
4740 static void
4741 test_mapped_index_find_name_component_bounds ()
4742 {
4743   mock_mapped_index mock_index (test_symbols);
4744
4745   mock_index.build_name_components ();
4746
4747   /* Test the lower-level mapped_index::find_name_component_bounds
4748      method in completion mode.  */
4749   {
4750     static const char *expected_syms[] = {
4751       "t1_func",
4752       "t1_func1",
4753     };
4754
4755     SELF_CHECK (check_find_bounds_finds (mock_index,
4756                                          "t1_func", expected_syms));
4757   }
4758
4759   /* Check that the increment-last-char in the name matching algorithm
4760      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4761   {
4762     static const char *expected_syms1[] = {
4763       "\377",
4764       "\377\377123",
4765     };
4766     SELF_CHECK (check_find_bounds_finds (mock_index,
4767                                          "\377", expected_syms1));
4768
4769     static const char *expected_syms2[] = {
4770       "\377\377123",
4771     };
4772     SELF_CHECK (check_find_bounds_finds (mock_index,
4773                                          "\377\377", expected_syms2));
4774   }
4775 }
4776
4777 /* Test dw2_expand_symtabs_matching_symbol.  */
4778
4779 static void
4780 test_dw2_expand_symtabs_matching_symbol ()
4781 {
4782   mock_mapped_index mock_index (test_symbols);
4783
4784   /* We let all tests run until the end even if some fails, for debug
4785      convenience.  */
4786   bool any_mismatch = false;
4787
4788   /* Create the expected symbols list (an initializer_list).  Needed
4789      because lists have commas, and we need to pass them to CHECK,
4790      which is a macro.  */
4791 #define EXPECT(...) { __VA_ARGS__ }
4792
4793   /* Wrapper for check_match that passes down the current
4794      __FILE__/__LINE__.  */
4795 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4796   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4797                                 mock_index,                             \
4798                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4799                                 EXPECTED_LIST)
4800
4801   /* Identity checks.  */
4802   for (const char *sym : test_symbols)
4803     {
4804       /* Should be able to match all existing symbols.  */
4805       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4806                    EXPECT (sym));
4807
4808       /* Should be able to match all existing symbols with
4809          parameters.  */
4810       std::string with_params = std::string (sym) + "(int)";
4811       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4812                    EXPECT (sym));
4813
4814       /* Should be able to match all existing symbols with
4815          parameters and qualifiers.  */
4816       with_params = std::string (sym) + " ( int ) const";
4817       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4818                    EXPECT (sym));
4819
4820       /* This should really find sym, but cp-name-parser.y doesn't
4821          know about lvalue/rvalue qualifiers yet.  */
4822       with_params = std::string (sym) + " ( int ) &&";
4823       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4824                    {});
4825     }
4826
4827   /* Check that the name matching algorithm for completion doesn't get
4828      confused with Latin1 'ÿ' / 0xff.  */
4829   {
4830     static const char str[] = "\377";
4831     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4832                  EXPECT ("\377", "\377\377123"));
4833   }
4834
4835   /* Check that the increment-last-char in the matching algorithm for
4836      completion doesn't match "t1_fund" when completing "t1_func".  */
4837   {
4838     static const char str[] = "t1_func";
4839     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4840                  EXPECT ("t1_func", "t1_func1"));
4841   }
4842
4843   /* Check that completion mode works at each prefix of the expected
4844      symbol name.  */
4845   {
4846     static const char str[] = "function(int)";
4847     size_t len = strlen (str);
4848     std::string lookup;
4849
4850     for (size_t i = 1; i < len; i++)
4851       {
4852         lookup.assign (str, i);
4853         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4854                      EXPECT ("function"));
4855       }
4856   }
4857
4858   /* While "w" is a prefix of both components, the match function
4859      should still only be called once.  */
4860   {
4861     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4862                  EXPECT ("w1::w2"));
4863     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4864                  EXPECT ("w1::w2"));
4865   }
4866
4867   /* Same, with a "complicated" symbol.  */
4868   {
4869     static const char str[] = Z_SYM_NAME;
4870     size_t len = strlen (str);
4871     std::string lookup;
4872
4873     for (size_t i = 1; i < len; i++)
4874       {
4875         lookup.assign (str, i);
4876         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4877                      EXPECT (Z_SYM_NAME));
4878       }
4879   }
4880
4881   /* In FULL mode, an incomplete symbol doesn't match.  */
4882   {
4883     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4884                  {});
4885   }
4886
4887   /* A complete symbol with parameters matches any overload, since the
4888      index has no overload info.  */
4889   {
4890     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4891                  EXPECT ("std::zfunction", "std::zfunction2"));
4892     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4893                  EXPECT ("std::zfunction", "std::zfunction2"));
4894     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4895                  EXPECT ("std::zfunction", "std::zfunction2"));
4896   }
4897
4898   /* Check that whitespace is ignored appropriately.  A symbol with a
4899      template argument list. */
4900   {
4901     static const char expected[] = "ns::foo<int>";
4902     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4903                  EXPECT (expected));
4904     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4905                  EXPECT (expected));
4906   }
4907
4908   /* Check that whitespace is ignored appropriately.  A symbol with a
4909      template argument list that includes a pointer.  */
4910   {
4911     static const char expected[] = "ns::foo<char*>";
4912     /* Try both completion and non-completion modes.  */
4913     static const bool completion_mode[2] = {false, true};
4914     for (size_t i = 0; i < 2; i++)
4915       {
4916         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4917                      completion_mode[i], EXPECT (expected));
4918         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4919                      completion_mode[i], EXPECT (expected));
4920
4921         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4922                      completion_mode[i], EXPECT (expected));
4923         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4924                      completion_mode[i], EXPECT (expected));
4925       }
4926   }
4927
4928   {
4929     /* Check method qualifiers are ignored.  */
4930     static const char expected[] = "ns::foo<char*>";
4931     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4932                  symbol_name_match_type::FULL, true, EXPECT (expected));
4933     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4934                  symbol_name_match_type::FULL, true, EXPECT (expected));
4935     CHECK_MATCH ("foo < char * >  ( int ) const",
4936                  symbol_name_match_type::WILD, true, EXPECT (expected));
4937     CHECK_MATCH ("foo < char * >  ( int ) &&",
4938                  symbol_name_match_type::WILD, true, EXPECT (expected));
4939   }
4940
4941   /* Test lookup names that don't match anything.  */
4942   {
4943     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4944                  {});
4945
4946     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4947                  {});
4948   }
4949
4950   /* Some wild matching tests, exercising "(anonymous namespace)",
4951      which should not be confused with a parameter list.  */
4952   {
4953     static const char *syms[] = {
4954       "A::B::C",
4955       "B::C",
4956       "C",
4957       "A :: B :: C ( int )",
4958       "B :: C ( int )",
4959       "C ( int )",
4960     };
4961
4962     for (const char *s : syms)
4963       {
4964         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4965                      EXPECT ("(anonymous namespace)::A::B::C"));
4966       }
4967   }
4968
4969   {
4970     static const char expected[] = "ns2::tmpl<int>::foo2";
4971     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4972                  EXPECT (expected));
4973     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4974                  EXPECT (expected));
4975   }
4976
4977   SELF_CHECK (!any_mismatch);
4978
4979 #undef EXPECT
4980 #undef CHECK_MATCH
4981 }
4982
4983 static void
4984 run_test ()
4985 {
4986   test_mapped_index_find_name_component_bounds ();
4987   test_dw2_expand_symtabs_matching_symbol ();
4988 }
4989
4990 }} // namespace selftests::dw2_expand_symtabs_matching
4991
4992 #endif /* GDB_SELF_TEST */
4993
4994 /* If FILE_MATCHER is NULL or if PER_CU has
4995    dwarf2_per_cu_quick_data::MARK set (see
4996    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4997    EXPANSION_NOTIFY on it.  */
4998
4999 static void
5000 dw2_expand_symtabs_matching_one
5001   (struct dwarf2_per_cu_data *per_cu,
5002    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5003    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5004 {
5005   if (file_matcher == NULL || per_cu->v.quick->mark)
5006     {
5007       bool symtab_was_null
5008         = (per_cu->v.quick->compunit_symtab == NULL);
5009
5010       dw2_instantiate_symtab (per_cu, false);
5011
5012       if (expansion_notify != NULL
5013           && symtab_was_null
5014           && per_cu->v.quick->compunit_symtab != NULL)
5015         expansion_notify (per_cu->v.quick->compunit_symtab);
5016     }
5017 }
5018
5019 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5020    matched, to expand corresponding CUs that were marked.  IDX is the
5021    index of the symbol name that matched.  */
5022
5023 static void
5024 dw2_expand_marked_cus
5025   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5026    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5027    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5028    search_domain kind)
5029 {
5030   offset_type *vec, vec_len, vec_idx;
5031   bool global_seen = false;
5032   mapped_index &index = *dwarf2_per_objfile->index_table;
5033
5034   vec = (offset_type *) (index.constant_pool
5035                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5036   vec_len = MAYBE_SWAP (vec[0]);
5037   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5038     {
5039       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5040       /* This value is only valid for index versions >= 7.  */
5041       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5042       gdb_index_symbol_kind symbol_kind =
5043         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5044       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5045       /* Only check the symbol attributes if they're present.
5046          Indices prior to version 7 don't record them,
5047          and indices >= 7 may elide them for certain symbols
5048          (gold does this).  */
5049       int attrs_valid =
5050         (index.version >= 7
5051          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5052
5053       /* Work around gold/15646.  */
5054       if (attrs_valid)
5055         {
5056           if (!is_static && global_seen)
5057             continue;
5058           if (!is_static)
5059             global_seen = true;
5060         }
5061
5062       /* Only check the symbol's kind if it has one.  */
5063       if (attrs_valid)
5064         {
5065           switch (kind)
5066             {
5067             case VARIABLES_DOMAIN:
5068               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5069                 continue;
5070               break;
5071             case FUNCTIONS_DOMAIN:
5072               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5073                 continue;
5074               break;
5075             case TYPES_DOMAIN:
5076               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5077                 continue;
5078               break;
5079             default:
5080               break;
5081             }
5082         }
5083
5084       /* Don't crash on bad data.  */
5085       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5086                        + dwarf2_per_objfile->all_type_units.size ()))
5087         {
5088           complaint (_(".gdb_index entry has bad CU index"
5089                        " [in module %s]"),
5090                        objfile_name (dwarf2_per_objfile->objfile));
5091           continue;
5092         }
5093
5094       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5095       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5096                                        expansion_notify);
5097     }
5098 }
5099
5100 /* If FILE_MATCHER is non-NULL, set all the
5101    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5102    that match FILE_MATCHER.  */
5103
5104 static void
5105 dw_expand_symtabs_matching_file_matcher
5106   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5107    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5108 {
5109   if (file_matcher == NULL)
5110     return;
5111
5112   objfile *const objfile = dwarf2_per_objfile->objfile;
5113
5114   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5115                                             htab_eq_pointer,
5116                                             NULL, xcalloc, xfree));
5117   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5118                                                 htab_eq_pointer,
5119                                                 NULL, xcalloc, xfree));
5120
5121   /* The rule is CUs specify all the files, including those used by
5122      any TU, so there's no need to scan TUs here.  */
5123
5124   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5125     {
5126       QUIT;
5127
5128       per_cu->v.quick->mark = 0;
5129
5130       /* We only need to look at symtabs not already expanded.  */
5131       if (per_cu->v.quick->compunit_symtab)
5132         continue;
5133
5134       quick_file_names *file_data = dw2_get_file_names (per_cu);
5135       if (file_data == NULL)
5136         continue;
5137
5138       if (htab_find (visited_not_found.get (), file_data) != NULL)
5139         continue;
5140       else if (htab_find (visited_found.get (), file_data) != NULL)
5141         {
5142           per_cu->v.quick->mark = 1;
5143           continue;
5144         }
5145
5146       for (int j = 0; j < file_data->num_file_names; ++j)
5147         {
5148           const char *this_real_name;
5149
5150           if (file_matcher (file_data->file_names[j], false))
5151             {
5152               per_cu->v.quick->mark = 1;
5153               break;
5154             }
5155
5156           /* Before we invoke realpath, which can get expensive when many
5157              files are involved, do a quick comparison of the basenames.  */
5158           if (!basenames_may_differ
5159               && !file_matcher (lbasename (file_data->file_names[j]),
5160                                 true))
5161             continue;
5162
5163           this_real_name = dw2_get_real_path (objfile, file_data, j);
5164           if (file_matcher (this_real_name, false))
5165             {
5166               per_cu->v.quick->mark = 1;
5167               break;
5168             }
5169         }
5170
5171       void **slot = htab_find_slot (per_cu->v.quick->mark
5172                                     ? visited_found.get ()
5173                                     : visited_not_found.get (),
5174                                     file_data, INSERT);
5175       *slot = file_data;
5176     }
5177 }
5178
5179 static void
5180 dw2_expand_symtabs_matching
5181   (struct objfile *objfile,
5182    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5183    const lookup_name_info &lookup_name,
5184    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5185    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5186    enum search_domain kind)
5187 {
5188   struct dwarf2_per_objfile *dwarf2_per_objfile
5189     = get_dwarf2_per_objfile (objfile);
5190
5191   /* index_table is NULL if OBJF_READNOW.  */
5192   if (!dwarf2_per_objfile->index_table)
5193     return;
5194
5195   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5196
5197   mapped_index &index = *dwarf2_per_objfile->index_table;
5198
5199   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5200                                       symbol_matcher,
5201                                       kind, [&] (offset_type idx)
5202     {
5203       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5204                              expansion_notify, kind);
5205     });
5206 }
5207
5208 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5209    symtab.  */
5210
5211 static struct compunit_symtab *
5212 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5213                                           CORE_ADDR pc)
5214 {
5215   int i;
5216
5217   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5218       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5219     return cust;
5220
5221   if (cust->includes == NULL)
5222     return NULL;
5223
5224   for (i = 0; cust->includes[i]; ++i)
5225     {
5226       struct compunit_symtab *s = cust->includes[i];
5227
5228       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5229       if (s != NULL)
5230         return s;
5231     }
5232
5233   return NULL;
5234 }
5235
5236 static struct compunit_symtab *
5237 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5238                                   struct bound_minimal_symbol msymbol,
5239                                   CORE_ADDR pc,
5240                                   struct obj_section *section,
5241                                   int warn_if_readin)
5242 {
5243   struct dwarf2_per_cu_data *data;
5244   struct compunit_symtab *result;
5245
5246   if (!objfile->psymtabs_addrmap)
5247     return NULL;
5248
5249   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5250                                  SECT_OFF_TEXT (objfile));
5251   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5252                                                      pc - baseaddr);
5253   if (!data)
5254     return NULL;
5255
5256   if (warn_if_readin && data->v.quick->compunit_symtab)
5257     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5258              paddress (get_objfile_arch (objfile), pc));
5259
5260   result
5261     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5262                                                                         false),
5263                                                 pc);
5264   gdb_assert (result != NULL);
5265   return result;
5266 }
5267
5268 static void
5269 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5270                           void *data, int need_fullname)
5271 {
5272   struct dwarf2_per_objfile *dwarf2_per_objfile
5273     = get_dwarf2_per_objfile (objfile);
5274
5275   if (!dwarf2_per_objfile->filenames_cache)
5276     {
5277       dwarf2_per_objfile->filenames_cache.emplace ();
5278
5279       htab_up visited (htab_create_alloc (10,
5280                                           htab_hash_pointer, htab_eq_pointer,
5281                                           NULL, xcalloc, xfree));
5282
5283       /* The rule is CUs specify all the files, including those used
5284          by any TU, so there's no need to scan TUs here.  We can
5285          ignore file names coming from already-expanded CUs.  */
5286
5287       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5288         {
5289           if (per_cu->v.quick->compunit_symtab)
5290             {
5291               void **slot = htab_find_slot (visited.get (),
5292                                             per_cu->v.quick->file_names,
5293                                             INSERT);
5294
5295               *slot = per_cu->v.quick->file_names;
5296             }
5297         }
5298
5299       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5300         {
5301           /* We only need to look at symtabs not already expanded.  */
5302           if (per_cu->v.quick->compunit_symtab)
5303             continue;
5304
5305           quick_file_names *file_data = dw2_get_file_names (per_cu);
5306           if (file_data == NULL)
5307             continue;
5308
5309           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5310           if (*slot)
5311             {
5312               /* Already visited.  */
5313               continue;
5314             }
5315           *slot = file_data;
5316
5317           for (int j = 0; j < file_data->num_file_names; ++j)
5318             {
5319               const char *filename = file_data->file_names[j];
5320               dwarf2_per_objfile->filenames_cache->seen (filename);
5321             }
5322         }
5323     }
5324
5325   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5326     {
5327       gdb::unique_xmalloc_ptr<char> this_real_name;
5328
5329       if (need_fullname)
5330         this_real_name = gdb_realpath (filename);
5331       (*fun) (filename, this_real_name.get (), data);
5332     });
5333 }
5334
5335 static int
5336 dw2_has_symbols (struct objfile *objfile)
5337 {
5338   return 1;
5339 }
5340
5341 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5342 {
5343   dw2_has_symbols,
5344   dw2_find_last_source_symtab,
5345   dw2_forget_cached_source_info,
5346   dw2_map_symtabs_matching_filename,
5347   dw2_lookup_symbol,
5348   dw2_print_stats,
5349   dw2_dump,
5350   dw2_expand_symtabs_for_function,
5351   dw2_expand_all_symtabs,
5352   dw2_expand_symtabs_with_fullname,
5353   dw2_map_matching_symbols,
5354   dw2_expand_symtabs_matching,
5355   dw2_find_pc_sect_compunit_symtab,
5356   NULL,
5357   dw2_map_symbol_filenames
5358 };
5359
5360 /* DWARF-5 debug_names reader.  */
5361
5362 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5363 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5364
5365 /* A helper function that reads the .debug_names section in SECTION
5366    and fills in MAP.  FILENAME is the name of the file containing the
5367    section; it is used for error reporting.
5368
5369    Returns true if all went well, false otherwise.  */
5370
5371 static bool
5372 read_debug_names_from_section (struct objfile *objfile,
5373                                const char *filename,
5374                                struct dwarf2_section_info *section,
5375                                mapped_debug_names &map)
5376 {
5377   if (dwarf2_section_empty_p (section))
5378     return false;
5379
5380   /* Older elfutils strip versions could keep the section in the main
5381      executable while splitting it for the separate debug info file.  */
5382   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5383     return false;
5384
5385   dwarf2_read_section (objfile, section);
5386
5387   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5388
5389   const gdb_byte *addr = section->buffer;
5390
5391   bfd *const abfd = get_section_bfd_owner (section);
5392
5393   unsigned int bytes_read;
5394   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5395   addr += bytes_read;
5396
5397   map.dwarf5_is_dwarf64 = bytes_read != 4;
5398   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5399   if (bytes_read + length != section->size)
5400     {
5401       /* There may be multiple per-CU indices.  */
5402       warning (_("Section .debug_names in %s length %s does not match "
5403                  "section length %s, ignoring .debug_names."),
5404                filename, plongest (bytes_read + length),
5405                pulongest (section->size));
5406       return false;
5407     }
5408
5409   /* The version number.  */
5410   uint16_t version = read_2_bytes (abfd, addr);
5411   addr += 2;
5412   if (version != 5)
5413     {
5414       warning (_("Section .debug_names in %s has unsupported version %d, "
5415                  "ignoring .debug_names."),
5416                filename, version);
5417       return false;
5418     }
5419
5420   /* Padding.  */
5421   uint16_t padding = read_2_bytes (abfd, addr);
5422   addr += 2;
5423   if (padding != 0)
5424     {
5425       warning (_("Section .debug_names in %s has unsupported padding %d, "
5426                  "ignoring .debug_names."),
5427                filename, padding);
5428       return false;
5429     }
5430
5431   /* comp_unit_count - The number of CUs in the CU list.  */
5432   map.cu_count = read_4_bytes (abfd, addr);
5433   addr += 4;
5434
5435   /* local_type_unit_count - The number of TUs in the local TU
5436      list.  */
5437   map.tu_count = read_4_bytes (abfd, addr);
5438   addr += 4;
5439
5440   /* foreign_type_unit_count - The number of TUs in the foreign TU
5441      list.  */
5442   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5443   addr += 4;
5444   if (foreign_tu_count != 0)
5445     {
5446       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5447                  "ignoring .debug_names."),
5448                filename, static_cast<unsigned long> (foreign_tu_count));
5449       return false;
5450     }
5451
5452   /* bucket_count - The number of hash buckets in the hash lookup
5453      table.  */
5454   map.bucket_count = read_4_bytes (abfd, addr);
5455   addr += 4;
5456
5457   /* name_count - The number of unique names in the index.  */
5458   map.name_count = read_4_bytes (abfd, addr);
5459   addr += 4;
5460
5461   /* abbrev_table_size - The size in bytes of the abbreviations
5462      table.  */
5463   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5464   addr += 4;
5465
5466   /* augmentation_string_size - The size in bytes of the augmentation
5467      string.  This value is rounded up to a multiple of 4.  */
5468   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5469   addr += 4;
5470   map.augmentation_is_gdb = ((augmentation_string_size
5471                               == sizeof (dwarf5_augmentation))
5472                              && memcmp (addr, dwarf5_augmentation,
5473                                         sizeof (dwarf5_augmentation)) == 0);
5474   augmentation_string_size += (-augmentation_string_size) & 3;
5475   addr += augmentation_string_size;
5476
5477   /* List of CUs */
5478   map.cu_table_reordered = addr;
5479   addr += map.cu_count * map.offset_size;
5480
5481   /* List of Local TUs */
5482   map.tu_table_reordered = addr;
5483   addr += map.tu_count * map.offset_size;
5484
5485   /* Hash Lookup Table */
5486   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5487   addr += map.bucket_count * 4;
5488   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5489   addr += map.name_count * 4;
5490
5491   /* Name Table */
5492   map.name_table_string_offs_reordered = addr;
5493   addr += map.name_count * map.offset_size;
5494   map.name_table_entry_offs_reordered = addr;
5495   addr += map.name_count * map.offset_size;
5496
5497   const gdb_byte *abbrev_table_start = addr;
5498   for (;;)
5499     {
5500       unsigned int bytes_read;
5501       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5502       addr += bytes_read;
5503       if (index_num == 0)
5504         break;
5505
5506       const auto insertpair
5507         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5508       if (!insertpair.second)
5509         {
5510           warning (_("Section .debug_names in %s has duplicate index %s, "
5511                      "ignoring .debug_names."),
5512                    filename, pulongest (index_num));
5513           return false;
5514         }
5515       mapped_debug_names::index_val &indexval = insertpair.first->second;
5516       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5517       addr += bytes_read;
5518
5519       for (;;)
5520         {
5521           mapped_debug_names::index_val::attr attr;
5522           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5523           addr += bytes_read;
5524           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5525           addr += bytes_read;
5526           if (attr.form == DW_FORM_implicit_const)
5527             {
5528               attr.implicit_const = read_signed_leb128 (abfd, addr,
5529                                                         &bytes_read);
5530               addr += bytes_read;
5531             }
5532           if (attr.dw_idx == 0 && attr.form == 0)
5533             break;
5534           indexval.attr_vec.push_back (std::move (attr));
5535         }
5536     }
5537   if (addr != abbrev_table_start + abbrev_table_size)
5538     {
5539       warning (_("Section .debug_names in %s has abbreviation_table "
5540                  "of size %zu vs. written as %u, ignoring .debug_names."),
5541                filename, addr - abbrev_table_start, abbrev_table_size);
5542       return false;
5543     }
5544   map.entry_pool = addr;
5545
5546   return true;
5547 }
5548
5549 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5550    list.  */
5551
5552 static void
5553 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5554                                   const mapped_debug_names &map,
5555                                   dwarf2_section_info &section,
5556                                   bool is_dwz)
5557 {
5558   sect_offset sect_off_prev;
5559   for (uint32_t i = 0; i <= map.cu_count; ++i)
5560     {
5561       sect_offset sect_off_next;
5562       if (i < map.cu_count)
5563         {
5564           sect_off_next
5565             = (sect_offset) (extract_unsigned_integer
5566                              (map.cu_table_reordered + i * map.offset_size,
5567                               map.offset_size,
5568                               map.dwarf5_byte_order));
5569         }
5570       else
5571         sect_off_next = (sect_offset) section.size;
5572       if (i >= 1)
5573         {
5574           const ULONGEST length = sect_off_next - sect_off_prev;
5575           dwarf2_per_cu_data *per_cu
5576             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5577                                          sect_off_prev, length);
5578           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5579         }
5580       sect_off_prev = sect_off_next;
5581     }
5582 }
5583
5584 /* Read the CU list from the mapped index, and use it to create all
5585    the CU objects for this dwarf2_per_objfile.  */
5586
5587 static void
5588 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5589                              const mapped_debug_names &map,
5590                              const mapped_debug_names &dwz_map)
5591 {
5592   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5593   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5594
5595   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5596                                     dwarf2_per_objfile->info,
5597                                     false /* is_dwz */);
5598
5599   if (dwz_map.cu_count == 0)
5600     return;
5601
5602   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5603   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5604                                     true /* is_dwz */);
5605 }
5606
5607 /* Read .debug_names.  If everything went ok, initialize the "quick"
5608    elements of all the CUs and return true.  Otherwise, return false.  */
5609
5610 static bool
5611 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5612 {
5613   std::unique_ptr<mapped_debug_names> map
5614     (new mapped_debug_names (dwarf2_per_objfile));
5615   mapped_debug_names dwz_map (dwarf2_per_objfile);
5616   struct objfile *objfile = dwarf2_per_objfile->objfile;
5617
5618   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5619                                       &dwarf2_per_objfile->debug_names,
5620                                       *map))
5621     return false;
5622
5623   /* Don't use the index if it's empty.  */
5624   if (map->name_count == 0)
5625     return false;
5626
5627   /* If there is a .dwz file, read it so we can get its CU list as
5628      well.  */
5629   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5630   if (dwz != NULL)
5631     {
5632       if (!read_debug_names_from_section (objfile,
5633                                           bfd_get_filename (dwz->dwz_bfd),
5634                                           &dwz->debug_names, dwz_map))
5635         {
5636           warning (_("could not read '.debug_names' section from %s; skipping"),
5637                    bfd_get_filename (dwz->dwz_bfd));
5638           return false;
5639         }
5640     }
5641
5642   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5643
5644   if (map->tu_count != 0)
5645     {
5646       /* We can only handle a single .debug_types when we have an
5647          index.  */
5648       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5649         return false;
5650
5651       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5652                                                 dwarf2_per_objfile->types, 0);
5653
5654       create_signatured_type_table_from_debug_names
5655         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5656     }
5657
5658   create_addrmap_from_aranges (dwarf2_per_objfile,
5659                                &dwarf2_per_objfile->debug_aranges);
5660
5661   dwarf2_per_objfile->debug_names_table = std::move (map);
5662   dwarf2_per_objfile->using_index = 1;
5663   dwarf2_per_objfile->quick_file_names_table =
5664     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5665
5666   return true;
5667 }
5668
5669 /* Type used to manage iterating over all CUs looking for a symbol for
5670    .debug_names.  */
5671
5672 class dw2_debug_names_iterator
5673 {
5674 public:
5675   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5676      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5677   dw2_debug_names_iterator (const mapped_debug_names &map,
5678                             bool want_specific_block,
5679                             block_enum block_index, domain_enum domain,
5680                             const char *name)
5681     : m_map (map), m_want_specific_block (want_specific_block),
5682       m_block_index (block_index), m_domain (domain),
5683       m_addr (find_vec_in_debug_names (map, name))
5684   {}
5685
5686   dw2_debug_names_iterator (const mapped_debug_names &map,
5687                             search_domain search, uint32_t namei)
5688     : m_map (map),
5689       m_search (search),
5690       m_addr (find_vec_in_debug_names (map, namei))
5691   {}
5692
5693   /* Return the next matching CU or NULL if there are no more.  */
5694   dwarf2_per_cu_data *next ();
5695
5696 private:
5697   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5698                                                   const char *name);
5699   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5700                                                   uint32_t namei);
5701
5702   /* The internalized form of .debug_names.  */
5703   const mapped_debug_names &m_map;
5704
5705   /* If true, only look for symbols that match BLOCK_INDEX.  */
5706   const bool m_want_specific_block = false;
5707
5708   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5709      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5710      value.  */
5711   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5712
5713   /* The kind of symbol we're looking for.  */
5714   const domain_enum m_domain = UNDEF_DOMAIN;
5715   const search_domain m_search = ALL_DOMAIN;
5716
5717   /* The list of CUs from the index entry of the symbol, or NULL if
5718      not found.  */
5719   const gdb_byte *m_addr;
5720 };
5721
5722 const char *
5723 mapped_debug_names::namei_to_name (uint32_t namei) const
5724 {
5725   const ULONGEST namei_string_offs
5726     = extract_unsigned_integer ((name_table_string_offs_reordered
5727                                  + namei * offset_size),
5728                                 offset_size,
5729                                 dwarf5_byte_order);
5730   return read_indirect_string_at_offset
5731     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5732 }
5733
5734 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5735    found, return pointer to its pool data.  If NAME cannot be found,
5736    return NULL.  */
5737
5738 const gdb_byte *
5739 dw2_debug_names_iterator::find_vec_in_debug_names
5740   (const mapped_debug_names &map, const char *name)
5741 {
5742   int (*cmp) (const char *, const char *);
5743
5744   if (current_language->la_language == language_cplus
5745       || current_language->la_language == language_fortran
5746       || current_language->la_language == language_d)
5747     {
5748       /* NAME is already canonical.  Drop any qualifiers as
5749          .debug_names does not contain any.  */
5750
5751       if (strchr (name, '(') != NULL)
5752         {
5753           gdb::unique_xmalloc_ptr<char> without_params
5754             = cp_remove_params (name);
5755
5756           if (without_params != NULL)
5757             {
5758               name = without_params.get();
5759             }
5760         }
5761     }
5762
5763   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5764
5765   const uint32_t full_hash = dwarf5_djb_hash (name);
5766   uint32_t namei
5767     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5768                                 (map.bucket_table_reordered
5769                                  + (full_hash % map.bucket_count)), 4,
5770                                 map.dwarf5_byte_order);
5771   if (namei == 0)
5772     return NULL;
5773   --namei;
5774   if (namei >= map.name_count)
5775     {
5776       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5777                    "[in module %s]"),
5778                  namei, map.name_count,
5779                  objfile_name (map.dwarf2_per_objfile->objfile));
5780       return NULL;
5781     }
5782
5783   for (;;)
5784     {
5785       const uint32_t namei_full_hash
5786         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5787                                     (map.hash_table_reordered + namei), 4,
5788                                     map.dwarf5_byte_order);
5789       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5790         return NULL;
5791
5792       if (full_hash == namei_full_hash)
5793         {
5794           const char *const namei_string = map.namei_to_name (namei);
5795
5796 #if 0 /* An expensive sanity check.  */
5797           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5798             {
5799               complaint (_("Wrong .debug_names hash for string at index %u "
5800                            "[in module %s]"),
5801                          namei, objfile_name (dwarf2_per_objfile->objfile));
5802               return NULL;
5803             }
5804 #endif
5805
5806           if (cmp (namei_string, name) == 0)
5807             {
5808               const ULONGEST namei_entry_offs
5809                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5810                                              + namei * map.offset_size),
5811                                             map.offset_size, map.dwarf5_byte_order);
5812               return map.entry_pool + namei_entry_offs;
5813             }
5814         }
5815
5816       ++namei;
5817       if (namei >= map.name_count)
5818         return NULL;
5819     }
5820 }
5821
5822 const gdb_byte *
5823 dw2_debug_names_iterator::find_vec_in_debug_names
5824   (const mapped_debug_names &map, uint32_t namei)
5825 {
5826   if (namei >= map.name_count)
5827     {
5828       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5829                    "[in module %s]"),
5830                  namei, map.name_count,
5831                  objfile_name (map.dwarf2_per_objfile->objfile));
5832       return NULL;
5833     }
5834
5835   const ULONGEST namei_entry_offs
5836     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5837                                  + namei * map.offset_size),
5838                                 map.offset_size, map.dwarf5_byte_order);
5839   return map.entry_pool + namei_entry_offs;
5840 }
5841
5842 /* See dw2_debug_names_iterator.  */
5843
5844 dwarf2_per_cu_data *
5845 dw2_debug_names_iterator::next ()
5846 {
5847   if (m_addr == NULL)
5848     return NULL;
5849
5850   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5851   struct objfile *objfile = dwarf2_per_objfile->objfile;
5852   bfd *const abfd = objfile->obfd;
5853
5854  again:
5855
5856   unsigned int bytes_read;
5857   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5858   m_addr += bytes_read;
5859   if (abbrev == 0)
5860     return NULL;
5861
5862   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5863   if (indexval_it == m_map.abbrev_map.cend ())
5864     {
5865       complaint (_("Wrong .debug_names undefined abbrev code %s "
5866                    "[in module %s]"),
5867                  pulongest (abbrev), objfile_name (objfile));
5868       return NULL;
5869     }
5870   const mapped_debug_names::index_val &indexval = indexval_it->second;
5871   bool have_is_static = false;
5872   bool is_static;
5873   dwarf2_per_cu_data *per_cu = NULL;
5874   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5875     {
5876       ULONGEST ull;
5877       switch (attr.form)
5878         {
5879         case DW_FORM_implicit_const:
5880           ull = attr.implicit_const;
5881           break;
5882         case DW_FORM_flag_present:
5883           ull = 1;
5884           break;
5885         case DW_FORM_udata:
5886           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5887           m_addr += bytes_read;
5888           break;
5889         default:
5890           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5891                      dwarf_form_name (attr.form),
5892                      objfile_name (objfile));
5893           return NULL;
5894         }
5895       switch (attr.dw_idx)
5896         {
5897         case DW_IDX_compile_unit:
5898           /* Don't crash on bad data.  */
5899           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5900             {
5901               complaint (_(".debug_names entry has bad CU index %s"
5902                            " [in module %s]"),
5903                          pulongest (ull),
5904                          objfile_name (dwarf2_per_objfile->objfile));
5905               continue;
5906             }
5907           per_cu = dwarf2_per_objfile->get_cutu (ull);
5908           break;
5909         case DW_IDX_type_unit:
5910           /* Don't crash on bad data.  */
5911           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5912             {
5913               complaint (_(".debug_names entry has bad TU index %s"
5914                            " [in module %s]"),
5915                          pulongest (ull),
5916                          objfile_name (dwarf2_per_objfile->objfile));
5917               continue;
5918             }
5919           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5920           break;
5921         case DW_IDX_GNU_internal:
5922           if (!m_map.augmentation_is_gdb)
5923             break;
5924           have_is_static = true;
5925           is_static = true;
5926           break;
5927         case DW_IDX_GNU_external:
5928           if (!m_map.augmentation_is_gdb)
5929             break;
5930           have_is_static = true;
5931           is_static = false;
5932           break;
5933         }
5934     }
5935
5936   /* Skip if already read in.  */
5937   if (per_cu->v.quick->compunit_symtab)
5938     goto again;
5939
5940   /* Check static vs global.  */
5941   if (have_is_static)
5942     {
5943       const bool want_static = m_block_index != GLOBAL_BLOCK;
5944       if (m_want_specific_block && want_static != is_static)
5945         goto again;
5946     }
5947
5948   /* Match dw2_symtab_iter_next, symbol_kind
5949      and debug_names::psymbol_tag.  */
5950   switch (m_domain)
5951     {
5952     case VAR_DOMAIN:
5953       switch (indexval.dwarf_tag)
5954         {
5955         case DW_TAG_variable:
5956         case DW_TAG_subprogram:
5957         /* Some types are also in VAR_DOMAIN.  */
5958         case DW_TAG_typedef:
5959         case DW_TAG_structure_type:
5960           break;
5961         default:
5962           goto again;
5963         }
5964       break;
5965     case STRUCT_DOMAIN:
5966       switch (indexval.dwarf_tag)
5967         {
5968         case DW_TAG_typedef:
5969         case DW_TAG_structure_type:
5970           break;
5971         default:
5972           goto again;
5973         }
5974       break;
5975     case LABEL_DOMAIN:
5976       switch (indexval.dwarf_tag)
5977         {
5978         case 0:
5979         case DW_TAG_variable:
5980           break;
5981         default:
5982           goto again;
5983         }
5984       break;
5985     default:
5986       break;
5987     }
5988
5989   /* Match dw2_expand_symtabs_matching, symbol_kind and
5990      debug_names::psymbol_tag.  */
5991   switch (m_search)
5992     {
5993     case VARIABLES_DOMAIN:
5994       switch (indexval.dwarf_tag)
5995         {
5996         case DW_TAG_variable:
5997           break;
5998         default:
5999           goto again;
6000         }
6001       break;
6002     case FUNCTIONS_DOMAIN:
6003       switch (indexval.dwarf_tag)
6004         {
6005         case DW_TAG_subprogram:
6006           break;
6007         default:
6008           goto again;
6009         }
6010       break;
6011     case TYPES_DOMAIN:
6012       switch (indexval.dwarf_tag)
6013         {
6014         case DW_TAG_typedef:
6015         case DW_TAG_structure_type:
6016           break;
6017         default:
6018           goto again;
6019         }
6020       break;
6021     default:
6022       break;
6023     }
6024
6025   return per_cu;
6026 }
6027
6028 static struct compunit_symtab *
6029 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6030                                const char *name, domain_enum domain)
6031 {
6032   const block_enum block_index = static_cast<block_enum> (block_index_int);
6033   struct dwarf2_per_objfile *dwarf2_per_objfile
6034     = get_dwarf2_per_objfile (objfile);
6035
6036   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6037   if (!mapp)
6038     {
6039       /* index is NULL if OBJF_READNOW.  */
6040       return NULL;
6041     }
6042   const auto &map = *mapp;
6043
6044   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6045                                  block_index, domain, name);
6046
6047   struct compunit_symtab *stab_best = NULL;
6048   struct dwarf2_per_cu_data *per_cu;
6049   while ((per_cu = iter.next ()) != NULL)
6050     {
6051       struct symbol *sym, *with_opaque = NULL;
6052       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6053       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6054       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6055
6056       sym = block_find_symbol (block, name, domain,
6057                                block_find_non_opaque_type_preferred,
6058                                &with_opaque);
6059
6060       /* Some caution must be observed with overloaded functions and
6061          methods, since the index will not contain any overload
6062          information (but NAME might contain it).  */
6063
6064       if (sym != NULL
6065           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6066         return stab;
6067       if (with_opaque != NULL
6068           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6069         stab_best = stab;
6070
6071       /* Keep looking through other CUs.  */
6072     }
6073
6074   return stab_best;
6075 }
6076
6077 /* This dumps minimal information about .debug_names.  It is called
6078    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6079    uses this to verify that .debug_names has been loaded.  */
6080
6081 static void
6082 dw2_debug_names_dump (struct objfile *objfile)
6083 {
6084   struct dwarf2_per_objfile *dwarf2_per_objfile
6085     = get_dwarf2_per_objfile (objfile);
6086
6087   gdb_assert (dwarf2_per_objfile->using_index);
6088   printf_filtered (".debug_names:");
6089   if (dwarf2_per_objfile->debug_names_table)
6090     printf_filtered (" exists\n");
6091   else
6092     printf_filtered (" faked for \"readnow\"\n");
6093   printf_filtered ("\n");
6094 }
6095
6096 static void
6097 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6098                                              const char *func_name)
6099 {
6100   struct dwarf2_per_objfile *dwarf2_per_objfile
6101     = get_dwarf2_per_objfile (objfile);
6102
6103   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6104   if (dwarf2_per_objfile->debug_names_table)
6105     {
6106       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6107
6108       /* Note: It doesn't matter what we pass for block_index here.  */
6109       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6110                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6111
6112       struct dwarf2_per_cu_data *per_cu;
6113       while ((per_cu = iter.next ()) != NULL)
6114         dw2_instantiate_symtab (per_cu, false);
6115     }
6116 }
6117
6118 static void
6119 dw2_debug_names_expand_symtabs_matching
6120   (struct objfile *objfile,
6121    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6122    const lookup_name_info &lookup_name,
6123    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6124    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6125    enum search_domain kind)
6126 {
6127   struct dwarf2_per_objfile *dwarf2_per_objfile
6128     = get_dwarf2_per_objfile (objfile);
6129
6130   /* debug_names_table is NULL if OBJF_READNOW.  */
6131   if (!dwarf2_per_objfile->debug_names_table)
6132     return;
6133
6134   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6135
6136   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6137
6138   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6139                                       symbol_matcher,
6140                                       kind, [&] (offset_type namei)
6141     {
6142       /* The name was matched, now expand corresponding CUs that were
6143          marked.  */
6144       dw2_debug_names_iterator iter (map, kind, namei);
6145
6146       struct dwarf2_per_cu_data *per_cu;
6147       while ((per_cu = iter.next ()) != NULL)
6148         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6149                                          expansion_notify);
6150     });
6151 }
6152
6153 const struct quick_symbol_functions dwarf2_debug_names_functions =
6154 {
6155   dw2_has_symbols,
6156   dw2_find_last_source_symtab,
6157   dw2_forget_cached_source_info,
6158   dw2_map_symtabs_matching_filename,
6159   dw2_debug_names_lookup_symbol,
6160   dw2_print_stats,
6161   dw2_debug_names_dump,
6162   dw2_debug_names_expand_symtabs_for_function,
6163   dw2_expand_all_symtabs,
6164   dw2_expand_symtabs_with_fullname,
6165   dw2_map_matching_symbols,
6166   dw2_debug_names_expand_symtabs_matching,
6167   dw2_find_pc_sect_compunit_symtab,
6168   NULL,
6169   dw2_map_symbol_filenames
6170 };
6171
6172 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6173    to either a dwarf2_per_objfile or dwz_file object.  */
6174
6175 template <typename T>
6176 static gdb::array_view<const gdb_byte>
6177 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6178 {
6179   dwarf2_section_info *section = &section_owner->gdb_index;
6180
6181   if (dwarf2_section_empty_p (section))
6182     return {};
6183
6184   /* Older elfutils strip versions could keep the section in the main
6185      executable while splitting it for the separate debug info file.  */
6186   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6187     return {};
6188
6189   dwarf2_read_section (obj, section);
6190
6191   return {section->buffer, section->size};
6192 }
6193
6194 /* Lookup the index cache for the contents of the index associated to
6195    DWARF2_OBJ.  */
6196
6197 static gdb::array_view<const gdb_byte>
6198 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6199 {
6200   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6201   if (build_id == nullptr)
6202     return {};
6203
6204   return global_index_cache.lookup_gdb_index (build_id,
6205                                               &dwarf2_obj->index_cache_res);
6206 }
6207
6208 /* Same as the above, but for DWZ.  */
6209
6210 static gdb::array_view<const gdb_byte>
6211 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6212 {
6213   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6214   if (build_id == nullptr)
6215     return {};
6216
6217   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6218 }
6219
6220 /* See symfile.h.  */
6221
6222 bool
6223 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6224 {
6225   struct dwarf2_per_objfile *dwarf2_per_objfile
6226     = get_dwarf2_per_objfile (objfile);
6227
6228   /* If we're about to read full symbols, don't bother with the
6229      indices.  In this case we also don't care if some other debug
6230      format is making psymtabs, because they are all about to be
6231      expanded anyway.  */
6232   if ((objfile->flags & OBJF_READNOW))
6233     {
6234       dwarf2_per_objfile->using_index = 1;
6235       create_all_comp_units (dwarf2_per_objfile);
6236       create_all_type_units (dwarf2_per_objfile);
6237       dwarf2_per_objfile->quick_file_names_table
6238         = create_quick_file_names_table
6239             (dwarf2_per_objfile->all_comp_units.size ());
6240
6241       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6242                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6243         {
6244           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6245
6246           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6247                                             struct dwarf2_per_cu_quick_data);
6248         }
6249
6250       /* Return 1 so that gdb sees the "quick" functions.  However,
6251          these functions will be no-ops because we will have expanded
6252          all symtabs.  */
6253       *index_kind = dw_index_kind::GDB_INDEX;
6254       return true;
6255     }
6256
6257   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6258     {
6259       *index_kind = dw_index_kind::DEBUG_NAMES;
6260       return true;
6261     }
6262
6263   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6264                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6265                              get_gdb_index_contents_from_section<dwz_file>))
6266     {
6267       *index_kind = dw_index_kind::GDB_INDEX;
6268       return true;
6269     }
6270
6271   /* ... otherwise, try to find the index in the index cache.  */
6272   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6273                              get_gdb_index_contents_from_cache,
6274                              get_gdb_index_contents_from_cache_dwz))
6275     {
6276       global_index_cache.hit ();
6277       *index_kind = dw_index_kind::GDB_INDEX;
6278       return true;
6279     }
6280
6281   global_index_cache.miss ();
6282   return false;
6283 }
6284
6285 \f
6286
6287 /* Build a partial symbol table.  */
6288
6289 void
6290 dwarf2_build_psymtabs (struct objfile *objfile)
6291 {
6292   struct dwarf2_per_objfile *dwarf2_per_objfile
6293     = get_dwarf2_per_objfile (objfile);
6294
6295   if (objfile->global_psymbols.capacity () == 0
6296       && objfile->static_psymbols.capacity () == 0)
6297     init_psymbol_list (objfile, 1024);
6298
6299   TRY
6300     {
6301       /* This isn't really ideal: all the data we allocate on the
6302          objfile's obstack is still uselessly kept around.  However,
6303          freeing it seems unsafe.  */
6304       psymtab_discarder psymtabs (objfile);
6305       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6306       psymtabs.keep ();
6307
6308       /* (maybe) store an index in the cache.  */
6309       global_index_cache.store (dwarf2_per_objfile);
6310     }
6311   CATCH (except, RETURN_MASK_ERROR)
6312     {
6313       exception_print (gdb_stderr, except);
6314     }
6315   END_CATCH
6316 }
6317
6318 /* Return the total length of the CU described by HEADER.  */
6319
6320 static unsigned int
6321 get_cu_length (const struct comp_unit_head *header)
6322 {
6323   return header->initial_length_size + header->length;
6324 }
6325
6326 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6327
6328 static inline bool
6329 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6330 {
6331   sect_offset bottom = cu_header->sect_off;
6332   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6333
6334   return sect_off >= bottom && sect_off < top;
6335 }
6336
6337 /* Find the base address of the compilation unit for range lists and
6338    location lists.  It will normally be specified by DW_AT_low_pc.
6339    In DWARF-3 draft 4, the base address could be overridden by
6340    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6341    compilation units with discontinuous ranges.  */
6342
6343 static void
6344 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6345 {
6346   struct attribute *attr;
6347
6348   cu->base_known = 0;
6349   cu->base_address = 0;
6350
6351   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6352   if (attr)
6353     {
6354       cu->base_address = attr_value_as_address (attr);
6355       cu->base_known = 1;
6356     }
6357   else
6358     {
6359       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6360       if (attr)
6361         {
6362           cu->base_address = attr_value_as_address (attr);
6363           cu->base_known = 1;
6364         }
6365     }
6366 }
6367
6368 /* Read in the comp unit header information from the debug_info at info_ptr.
6369    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6370    NOTE: This leaves members offset, first_die_offset to be filled in
6371    by the caller.  */
6372
6373 static const gdb_byte *
6374 read_comp_unit_head (struct comp_unit_head *cu_header,
6375                      const gdb_byte *info_ptr,
6376                      struct dwarf2_section_info *section,
6377                      rcuh_kind section_kind)
6378 {
6379   int signed_addr;
6380   unsigned int bytes_read;
6381   const char *filename = get_section_file_name (section);
6382   bfd *abfd = get_section_bfd_owner (section);
6383
6384   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6385   cu_header->initial_length_size = bytes_read;
6386   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6387   info_ptr += bytes_read;
6388   cu_header->version = read_2_bytes (abfd, info_ptr);
6389   if (cu_header->version < 2 || cu_header->version > 5)
6390     error (_("Dwarf Error: wrong version in compilation unit header "
6391            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6392            cu_header->version, filename);
6393   info_ptr += 2;
6394   if (cu_header->version < 5)
6395     switch (section_kind)
6396       {
6397       case rcuh_kind::COMPILE:
6398         cu_header->unit_type = DW_UT_compile;
6399         break;
6400       case rcuh_kind::TYPE:
6401         cu_header->unit_type = DW_UT_type;
6402         break;
6403       default:
6404         internal_error (__FILE__, __LINE__,
6405                         _("read_comp_unit_head: invalid section_kind"));
6406       }
6407   else
6408     {
6409       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6410                                                  (read_1_byte (abfd, info_ptr));
6411       info_ptr += 1;
6412       switch (cu_header->unit_type)
6413         {
6414         case DW_UT_compile:
6415           if (section_kind != rcuh_kind::COMPILE)
6416             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6417                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6418                    filename);
6419           break;
6420         case DW_UT_type:
6421           section_kind = rcuh_kind::TYPE;
6422           break;
6423         default:
6424           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6425                  "(is %d, should be %d or %d) [in module %s]"),
6426                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6427         }
6428
6429       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6430       info_ptr += 1;
6431     }
6432   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6433                                                           cu_header,
6434                                                           &bytes_read);
6435   info_ptr += bytes_read;
6436   if (cu_header->version < 5)
6437     {
6438       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6439       info_ptr += 1;
6440     }
6441   signed_addr = bfd_get_sign_extend_vma (abfd);
6442   if (signed_addr < 0)
6443     internal_error (__FILE__, __LINE__,
6444                     _("read_comp_unit_head: dwarf from non elf file"));
6445   cu_header->signed_addr_p = signed_addr;
6446
6447   if (section_kind == rcuh_kind::TYPE)
6448     {
6449       LONGEST type_offset;
6450
6451       cu_header->signature = read_8_bytes (abfd, info_ptr);
6452       info_ptr += 8;
6453
6454       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6455       info_ptr += bytes_read;
6456       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6457       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6458         error (_("Dwarf Error: Too big type_offset in compilation unit "
6459                "header (is %s) [in module %s]"), plongest (type_offset),
6460                filename);
6461     }
6462
6463   return info_ptr;
6464 }
6465
6466 /* Helper function that returns the proper abbrev section for
6467    THIS_CU.  */
6468
6469 static struct dwarf2_section_info *
6470 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6471 {
6472   struct dwarf2_section_info *abbrev;
6473   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6474
6475   if (this_cu->is_dwz)
6476     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6477   else
6478     abbrev = &dwarf2_per_objfile->abbrev;
6479
6480   return abbrev;
6481 }
6482
6483 /* Subroutine of read_and_check_comp_unit_head and
6484    read_and_check_type_unit_head to simplify them.
6485    Perform various error checking on the header.  */
6486
6487 static void
6488 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6489                             struct comp_unit_head *header,
6490                             struct dwarf2_section_info *section,
6491                             struct dwarf2_section_info *abbrev_section)
6492 {
6493   const char *filename = get_section_file_name (section);
6494
6495   if (to_underlying (header->abbrev_sect_off)
6496       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6497     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6498            "(offset %s + 6) [in module %s]"),
6499            sect_offset_str (header->abbrev_sect_off),
6500            sect_offset_str (header->sect_off),
6501            filename);
6502
6503   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6504      avoid potential 32-bit overflow.  */
6505   if (((ULONGEST) header->sect_off + get_cu_length (header))
6506       > section->size)
6507     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6508            "(offset %s + 0) [in module %s]"),
6509            header->length, sect_offset_str (header->sect_off),
6510            filename);
6511 }
6512
6513 /* Read in a CU/TU header and perform some basic error checking.
6514    The contents of the header are stored in HEADER.
6515    The result is a pointer to the start of the first DIE.  */
6516
6517 static const gdb_byte *
6518 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6519                                struct comp_unit_head *header,
6520                                struct dwarf2_section_info *section,
6521                                struct dwarf2_section_info *abbrev_section,
6522                                const gdb_byte *info_ptr,
6523                                rcuh_kind section_kind)
6524 {
6525   const gdb_byte *beg_of_comp_unit = info_ptr;
6526
6527   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6528
6529   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6530
6531   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6532
6533   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6534                               abbrev_section);
6535
6536   return info_ptr;
6537 }
6538
6539 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6540
6541 static sect_offset
6542 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6543                     struct dwarf2_section_info *section,
6544                     sect_offset sect_off)
6545 {
6546   bfd *abfd = get_section_bfd_owner (section);
6547   const gdb_byte *info_ptr;
6548   unsigned int initial_length_size, offset_size;
6549   uint16_t version;
6550
6551   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6552   info_ptr = section->buffer + to_underlying (sect_off);
6553   read_initial_length (abfd, info_ptr, &initial_length_size);
6554   offset_size = initial_length_size == 4 ? 4 : 8;
6555   info_ptr += initial_length_size;
6556
6557   version = read_2_bytes (abfd, info_ptr);
6558   info_ptr += 2;
6559   if (version >= 5)
6560     {
6561       /* Skip unit type and address size.  */
6562       info_ptr += 2;
6563     }
6564
6565   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6566 }
6567
6568 /* Allocate a new partial symtab for file named NAME and mark this new
6569    partial symtab as being an include of PST.  */
6570
6571 static void
6572 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6573                                struct objfile *objfile)
6574 {
6575   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6576
6577   if (!IS_ABSOLUTE_PATH (subpst->filename))
6578     {
6579       /* It shares objfile->objfile_obstack.  */
6580       subpst->dirname = pst->dirname;
6581     }
6582
6583   subpst->dependencies
6584     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6585   subpst->dependencies[0] = pst;
6586   subpst->number_of_dependencies = 1;
6587
6588   subpst->globals_offset = 0;
6589   subpst->n_global_syms = 0;
6590   subpst->statics_offset = 0;
6591   subpst->n_static_syms = 0;
6592   subpst->compunit_symtab = NULL;
6593   subpst->read_symtab = pst->read_symtab;
6594   subpst->readin = 0;
6595
6596   /* No private part is necessary for include psymtabs.  This property
6597      can be used to differentiate between such include psymtabs and
6598      the regular ones.  */
6599   subpst->read_symtab_private = NULL;
6600 }
6601
6602 /* Read the Line Number Program data and extract the list of files
6603    included by the source file represented by PST.  Build an include
6604    partial symtab for each of these included files.  */
6605
6606 static void
6607 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6608                                struct die_info *die,
6609                                struct partial_symtab *pst)
6610 {
6611   line_header_up lh;
6612   struct attribute *attr;
6613
6614   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6615   if (attr)
6616     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6617   if (lh == NULL)
6618     return;  /* No linetable, so no includes.  */
6619
6620   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6621      that we pass in the raw text_low here; that is ok because we're
6622      only decoding the line table to make include partial symtabs, and
6623      so the addresses aren't really used.  */
6624   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6625                       pst->raw_text_low (), 1);
6626 }
6627
6628 static hashval_t
6629 hash_signatured_type (const void *item)
6630 {
6631   const struct signatured_type *sig_type
6632     = (const struct signatured_type *) item;
6633
6634   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6635   return sig_type->signature;
6636 }
6637
6638 static int
6639 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6640 {
6641   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6642   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6643
6644   return lhs->signature == rhs->signature;
6645 }
6646
6647 /* Allocate a hash table for signatured types.  */
6648
6649 static htab_t
6650 allocate_signatured_type_table (struct objfile *objfile)
6651 {
6652   return htab_create_alloc_ex (41,
6653                                hash_signatured_type,
6654                                eq_signatured_type,
6655                                NULL,
6656                                &objfile->objfile_obstack,
6657                                hashtab_obstack_allocate,
6658                                dummy_obstack_deallocate);
6659 }
6660
6661 /* A helper function to add a signatured type CU to a table.  */
6662
6663 static int
6664 add_signatured_type_cu_to_table (void **slot, void *datum)
6665 {
6666   struct signatured_type *sigt = (struct signatured_type *) *slot;
6667   std::vector<signatured_type *> *all_type_units
6668     = (std::vector<signatured_type *> *) datum;
6669
6670   all_type_units->push_back (sigt);
6671
6672   return 1;
6673 }
6674
6675 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6676    and fill them into TYPES_HTAB.  It will process only type units,
6677    therefore DW_UT_type.  */
6678
6679 static void
6680 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6681                               struct dwo_file *dwo_file,
6682                               dwarf2_section_info *section, htab_t &types_htab,
6683                               rcuh_kind section_kind)
6684 {
6685   struct objfile *objfile = dwarf2_per_objfile->objfile;
6686   struct dwarf2_section_info *abbrev_section;
6687   bfd *abfd;
6688   const gdb_byte *info_ptr, *end_ptr;
6689
6690   abbrev_section = (dwo_file != NULL
6691                     ? &dwo_file->sections.abbrev
6692                     : &dwarf2_per_objfile->abbrev);
6693
6694   if (dwarf_read_debug)
6695     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6696                         get_section_name (section),
6697                         get_section_file_name (abbrev_section));
6698
6699   dwarf2_read_section (objfile, section);
6700   info_ptr = section->buffer;
6701
6702   if (info_ptr == NULL)
6703     return;
6704
6705   /* We can't set abfd until now because the section may be empty or
6706      not present, in which case the bfd is unknown.  */
6707   abfd = get_section_bfd_owner (section);
6708
6709   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6710      because we don't need to read any dies: the signature is in the
6711      header.  */
6712
6713   end_ptr = info_ptr + section->size;
6714   while (info_ptr < end_ptr)
6715     {
6716       struct signatured_type *sig_type;
6717       struct dwo_unit *dwo_tu;
6718       void **slot;
6719       const gdb_byte *ptr = info_ptr;
6720       struct comp_unit_head header;
6721       unsigned int length;
6722
6723       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6724
6725       /* Initialize it due to a false compiler warning.  */
6726       header.signature = -1;
6727       header.type_cu_offset_in_tu = (cu_offset) -1;
6728
6729       /* We need to read the type's signature in order to build the hash
6730          table, but we don't need anything else just yet.  */
6731
6732       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6733                                            abbrev_section, ptr, section_kind);
6734
6735       length = get_cu_length (&header);
6736
6737       /* Skip dummy type units.  */
6738       if (ptr >= info_ptr + length
6739           || peek_abbrev_code (abfd, ptr) == 0
6740           || header.unit_type != DW_UT_type)
6741         {
6742           info_ptr += length;
6743           continue;
6744         }
6745
6746       if (types_htab == NULL)
6747         {
6748           if (dwo_file)
6749             types_htab = allocate_dwo_unit_table (objfile);
6750           else
6751             types_htab = allocate_signatured_type_table (objfile);
6752         }
6753
6754       if (dwo_file)
6755         {
6756           sig_type = NULL;
6757           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6758                                    struct dwo_unit);
6759           dwo_tu->dwo_file = dwo_file;
6760           dwo_tu->signature = header.signature;
6761           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6762           dwo_tu->section = section;
6763           dwo_tu->sect_off = sect_off;
6764           dwo_tu->length = length;
6765         }
6766       else
6767         {
6768           /* N.B.: type_offset is not usable if this type uses a DWO file.
6769              The real type_offset is in the DWO file.  */
6770           dwo_tu = NULL;
6771           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6772                                      struct signatured_type);
6773           sig_type->signature = header.signature;
6774           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6775           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6776           sig_type->per_cu.is_debug_types = 1;
6777           sig_type->per_cu.section = section;
6778           sig_type->per_cu.sect_off = sect_off;
6779           sig_type->per_cu.length = length;
6780         }
6781
6782       slot = htab_find_slot (types_htab,
6783                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6784                              INSERT);
6785       gdb_assert (slot != NULL);
6786       if (*slot != NULL)
6787         {
6788           sect_offset dup_sect_off;
6789
6790           if (dwo_file)
6791             {
6792               const struct dwo_unit *dup_tu
6793                 = (const struct dwo_unit *) *slot;
6794
6795               dup_sect_off = dup_tu->sect_off;
6796             }
6797           else
6798             {
6799               const struct signatured_type *dup_tu
6800                 = (const struct signatured_type *) *slot;
6801
6802               dup_sect_off = dup_tu->per_cu.sect_off;
6803             }
6804
6805           complaint (_("debug type entry at offset %s is duplicate to"
6806                        " the entry at offset %s, signature %s"),
6807                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6808                      hex_string (header.signature));
6809         }
6810       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6811
6812       if (dwarf_read_debug > 1)
6813         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6814                             sect_offset_str (sect_off),
6815                             hex_string (header.signature));
6816
6817       info_ptr += length;
6818     }
6819 }
6820
6821 /* Create the hash table of all entries in the .debug_types
6822    (or .debug_types.dwo) section(s).
6823    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6824    otherwise it is NULL.
6825
6826    The result is a pointer to the hash table or NULL if there are no types.
6827
6828    Note: This function processes DWO files only, not DWP files.  */
6829
6830 static void
6831 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6832                                struct dwo_file *dwo_file,
6833                                VEC (dwarf2_section_info_def) *types,
6834                                htab_t &types_htab)
6835 {
6836   int ix;
6837   struct dwarf2_section_info *section;
6838
6839   if (VEC_empty (dwarf2_section_info_def, types))
6840     return;
6841
6842   for (ix = 0;
6843        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6844        ++ix)
6845     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6846                                   types_htab, rcuh_kind::TYPE);
6847 }
6848
6849 /* Create the hash table of all entries in the .debug_types section,
6850    and initialize all_type_units.
6851    The result is zero if there is an error (e.g. missing .debug_types section),
6852    otherwise non-zero.  */
6853
6854 static int
6855 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6856 {
6857   htab_t types_htab = NULL;
6858
6859   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6860                                 &dwarf2_per_objfile->info, types_htab,
6861                                 rcuh_kind::COMPILE);
6862   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6863                                  dwarf2_per_objfile->types, types_htab);
6864   if (types_htab == NULL)
6865     {
6866       dwarf2_per_objfile->signatured_types = NULL;
6867       return 0;
6868     }
6869
6870   dwarf2_per_objfile->signatured_types = types_htab;
6871
6872   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6873   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6874
6875   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6876                           &dwarf2_per_objfile->all_type_units);
6877
6878   return 1;
6879 }
6880
6881 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6882    If SLOT is non-NULL, it is the entry to use in the hash table.
6883    Otherwise we find one.  */
6884
6885 static struct signatured_type *
6886 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6887                void **slot)
6888 {
6889   struct objfile *objfile = dwarf2_per_objfile->objfile;
6890
6891   if (dwarf2_per_objfile->all_type_units.size ()
6892       == dwarf2_per_objfile->all_type_units.capacity ())
6893     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6894
6895   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6896                                               struct signatured_type);
6897
6898   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6899   sig_type->signature = sig;
6900   sig_type->per_cu.is_debug_types = 1;
6901   if (dwarf2_per_objfile->using_index)
6902     {
6903       sig_type->per_cu.v.quick =
6904         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6905                         struct dwarf2_per_cu_quick_data);
6906     }
6907
6908   if (slot == NULL)
6909     {
6910       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6911                              sig_type, INSERT);
6912     }
6913   gdb_assert (*slot == NULL);
6914   *slot = sig_type;
6915   /* The rest of sig_type must be filled in by the caller.  */
6916   return sig_type;
6917 }
6918
6919 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6920    Fill in SIG_ENTRY with DWO_ENTRY.  */
6921
6922 static void
6923 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6924                                   struct signatured_type *sig_entry,
6925                                   struct dwo_unit *dwo_entry)
6926 {
6927   /* Make sure we're not clobbering something we don't expect to.  */
6928   gdb_assert (! sig_entry->per_cu.queued);
6929   gdb_assert (sig_entry->per_cu.cu == NULL);
6930   if (dwarf2_per_objfile->using_index)
6931     {
6932       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6933       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6934     }
6935   else
6936       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6937   gdb_assert (sig_entry->signature == dwo_entry->signature);
6938   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6939   gdb_assert (sig_entry->type_unit_group == NULL);
6940   gdb_assert (sig_entry->dwo_unit == NULL);
6941
6942   sig_entry->per_cu.section = dwo_entry->section;
6943   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6944   sig_entry->per_cu.length = dwo_entry->length;
6945   sig_entry->per_cu.reading_dwo_directly = 1;
6946   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6947   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6948   sig_entry->dwo_unit = dwo_entry;
6949 }
6950
6951 /* Subroutine of lookup_signatured_type.
6952    If we haven't read the TU yet, create the signatured_type data structure
6953    for a TU to be read in directly from a DWO file, bypassing the stub.
6954    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6955    using .gdb_index, then when reading a CU we want to stay in the DWO file
6956    containing that CU.  Otherwise we could end up reading several other DWO
6957    files (due to comdat folding) to process the transitive closure of all the
6958    mentioned TUs, and that can be slow.  The current DWO file will have every
6959    type signature that it needs.
6960    We only do this for .gdb_index because in the psymtab case we already have
6961    to read all the DWOs to build the type unit groups.  */
6962
6963 static struct signatured_type *
6964 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6965 {
6966   struct dwarf2_per_objfile *dwarf2_per_objfile
6967     = cu->per_cu->dwarf2_per_objfile;
6968   struct objfile *objfile = dwarf2_per_objfile->objfile;
6969   struct dwo_file *dwo_file;
6970   struct dwo_unit find_dwo_entry, *dwo_entry;
6971   struct signatured_type find_sig_entry, *sig_entry;
6972   void **slot;
6973
6974   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6975
6976   /* If TU skeletons have been removed then we may not have read in any
6977      TUs yet.  */
6978   if (dwarf2_per_objfile->signatured_types == NULL)
6979     {
6980       dwarf2_per_objfile->signatured_types
6981         = allocate_signatured_type_table (objfile);
6982     }
6983
6984   /* We only ever need to read in one copy of a signatured type.
6985      Use the global signatured_types array to do our own comdat-folding
6986      of types.  If this is the first time we're reading this TU, and
6987      the TU has an entry in .gdb_index, replace the recorded data from
6988      .gdb_index with this TU.  */
6989
6990   find_sig_entry.signature = sig;
6991   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6992                          &find_sig_entry, INSERT);
6993   sig_entry = (struct signatured_type *) *slot;
6994
6995   /* We can get here with the TU already read, *or* in the process of being
6996      read.  Don't reassign the global entry to point to this DWO if that's
6997      the case.  Also note that if the TU is already being read, it may not
6998      have come from a DWO, the program may be a mix of Fission-compiled
6999      code and non-Fission-compiled code.  */
7000
7001   /* Have we already tried to read this TU?
7002      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7003      needn't exist in the global table yet).  */
7004   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7005     return sig_entry;
7006
7007   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7008      dwo_unit of the TU itself.  */
7009   dwo_file = cu->dwo_unit->dwo_file;
7010
7011   /* Ok, this is the first time we're reading this TU.  */
7012   if (dwo_file->tus == NULL)
7013     return NULL;
7014   find_dwo_entry.signature = sig;
7015   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7016   if (dwo_entry == NULL)
7017     return NULL;
7018
7019   /* If the global table doesn't have an entry for this TU, add one.  */
7020   if (sig_entry == NULL)
7021     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7022
7023   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7024   sig_entry->per_cu.tu_read = 1;
7025   return sig_entry;
7026 }
7027
7028 /* Subroutine of lookup_signatured_type.
7029    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7030    then try the DWP file.  If the TU stub (skeleton) has been removed then
7031    it won't be in .gdb_index.  */
7032
7033 static struct signatured_type *
7034 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7035 {
7036   struct dwarf2_per_objfile *dwarf2_per_objfile
7037     = cu->per_cu->dwarf2_per_objfile;
7038   struct objfile *objfile = dwarf2_per_objfile->objfile;
7039   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7040   struct dwo_unit *dwo_entry;
7041   struct signatured_type find_sig_entry, *sig_entry;
7042   void **slot;
7043
7044   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7045   gdb_assert (dwp_file != NULL);
7046
7047   /* If TU skeletons have been removed then we may not have read in any
7048      TUs yet.  */
7049   if (dwarf2_per_objfile->signatured_types == NULL)
7050     {
7051       dwarf2_per_objfile->signatured_types
7052         = allocate_signatured_type_table (objfile);
7053     }
7054
7055   find_sig_entry.signature = sig;
7056   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7057                          &find_sig_entry, INSERT);
7058   sig_entry = (struct signatured_type *) *slot;
7059
7060   /* Have we already tried to read this TU?
7061      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7062      needn't exist in the global table yet).  */
7063   if (sig_entry != NULL)
7064     return sig_entry;
7065
7066   if (dwp_file->tus == NULL)
7067     return NULL;
7068   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7069                                       sig, 1 /* is_debug_types */);
7070   if (dwo_entry == NULL)
7071     return NULL;
7072
7073   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7074   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7075
7076   return sig_entry;
7077 }
7078
7079 /* Lookup a signature based type for DW_FORM_ref_sig8.
7080    Returns NULL if signature SIG is not present in the table.
7081    It is up to the caller to complain about this.  */
7082
7083 static struct signatured_type *
7084 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7085 {
7086   struct dwarf2_per_objfile *dwarf2_per_objfile
7087     = cu->per_cu->dwarf2_per_objfile;
7088
7089   if (cu->dwo_unit
7090       && dwarf2_per_objfile->using_index)
7091     {
7092       /* We're in a DWO/DWP file, and we're using .gdb_index.
7093          These cases require special processing.  */
7094       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7095         return lookup_dwo_signatured_type (cu, sig);
7096       else
7097         return lookup_dwp_signatured_type (cu, sig);
7098     }
7099   else
7100     {
7101       struct signatured_type find_entry, *entry;
7102
7103       if (dwarf2_per_objfile->signatured_types == NULL)
7104         return NULL;
7105       find_entry.signature = sig;
7106       entry = ((struct signatured_type *)
7107                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7108       return entry;
7109     }
7110 }
7111 \f
7112 /* Low level DIE reading support.  */
7113
7114 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7115
7116 static void
7117 init_cu_die_reader (struct die_reader_specs *reader,
7118                     struct dwarf2_cu *cu,
7119                     struct dwarf2_section_info *section,
7120                     struct dwo_file *dwo_file,
7121                     struct abbrev_table *abbrev_table)
7122 {
7123   gdb_assert (section->readin && section->buffer != NULL);
7124   reader->abfd = get_section_bfd_owner (section);
7125   reader->cu = cu;
7126   reader->dwo_file = dwo_file;
7127   reader->die_section = section;
7128   reader->buffer = section->buffer;
7129   reader->buffer_end = section->buffer + section->size;
7130   reader->comp_dir = NULL;
7131   reader->abbrev_table = abbrev_table;
7132 }
7133
7134 /* Subroutine of init_cutu_and_read_dies to simplify it.
7135    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7136    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7137    already.
7138
7139    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7140    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7141    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7142    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7143    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7144    STUB_COMP_DIR may be non-NULL.
7145    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7146    are filled in with the info of the DIE from the DWO file.
7147    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7148    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7149    kept around for at least as long as *RESULT_READER.
7150
7151    The result is non-zero if a valid (non-dummy) DIE was found.  */
7152
7153 static int
7154 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7155                         struct dwo_unit *dwo_unit,
7156                         struct die_info *stub_comp_unit_die,
7157                         const char *stub_comp_dir,
7158                         struct die_reader_specs *result_reader,
7159                         const gdb_byte **result_info_ptr,
7160                         struct die_info **result_comp_unit_die,
7161                         int *result_has_children,
7162                         abbrev_table_up *result_dwo_abbrev_table)
7163 {
7164   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7165   struct objfile *objfile = dwarf2_per_objfile->objfile;
7166   struct dwarf2_cu *cu = this_cu->cu;
7167   bfd *abfd;
7168   const gdb_byte *begin_info_ptr, *info_ptr;
7169   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7170   int i,num_extra_attrs;
7171   struct dwarf2_section_info *dwo_abbrev_section;
7172   struct attribute *attr;
7173   struct die_info *comp_unit_die;
7174
7175   /* At most one of these may be provided.  */
7176   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7177
7178   /* These attributes aren't processed until later:
7179      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7180      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7181      referenced later.  However, these attributes are found in the stub
7182      which we won't have later.  In order to not impose this complication
7183      on the rest of the code, we read them here and copy them to the
7184      DWO CU/TU die.  */
7185
7186   stmt_list = NULL;
7187   low_pc = NULL;
7188   high_pc = NULL;
7189   ranges = NULL;
7190   comp_dir = NULL;
7191
7192   if (stub_comp_unit_die != NULL)
7193     {
7194       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7195          DWO file.  */
7196       if (! this_cu->is_debug_types)
7197         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7198       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7199       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7200       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7201       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7202
7203       /* There should be a DW_AT_addr_base attribute here (if needed).
7204          We need the value before we can process DW_FORM_GNU_addr_index.  */
7205       cu->addr_base = 0;
7206       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7207       if (attr)
7208         cu->addr_base = DW_UNSND (attr);
7209
7210       /* There should be a DW_AT_ranges_base attribute here (if needed).
7211          We need the value before we can process DW_AT_ranges.  */
7212       cu->ranges_base = 0;
7213       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7214       if (attr)
7215         cu->ranges_base = DW_UNSND (attr);
7216     }
7217   else if (stub_comp_dir != NULL)
7218     {
7219       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7220       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7221       comp_dir->name = DW_AT_comp_dir;
7222       comp_dir->form = DW_FORM_string;
7223       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7224       DW_STRING (comp_dir) = stub_comp_dir;
7225     }
7226
7227   /* Set up for reading the DWO CU/TU.  */
7228   cu->dwo_unit = dwo_unit;
7229   dwarf2_section_info *section = dwo_unit->section;
7230   dwarf2_read_section (objfile, section);
7231   abfd = get_section_bfd_owner (section);
7232   begin_info_ptr = info_ptr = (section->buffer
7233                                + to_underlying (dwo_unit->sect_off));
7234   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7235
7236   if (this_cu->is_debug_types)
7237     {
7238       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7239
7240       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7241                                                 &cu->header, section,
7242                                                 dwo_abbrev_section,
7243                                                 info_ptr, rcuh_kind::TYPE);
7244       /* This is not an assert because it can be caused by bad debug info.  */
7245       if (sig_type->signature != cu->header.signature)
7246         {
7247           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7248                    " TU at offset %s [in module %s]"),
7249                  hex_string (sig_type->signature),
7250                  hex_string (cu->header.signature),
7251                  sect_offset_str (dwo_unit->sect_off),
7252                  bfd_get_filename (abfd));
7253         }
7254       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7255       /* For DWOs coming from DWP files, we don't know the CU length
7256          nor the type's offset in the TU until now.  */
7257       dwo_unit->length = get_cu_length (&cu->header);
7258       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7259
7260       /* Establish the type offset that can be used to lookup the type.
7261          For DWO files, we don't know it until now.  */
7262       sig_type->type_offset_in_section
7263         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7264     }
7265   else
7266     {
7267       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7268                                                 &cu->header, section,
7269                                                 dwo_abbrev_section,
7270                                                 info_ptr, rcuh_kind::COMPILE);
7271       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7272       /* For DWOs coming from DWP files, we don't know the CU length
7273          until now.  */
7274       dwo_unit->length = get_cu_length (&cu->header);
7275     }
7276
7277   *result_dwo_abbrev_table
7278     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7279                                cu->header.abbrev_sect_off);
7280   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7281                       result_dwo_abbrev_table->get ());
7282
7283   /* Read in the die, but leave space to copy over the attributes
7284      from the stub.  This has the benefit of simplifying the rest of
7285      the code - all the work to maintain the illusion of a single
7286      DW_TAG_{compile,type}_unit DIE is done here.  */
7287   num_extra_attrs = ((stmt_list != NULL)
7288                      + (low_pc != NULL)
7289                      + (high_pc != NULL)
7290                      + (ranges != NULL)
7291                      + (comp_dir != NULL));
7292   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7293                               result_has_children, num_extra_attrs);
7294
7295   /* Copy over the attributes from the stub to the DIE we just read in.  */
7296   comp_unit_die = *result_comp_unit_die;
7297   i = comp_unit_die->num_attrs;
7298   if (stmt_list != NULL)
7299     comp_unit_die->attrs[i++] = *stmt_list;
7300   if (low_pc != NULL)
7301     comp_unit_die->attrs[i++] = *low_pc;
7302   if (high_pc != NULL)
7303     comp_unit_die->attrs[i++] = *high_pc;
7304   if (ranges != NULL)
7305     comp_unit_die->attrs[i++] = *ranges;
7306   if (comp_dir != NULL)
7307     comp_unit_die->attrs[i++] = *comp_dir;
7308   comp_unit_die->num_attrs += num_extra_attrs;
7309
7310   if (dwarf_die_debug)
7311     {
7312       fprintf_unfiltered (gdb_stdlog,
7313                           "Read die from %s@0x%x of %s:\n",
7314                           get_section_name (section),
7315                           (unsigned) (begin_info_ptr - section->buffer),
7316                           bfd_get_filename (abfd));
7317       dump_die (comp_unit_die, dwarf_die_debug);
7318     }
7319
7320   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7321      TUs by skipping the stub and going directly to the entry in the DWO file.
7322      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7323      to get it via circuitous means.  Blech.  */
7324   if (comp_dir != NULL)
7325     result_reader->comp_dir = DW_STRING (comp_dir);
7326
7327   /* Skip dummy compilation units.  */
7328   if (info_ptr >= begin_info_ptr + dwo_unit->length
7329       || peek_abbrev_code (abfd, info_ptr) == 0)
7330     return 0;
7331
7332   *result_info_ptr = info_ptr;
7333   return 1;
7334 }
7335
7336 /* Subroutine of init_cutu_and_read_dies to simplify it.
7337    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7338    Returns NULL if the specified DWO unit cannot be found.  */
7339
7340 static struct dwo_unit *
7341 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7342                  struct die_info *comp_unit_die)
7343 {
7344   struct dwarf2_cu *cu = this_cu->cu;
7345   ULONGEST signature;
7346   struct dwo_unit *dwo_unit;
7347   const char *comp_dir, *dwo_name;
7348
7349   gdb_assert (cu != NULL);
7350
7351   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7352   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7353   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7354
7355   if (this_cu->is_debug_types)
7356     {
7357       struct signatured_type *sig_type;
7358
7359       /* Since this_cu is the first member of struct signatured_type,
7360          we can go from a pointer to one to a pointer to the other.  */
7361       sig_type = (struct signatured_type *) this_cu;
7362       signature = sig_type->signature;
7363       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7364     }
7365   else
7366     {
7367       struct attribute *attr;
7368
7369       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7370       if (! attr)
7371         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7372                  " [in module %s]"),
7373                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7374       signature = DW_UNSND (attr);
7375       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7376                                        signature);
7377     }
7378
7379   return dwo_unit;
7380 }
7381
7382 /* Subroutine of init_cutu_and_read_dies to simplify it.
7383    See it for a description of the parameters.
7384    Read a TU directly from a DWO file, bypassing the stub.  */
7385
7386 static void
7387 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7388                            int use_existing_cu, int keep,
7389                            die_reader_func_ftype *die_reader_func,
7390                            void *data)
7391 {
7392   std::unique_ptr<dwarf2_cu> new_cu;
7393   struct signatured_type *sig_type;
7394   struct die_reader_specs reader;
7395   const gdb_byte *info_ptr;
7396   struct die_info *comp_unit_die;
7397   int has_children;
7398   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7399
7400   /* Verify we can do the following downcast, and that we have the
7401      data we need.  */
7402   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7403   sig_type = (struct signatured_type *) this_cu;
7404   gdb_assert (sig_type->dwo_unit != NULL);
7405
7406   if (use_existing_cu && this_cu->cu != NULL)
7407     {
7408       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7409       /* There's no need to do the rereading_dwo_cu handling that
7410          init_cutu_and_read_dies does since we don't read the stub.  */
7411     }
7412   else
7413     {
7414       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7415       gdb_assert (this_cu->cu == NULL);
7416       new_cu.reset (new dwarf2_cu (this_cu));
7417     }
7418
7419   /* A future optimization, if needed, would be to use an existing
7420      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7421      could share abbrev tables.  */
7422
7423   /* The abbreviation table used by READER, this must live at least as long as
7424      READER.  */
7425   abbrev_table_up dwo_abbrev_table;
7426
7427   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7428                               NULL /* stub_comp_unit_die */,
7429                               sig_type->dwo_unit->dwo_file->comp_dir,
7430                               &reader, &info_ptr,
7431                               &comp_unit_die, &has_children,
7432                               &dwo_abbrev_table) == 0)
7433     {
7434       /* Dummy die.  */
7435       return;
7436     }
7437
7438   /* All the "real" work is done here.  */
7439   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7440
7441   /* This duplicates the code in init_cutu_and_read_dies,
7442      but the alternative is making the latter more complex.
7443      This function is only for the special case of using DWO files directly:
7444      no point in overly complicating the general case just to handle this.  */
7445   if (new_cu != NULL && keep)
7446     {
7447       /* Link this CU into read_in_chain.  */
7448       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7449       dwarf2_per_objfile->read_in_chain = this_cu;
7450       /* The chain owns it now.  */
7451       new_cu.release ();
7452     }
7453 }
7454
7455 /* Initialize a CU (or TU) and read its DIEs.
7456    If the CU defers to a DWO file, read the DWO file as well.
7457
7458    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7459    Otherwise the table specified in the comp unit header is read in and used.
7460    This is an optimization for when we already have the abbrev table.
7461
7462    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7463    Otherwise, a new CU is allocated with xmalloc.
7464
7465    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7466    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7467
7468    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7469    linker) then DIE_READER_FUNC will not get called.  */
7470
7471 static void
7472 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7473                          struct abbrev_table *abbrev_table,
7474                          int use_existing_cu, int keep,
7475                          bool skip_partial,
7476                          die_reader_func_ftype *die_reader_func,
7477                          void *data)
7478 {
7479   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7480   struct objfile *objfile = dwarf2_per_objfile->objfile;
7481   struct dwarf2_section_info *section = this_cu->section;
7482   bfd *abfd = get_section_bfd_owner (section);
7483   struct dwarf2_cu *cu;
7484   const gdb_byte *begin_info_ptr, *info_ptr;
7485   struct die_reader_specs reader;
7486   struct die_info *comp_unit_die;
7487   int has_children;
7488   struct attribute *attr;
7489   struct signatured_type *sig_type = NULL;
7490   struct dwarf2_section_info *abbrev_section;
7491   /* Non-zero if CU currently points to a DWO file and we need to
7492      reread it.  When this happens we need to reread the skeleton die
7493      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7494   int rereading_dwo_cu = 0;
7495
7496   if (dwarf_die_debug)
7497     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7498                         this_cu->is_debug_types ? "type" : "comp",
7499                         sect_offset_str (this_cu->sect_off));
7500
7501   if (use_existing_cu)
7502     gdb_assert (keep);
7503
7504   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7505      file (instead of going through the stub), short-circuit all of this.  */
7506   if (this_cu->reading_dwo_directly)
7507     {
7508       /* Narrow down the scope of possibilities to have to understand.  */
7509       gdb_assert (this_cu->is_debug_types);
7510       gdb_assert (abbrev_table == NULL);
7511       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7512                                  die_reader_func, data);
7513       return;
7514     }
7515
7516   /* This is cheap if the section is already read in.  */
7517   dwarf2_read_section (objfile, section);
7518
7519   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7520
7521   abbrev_section = get_abbrev_section_for_cu (this_cu);
7522
7523   std::unique_ptr<dwarf2_cu> new_cu;
7524   if (use_existing_cu && this_cu->cu != NULL)
7525     {
7526       cu = this_cu->cu;
7527       /* If this CU is from a DWO file we need to start over, we need to
7528          refetch the attributes from the skeleton CU.
7529          This could be optimized by retrieving those attributes from when we
7530          were here the first time: the previous comp_unit_die was stored in
7531          comp_unit_obstack.  But there's no data yet that we need this
7532          optimization.  */
7533       if (cu->dwo_unit != NULL)
7534         rereading_dwo_cu = 1;
7535     }
7536   else
7537     {
7538       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7539       gdb_assert (this_cu->cu == NULL);
7540       new_cu.reset (new dwarf2_cu (this_cu));
7541       cu = new_cu.get ();
7542     }
7543
7544   /* Get the header.  */
7545   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7546     {
7547       /* We already have the header, there's no need to read it in again.  */
7548       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7549     }
7550   else
7551     {
7552       if (this_cu->is_debug_types)
7553         {
7554           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7555                                                     &cu->header, section,
7556                                                     abbrev_section, info_ptr,
7557                                                     rcuh_kind::TYPE);
7558
7559           /* Since per_cu is the first member of struct signatured_type,
7560              we can go from a pointer to one to a pointer to the other.  */
7561           sig_type = (struct signatured_type *) this_cu;
7562           gdb_assert (sig_type->signature == cu->header.signature);
7563           gdb_assert (sig_type->type_offset_in_tu
7564                       == cu->header.type_cu_offset_in_tu);
7565           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7566
7567           /* LENGTH has not been set yet for type units if we're
7568              using .gdb_index.  */
7569           this_cu->length = get_cu_length (&cu->header);
7570
7571           /* Establish the type offset that can be used to lookup the type.  */
7572           sig_type->type_offset_in_section =
7573             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7574
7575           this_cu->dwarf_version = cu->header.version;
7576         }
7577       else
7578         {
7579           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7580                                                     &cu->header, section,
7581                                                     abbrev_section,
7582                                                     info_ptr,
7583                                                     rcuh_kind::COMPILE);
7584
7585           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7586           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7587           this_cu->dwarf_version = cu->header.version;
7588         }
7589     }
7590
7591   /* Skip dummy compilation units.  */
7592   if (info_ptr >= begin_info_ptr + this_cu->length
7593       || peek_abbrev_code (abfd, info_ptr) == 0)
7594     return;
7595
7596   /* If we don't have them yet, read the abbrevs for this compilation unit.
7597      And if we need to read them now, make sure they're freed when we're
7598      done (own the table through ABBREV_TABLE_HOLDER).  */
7599   abbrev_table_up abbrev_table_holder;
7600   if (abbrev_table != NULL)
7601     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7602   else
7603     {
7604       abbrev_table_holder
7605         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7606                                    cu->header.abbrev_sect_off);
7607       abbrev_table = abbrev_table_holder.get ();
7608     }
7609
7610   /* Read the top level CU/TU die.  */
7611   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7612   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7613
7614   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7615     return;
7616
7617   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7618      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7619      table from the DWO file and pass the ownership over to us.  It will be
7620      referenced from READER, so we must make sure to free it after we're done
7621      with READER.
7622
7623      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7624      DWO CU, that this test will fail (the attribute will not be present).  */
7625   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7626   abbrev_table_up dwo_abbrev_table;
7627   if (attr)
7628     {
7629       struct dwo_unit *dwo_unit;
7630       struct die_info *dwo_comp_unit_die;
7631
7632       if (has_children)
7633         {
7634           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7635                        " has children (offset %s) [in module %s]"),
7636                      sect_offset_str (this_cu->sect_off),
7637                      bfd_get_filename (abfd));
7638         }
7639       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7640       if (dwo_unit != NULL)
7641         {
7642           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7643                                       comp_unit_die, NULL,
7644                                       &reader, &info_ptr,
7645                                       &dwo_comp_unit_die, &has_children,
7646                                       &dwo_abbrev_table) == 0)
7647             {
7648               /* Dummy die.  */
7649               return;
7650             }
7651           comp_unit_die = dwo_comp_unit_die;
7652         }
7653       else
7654         {
7655           /* Yikes, we couldn't find the rest of the DIE, we only have
7656              the stub.  A complaint has already been logged.  There's
7657              not much more we can do except pass on the stub DIE to
7658              die_reader_func.  We don't want to throw an error on bad
7659              debug info.  */
7660         }
7661     }
7662
7663   /* All of the above is setup for this call.  Yikes.  */
7664   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7665
7666   /* Done, clean up.  */
7667   if (new_cu != NULL && keep)
7668     {
7669       /* Link this CU into read_in_chain.  */
7670       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7671       dwarf2_per_objfile->read_in_chain = this_cu;
7672       /* The chain owns it now.  */
7673       new_cu.release ();
7674     }
7675 }
7676
7677 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7678    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7679    to have already done the lookup to find the DWO file).
7680
7681    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7682    THIS_CU->is_debug_types, but nothing else.
7683
7684    We fill in THIS_CU->length.
7685
7686    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7687    linker) then DIE_READER_FUNC will not get called.
7688
7689    THIS_CU->cu is always freed when done.
7690    This is done in order to not leave THIS_CU->cu in a state where we have
7691    to care whether it refers to the "main" CU or the DWO CU.  */
7692
7693 static void
7694 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7695                                    struct dwo_file *dwo_file,
7696                                    die_reader_func_ftype *die_reader_func,
7697                                    void *data)
7698 {
7699   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7700   struct objfile *objfile = dwarf2_per_objfile->objfile;
7701   struct dwarf2_section_info *section = this_cu->section;
7702   bfd *abfd = get_section_bfd_owner (section);
7703   struct dwarf2_section_info *abbrev_section;
7704   const gdb_byte *begin_info_ptr, *info_ptr;
7705   struct die_reader_specs reader;
7706   struct die_info *comp_unit_die;
7707   int has_children;
7708
7709   if (dwarf_die_debug)
7710     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7711                         this_cu->is_debug_types ? "type" : "comp",
7712                         sect_offset_str (this_cu->sect_off));
7713
7714   gdb_assert (this_cu->cu == NULL);
7715
7716   abbrev_section = (dwo_file != NULL
7717                     ? &dwo_file->sections.abbrev
7718                     : get_abbrev_section_for_cu (this_cu));
7719
7720   /* This is cheap if the section is already read in.  */
7721   dwarf2_read_section (objfile, section);
7722
7723   struct dwarf2_cu cu (this_cu);
7724
7725   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7726   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7727                                             &cu.header, section,
7728                                             abbrev_section, info_ptr,
7729                                             (this_cu->is_debug_types
7730                                              ? rcuh_kind::TYPE
7731                                              : rcuh_kind::COMPILE));
7732
7733   this_cu->length = get_cu_length (&cu.header);
7734
7735   /* Skip dummy compilation units.  */
7736   if (info_ptr >= begin_info_ptr + this_cu->length
7737       || peek_abbrev_code (abfd, info_ptr) == 0)
7738     return;
7739
7740   abbrev_table_up abbrev_table
7741     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7742                                cu.header.abbrev_sect_off);
7743
7744   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7745   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7746
7747   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7748 }
7749
7750 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7751    does not lookup the specified DWO file.
7752    This cannot be used to read DWO files.
7753
7754    THIS_CU->cu is always freed when done.
7755    This is done in order to not leave THIS_CU->cu in a state where we have
7756    to care whether it refers to the "main" CU or the DWO CU.
7757    We can revisit this if the data shows there's a performance issue.  */
7758
7759 static void
7760 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7761                                 die_reader_func_ftype *die_reader_func,
7762                                 void *data)
7763 {
7764   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7765 }
7766 \f
7767 /* Type Unit Groups.
7768
7769    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7770    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7771    so that all types coming from the same compilation (.o file) are grouped
7772    together.  A future step could be to put the types in the same symtab as
7773    the CU the types ultimately came from.  */
7774
7775 static hashval_t
7776 hash_type_unit_group (const void *item)
7777 {
7778   const struct type_unit_group *tu_group
7779     = (const struct type_unit_group *) item;
7780
7781   return hash_stmt_list_entry (&tu_group->hash);
7782 }
7783
7784 static int
7785 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7786 {
7787   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7788   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7789
7790   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7791 }
7792
7793 /* Allocate a hash table for type unit groups.  */
7794
7795 static htab_t
7796 allocate_type_unit_groups_table (struct objfile *objfile)
7797 {
7798   return htab_create_alloc_ex (3,
7799                                hash_type_unit_group,
7800                                eq_type_unit_group,
7801                                NULL,
7802                                &objfile->objfile_obstack,
7803                                hashtab_obstack_allocate,
7804                                dummy_obstack_deallocate);
7805 }
7806
7807 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7808    partial symtabs.  We combine several TUs per psymtab to not let the size
7809    of any one psymtab grow too big.  */
7810 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7811 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7812
7813 /* Helper routine for get_type_unit_group.
7814    Create the type_unit_group object used to hold one or more TUs.  */
7815
7816 static struct type_unit_group *
7817 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7818 {
7819   struct dwarf2_per_objfile *dwarf2_per_objfile
7820     = cu->per_cu->dwarf2_per_objfile;
7821   struct objfile *objfile = dwarf2_per_objfile->objfile;
7822   struct dwarf2_per_cu_data *per_cu;
7823   struct type_unit_group *tu_group;
7824
7825   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7826                              struct type_unit_group);
7827   per_cu = &tu_group->per_cu;
7828   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7829
7830   if (dwarf2_per_objfile->using_index)
7831     {
7832       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7833                                         struct dwarf2_per_cu_quick_data);
7834     }
7835   else
7836     {
7837       unsigned int line_offset = to_underlying (line_offset_struct);
7838       struct partial_symtab *pst;
7839       std::string name;
7840
7841       /* Give the symtab a useful name for debug purposes.  */
7842       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7843         name = string_printf ("<type_units_%d>",
7844                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7845       else
7846         name = string_printf ("<type_units_at_0x%x>", line_offset);
7847
7848       pst = create_partial_symtab (per_cu, name.c_str ());
7849       pst->anonymous = 1;
7850     }
7851
7852   tu_group->hash.dwo_unit = cu->dwo_unit;
7853   tu_group->hash.line_sect_off = line_offset_struct;
7854
7855   return tu_group;
7856 }
7857
7858 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7859    STMT_LIST is a DW_AT_stmt_list attribute.  */
7860
7861 static struct type_unit_group *
7862 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7863 {
7864   struct dwarf2_per_objfile *dwarf2_per_objfile
7865     = cu->per_cu->dwarf2_per_objfile;
7866   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7867   struct type_unit_group *tu_group;
7868   void **slot;
7869   unsigned int line_offset;
7870   struct type_unit_group type_unit_group_for_lookup;
7871
7872   if (dwarf2_per_objfile->type_unit_groups == NULL)
7873     {
7874       dwarf2_per_objfile->type_unit_groups =
7875         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7876     }
7877
7878   /* Do we need to create a new group, or can we use an existing one?  */
7879
7880   if (stmt_list)
7881     {
7882       line_offset = DW_UNSND (stmt_list);
7883       ++tu_stats->nr_symtab_sharers;
7884     }
7885   else
7886     {
7887       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7888          We can do various things here like create one group per TU or
7889          spread them over multiple groups to split up the expansion work.
7890          To avoid worst case scenarios (too many groups or too large groups)
7891          we, umm, group them in bunches.  */
7892       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7893                      | (tu_stats->nr_stmt_less_type_units
7894                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7895       ++tu_stats->nr_stmt_less_type_units;
7896     }
7897
7898   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7899   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7900   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7901                          &type_unit_group_for_lookup, INSERT);
7902   if (*slot != NULL)
7903     {
7904       tu_group = (struct type_unit_group *) *slot;
7905       gdb_assert (tu_group != NULL);
7906     }
7907   else
7908     {
7909       sect_offset line_offset_struct = (sect_offset) line_offset;
7910       tu_group = create_type_unit_group (cu, line_offset_struct);
7911       *slot = tu_group;
7912       ++tu_stats->nr_symtabs;
7913     }
7914
7915   return tu_group;
7916 }
7917 \f
7918 /* Partial symbol tables.  */
7919
7920 /* Create a psymtab named NAME and assign it to PER_CU.
7921
7922    The caller must fill in the following details:
7923    dirname, textlow, texthigh.  */
7924
7925 static struct partial_symtab *
7926 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7927 {
7928   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7929   struct partial_symtab *pst;
7930
7931   pst = start_psymtab_common (objfile, name, 0,
7932                               objfile->global_psymbols,
7933                               objfile->static_psymbols);
7934
7935   pst->psymtabs_addrmap_supported = 1;
7936
7937   /* This is the glue that links PST into GDB's symbol API.  */
7938   pst->read_symtab_private = per_cu;
7939   pst->read_symtab = dwarf2_read_symtab;
7940   per_cu->v.psymtab = pst;
7941
7942   return pst;
7943 }
7944
7945 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7946    type.  */
7947
7948 struct process_psymtab_comp_unit_data
7949 {
7950   /* True if we are reading a DW_TAG_partial_unit.  */
7951
7952   int want_partial_unit;
7953
7954   /* The "pretend" language that is used if the CU doesn't declare a
7955      language.  */
7956
7957   enum language pretend_language;
7958 };
7959
7960 /* die_reader_func for process_psymtab_comp_unit.  */
7961
7962 static void
7963 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7964                                   const gdb_byte *info_ptr,
7965                                   struct die_info *comp_unit_die,
7966                                   int has_children,
7967                                   void *data)
7968 {
7969   struct dwarf2_cu *cu = reader->cu;
7970   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7971   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7972   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7973   CORE_ADDR baseaddr;
7974   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7975   struct partial_symtab *pst;
7976   enum pc_bounds_kind cu_bounds_kind;
7977   const char *filename;
7978   struct process_psymtab_comp_unit_data *info
7979     = (struct process_psymtab_comp_unit_data *) data;
7980
7981   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7982     return;
7983
7984   gdb_assert (! per_cu->is_debug_types);
7985
7986   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7987
7988   /* Allocate a new partial symbol table structure.  */
7989   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7990   if (filename == NULL)
7991     filename = "";
7992
7993   pst = create_partial_symtab (per_cu, filename);
7994
7995   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7996   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7997
7998   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7999
8000   dwarf2_find_base_address (comp_unit_die, cu);
8001
8002   /* Possibly set the default values of LOWPC and HIGHPC from
8003      `DW_AT_ranges'.  */
8004   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8005                                          &best_highpc, cu, pst);
8006   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8007     {
8008       CORE_ADDR low
8009         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8010            - baseaddr);
8011       CORE_ADDR high
8012         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8013            - baseaddr - 1);
8014       /* Store the contiguous range if it is not empty; it can be
8015          empty for CUs with no code.  */
8016       addrmap_set_empty (objfile->psymtabs_addrmap, low, high, pst);
8017     }
8018
8019   /* Check if comp unit has_children.
8020      If so, read the rest of the partial symbols from this comp unit.
8021      If not, there's no more debug_info for this comp unit.  */
8022   if (has_children)
8023     {
8024       struct partial_die_info *first_die;
8025       CORE_ADDR lowpc, highpc;
8026
8027       lowpc = ((CORE_ADDR) -1);
8028       highpc = ((CORE_ADDR) 0);
8029
8030       first_die = load_partial_dies (reader, info_ptr, 1);
8031
8032       scan_partial_symbols (first_die, &lowpc, &highpc,
8033                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8034
8035       /* If we didn't find a lowpc, set it to highpc to avoid
8036          complaints from `maint check'.  */
8037       if (lowpc == ((CORE_ADDR) -1))
8038         lowpc = highpc;
8039
8040       /* If the compilation unit didn't have an explicit address range,
8041          then use the information extracted from its child dies.  */
8042       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8043         {
8044           best_lowpc = lowpc;
8045           best_highpc = highpc;
8046         }
8047     }
8048   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8049                                                  best_lowpc + baseaddr)
8050                      - baseaddr);
8051   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8052                                                   best_highpc + baseaddr)
8053                       - baseaddr);
8054
8055   end_psymtab_common (objfile, pst);
8056
8057   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8058     {
8059       int i;
8060       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8061       struct dwarf2_per_cu_data *iter;
8062
8063       /* Fill in 'dependencies' here; we fill in 'users' in a
8064          post-pass.  */
8065       pst->number_of_dependencies = len;
8066       pst->dependencies =
8067         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8068       for (i = 0;
8069            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8070                         i, iter);
8071            ++i)
8072         pst->dependencies[i] = iter->v.psymtab;
8073
8074       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8075     }
8076
8077   /* Get the list of files included in the current compilation unit,
8078      and build a psymtab for each of them.  */
8079   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8080
8081   if (dwarf_read_debug)
8082     {
8083       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8084
8085       fprintf_unfiltered (gdb_stdlog,
8086                           "Psymtab for %s unit @%s: %s - %s"
8087                           ", %d global, %d static syms\n",
8088                           per_cu->is_debug_types ? "type" : "comp",
8089                           sect_offset_str (per_cu->sect_off),
8090                           paddress (gdbarch, pst->text_low (objfile)),
8091                           paddress (gdbarch, pst->text_high (objfile)),
8092                           pst->n_global_syms, pst->n_static_syms);
8093     }
8094 }
8095
8096 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8097    Process compilation unit THIS_CU for a psymtab.  */
8098
8099 static void
8100 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8101                            int want_partial_unit,
8102                            enum language pretend_language)
8103 {
8104   /* If this compilation unit was already read in, free the
8105      cached copy in order to read it in again.  This is
8106      necessary because we skipped some symbols when we first
8107      read in the compilation unit (see load_partial_dies).
8108      This problem could be avoided, but the benefit is unclear.  */
8109   if (this_cu->cu != NULL)
8110     free_one_cached_comp_unit (this_cu);
8111
8112   if (this_cu->is_debug_types)
8113     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8114                              build_type_psymtabs_reader, NULL);
8115   else
8116     {
8117       process_psymtab_comp_unit_data info;
8118       info.want_partial_unit = want_partial_unit;
8119       info.pretend_language = pretend_language;
8120       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8121                                process_psymtab_comp_unit_reader, &info);
8122     }
8123
8124   /* Age out any secondary CUs.  */
8125   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8126 }
8127
8128 /* Reader function for build_type_psymtabs.  */
8129
8130 static void
8131 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8132                             const gdb_byte *info_ptr,
8133                             struct die_info *type_unit_die,
8134                             int has_children,
8135                             void *data)
8136 {
8137   struct dwarf2_per_objfile *dwarf2_per_objfile
8138     = reader->cu->per_cu->dwarf2_per_objfile;
8139   struct objfile *objfile = dwarf2_per_objfile->objfile;
8140   struct dwarf2_cu *cu = reader->cu;
8141   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8142   struct signatured_type *sig_type;
8143   struct type_unit_group *tu_group;
8144   struct attribute *attr;
8145   struct partial_die_info *first_die;
8146   CORE_ADDR lowpc, highpc;
8147   struct partial_symtab *pst;
8148
8149   gdb_assert (data == NULL);
8150   gdb_assert (per_cu->is_debug_types);
8151   sig_type = (struct signatured_type *) per_cu;
8152
8153   if (! has_children)
8154     return;
8155
8156   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8157   tu_group = get_type_unit_group (cu, attr);
8158
8159   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8160
8161   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8162   pst = create_partial_symtab (per_cu, "");
8163   pst->anonymous = 1;
8164
8165   first_die = load_partial_dies (reader, info_ptr, 1);
8166
8167   lowpc = (CORE_ADDR) -1;
8168   highpc = (CORE_ADDR) 0;
8169   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8170
8171   end_psymtab_common (objfile, pst);
8172 }
8173
8174 /* Struct used to sort TUs by their abbreviation table offset.  */
8175
8176 struct tu_abbrev_offset
8177 {
8178   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8179   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8180   {}
8181
8182   signatured_type *sig_type;
8183   sect_offset abbrev_offset;
8184 };
8185
8186 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8187
8188 static bool
8189 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8190                           const struct tu_abbrev_offset &b)
8191 {
8192   return a.abbrev_offset < b.abbrev_offset;
8193 }
8194
8195 /* Efficiently read all the type units.
8196    This does the bulk of the work for build_type_psymtabs.
8197
8198    The efficiency is because we sort TUs by the abbrev table they use and
8199    only read each abbrev table once.  In one program there are 200K TUs
8200    sharing 8K abbrev tables.
8201
8202    The main purpose of this function is to support building the
8203    dwarf2_per_objfile->type_unit_groups table.
8204    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8205    can collapse the search space by grouping them by stmt_list.
8206    The savings can be significant, in the same program from above the 200K TUs
8207    share 8K stmt_list tables.
8208
8209    FUNC is expected to call get_type_unit_group, which will create the
8210    struct type_unit_group if necessary and add it to
8211    dwarf2_per_objfile->type_unit_groups.  */
8212
8213 static void
8214 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8215 {
8216   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8217   abbrev_table_up abbrev_table;
8218   sect_offset abbrev_offset;
8219
8220   /* It's up to the caller to not call us multiple times.  */
8221   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8222
8223   if (dwarf2_per_objfile->all_type_units.empty ())
8224     return;
8225
8226   /* TUs typically share abbrev tables, and there can be way more TUs than
8227      abbrev tables.  Sort by abbrev table to reduce the number of times we
8228      read each abbrev table in.
8229      Alternatives are to punt or to maintain a cache of abbrev tables.
8230      This is simpler and efficient enough for now.
8231
8232      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8233      symtab to use).  Typically TUs with the same abbrev offset have the same
8234      stmt_list value too so in practice this should work well.
8235
8236      The basic algorithm here is:
8237
8238       sort TUs by abbrev table
8239       for each TU with same abbrev table:
8240         read abbrev table if first user
8241         read TU top level DIE
8242           [IWBN if DWO skeletons had DW_AT_stmt_list]
8243         call FUNC  */
8244
8245   if (dwarf_read_debug)
8246     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8247
8248   /* Sort in a separate table to maintain the order of all_type_units
8249      for .gdb_index: TU indices directly index all_type_units.  */
8250   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8251   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8252
8253   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8254     sorted_by_abbrev.emplace_back
8255       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8256                                      sig_type->per_cu.section,
8257                                      sig_type->per_cu.sect_off));
8258
8259   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8260              sort_tu_by_abbrev_offset);
8261
8262   abbrev_offset = (sect_offset) ~(unsigned) 0;
8263
8264   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8265     {
8266       /* Switch to the next abbrev table if necessary.  */
8267       if (abbrev_table == NULL
8268           || tu.abbrev_offset != abbrev_offset)
8269         {
8270           abbrev_offset = tu.abbrev_offset;
8271           abbrev_table =
8272             abbrev_table_read_table (dwarf2_per_objfile,
8273                                      &dwarf2_per_objfile->abbrev,
8274                                      abbrev_offset);
8275           ++tu_stats->nr_uniq_abbrev_tables;
8276         }
8277
8278       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8279                                0, 0, false, build_type_psymtabs_reader, NULL);
8280     }
8281 }
8282
8283 /* Print collected type unit statistics.  */
8284
8285 static void
8286 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8287 {
8288   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8289
8290   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8291   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8292                       dwarf2_per_objfile->all_type_units.size ());
8293   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8294                       tu_stats->nr_uniq_abbrev_tables);
8295   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8296                       tu_stats->nr_symtabs);
8297   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8298                       tu_stats->nr_symtab_sharers);
8299   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8300                       tu_stats->nr_stmt_less_type_units);
8301   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8302                       tu_stats->nr_all_type_units_reallocs);
8303 }
8304
8305 /* Traversal function for build_type_psymtabs.  */
8306
8307 static int
8308 build_type_psymtab_dependencies (void **slot, void *info)
8309 {
8310   struct dwarf2_per_objfile *dwarf2_per_objfile
8311     = (struct dwarf2_per_objfile *) info;
8312   struct objfile *objfile = dwarf2_per_objfile->objfile;
8313   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8314   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8315   struct partial_symtab *pst = per_cu->v.psymtab;
8316   int len = VEC_length (sig_type_ptr, tu_group->tus);
8317   struct signatured_type *iter;
8318   int i;
8319
8320   gdb_assert (len > 0);
8321   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8322
8323   pst->number_of_dependencies = len;
8324   pst->dependencies =
8325     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8326   for (i = 0;
8327        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8328        ++i)
8329     {
8330       gdb_assert (iter->per_cu.is_debug_types);
8331       pst->dependencies[i] = iter->per_cu.v.psymtab;
8332       iter->type_unit_group = tu_group;
8333     }
8334
8335   VEC_free (sig_type_ptr, tu_group->tus);
8336
8337   return 1;
8338 }
8339
8340 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8341    Build partial symbol tables for the .debug_types comp-units.  */
8342
8343 static void
8344 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8345 {
8346   if (! create_all_type_units (dwarf2_per_objfile))
8347     return;
8348
8349   build_type_psymtabs_1 (dwarf2_per_objfile);
8350 }
8351
8352 /* Traversal function for process_skeletonless_type_unit.
8353    Read a TU in a DWO file and build partial symbols for it.  */
8354
8355 static int
8356 process_skeletonless_type_unit (void **slot, void *info)
8357 {
8358   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8359   struct dwarf2_per_objfile *dwarf2_per_objfile
8360     = (struct dwarf2_per_objfile *) info;
8361   struct signatured_type find_entry, *entry;
8362
8363   /* If this TU doesn't exist in the global table, add it and read it in.  */
8364
8365   if (dwarf2_per_objfile->signatured_types == NULL)
8366     {
8367       dwarf2_per_objfile->signatured_types
8368         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8369     }
8370
8371   find_entry.signature = dwo_unit->signature;
8372   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8373                          INSERT);
8374   /* If we've already seen this type there's nothing to do.  What's happening
8375      is we're doing our own version of comdat-folding here.  */
8376   if (*slot != NULL)
8377     return 1;
8378
8379   /* This does the job that create_all_type_units would have done for
8380      this TU.  */
8381   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8382   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8383   *slot = entry;
8384
8385   /* This does the job that build_type_psymtabs_1 would have done.  */
8386   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8387                            build_type_psymtabs_reader, NULL);
8388
8389   return 1;
8390 }
8391
8392 /* Traversal function for process_skeletonless_type_units.  */
8393
8394 static int
8395 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8396 {
8397   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8398
8399   if (dwo_file->tus != NULL)
8400     {
8401       htab_traverse_noresize (dwo_file->tus,
8402                               process_skeletonless_type_unit, info);
8403     }
8404
8405   return 1;
8406 }
8407
8408 /* Scan all TUs of DWO files, verifying we've processed them.
8409    This is needed in case a TU was emitted without its skeleton.
8410    Note: This can't be done until we know what all the DWO files are.  */
8411
8412 static void
8413 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8414 {
8415   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8416   if (get_dwp_file (dwarf2_per_objfile) == NULL
8417       && dwarf2_per_objfile->dwo_files != NULL)
8418     {
8419       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8420                               process_dwo_file_for_skeletonless_type_units,
8421                               dwarf2_per_objfile);
8422     }
8423 }
8424
8425 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8426
8427 static void
8428 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8429 {
8430   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8431     {
8432       struct partial_symtab *pst = per_cu->v.psymtab;
8433
8434       if (pst == NULL)
8435         continue;
8436
8437       for (int j = 0; j < pst->number_of_dependencies; ++j)
8438         {
8439           /* Set the 'user' field only if it is not already set.  */
8440           if (pst->dependencies[j]->user == NULL)
8441             pst->dependencies[j]->user = pst;
8442         }
8443     }
8444 }
8445
8446 /* Build the partial symbol table by doing a quick pass through the
8447    .debug_info and .debug_abbrev sections.  */
8448
8449 static void
8450 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8451 {
8452   struct objfile *objfile = dwarf2_per_objfile->objfile;
8453
8454   if (dwarf_read_debug)
8455     {
8456       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8457                           objfile_name (objfile));
8458     }
8459
8460   dwarf2_per_objfile->reading_partial_symbols = 1;
8461
8462   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8463
8464   /* Any cached compilation units will be linked by the per-objfile
8465      read_in_chain.  Make sure to free them when we're done.  */
8466   free_cached_comp_units freer (dwarf2_per_objfile);
8467
8468   build_type_psymtabs (dwarf2_per_objfile);
8469
8470   create_all_comp_units (dwarf2_per_objfile);
8471
8472   /* Create a temporary address map on a temporary obstack.  We later
8473      copy this to the final obstack.  */
8474   auto_obstack temp_obstack;
8475
8476   scoped_restore save_psymtabs_addrmap
8477     = make_scoped_restore (&objfile->psymtabs_addrmap,
8478                            addrmap_create_mutable (&temp_obstack));
8479
8480   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8481     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8482
8483   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8484   process_skeletonless_type_units (dwarf2_per_objfile);
8485
8486   /* Now that all TUs have been processed we can fill in the dependencies.  */
8487   if (dwarf2_per_objfile->type_unit_groups != NULL)
8488     {
8489       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8490                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8491     }
8492
8493   if (dwarf_read_debug)
8494     print_tu_stats (dwarf2_per_objfile);
8495
8496   set_partial_user (dwarf2_per_objfile);
8497
8498   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8499                                                     &objfile->objfile_obstack);
8500   /* At this point we want to keep the address map.  */
8501   save_psymtabs_addrmap.release ();
8502
8503   if (dwarf_read_debug)
8504     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8505                         objfile_name (objfile));
8506 }
8507
8508 /* die_reader_func for load_partial_comp_unit.  */
8509
8510 static void
8511 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8512                                const gdb_byte *info_ptr,
8513                                struct die_info *comp_unit_die,
8514                                int has_children,
8515                                void *data)
8516 {
8517   struct dwarf2_cu *cu = reader->cu;
8518
8519   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8520
8521   /* Check if comp unit has_children.
8522      If so, read the rest of the partial symbols from this comp unit.
8523      If not, there's no more debug_info for this comp unit.  */
8524   if (has_children)
8525     load_partial_dies (reader, info_ptr, 0);
8526 }
8527
8528 /* Load the partial DIEs for a secondary CU into memory.
8529    This is also used when rereading a primary CU with load_all_dies.  */
8530
8531 static void
8532 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8533 {
8534   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8535                            load_partial_comp_unit_reader, NULL);
8536 }
8537
8538 static void
8539 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8540                               struct dwarf2_section_info *section,
8541                               struct dwarf2_section_info *abbrev_section,
8542                               unsigned int is_dwz)
8543 {
8544   const gdb_byte *info_ptr;
8545   struct objfile *objfile = dwarf2_per_objfile->objfile;
8546
8547   if (dwarf_read_debug)
8548     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8549                         get_section_name (section),
8550                         get_section_file_name (section));
8551
8552   dwarf2_read_section (objfile, section);
8553
8554   info_ptr = section->buffer;
8555
8556   while (info_ptr < section->buffer + section->size)
8557     {
8558       struct dwarf2_per_cu_data *this_cu;
8559
8560       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8561
8562       comp_unit_head cu_header;
8563       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8564                                      abbrev_section, info_ptr,
8565                                      rcuh_kind::COMPILE);
8566
8567       /* Save the compilation unit for later lookup.  */
8568       if (cu_header.unit_type != DW_UT_type)
8569         {
8570           this_cu = XOBNEW (&objfile->objfile_obstack,
8571                             struct dwarf2_per_cu_data);
8572           memset (this_cu, 0, sizeof (*this_cu));
8573         }
8574       else
8575         {
8576           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8577                                   struct signatured_type);
8578           memset (sig_type, 0, sizeof (*sig_type));
8579           sig_type->signature = cu_header.signature;
8580           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8581           this_cu = &sig_type->per_cu;
8582         }
8583       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8584       this_cu->sect_off = sect_off;
8585       this_cu->length = cu_header.length + cu_header.initial_length_size;
8586       this_cu->is_dwz = is_dwz;
8587       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8588       this_cu->section = section;
8589
8590       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8591
8592       info_ptr = info_ptr + this_cu->length;
8593     }
8594 }
8595
8596 /* Create a list of all compilation units in OBJFILE.
8597    This is only done for -readnow and building partial symtabs.  */
8598
8599 static void
8600 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8601 {
8602   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8603   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8604                                 &dwarf2_per_objfile->abbrev, 0);
8605
8606   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8607   if (dwz != NULL)
8608     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8609                                   1);
8610 }
8611
8612 /* Process all loaded DIEs for compilation unit CU, starting at
8613    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8614    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8615    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8616    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8617
8618 static void
8619 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8620                       CORE_ADDR *highpc, int set_addrmap,
8621                       struct dwarf2_cu *cu)
8622 {
8623   struct partial_die_info *pdi;
8624
8625   /* Now, march along the PDI's, descending into ones which have
8626      interesting children but skipping the children of the other ones,
8627      until we reach the end of the compilation unit.  */
8628
8629   pdi = first_die;
8630
8631   while (pdi != NULL)
8632     {
8633       pdi->fixup (cu);
8634
8635       /* Anonymous namespaces or modules have no name but have interesting
8636          children, so we need to look at them.  Ditto for anonymous
8637          enums.  */
8638
8639       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8640           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8641           || pdi->tag == DW_TAG_imported_unit
8642           || pdi->tag == DW_TAG_inlined_subroutine)
8643         {
8644           switch (pdi->tag)
8645             {
8646             case DW_TAG_subprogram:
8647             case DW_TAG_inlined_subroutine:
8648               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8649               break;
8650             case DW_TAG_constant:
8651             case DW_TAG_variable:
8652             case DW_TAG_typedef:
8653             case DW_TAG_union_type:
8654               if (!pdi->is_declaration)
8655                 {
8656                   add_partial_symbol (pdi, cu);
8657                 }
8658               break;
8659             case DW_TAG_class_type:
8660             case DW_TAG_interface_type:
8661             case DW_TAG_structure_type:
8662               if (!pdi->is_declaration)
8663                 {
8664                   add_partial_symbol (pdi, cu);
8665                 }
8666               if ((cu->language == language_rust
8667                    || cu->language == language_cplus) && pdi->has_children)
8668                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8669                                       set_addrmap, cu);
8670               break;
8671             case DW_TAG_enumeration_type:
8672               if (!pdi->is_declaration)
8673                 add_partial_enumeration (pdi, cu);
8674               break;
8675             case DW_TAG_base_type:
8676             case DW_TAG_subrange_type:
8677               /* File scope base type definitions are added to the partial
8678                  symbol table.  */
8679               add_partial_symbol (pdi, cu);
8680               break;
8681             case DW_TAG_namespace:
8682               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8683               break;
8684             case DW_TAG_module:
8685               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8686               break;
8687             case DW_TAG_imported_unit:
8688               {
8689                 struct dwarf2_per_cu_data *per_cu;
8690
8691                 /* For now we don't handle imported units in type units.  */
8692                 if (cu->per_cu->is_debug_types)
8693                   {
8694                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8695                              " supported in type units [in module %s]"),
8696                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8697                   }
8698
8699                 per_cu = dwarf2_find_containing_comp_unit
8700                            (pdi->d.sect_off, pdi->is_dwz,
8701                             cu->per_cu->dwarf2_per_objfile);
8702
8703                 /* Go read the partial unit, if needed.  */
8704                 if (per_cu->v.psymtab == NULL)
8705                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8706
8707                 VEC_safe_push (dwarf2_per_cu_ptr,
8708                                cu->per_cu->imported_symtabs, per_cu);
8709               }
8710               break;
8711             case DW_TAG_imported_declaration:
8712               add_partial_symbol (pdi, cu);
8713               break;
8714             default:
8715               break;
8716             }
8717         }
8718
8719       /* If the die has a sibling, skip to the sibling.  */
8720
8721       pdi = pdi->die_sibling;
8722     }
8723 }
8724
8725 /* Functions used to compute the fully scoped name of a partial DIE.
8726
8727    Normally, this is simple.  For C++, the parent DIE's fully scoped
8728    name is concatenated with "::" and the partial DIE's name.
8729    Enumerators are an exception; they use the scope of their parent
8730    enumeration type, i.e. the name of the enumeration type is not
8731    prepended to the enumerator.
8732
8733    There are two complexities.  One is DW_AT_specification; in this
8734    case "parent" means the parent of the target of the specification,
8735    instead of the direct parent of the DIE.  The other is compilers
8736    which do not emit DW_TAG_namespace; in this case we try to guess
8737    the fully qualified name of structure types from their members'
8738    linkage names.  This must be done using the DIE's children rather
8739    than the children of any DW_AT_specification target.  We only need
8740    to do this for structures at the top level, i.e. if the target of
8741    any DW_AT_specification (if any; otherwise the DIE itself) does not
8742    have a parent.  */
8743
8744 /* Compute the scope prefix associated with PDI's parent, in
8745    compilation unit CU.  The result will be allocated on CU's
8746    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8747    field.  NULL is returned if no prefix is necessary.  */
8748 static const char *
8749 partial_die_parent_scope (struct partial_die_info *pdi,
8750                           struct dwarf2_cu *cu)
8751 {
8752   const char *grandparent_scope;
8753   struct partial_die_info *parent, *real_pdi;
8754
8755   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8756      then this means the parent of the specification DIE.  */
8757
8758   real_pdi = pdi;
8759   while (real_pdi->has_specification)
8760     real_pdi = find_partial_die (real_pdi->spec_offset,
8761                                  real_pdi->spec_is_dwz, cu);
8762
8763   parent = real_pdi->die_parent;
8764   if (parent == NULL)
8765     return NULL;
8766
8767   if (parent->scope_set)
8768     return parent->scope;
8769
8770   parent->fixup (cu);
8771
8772   grandparent_scope = partial_die_parent_scope (parent, cu);
8773
8774   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8775      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8776      Work around this problem here.  */
8777   if (cu->language == language_cplus
8778       && parent->tag == DW_TAG_namespace
8779       && strcmp (parent->name, "::") == 0
8780       && grandparent_scope == NULL)
8781     {
8782       parent->scope = NULL;
8783       parent->scope_set = 1;
8784       return NULL;
8785     }
8786
8787   if (pdi->tag == DW_TAG_enumerator)
8788     /* Enumerators should not get the name of the enumeration as a prefix.  */
8789     parent->scope = grandparent_scope;
8790   else if (parent->tag == DW_TAG_namespace
8791       || parent->tag == DW_TAG_module
8792       || parent->tag == DW_TAG_structure_type
8793       || parent->tag == DW_TAG_class_type
8794       || parent->tag == DW_TAG_interface_type
8795       || parent->tag == DW_TAG_union_type
8796       || parent->tag == DW_TAG_enumeration_type)
8797     {
8798       if (grandparent_scope == NULL)
8799         parent->scope = parent->name;
8800       else
8801         parent->scope = typename_concat (&cu->comp_unit_obstack,
8802                                          grandparent_scope,
8803                                          parent->name, 0, cu);
8804     }
8805   else
8806     {
8807       /* FIXME drow/2004-04-01: What should we be doing with
8808          function-local names?  For partial symbols, we should probably be
8809          ignoring them.  */
8810       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8811                  parent->tag, sect_offset_str (pdi->sect_off));
8812       parent->scope = grandparent_scope;
8813     }
8814
8815   parent->scope_set = 1;
8816   return parent->scope;
8817 }
8818
8819 /* Return the fully scoped name associated with PDI, from compilation unit
8820    CU.  The result will be allocated with malloc.  */
8821
8822 static char *
8823 partial_die_full_name (struct partial_die_info *pdi,
8824                        struct dwarf2_cu *cu)
8825 {
8826   const char *parent_scope;
8827
8828   /* If this is a template instantiation, we can not work out the
8829      template arguments from partial DIEs.  So, unfortunately, we have
8830      to go through the full DIEs.  At least any work we do building
8831      types here will be reused if full symbols are loaded later.  */
8832   if (pdi->has_template_arguments)
8833     {
8834       pdi->fixup (cu);
8835
8836       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8837         {
8838           struct die_info *die;
8839           struct attribute attr;
8840           struct dwarf2_cu *ref_cu = cu;
8841
8842           /* DW_FORM_ref_addr is using section offset.  */
8843           attr.name = (enum dwarf_attribute) 0;
8844           attr.form = DW_FORM_ref_addr;
8845           attr.u.unsnd = to_underlying (pdi->sect_off);
8846           die = follow_die_ref (NULL, &attr, &ref_cu);
8847
8848           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8849         }
8850     }
8851
8852   parent_scope = partial_die_parent_scope (pdi, cu);
8853   if (parent_scope == NULL)
8854     return NULL;
8855   else
8856     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8857 }
8858
8859 static void
8860 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8861 {
8862   struct dwarf2_per_objfile *dwarf2_per_objfile
8863     = cu->per_cu->dwarf2_per_objfile;
8864   struct objfile *objfile = dwarf2_per_objfile->objfile;
8865   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8866   CORE_ADDR addr = 0;
8867   const char *actual_name = NULL;
8868   CORE_ADDR baseaddr;
8869   char *built_actual_name;
8870
8871   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8872
8873   built_actual_name = partial_die_full_name (pdi, cu);
8874   if (built_actual_name != NULL)
8875     actual_name = built_actual_name;
8876
8877   if (actual_name == NULL)
8878     actual_name = pdi->name;
8879
8880   switch (pdi->tag)
8881     {
8882     case DW_TAG_inlined_subroutine:
8883     case DW_TAG_subprogram:
8884       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8885               - baseaddr);
8886       if (pdi->is_external || cu->language == language_ada)
8887         {
8888           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8889              of the global scope.  But in Ada, we want to be able to access
8890              nested procedures globally.  So all Ada subprograms are stored
8891              in the global scope.  */
8892           add_psymbol_to_list (actual_name, strlen (actual_name),
8893                                built_actual_name != NULL,
8894                                VAR_DOMAIN, LOC_BLOCK,
8895                                SECT_OFF_TEXT (objfile),
8896                                &objfile->global_psymbols,
8897                                addr,
8898                                cu->language, objfile);
8899         }
8900       else
8901         {
8902           add_psymbol_to_list (actual_name, strlen (actual_name),
8903                                built_actual_name != NULL,
8904                                VAR_DOMAIN, LOC_BLOCK,
8905                                SECT_OFF_TEXT (objfile),
8906                                &objfile->static_psymbols,
8907                                addr, cu->language, objfile);
8908         }
8909
8910       if (pdi->main_subprogram && actual_name != NULL)
8911         set_objfile_main_name (objfile, actual_name, cu->language);
8912       break;
8913     case DW_TAG_constant:
8914       {
8915         std::vector<partial_symbol *> *list;
8916
8917         if (pdi->is_external)
8918           list = &objfile->global_psymbols;
8919         else
8920           list = &objfile->static_psymbols;
8921         add_psymbol_to_list (actual_name, strlen (actual_name),
8922                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8923                              -1, list, 0, cu->language, objfile);
8924       }
8925       break;
8926     case DW_TAG_variable:
8927       if (pdi->d.locdesc)
8928         addr = decode_locdesc (pdi->d.locdesc, cu);
8929
8930       if (pdi->d.locdesc
8931           && addr == 0
8932           && !dwarf2_per_objfile->has_section_at_zero)
8933         {
8934           /* A global or static variable may also have been stripped
8935              out by the linker if unused, in which case its address
8936              will be nullified; do not add such variables into partial
8937              symbol table then.  */
8938         }
8939       else if (pdi->is_external)
8940         {
8941           /* Global Variable.
8942              Don't enter into the minimal symbol tables as there is
8943              a minimal symbol table entry from the ELF symbols already.
8944              Enter into partial symbol table if it has a location
8945              descriptor or a type.
8946              If the location descriptor is missing, new_symbol will create
8947              a LOC_UNRESOLVED symbol, the address of the variable will then
8948              be determined from the minimal symbol table whenever the variable
8949              is referenced.
8950              The address for the partial symbol table entry is not
8951              used by GDB, but it comes in handy for debugging partial symbol
8952              table building.  */
8953
8954           if (pdi->d.locdesc || pdi->has_type)
8955             add_psymbol_to_list (actual_name, strlen (actual_name),
8956                                  built_actual_name != NULL,
8957                                  VAR_DOMAIN, LOC_STATIC,
8958                                  SECT_OFF_TEXT (objfile),
8959                                  &objfile->global_psymbols,
8960                                  addr, cu->language, objfile);
8961         }
8962       else
8963         {
8964           int has_loc = pdi->d.locdesc != NULL;
8965
8966           /* Static Variable.  Skip symbols whose value we cannot know (those
8967              without location descriptors or constant values).  */
8968           if (!has_loc && !pdi->has_const_value)
8969             {
8970               xfree (built_actual_name);
8971               return;
8972             }
8973
8974           add_psymbol_to_list (actual_name, strlen (actual_name),
8975                                built_actual_name != NULL,
8976                                VAR_DOMAIN, LOC_STATIC,
8977                                SECT_OFF_TEXT (objfile),
8978                                &objfile->static_psymbols,
8979                                has_loc ? addr : 0,
8980                                cu->language, objfile);
8981         }
8982       break;
8983     case DW_TAG_typedef:
8984     case DW_TAG_base_type:
8985     case DW_TAG_subrange_type:
8986       add_psymbol_to_list (actual_name, strlen (actual_name),
8987                            built_actual_name != NULL,
8988                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8989                            &objfile->static_psymbols,
8990                            0, cu->language, objfile);
8991       break;
8992     case DW_TAG_imported_declaration:
8993     case DW_TAG_namespace:
8994       add_psymbol_to_list (actual_name, strlen (actual_name),
8995                            built_actual_name != NULL,
8996                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8997                            &objfile->global_psymbols,
8998                            0, cu->language, objfile);
8999       break;
9000     case DW_TAG_module:
9001       add_psymbol_to_list (actual_name, strlen (actual_name),
9002                            built_actual_name != NULL,
9003                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9004                            &objfile->global_psymbols,
9005                            0, cu->language, objfile);
9006       break;
9007     case DW_TAG_class_type:
9008     case DW_TAG_interface_type:
9009     case DW_TAG_structure_type:
9010     case DW_TAG_union_type:
9011     case DW_TAG_enumeration_type:
9012       /* Skip external references.  The DWARF standard says in the section
9013          about "Structure, Union, and Class Type Entries": "An incomplete
9014          structure, union or class type is represented by a structure,
9015          union or class entry that does not have a byte size attribute
9016          and that has a DW_AT_declaration attribute."  */
9017       if (!pdi->has_byte_size && pdi->is_declaration)
9018         {
9019           xfree (built_actual_name);
9020           return;
9021         }
9022
9023       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9024          static vs. global.  */
9025       add_psymbol_to_list (actual_name, strlen (actual_name),
9026                            built_actual_name != NULL,
9027                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9028                            cu->language == language_cplus
9029                            ? &objfile->global_psymbols
9030                            : &objfile->static_psymbols,
9031                            0, cu->language, objfile);
9032
9033       break;
9034     case DW_TAG_enumerator:
9035       add_psymbol_to_list (actual_name, strlen (actual_name),
9036                            built_actual_name != NULL,
9037                            VAR_DOMAIN, LOC_CONST, -1,
9038                            cu->language == language_cplus
9039                            ? &objfile->global_psymbols
9040                            : &objfile->static_psymbols,
9041                            0, cu->language, objfile);
9042       break;
9043     default:
9044       break;
9045     }
9046
9047   xfree (built_actual_name);
9048 }
9049
9050 /* Read a partial die corresponding to a namespace; also, add a symbol
9051    corresponding to that namespace to the symbol table.  NAMESPACE is
9052    the name of the enclosing namespace.  */
9053
9054 static void
9055 add_partial_namespace (struct partial_die_info *pdi,
9056                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9057                        int set_addrmap, struct dwarf2_cu *cu)
9058 {
9059   /* Add a symbol for the namespace.  */
9060
9061   add_partial_symbol (pdi, cu);
9062
9063   /* Now scan partial symbols in that namespace.  */
9064
9065   if (pdi->has_children)
9066     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9067 }
9068
9069 /* Read a partial die corresponding to a Fortran module.  */
9070
9071 static void
9072 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9073                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9074 {
9075   /* Add a symbol for the namespace.  */
9076
9077   add_partial_symbol (pdi, cu);
9078
9079   /* Now scan partial symbols in that module.  */
9080
9081   if (pdi->has_children)
9082     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9083 }
9084
9085 /* Read a partial die corresponding to a subprogram or an inlined
9086    subprogram and create a partial symbol for that subprogram.
9087    When the CU language allows it, this routine also defines a partial
9088    symbol for each nested subprogram that this subprogram contains.
9089    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9090    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9091
9092    PDI may also be a lexical block, in which case we simply search
9093    recursively for subprograms defined inside that lexical block.
9094    Again, this is only performed when the CU language allows this
9095    type of definitions.  */
9096
9097 static void
9098 add_partial_subprogram (struct partial_die_info *pdi,
9099                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9100                         int set_addrmap, struct dwarf2_cu *cu)
9101 {
9102   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9103     {
9104       if (pdi->has_pc_info)
9105         {
9106           if (pdi->lowpc < *lowpc)
9107             *lowpc = pdi->lowpc;
9108           if (pdi->highpc > *highpc)
9109             *highpc = pdi->highpc;
9110           if (set_addrmap)
9111             {
9112               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9113               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9114               CORE_ADDR baseaddr;
9115               CORE_ADDR highpc;
9116               CORE_ADDR lowpc;
9117
9118               baseaddr = ANOFFSET (objfile->section_offsets,
9119                                    SECT_OFF_TEXT (objfile));
9120               lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9121                                                    pdi->lowpc + baseaddr)
9122                        - baseaddr);
9123               highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9124                                                     pdi->highpc + baseaddr)
9125                         - baseaddr);
9126               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9127                                  cu->per_cu->v.psymtab);
9128             }
9129         }
9130
9131       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9132         {
9133           if (!pdi->is_declaration)
9134             /* Ignore subprogram DIEs that do not have a name, they are
9135                illegal.  Do not emit a complaint at this point, we will
9136                do so when we convert this psymtab into a symtab.  */
9137             if (pdi->name)
9138               add_partial_symbol (pdi, cu);
9139         }
9140     }
9141
9142   if (! pdi->has_children)
9143     return;
9144
9145   if (cu->language == language_ada)
9146     {
9147       pdi = pdi->die_child;
9148       while (pdi != NULL)
9149         {
9150           pdi->fixup (cu);
9151           if (pdi->tag == DW_TAG_subprogram
9152               || pdi->tag == DW_TAG_inlined_subroutine
9153               || pdi->tag == DW_TAG_lexical_block)
9154             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9155           pdi = pdi->die_sibling;
9156         }
9157     }
9158 }
9159
9160 /* Read a partial die corresponding to an enumeration type.  */
9161
9162 static void
9163 add_partial_enumeration (struct partial_die_info *enum_pdi,
9164                          struct dwarf2_cu *cu)
9165 {
9166   struct partial_die_info *pdi;
9167
9168   if (enum_pdi->name != NULL)
9169     add_partial_symbol (enum_pdi, cu);
9170
9171   pdi = enum_pdi->die_child;
9172   while (pdi)
9173     {
9174       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9175         complaint (_("malformed enumerator DIE ignored"));
9176       else
9177         add_partial_symbol (pdi, cu);
9178       pdi = pdi->die_sibling;
9179     }
9180 }
9181
9182 /* Return the initial uleb128 in the die at INFO_PTR.  */
9183
9184 static unsigned int
9185 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9186 {
9187   unsigned int bytes_read;
9188
9189   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9190 }
9191
9192 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9193    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9194
9195    Return the corresponding abbrev, or NULL if the number is zero (indicating
9196    an empty DIE).  In either case *BYTES_READ will be set to the length of
9197    the initial number.  */
9198
9199 static struct abbrev_info *
9200 peek_die_abbrev (const die_reader_specs &reader,
9201                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9202 {
9203   dwarf2_cu *cu = reader.cu;
9204   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9205   unsigned int abbrev_number
9206     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9207
9208   if (abbrev_number == 0)
9209     return NULL;
9210
9211   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9212   if (!abbrev)
9213     {
9214       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9215                " at offset %s [in module %s]"),
9216              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9217              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9218     }
9219
9220   return abbrev;
9221 }
9222
9223 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9224    Returns a pointer to the end of a series of DIEs, terminated by an empty
9225    DIE.  Any children of the skipped DIEs will also be skipped.  */
9226
9227 static const gdb_byte *
9228 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9229 {
9230   while (1)
9231     {
9232       unsigned int bytes_read;
9233       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9234
9235       if (abbrev == NULL)
9236         return info_ptr + bytes_read;
9237       else
9238         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9239     }
9240 }
9241
9242 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9243    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9244    abbrev corresponding to that skipped uleb128 should be passed in
9245    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9246    children.  */
9247
9248 static const gdb_byte *
9249 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9250               struct abbrev_info *abbrev)
9251 {
9252   unsigned int bytes_read;
9253   struct attribute attr;
9254   bfd *abfd = reader->abfd;
9255   struct dwarf2_cu *cu = reader->cu;
9256   const gdb_byte *buffer = reader->buffer;
9257   const gdb_byte *buffer_end = reader->buffer_end;
9258   unsigned int form, i;
9259
9260   for (i = 0; i < abbrev->num_attrs; i++)
9261     {
9262       /* The only abbrev we care about is DW_AT_sibling.  */
9263       if (abbrev->attrs[i].name == DW_AT_sibling)
9264         {
9265           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9266           if (attr.form == DW_FORM_ref_addr)
9267             complaint (_("ignoring absolute DW_AT_sibling"));
9268           else
9269             {
9270               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9271               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9272
9273               if (sibling_ptr < info_ptr)
9274                 complaint (_("DW_AT_sibling points backwards"));
9275               else if (sibling_ptr > reader->buffer_end)
9276                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9277               else
9278                 return sibling_ptr;
9279             }
9280         }
9281
9282       /* If it isn't DW_AT_sibling, skip this attribute.  */
9283       form = abbrev->attrs[i].form;
9284     skip_attribute:
9285       switch (form)
9286         {
9287         case DW_FORM_ref_addr:
9288           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9289              and later it is offset sized.  */
9290           if (cu->header.version == 2)
9291             info_ptr += cu->header.addr_size;
9292           else
9293             info_ptr += cu->header.offset_size;
9294           break;
9295         case DW_FORM_GNU_ref_alt:
9296           info_ptr += cu->header.offset_size;
9297           break;
9298         case DW_FORM_addr:
9299           info_ptr += cu->header.addr_size;
9300           break;
9301         case DW_FORM_data1:
9302         case DW_FORM_ref1:
9303         case DW_FORM_flag:
9304           info_ptr += 1;
9305           break;
9306         case DW_FORM_flag_present:
9307         case DW_FORM_implicit_const:
9308           break;
9309         case DW_FORM_data2:
9310         case DW_FORM_ref2:
9311           info_ptr += 2;
9312           break;
9313         case DW_FORM_data4:
9314         case DW_FORM_ref4:
9315           info_ptr += 4;
9316           break;
9317         case DW_FORM_data8:
9318         case DW_FORM_ref8:
9319         case DW_FORM_ref_sig8:
9320           info_ptr += 8;
9321           break;
9322         case DW_FORM_data16:
9323           info_ptr += 16;
9324           break;
9325         case DW_FORM_string:
9326           read_direct_string (abfd, info_ptr, &bytes_read);
9327           info_ptr += bytes_read;
9328           break;
9329         case DW_FORM_sec_offset:
9330         case DW_FORM_strp:
9331         case DW_FORM_GNU_strp_alt:
9332           info_ptr += cu->header.offset_size;
9333           break;
9334         case DW_FORM_exprloc:
9335         case DW_FORM_block:
9336           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9337           info_ptr += bytes_read;
9338           break;
9339         case DW_FORM_block1:
9340           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9341           break;
9342         case DW_FORM_block2:
9343           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9344           break;
9345         case DW_FORM_block4:
9346           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9347           break;
9348         case DW_FORM_sdata:
9349         case DW_FORM_udata:
9350         case DW_FORM_ref_udata:
9351         case DW_FORM_GNU_addr_index:
9352         case DW_FORM_GNU_str_index:
9353           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9354           break;
9355         case DW_FORM_indirect:
9356           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9357           info_ptr += bytes_read;
9358           /* We need to continue parsing from here, so just go back to
9359              the top.  */
9360           goto skip_attribute;
9361
9362         default:
9363           error (_("Dwarf Error: Cannot handle %s "
9364                    "in DWARF reader [in module %s]"),
9365                  dwarf_form_name (form),
9366                  bfd_get_filename (abfd));
9367         }
9368     }
9369
9370   if (abbrev->has_children)
9371     return skip_children (reader, info_ptr);
9372   else
9373     return info_ptr;
9374 }
9375
9376 /* Locate ORIG_PDI's sibling.
9377    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9378
9379 static const gdb_byte *
9380 locate_pdi_sibling (const struct die_reader_specs *reader,
9381                     struct partial_die_info *orig_pdi,
9382                     const gdb_byte *info_ptr)
9383 {
9384   /* Do we know the sibling already?  */
9385
9386   if (orig_pdi->sibling)
9387     return orig_pdi->sibling;
9388
9389   /* Are there any children to deal with?  */
9390
9391   if (!orig_pdi->has_children)
9392     return info_ptr;
9393
9394   /* Skip the children the long way.  */
9395
9396   return skip_children (reader, info_ptr);
9397 }
9398
9399 /* Expand this partial symbol table into a full symbol table.  SELF is
9400    not NULL.  */
9401
9402 static void
9403 dwarf2_read_symtab (struct partial_symtab *self,
9404                     struct objfile *objfile)
9405 {
9406   struct dwarf2_per_objfile *dwarf2_per_objfile
9407     = get_dwarf2_per_objfile (objfile);
9408
9409   if (self->readin)
9410     {
9411       warning (_("bug: psymtab for %s is already read in."),
9412                self->filename);
9413     }
9414   else
9415     {
9416       if (info_verbose)
9417         {
9418           printf_filtered (_("Reading in symbols for %s..."),
9419                            self->filename);
9420           gdb_flush (gdb_stdout);
9421         }
9422
9423       /* If this psymtab is constructed from a debug-only objfile, the
9424          has_section_at_zero flag will not necessarily be correct.  We
9425          can get the correct value for this flag by looking at the data
9426          associated with the (presumably stripped) associated objfile.  */
9427       if (objfile->separate_debug_objfile_backlink)
9428         {
9429           struct dwarf2_per_objfile *dpo_backlink
9430             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9431
9432           dwarf2_per_objfile->has_section_at_zero
9433             = dpo_backlink->has_section_at_zero;
9434         }
9435
9436       dwarf2_per_objfile->reading_partial_symbols = 0;
9437
9438       psymtab_to_symtab_1 (self);
9439
9440       /* Finish up the debug error message.  */
9441       if (info_verbose)
9442         printf_filtered (_("done.\n"));
9443     }
9444
9445   process_cu_includes (dwarf2_per_objfile);
9446 }
9447 \f
9448 /* Reading in full CUs.  */
9449
9450 /* Add PER_CU to the queue.  */
9451
9452 static void
9453 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9454                  enum language pretend_language)
9455 {
9456   struct dwarf2_queue_item *item;
9457
9458   per_cu->queued = 1;
9459   item = XNEW (struct dwarf2_queue_item);
9460   item->per_cu = per_cu;
9461   item->pretend_language = pretend_language;
9462   item->next = NULL;
9463
9464   if (dwarf2_queue == NULL)
9465     dwarf2_queue = item;
9466   else
9467     dwarf2_queue_tail->next = item;
9468
9469   dwarf2_queue_tail = item;
9470 }
9471
9472 /* If PER_CU is not yet queued, add it to the queue.
9473    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9474    dependency.
9475    The result is non-zero if PER_CU was queued, otherwise the result is zero
9476    meaning either PER_CU is already queued or it is already loaded.
9477
9478    N.B. There is an invariant here that if a CU is queued then it is loaded.
9479    The caller is required to load PER_CU if we return non-zero.  */
9480
9481 static int
9482 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9483                        struct dwarf2_per_cu_data *per_cu,
9484                        enum language pretend_language)
9485 {
9486   /* We may arrive here during partial symbol reading, if we need full
9487      DIEs to process an unusual case (e.g. template arguments).  Do
9488      not queue PER_CU, just tell our caller to load its DIEs.  */
9489   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9490     {
9491       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9492         return 1;
9493       return 0;
9494     }
9495
9496   /* Mark the dependence relation so that we don't flush PER_CU
9497      too early.  */
9498   if (dependent_cu != NULL)
9499     dwarf2_add_dependence (dependent_cu, per_cu);
9500
9501   /* If it's already on the queue, we have nothing to do.  */
9502   if (per_cu->queued)
9503     return 0;
9504
9505   /* If the compilation unit is already loaded, just mark it as
9506      used.  */
9507   if (per_cu->cu != NULL)
9508     {
9509       per_cu->cu->last_used = 0;
9510       return 0;
9511     }
9512
9513   /* Add it to the queue.  */
9514   queue_comp_unit (per_cu, pretend_language);
9515
9516   return 1;
9517 }
9518
9519 /* Process the queue.  */
9520
9521 static void
9522 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9523 {
9524   struct dwarf2_queue_item *item, *next_item;
9525
9526   if (dwarf_read_debug)
9527     {
9528       fprintf_unfiltered (gdb_stdlog,
9529                           "Expanding one or more symtabs of objfile %s ...\n",
9530                           objfile_name (dwarf2_per_objfile->objfile));
9531     }
9532
9533   /* The queue starts out with one item, but following a DIE reference
9534      may load a new CU, adding it to the end of the queue.  */
9535   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9536     {
9537       if ((dwarf2_per_objfile->using_index
9538            ? !item->per_cu->v.quick->compunit_symtab
9539            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9540           /* Skip dummy CUs.  */
9541           && item->per_cu->cu != NULL)
9542         {
9543           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9544           unsigned int debug_print_threshold;
9545           char buf[100];
9546
9547           if (per_cu->is_debug_types)
9548             {
9549               struct signatured_type *sig_type =
9550                 (struct signatured_type *) per_cu;
9551
9552               sprintf (buf, "TU %s at offset %s",
9553                        hex_string (sig_type->signature),
9554                        sect_offset_str (per_cu->sect_off));
9555               /* There can be 100s of TUs.
9556                  Only print them in verbose mode.  */
9557               debug_print_threshold = 2;
9558             }
9559           else
9560             {
9561               sprintf (buf, "CU at offset %s",
9562                        sect_offset_str (per_cu->sect_off));
9563               debug_print_threshold = 1;
9564             }
9565
9566           if (dwarf_read_debug >= debug_print_threshold)
9567             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9568
9569           if (per_cu->is_debug_types)
9570             process_full_type_unit (per_cu, item->pretend_language);
9571           else
9572             process_full_comp_unit (per_cu, item->pretend_language);
9573
9574           if (dwarf_read_debug >= debug_print_threshold)
9575             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9576         }
9577
9578       item->per_cu->queued = 0;
9579       next_item = item->next;
9580       xfree (item);
9581     }
9582
9583   dwarf2_queue_tail = NULL;
9584
9585   if (dwarf_read_debug)
9586     {
9587       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9588                           objfile_name (dwarf2_per_objfile->objfile));
9589     }
9590 }
9591
9592 /* Read in full symbols for PST, and anything it depends on.  */
9593
9594 static void
9595 psymtab_to_symtab_1 (struct partial_symtab *pst)
9596 {
9597   struct dwarf2_per_cu_data *per_cu;
9598   int i;
9599
9600   if (pst->readin)
9601     return;
9602
9603   for (i = 0; i < pst->number_of_dependencies; i++)
9604     if (!pst->dependencies[i]->readin
9605         && pst->dependencies[i]->user == NULL)
9606       {
9607         /* Inform about additional files that need to be read in.  */
9608         if (info_verbose)
9609           {
9610             /* FIXME: i18n: Need to make this a single string.  */
9611             fputs_filtered (" ", gdb_stdout);
9612             wrap_here ("");
9613             fputs_filtered ("and ", gdb_stdout);
9614             wrap_here ("");
9615             printf_filtered ("%s...", pst->dependencies[i]->filename);
9616             wrap_here ("");     /* Flush output.  */
9617             gdb_flush (gdb_stdout);
9618           }
9619         psymtab_to_symtab_1 (pst->dependencies[i]);
9620       }
9621
9622   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9623
9624   if (per_cu == NULL)
9625     {
9626       /* It's an include file, no symbols to read for it.
9627          Everything is in the parent symtab.  */
9628       pst->readin = 1;
9629       return;
9630     }
9631
9632   dw2_do_instantiate_symtab (per_cu, false);
9633 }
9634
9635 /* Trivial hash function for die_info: the hash value of a DIE
9636    is its offset in .debug_info for this objfile.  */
9637
9638 static hashval_t
9639 die_hash (const void *item)
9640 {
9641   const struct die_info *die = (const struct die_info *) item;
9642
9643   return to_underlying (die->sect_off);
9644 }
9645
9646 /* Trivial comparison function for die_info structures: two DIEs
9647    are equal if they have the same offset.  */
9648
9649 static int
9650 die_eq (const void *item_lhs, const void *item_rhs)
9651 {
9652   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9653   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9654
9655   return die_lhs->sect_off == die_rhs->sect_off;
9656 }
9657
9658 /* die_reader_func for load_full_comp_unit.
9659    This is identical to read_signatured_type_reader,
9660    but is kept separate for now.  */
9661
9662 static void
9663 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9664                             const gdb_byte *info_ptr,
9665                             struct die_info *comp_unit_die,
9666                             int has_children,
9667                             void *data)
9668 {
9669   struct dwarf2_cu *cu = reader->cu;
9670   enum language *language_ptr = (enum language *) data;
9671
9672   gdb_assert (cu->die_hash == NULL);
9673   cu->die_hash =
9674     htab_create_alloc_ex (cu->header.length / 12,
9675                           die_hash,
9676                           die_eq,
9677                           NULL,
9678                           &cu->comp_unit_obstack,
9679                           hashtab_obstack_allocate,
9680                           dummy_obstack_deallocate);
9681
9682   if (has_children)
9683     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9684                                                   &info_ptr, comp_unit_die);
9685   cu->dies = comp_unit_die;
9686   /* comp_unit_die is not stored in die_hash, no need.  */
9687
9688   /* We try not to read any attributes in this function, because not
9689      all CUs needed for references have been loaded yet, and symbol
9690      table processing isn't initialized.  But we have to set the CU language,
9691      or we won't be able to build types correctly.
9692      Similarly, if we do not read the producer, we can not apply
9693      producer-specific interpretation.  */
9694   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9695 }
9696
9697 /* Load the DIEs associated with PER_CU into memory.  */
9698
9699 static void
9700 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9701                      bool skip_partial,
9702                      enum language pretend_language)
9703 {
9704   gdb_assert (! this_cu->is_debug_types);
9705
9706   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9707                            load_full_comp_unit_reader, &pretend_language);
9708 }
9709
9710 /* Add a DIE to the delayed physname list.  */
9711
9712 static void
9713 add_to_method_list (struct type *type, int fnfield_index, int index,
9714                     const char *name, struct die_info *die,
9715                     struct dwarf2_cu *cu)
9716 {
9717   struct delayed_method_info mi;
9718   mi.type = type;
9719   mi.fnfield_index = fnfield_index;
9720   mi.index = index;
9721   mi.name = name;
9722   mi.die = die;
9723   cu->method_list.push_back (mi);
9724 }
9725
9726 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9727    "const" / "volatile".  If so, decrements LEN by the length of the
9728    modifier and return true.  Otherwise return false.  */
9729
9730 template<size_t N>
9731 static bool
9732 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9733 {
9734   size_t mod_len = sizeof (mod) - 1;
9735   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9736     {
9737       len -= mod_len;
9738       return true;
9739     }
9740   return false;
9741 }
9742
9743 /* Compute the physnames of any methods on the CU's method list.
9744
9745    The computation of method physnames is delayed in order to avoid the
9746    (bad) condition that one of the method's formal parameters is of an as yet
9747    incomplete type.  */
9748
9749 static void
9750 compute_delayed_physnames (struct dwarf2_cu *cu)
9751 {
9752   /* Only C++ delays computing physnames.  */
9753   if (cu->method_list.empty ())
9754     return;
9755   gdb_assert (cu->language == language_cplus);
9756
9757   for (const delayed_method_info &mi : cu->method_list)
9758     {
9759       const char *physname;
9760       struct fn_fieldlist *fn_flp
9761         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9762       physname = dwarf2_physname (mi.name, mi.die, cu);
9763       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9764         = physname ? physname : "";
9765
9766       /* Since there's no tag to indicate whether a method is a
9767          const/volatile overload, extract that information out of the
9768          demangled name.  */
9769       if (physname != NULL)
9770         {
9771           size_t len = strlen (physname);
9772
9773           while (1)
9774             {
9775               if (physname[len] == ')') /* shortcut */
9776                 break;
9777               else if (check_modifier (physname, len, " const"))
9778                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9779               else if (check_modifier (physname, len, " volatile"))
9780                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9781               else
9782                 break;
9783             }
9784         }
9785     }
9786
9787   /* The list is no longer needed.  */
9788   cu->method_list.clear ();
9789 }
9790
9791 /* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9792    the same as all other symbols in LISTHEAD.  If a new symbol is added
9793    with a different language, this function asserts.  */
9794
9795 static inline void
9796 dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9797 {
9798   /* Only assert if LISTHEAD already contains symbols of a different
9799      language (dict_create_hashed/insert_symbol_hashed requires that all
9800      symbols in this list are of the same language).  */
9801   gdb_assert ((*listhead) == NULL
9802               || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9803                   == SYMBOL_LANGUAGE (symbol)));
9804
9805   add_symbol_to_list (symbol, listhead);
9806 }
9807
9808 /* Go objects should be embedded in a DW_TAG_module DIE,
9809    and it's not clear if/how imported objects will appear.
9810    To keep Go support simple until that's worked out,
9811    go back through what we've read and create something usable.
9812    We could do this while processing each DIE, and feels kinda cleaner,
9813    but that way is more invasive.
9814    This is to, for example, allow the user to type "p var" or "b main"
9815    without having to specify the package name, and allow lookups
9816    of module.object to work in contexts that use the expression
9817    parser.  */
9818
9819 static void
9820 fixup_go_packaging (struct dwarf2_cu *cu)
9821 {
9822   char *package_name = NULL;
9823   struct pending *list;
9824   int i;
9825
9826   for (list = *cu->builder->get_global_symbols ();
9827        list != NULL;
9828        list = list->next)
9829     {
9830       for (i = 0; i < list->nsyms; ++i)
9831         {
9832           struct symbol *sym = list->symbol[i];
9833
9834           if (SYMBOL_LANGUAGE (sym) == language_go
9835               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9836             {
9837               char *this_package_name = go_symbol_package_name (sym);
9838
9839               if (this_package_name == NULL)
9840                 continue;
9841               if (package_name == NULL)
9842                 package_name = this_package_name;
9843               else
9844                 {
9845                   struct objfile *objfile
9846                     = cu->per_cu->dwarf2_per_objfile->objfile;
9847                   if (strcmp (package_name, this_package_name) != 0)
9848                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9849                                (symbol_symtab (sym) != NULL
9850                                 ? symtab_to_filename_for_display
9851                                     (symbol_symtab (sym))
9852                                 : objfile_name (objfile)),
9853                                this_package_name, package_name);
9854                   xfree (this_package_name);
9855                 }
9856             }
9857         }
9858     }
9859
9860   if (package_name != NULL)
9861     {
9862       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9863       const char *saved_package_name
9864         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9865                                         package_name,
9866                                         strlen (package_name));
9867       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9868                                      saved_package_name);
9869       struct symbol *sym;
9870
9871       sym = allocate_symbol (objfile);
9872       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9873       SYMBOL_SET_NAMES (sym, saved_package_name,
9874                         strlen (saved_package_name), 0, objfile);
9875       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9876          e.g., "main" finds the "main" module and not C's main().  */
9877       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9878       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9879       SYMBOL_TYPE (sym) = type;
9880
9881       dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
9882
9883       xfree (package_name);
9884     }
9885 }
9886
9887 /* Allocate a fully-qualified name consisting of the two parts on the
9888    obstack.  */
9889
9890 static const char *
9891 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9892 {
9893   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9894 }
9895
9896 /* A helper that allocates a struct discriminant_info to attach to a
9897    union type.  */
9898
9899 static struct discriminant_info *
9900 alloc_discriminant_info (struct type *type, int discriminant_index,
9901                          int default_index)
9902 {
9903   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9904   gdb_assert (discriminant_index == -1
9905               || (discriminant_index >= 0
9906                   && discriminant_index < TYPE_NFIELDS (type)));
9907   gdb_assert (default_index == -1
9908               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9909
9910   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9911
9912   struct discriminant_info *disc
9913     = ((struct discriminant_info *)
9914        TYPE_ZALLOC (type,
9915                     offsetof (struct discriminant_info, discriminants)
9916                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9917   disc->default_index = default_index;
9918   disc->discriminant_index = discriminant_index;
9919
9920   struct dynamic_prop prop;
9921   prop.kind = PROP_UNDEFINED;
9922   prop.data.baton = disc;
9923
9924   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9925
9926   return disc;
9927 }
9928
9929 /* Some versions of rustc emitted enums in an unusual way.
9930
9931    Ordinary enums were emitted as unions.  The first element of each
9932    structure in the union was named "RUST$ENUM$DISR".  This element
9933    held the discriminant.
9934
9935    These versions of Rust also implemented the "non-zero"
9936    optimization.  When the enum had two values, and one is empty and
9937    the other holds a pointer that cannot be zero, the pointer is used
9938    as the discriminant, with a zero value meaning the empty variant.
9939    Here, the union's first member is of the form
9940    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9941    where the fieldnos are the indices of the fields that should be
9942    traversed in order to find the field (which may be several fields deep)
9943    and the variantname is the name of the variant of the case when the
9944    field is zero.
9945
9946    This function recognizes whether TYPE is of one of these forms,
9947    and, if so, smashes it to be a variant type.  */
9948
9949 static void
9950 quirk_rust_enum (struct type *type, struct objfile *objfile)
9951 {
9952   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9953
9954   /* We don't need to deal with empty enums.  */
9955   if (TYPE_NFIELDS (type) == 0)
9956     return;
9957
9958 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9959   if (TYPE_NFIELDS (type) == 1
9960       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9961     {
9962       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9963
9964       /* Decode the field name to find the offset of the
9965          discriminant.  */
9966       ULONGEST bit_offset = 0;
9967       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9968       while (name[0] >= '0' && name[0] <= '9')
9969         {
9970           char *tail;
9971           unsigned long index = strtoul (name, &tail, 10);
9972           name = tail;
9973           if (*name != '$'
9974               || index >= TYPE_NFIELDS (field_type)
9975               || (TYPE_FIELD_LOC_KIND (field_type, index)
9976                   != FIELD_LOC_KIND_BITPOS))
9977             {
9978               complaint (_("Could not parse Rust enum encoding string \"%s\""
9979                            "[in module %s]"),
9980                          TYPE_FIELD_NAME (type, 0),
9981                          objfile_name (objfile));
9982               return;
9983             }
9984           ++name;
9985
9986           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9987           field_type = TYPE_FIELD_TYPE (field_type, index);
9988         }
9989
9990       /* Make a union to hold the variants.  */
9991       struct type *union_type = alloc_type (objfile);
9992       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9993       TYPE_NFIELDS (union_type) = 3;
9994       TYPE_FIELDS (union_type)
9995         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9996       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9997       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9998
9999       /* Put the discriminant must at index 0.  */
10000       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10001       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10002       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10003       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10004
10005       /* The order of fields doesn't really matter, so put the real
10006          field at index 1 and the data-less field at index 2.  */
10007       struct discriminant_info *disc
10008         = alloc_discriminant_info (union_type, 0, 1);
10009       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10010       TYPE_FIELD_NAME (union_type, 1)
10011         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10012       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10013         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10014                               TYPE_FIELD_NAME (union_type, 1));
10015
10016       const char *dataless_name
10017         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10018                               name);
10019       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10020                                               dataless_name);
10021       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10022       /* NAME points into the original discriminant name, which
10023          already has the correct lifetime.  */
10024       TYPE_FIELD_NAME (union_type, 2) = name;
10025       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10026       disc->discriminants[2] = 0;
10027
10028       /* Smash this type to be a structure type.  We have to do this
10029          because the type has already been recorded.  */
10030       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10031       TYPE_NFIELDS (type) = 1;
10032       TYPE_FIELDS (type)
10033         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10034
10035       /* Install the variant part.  */
10036       TYPE_FIELD_TYPE (type, 0) = union_type;
10037       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10038       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10039     }
10040   else if (TYPE_NFIELDS (type) == 1)
10041     {
10042       /* We assume that a union with a single field is a univariant
10043          enum.  */
10044       /* Smash this type to be a structure type.  We have to do this
10045          because the type has already been recorded.  */
10046       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10047
10048       /* Make a union to hold the variants.  */
10049       struct type *union_type = alloc_type (objfile);
10050       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10051       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10052       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10053       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10054       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10055
10056       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10057       const char *variant_name
10058         = rust_last_path_segment (TYPE_NAME (field_type));
10059       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10060       TYPE_NAME (field_type)
10061         = rust_fully_qualify (&objfile->objfile_obstack,
10062                               TYPE_NAME (type), variant_name);
10063
10064       /* Install the union in the outer struct type.  */
10065       TYPE_NFIELDS (type) = 1;
10066       TYPE_FIELDS (type)
10067         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10068       TYPE_FIELD_TYPE (type, 0) = union_type;
10069       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10070       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10071
10072       alloc_discriminant_info (union_type, -1, 0);
10073     }
10074   else
10075     {
10076       struct type *disr_type = nullptr;
10077       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10078         {
10079           disr_type = TYPE_FIELD_TYPE (type, i);
10080
10081           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10082             {
10083               /* All fields of a true enum will be structs.  */
10084               return;
10085             }
10086           else if (TYPE_NFIELDS (disr_type) == 0)
10087             {
10088               /* Could be data-less variant, so keep going.  */
10089               disr_type = nullptr;
10090             }
10091           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10092                            "RUST$ENUM$DISR") != 0)
10093             {
10094               /* Not a Rust enum.  */
10095               return;
10096             }
10097           else
10098             {
10099               /* Found one.  */
10100               break;
10101             }
10102         }
10103
10104       /* If we got here without a discriminant, then it's probably
10105          just a union.  */
10106       if (disr_type == nullptr)
10107         return;
10108
10109       /* Smash this type to be a structure type.  We have to do this
10110          because the type has already been recorded.  */
10111       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10112
10113       /* Make a union to hold the variants.  */
10114       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10115       struct type *union_type = alloc_type (objfile);
10116       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10117       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10118       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10119       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10120       TYPE_FIELDS (union_type)
10121         = (struct field *) TYPE_ZALLOC (union_type,
10122                                         (TYPE_NFIELDS (union_type)
10123                                          * sizeof (struct field)));
10124
10125       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10126               TYPE_NFIELDS (type) * sizeof (struct field));
10127
10128       /* Install the discriminant at index 0 in the union.  */
10129       TYPE_FIELD (union_type, 0) = *disr_field;
10130       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10131       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10132
10133       /* Install the union in the outer struct type.  */
10134       TYPE_FIELD_TYPE (type, 0) = union_type;
10135       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10136       TYPE_NFIELDS (type) = 1;
10137
10138       /* Set the size and offset of the union type.  */
10139       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10140
10141       /* We need a way to find the correct discriminant given a
10142          variant name.  For convenience we build a map here.  */
10143       struct type *enum_type = FIELD_TYPE (*disr_field);
10144       std::unordered_map<std::string, ULONGEST> discriminant_map;
10145       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10146         {
10147           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10148             {
10149               const char *name
10150                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10151               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10152             }
10153         }
10154
10155       int n_fields = TYPE_NFIELDS (union_type);
10156       struct discriminant_info *disc
10157         = alloc_discriminant_info (union_type, 0, -1);
10158       /* Skip the discriminant here.  */
10159       for (int i = 1; i < n_fields; ++i)
10160         {
10161           /* Find the final word in the name of this variant's type.
10162              That name can be used to look up the correct
10163              discriminant.  */
10164           const char *variant_name
10165             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10166                                                                   i)));
10167
10168           auto iter = discriminant_map.find (variant_name);
10169           if (iter != discriminant_map.end ())
10170             disc->discriminants[i] = iter->second;
10171
10172           /* Remove the discriminant field, if it exists.  */
10173           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10174           if (TYPE_NFIELDS (sub_type) > 0)
10175             {
10176               --TYPE_NFIELDS (sub_type);
10177               ++TYPE_FIELDS (sub_type);
10178             }
10179           TYPE_FIELD_NAME (union_type, i) = variant_name;
10180           TYPE_NAME (sub_type)
10181             = rust_fully_qualify (&objfile->objfile_obstack,
10182                                   TYPE_NAME (type), variant_name);
10183         }
10184     }
10185 }
10186
10187 /* Rewrite some Rust unions to be structures with variants parts.  */
10188
10189 static void
10190 rust_union_quirks (struct dwarf2_cu *cu)
10191 {
10192   gdb_assert (cu->language == language_rust);
10193   for (type *type_ : cu->rust_unions)
10194     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10195   /* We don't need this any more.  */
10196   cu->rust_unions.clear ();
10197 }
10198
10199 /* Return the symtab for PER_CU.  This works properly regardless of
10200    whether we're using the index or psymtabs.  */
10201
10202 static struct compunit_symtab *
10203 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10204 {
10205   return (per_cu->dwarf2_per_objfile->using_index
10206           ? per_cu->v.quick->compunit_symtab
10207           : per_cu->v.psymtab->compunit_symtab);
10208 }
10209
10210 /* A helper function for computing the list of all symbol tables
10211    included by PER_CU.  */
10212
10213 static void
10214 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10215                                 htab_t all_children, htab_t all_type_symtabs,
10216                                 struct dwarf2_per_cu_data *per_cu,
10217                                 struct compunit_symtab *immediate_parent)
10218 {
10219   void **slot;
10220   int ix;
10221   struct compunit_symtab *cust;
10222   struct dwarf2_per_cu_data *iter;
10223
10224   slot = htab_find_slot (all_children, per_cu, INSERT);
10225   if (*slot != NULL)
10226     {
10227       /* This inclusion and its children have been processed.  */
10228       return;
10229     }
10230
10231   *slot = per_cu;
10232   /* Only add a CU if it has a symbol table.  */
10233   cust = get_compunit_symtab (per_cu);
10234   if (cust != NULL)
10235     {
10236       /* If this is a type unit only add its symbol table if we haven't
10237          seen it yet (type unit per_cu's can share symtabs).  */
10238       if (per_cu->is_debug_types)
10239         {
10240           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10241           if (*slot == NULL)
10242             {
10243               *slot = cust;
10244               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10245               if (cust->user == NULL)
10246                 cust->user = immediate_parent;
10247             }
10248         }
10249       else
10250         {
10251           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10252           if (cust->user == NULL)
10253             cust->user = immediate_parent;
10254         }
10255     }
10256
10257   for (ix = 0;
10258        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10259        ++ix)
10260     {
10261       recursively_compute_inclusions (result, all_children,
10262                                       all_type_symtabs, iter, cust);
10263     }
10264 }
10265
10266 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10267    PER_CU.  */
10268
10269 static void
10270 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10271 {
10272   gdb_assert (! per_cu->is_debug_types);
10273
10274   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10275     {
10276       int ix, len;
10277       struct dwarf2_per_cu_data *per_cu_iter;
10278       struct compunit_symtab *compunit_symtab_iter;
10279       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10280       htab_t all_children, all_type_symtabs;
10281       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10282
10283       /* If we don't have a symtab, we can just skip this case.  */
10284       if (cust == NULL)
10285         return;
10286
10287       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10288                                         NULL, xcalloc, xfree);
10289       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10290                                             NULL, xcalloc, xfree);
10291
10292       for (ix = 0;
10293            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10294                         ix, per_cu_iter);
10295            ++ix)
10296         {
10297           recursively_compute_inclusions (&result_symtabs, all_children,
10298                                           all_type_symtabs, per_cu_iter,
10299                                           cust);
10300         }
10301
10302       /* Now we have a transitive closure of all the included symtabs.  */
10303       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10304       cust->includes
10305         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10306                      struct compunit_symtab *, len + 1);
10307       for (ix = 0;
10308            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10309                         compunit_symtab_iter);
10310            ++ix)
10311         cust->includes[ix] = compunit_symtab_iter;
10312       cust->includes[len] = NULL;
10313
10314       VEC_free (compunit_symtab_ptr, result_symtabs);
10315       htab_delete (all_children);
10316       htab_delete (all_type_symtabs);
10317     }
10318 }
10319
10320 /* Compute the 'includes' field for the symtabs of all the CUs we just
10321    read.  */
10322
10323 static void
10324 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10325 {
10326   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10327     {
10328       if (! iter->is_debug_types)
10329         compute_compunit_symtab_includes (iter);
10330     }
10331
10332   dwarf2_per_objfile->just_read_cus.clear ();
10333 }
10334
10335 /* Generate full symbol information for PER_CU, whose DIEs have
10336    already been loaded into memory.  */
10337
10338 static void
10339 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10340                         enum language pretend_language)
10341 {
10342   struct dwarf2_cu *cu = per_cu->cu;
10343   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10344   struct objfile *objfile = dwarf2_per_objfile->objfile;
10345   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10346   CORE_ADDR lowpc, highpc;
10347   struct compunit_symtab *cust;
10348   CORE_ADDR baseaddr;
10349   struct block *static_block;
10350   CORE_ADDR addr;
10351
10352   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10353
10354   /* Clear the list here in case something was left over.  */
10355   cu->method_list.clear ();
10356
10357   cu->language = pretend_language;
10358   cu->language_defn = language_def (cu->language);
10359
10360   /* Do line number decoding in read_file_scope () */
10361   process_die (cu->dies, cu);
10362
10363   /* For now fudge the Go package.  */
10364   if (cu->language == language_go)
10365     fixup_go_packaging (cu);
10366
10367   /* Now that we have processed all the DIEs in the CU, all the types 
10368      should be complete, and it should now be safe to compute all of the
10369      physnames.  */
10370   compute_delayed_physnames (cu);
10371
10372   if (cu->language == language_rust)
10373     rust_union_quirks (cu);
10374
10375   /* Some compilers don't define a DW_AT_high_pc attribute for the
10376      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10377      it, by scanning the DIE's below the compilation unit.  */
10378   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10379
10380   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10381   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10382
10383   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10384      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10385      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10386      addrmap to help ensure it has an accurate map of pc values belonging to
10387      this comp unit.  */
10388   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10389
10390   cust = cu->builder->end_symtab_from_static_block (static_block,
10391                                                     SECT_OFF_TEXT (objfile),
10392                                                     0);
10393
10394   if (cust != NULL)
10395     {
10396       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10397
10398       /* Set symtab language to language from DW_AT_language.  If the
10399          compilation is from a C file generated by language preprocessors, do
10400          not set the language if it was already deduced by start_subfile.  */
10401       if (!(cu->language == language_c
10402             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10403         COMPUNIT_FILETABS (cust)->language = cu->language;
10404
10405       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10406          produce DW_AT_location with location lists but it can be possibly
10407          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10408          there were bugs in prologue debug info, fixed later in GCC-4.5
10409          by "unwind info for epilogues" patch (which is not directly related).
10410
10411          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10412          needed, it would be wrong due to missing DW_AT_producer there.
10413
10414          Still one can confuse GDB by using non-standard GCC compilation
10415          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10416          */ 
10417       if (cu->has_loclist && gcc_4_minor >= 5)
10418         cust->locations_valid = 1;
10419
10420       if (gcc_4_minor >= 5)
10421         cust->epilogue_unwind_valid = 1;
10422
10423       cust->call_site_htab = cu->call_site_htab;
10424     }
10425
10426   if (dwarf2_per_objfile->using_index)
10427     per_cu->v.quick->compunit_symtab = cust;
10428   else
10429     {
10430       struct partial_symtab *pst = per_cu->v.psymtab;
10431       pst->compunit_symtab = cust;
10432       pst->readin = 1;
10433     }
10434
10435   /* Push it for inclusion processing later.  */
10436   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10437
10438   /* Not needed any more.  */
10439   cu->builder.reset ();
10440 }
10441
10442 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10443    already been loaded into memory.  */
10444
10445 static void
10446 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10447                         enum language pretend_language)
10448 {
10449   struct dwarf2_cu *cu = per_cu->cu;
10450   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10451   struct objfile *objfile = dwarf2_per_objfile->objfile;
10452   struct compunit_symtab *cust;
10453   struct signatured_type *sig_type;
10454
10455   gdb_assert (per_cu->is_debug_types);
10456   sig_type = (struct signatured_type *) per_cu;
10457
10458   /* Clear the list here in case something was left over.  */
10459   cu->method_list.clear ();
10460
10461   cu->language = pretend_language;
10462   cu->language_defn = language_def (cu->language);
10463
10464   /* The symbol tables are set up in read_type_unit_scope.  */
10465   process_die (cu->dies, cu);
10466
10467   /* For now fudge the Go package.  */
10468   if (cu->language == language_go)
10469     fixup_go_packaging (cu);
10470
10471   /* Now that we have processed all the DIEs in the CU, all the types 
10472      should be complete, and it should now be safe to compute all of the
10473      physnames.  */
10474   compute_delayed_physnames (cu);
10475
10476   if (cu->language == language_rust)
10477     rust_union_quirks (cu);
10478
10479   /* TUs share symbol tables.
10480      If this is the first TU to use this symtab, complete the construction
10481      of it with end_expandable_symtab.  Otherwise, complete the addition of
10482      this TU's symbols to the existing symtab.  */
10483   if (sig_type->type_unit_group->compunit_symtab == NULL)
10484     {
10485       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10486       sig_type->type_unit_group->compunit_symtab = cust;
10487
10488       if (cust != NULL)
10489         {
10490           /* Set symtab language to language from DW_AT_language.  If the
10491              compilation is from a C file generated by language preprocessors,
10492              do not set the language if it was already deduced by
10493              start_subfile.  */
10494           if (!(cu->language == language_c
10495                 && COMPUNIT_FILETABS (cust)->language != language_c))
10496             COMPUNIT_FILETABS (cust)->language = cu->language;
10497         }
10498     }
10499   else
10500     {
10501       cu->builder->augment_type_symtab ();
10502       cust = sig_type->type_unit_group->compunit_symtab;
10503     }
10504
10505   if (dwarf2_per_objfile->using_index)
10506     per_cu->v.quick->compunit_symtab = cust;
10507   else
10508     {
10509       struct partial_symtab *pst = per_cu->v.psymtab;
10510       pst->compunit_symtab = cust;
10511       pst->readin = 1;
10512     }
10513
10514   /* Not needed any more.  */
10515   cu->builder.reset ();
10516 }
10517
10518 /* Process an imported unit DIE.  */
10519
10520 static void
10521 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10522 {
10523   struct attribute *attr;
10524
10525   /* For now we don't handle imported units in type units.  */
10526   if (cu->per_cu->is_debug_types)
10527     {
10528       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10529                " supported in type units [in module %s]"),
10530              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10531     }
10532
10533   attr = dwarf2_attr (die, DW_AT_import, cu);
10534   if (attr != NULL)
10535     {
10536       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10537       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10538       dwarf2_per_cu_data *per_cu
10539         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10540                                             cu->per_cu->dwarf2_per_objfile);
10541
10542       /* If necessary, add it to the queue and load its DIEs.  */
10543       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10544         load_full_comp_unit (per_cu, false, cu->language);
10545
10546       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10547                      per_cu);
10548     }
10549 }
10550
10551 /* RAII object that represents a process_die scope: i.e.,
10552    starts/finishes processing a DIE.  */
10553 class process_die_scope
10554 {
10555 public:
10556   process_die_scope (die_info *die, dwarf2_cu *cu)
10557     : m_die (die), m_cu (cu)
10558   {
10559     /* We should only be processing DIEs not already in process.  */
10560     gdb_assert (!m_die->in_process);
10561     m_die->in_process = true;
10562   }
10563
10564   ~process_die_scope ()
10565   {
10566     m_die->in_process = false;
10567
10568     /* If we're done processing the DIE for the CU that owns the line
10569        header, we don't need the line header anymore.  */
10570     if (m_cu->line_header_die_owner == m_die)
10571       {
10572         delete m_cu->line_header;
10573         m_cu->line_header = NULL;
10574         m_cu->line_header_die_owner = NULL;
10575       }
10576   }
10577
10578 private:
10579   die_info *m_die;
10580   dwarf2_cu *m_cu;
10581 };
10582
10583 /* Process a die and its children.  */
10584
10585 static void
10586 process_die (struct die_info *die, struct dwarf2_cu *cu)
10587 {
10588   process_die_scope scope (die, cu);
10589
10590   switch (die->tag)
10591     {
10592     case DW_TAG_padding:
10593       break;
10594     case DW_TAG_compile_unit:
10595     case DW_TAG_partial_unit:
10596       read_file_scope (die, cu);
10597       break;
10598     case DW_TAG_type_unit:
10599       read_type_unit_scope (die, cu);
10600       break;
10601     case DW_TAG_subprogram:
10602     case DW_TAG_inlined_subroutine:
10603       read_func_scope (die, cu);
10604       break;
10605     case DW_TAG_lexical_block:
10606     case DW_TAG_try_block:
10607     case DW_TAG_catch_block:
10608       read_lexical_block_scope (die, cu);
10609       break;
10610     case DW_TAG_call_site:
10611     case DW_TAG_GNU_call_site:
10612       read_call_site_scope (die, cu);
10613       break;
10614     case DW_TAG_class_type:
10615     case DW_TAG_interface_type:
10616     case DW_TAG_structure_type:
10617     case DW_TAG_union_type:
10618       process_structure_scope (die, cu);
10619       break;
10620     case DW_TAG_enumeration_type:
10621       process_enumeration_scope (die, cu);
10622       break;
10623
10624     /* These dies have a type, but processing them does not create
10625        a symbol or recurse to process the children.  Therefore we can
10626        read them on-demand through read_type_die.  */
10627     case DW_TAG_subroutine_type:
10628     case DW_TAG_set_type:
10629     case DW_TAG_array_type:
10630     case DW_TAG_pointer_type:
10631     case DW_TAG_ptr_to_member_type:
10632     case DW_TAG_reference_type:
10633     case DW_TAG_rvalue_reference_type:
10634     case DW_TAG_string_type:
10635       break;
10636
10637     case DW_TAG_base_type:
10638     case DW_TAG_subrange_type:
10639     case DW_TAG_typedef:
10640       /* Add a typedef symbol for the type definition, if it has a
10641          DW_AT_name.  */
10642       new_symbol (die, read_type_die (die, cu), cu);
10643       break;
10644     case DW_TAG_common_block:
10645       read_common_block (die, cu);
10646       break;
10647     case DW_TAG_common_inclusion:
10648       break;
10649     case DW_TAG_namespace:
10650       cu->processing_has_namespace_info = 1;
10651       read_namespace (die, cu);
10652       break;
10653     case DW_TAG_module:
10654       cu->processing_has_namespace_info = 1;
10655       read_module (die, cu);
10656       break;
10657     case DW_TAG_imported_declaration:
10658       cu->processing_has_namespace_info = 1;
10659       if (read_namespace_alias (die, cu))
10660         break;
10661       /* The declaration is not a global namespace alias.  */
10662       /* Fall through.  */
10663     case DW_TAG_imported_module:
10664       cu->processing_has_namespace_info = 1;
10665       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10666                                  || cu->language != language_fortran))
10667         complaint (_("Tag '%s' has unexpected children"),
10668                    dwarf_tag_name (die->tag));
10669       read_import_statement (die, cu);
10670       break;
10671
10672     case DW_TAG_imported_unit:
10673       process_imported_unit_die (die, cu);
10674       break;
10675
10676     case DW_TAG_variable:
10677       read_variable (die, cu);
10678       break;
10679
10680     default:
10681       new_symbol (die, NULL, cu);
10682       break;
10683     }
10684 }
10685 \f
10686 /* DWARF name computation.  */
10687
10688 /* A helper function for dwarf2_compute_name which determines whether DIE
10689    needs to have the name of the scope prepended to the name listed in the
10690    die.  */
10691
10692 static int
10693 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10694 {
10695   struct attribute *attr;
10696
10697   switch (die->tag)
10698     {
10699     case DW_TAG_namespace:
10700     case DW_TAG_typedef:
10701     case DW_TAG_class_type:
10702     case DW_TAG_interface_type:
10703     case DW_TAG_structure_type:
10704     case DW_TAG_union_type:
10705     case DW_TAG_enumeration_type:
10706     case DW_TAG_enumerator:
10707     case DW_TAG_subprogram:
10708     case DW_TAG_inlined_subroutine:
10709     case DW_TAG_member:
10710     case DW_TAG_imported_declaration:
10711       return 1;
10712
10713     case DW_TAG_variable:
10714     case DW_TAG_constant:
10715       /* We only need to prefix "globally" visible variables.  These include
10716          any variable marked with DW_AT_external or any variable that
10717          lives in a namespace.  [Variables in anonymous namespaces
10718          require prefixing, but they are not DW_AT_external.]  */
10719
10720       if (dwarf2_attr (die, DW_AT_specification, cu))
10721         {
10722           struct dwarf2_cu *spec_cu = cu;
10723
10724           return die_needs_namespace (die_specification (die, &spec_cu),
10725                                       spec_cu);
10726         }
10727
10728       attr = dwarf2_attr (die, DW_AT_external, cu);
10729       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10730           && die->parent->tag != DW_TAG_module)
10731         return 0;
10732       /* A variable in a lexical block of some kind does not need a
10733          namespace, even though in C++ such variables may be external
10734          and have a mangled name.  */
10735       if (die->parent->tag ==  DW_TAG_lexical_block
10736           || die->parent->tag ==  DW_TAG_try_block
10737           || die->parent->tag ==  DW_TAG_catch_block
10738           || die->parent->tag == DW_TAG_subprogram)
10739         return 0;
10740       return 1;
10741
10742     default:
10743       return 0;
10744     }
10745 }
10746
10747 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10748    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10749    defined for the given DIE.  */
10750
10751 static struct attribute *
10752 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10753 {
10754   struct attribute *attr;
10755
10756   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10757   if (attr == NULL)
10758     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10759
10760   return attr;
10761 }
10762
10763 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10764    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10765    defined for the given DIE.  */
10766
10767 static const char *
10768 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10769 {
10770   const char *linkage_name;
10771
10772   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10773   if (linkage_name == NULL)
10774     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10775
10776   return linkage_name;
10777 }
10778
10779 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10780    compute the physname for the object, which include a method's:
10781    - formal parameters (C++),
10782    - receiver type (Go),
10783
10784    The term "physname" is a bit confusing.
10785    For C++, for example, it is the demangled name.
10786    For Go, for example, it's the mangled name.
10787
10788    For Ada, return the DIE's linkage name rather than the fully qualified
10789    name.  PHYSNAME is ignored..
10790
10791    The result is allocated on the objfile_obstack and canonicalized.  */
10792
10793 static const char *
10794 dwarf2_compute_name (const char *name,
10795                      struct die_info *die, struct dwarf2_cu *cu,
10796                      int physname)
10797 {
10798   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10799
10800   if (name == NULL)
10801     name = dwarf2_name (die, cu);
10802
10803   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10804      but otherwise compute it by typename_concat inside GDB.
10805      FIXME: Actually this is not really true, or at least not always true.
10806      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10807      Fortran names because there is no mangling standard.  So new_symbol
10808      will set the demangled name to the result of dwarf2_full_name, and it is
10809      the demangled name that GDB uses if it exists.  */
10810   if (cu->language == language_ada
10811       || (cu->language == language_fortran && physname))
10812     {
10813       /* For Ada unit, we prefer the linkage name over the name, as
10814          the former contains the exported name, which the user expects
10815          to be able to reference.  Ideally, we want the user to be able
10816          to reference this entity using either natural or linkage name,
10817          but we haven't started looking at this enhancement yet.  */
10818       const char *linkage_name = dw2_linkage_name (die, cu);
10819
10820       if (linkage_name != NULL)
10821         return linkage_name;
10822     }
10823
10824   /* These are the only languages we know how to qualify names in.  */
10825   if (name != NULL
10826       && (cu->language == language_cplus
10827           || cu->language == language_fortran || cu->language == language_d
10828           || cu->language == language_rust))
10829     {
10830       if (die_needs_namespace (die, cu))
10831         {
10832           const char *prefix;
10833           const char *canonical_name = NULL;
10834
10835           string_file buf;
10836
10837           prefix = determine_prefix (die, cu);
10838           if (*prefix != '\0')
10839             {
10840               char *prefixed_name = typename_concat (NULL, prefix, name,
10841                                                      physname, cu);
10842
10843               buf.puts (prefixed_name);
10844               xfree (prefixed_name);
10845             }
10846           else
10847             buf.puts (name);
10848
10849           /* Template parameters may be specified in the DIE's DW_AT_name, or
10850              as children with DW_TAG_template_type_param or
10851              DW_TAG_value_type_param.  If the latter, add them to the name
10852              here.  If the name already has template parameters, then
10853              skip this step; some versions of GCC emit both, and
10854              it is more efficient to use the pre-computed name.
10855
10856              Something to keep in mind about this process: it is very
10857              unlikely, or in some cases downright impossible, to produce
10858              something that will match the mangled name of a function.
10859              If the definition of the function has the same debug info,
10860              we should be able to match up with it anyway.  But fallbacks
10861              using the minimal symbol, for instance to find a method
10862              implemented in a stripped copy of libstdc++, will not work.
10863              If we do not have debug info for the definition, we will have to
10864              match them up some other way.
10865
10866              When we do name matching there is a related problem with function
10867              templates; two instantiated function templates are allowed to
10868              differ only by their return types, which we do not add here.  */
10869
10870           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10871             {
10872               struct attribute *attr;
10873               struct die_info *child;
10874               int first = 1;
10875
10876               die->building_fullname = 1;
10877
10878               for (child = die->child; child != NULL; child = child->sibling)
10879                 {
10880                   struct type *type;
10881                   LONGEST value;
10882                   const gdb_byte *bytes;
10883                   struct dwarf2_locexpr_baton *baton;
10884                   struct value *v;
10885
10886                   if (child->tag != DW_TAG_template_type_param
10887                       && child->tag != DW_TAG_template_value_param)
10888                     continue;
10889
10890                   if (first)
10891                     {
10892                       buf.puts ("<");
10893                       first = 0;
10894                     }
10895                   else
10896                     buf.puts (", ");
10897
10898                   attr = dwarf2_attr (child, DW_AT_type, cu);
10899                   if (attr == NULL)
10900                     {
10901                       complaint (_("template parameter missing DW_AT_type"));
10902                       buf.puts ("UNKNOWN_TYPE");
10903                       continue;
10904                     }
10905                   type = die_type (child, cu);
10906
10907                   if (child->tag == DW_TAG_template_type_param)
10908                     {
10909                       c_print_type (type, "", &buf, -1, 0, cu->language,
10910                                     &type_print_raw_options);
10911                       continue;
10912                     }
10913
10914                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10915                   if (attr == NULL)
10916                     {
10917                       complaint (_("template parameter missing "
10918                                    "DW_AT_const_value"));
10919                       buf.puts ("UNKNOWN_VALUE");
10920                       continue;
10921                     }
10922
10923                   dwarf2_const_value_attr (attr, type, name,
10924                                            &cu->comp_unit_obstack, cu,
10925                                            &value, &bytes, &baton);
10926
10927                   if (TYPE_NOSIGN (type))
10928                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10929                        changed, this can use value_print instead.  */
10930                     c_printchar (value, type, &buf);
10931                   else
10932                     {
10933                       struct value_print_options opts;
10934
10935                       if (baton != NULL)
10936                         v = dwarf2_evaluate_loc_desc (type, NULL,
10937                                                       baton->data,
10938                                                       baton->size,
10939                                                       baton->per_cu);
10940                       else if (bytes != NULL)
10941                         {
10942                           v = allocate_value (type);
10943                           memcpy (value_contents_writeable (v), bytes,
10944                                   TYPE_LENGTH (type));
10945                         }
10946                       else
10947                         v = value_from_longest (type, value);
10948
10949                       /* Specify decimal so that we do not depend on
10950                          the radix.  */
10951                       get_formatted_print_options (&opts, 'd');
10952                       opts.raw = 1;
10953                       value_print (v, &buf, &opts);
10954                       release_value (v);
10955                     }
10956                 }
10957
10958               die->building_fullname = 0;
10959
10960               if (!first)
10961                 {
10962                   /* Close the argument list, with a space if necessary
10963                      (nested templates).  */
10964                   if (!buf.empty () && buf.string ().back () == '>')
10965                     buf.puts (" >");
10966                   else
10967                     buf.puts (">");
10968                 }
10969             }
10970
10971           /* For C++ methods, append formal parameter type
10972              information, if PHYSNAME.  */
10973
10974           if (physname && die->tag == DW_TAG_subprogram
10975               && cu->language == language_cplus)
10976             {
10977               struct type *type = read_type_die (die, cu);
10978
10979               c_type_print_args (type, &buf, 1, cu->language,
10980                                  &type_print_raw_options);
10981
10982               if (cu->language == language_cplus)
10983                 {
10984                   /* Assume that an artificial first parameter is
10985                      "this", but do not crash if it is not.  RealView
10986                      marks unnamed (and thus unused) parameters as
10987                      artificial; there is no way to differentiate
10988                      the two cases.  */
10989                   if (TYPE_NFIELDS (type) > 0
10990                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10991                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10992                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10993                                                                         0))))
10994                     buf.puts (" const");
10995                 }
10996             }
10997
10998           const std::string &intermediate_name = buf.string ();
10999
11000           if (cu->language == language_cplus)
11001             canonical_name
11002               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11003                                           &objfile->per_bfd->storage_obstack);
11004
11005           /* If we only computed INTERMEDIATE_NAME, or if
11006              INTERMEDIATE_NAME is already canonical, then we need to
11007              copy it to the appropriate obstack.  */
11008           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11009             name = ((const char *)
11010                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11011                                    intermediate_name.c_str (),
11012                                    intermediate_name.length ()));
11013           else
11014             name = canonical_name;
11015         }
11016     }
11017
11018   return name;
11019 }
11020
11021 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11022    If scope qualifiers are appropriate they will be added.  The result
11023    will be allocated on the storage_obstack, or NULL if the DIE does
11024    not have a name.  NAME may either be from a previous call to
11025    dwarf2_name or NULL.
11026
11027    The output string will be canonicalized (if C++).  */
11028
11029 static const char *
11030 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11031 {
11032   return dwarf2_compute_name (name, die, cu, 0);
11033 }
11034
11035 /* Construct a physname for the given DIE in CU.  NAME may either be
11036    from a previous call to dwarf2_name or NULL.  The result will be
11037    allocated on the objfile_objstack or NULL if the DIE does not have a
11038    name.
11039
11040    The output string will be canonicalized (if C++).  */
11041
11042 static const char *
11043 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11044 {
11045   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11046   const char *retval, *mangled = NULL, *canon = NULL;
11047   int need_copy = 1;
11048
11049   /* In this case dwarf2_compute_name is just a shortcut not building anything
11050      on its own.  */
11051   if (!die_needs_namespace (die, cu))
11052     return dwarf2_compute_name (name, die, cu, 1);
11053
11054   mangled = dw2_linkage_name (die, cu);
11055
11056   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11057      See https://github.com/rust-lang/rust/issues/32925.  */
11058   if (cu->language == language_rust && mangled != NULL
11059       && strchr (mangled, '{') != NULL)
11060     mangled = NULL;
11061
11062   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11063      has computed.  */
11064   gdb::unique_xmalloc_ptr<char> demangled;
11065   if (mangled != NULL)
11066     {
11067
11068       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11069         {
11070           /* Do nothing (do not demangle the symbol name).  */
11071         }
11072       else if (cu->language == language_go)
11073         {
11074           /* This is a lie, but we already lie to the caller new_symbol.
11075              new_symbol assumes we return the mangled name.
11076              This just undoes that lie until things are cleaned up.  */
11077         }
11078       else
11079         {
11080           /* Use DMGL_RET_DROP for C++ template functions to suppress
11081              their return type.  It is easier for GDB users to search
11082              for such functions as `name(params)' than `long name(params)'.
11083              In such case the minimal symbol names do not match the full
11084              symbol names but for template functions there is never a need
11085              to look up their definition from their declaration so
11086              the only disadvantage remains the minimal symbol variant
11087              `long name(params)' does not have the proper inferior type.  */
11088           demangled.reset (gdb_demangle (mangled,
11089                                          (DMGL_PARAMS | DMGL_ANSI
11090                                           | DMGL_RET_DROP)));
11091         }
11092       if (demangled)
11093         canon = demangled.get ();
11094       else
11095         {
11096           canon = mangled;
11097           need_copy = 0;
11098         }
11099     }
11100
11101   if (canon == NULL || check_physname)
11102     {
11103       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11104
11105       if (canon != NULL && strcmp (physname, canon) != 0)
11106         {
11107           /* It may not mean a bug in GDB.  The compiler could also
11108              compute DW_AT_linkage_name incorrectly.  But in such case
11109              GDB would need to be bug-to-bug compatible.  */
11110
11111           complaint (_("Computed physname <%s> does not match demangled <%s> "
11112                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11113                      physname, canon, mangled, sect_offset_str (die->sect_off),
11114                      objfile_name (objfile));
11115
11116           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11117              is available here - over computed PHYSNAME.  It is safer
11118              against both buggy GDB and buggy compilers.  */
11119
11120           retval = canon;
11121         }
11122       else
11123         {
11124           retval = physname;
11125           need_copy = 0;
11126         }
11127     }
11128   else
11129     retval = canon;
11130
11131   if (need_copy)
11132     retval = ((const char *)
11133               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11134                              retval, strlen (retval)));
11135
11136   return retval;
11137 }
11138
11139 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11140    a new symbol for it.
11141
11142    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11143
11144 static int
11145 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11146 {
11147   struct attribute *attr;
11148
11149   /* If the die does not have a name, this is not a namespace
11150      alias.  */
11151   attr = dwarf2_attr (die, DW_AT_name, cu);
11152   if (attr != NULL)
11153     {
11154       int num;
11155       struct die_info *d = die;
11156       struct dwarf2_cu *imported_cu = cu;
11157
11158       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11159          keep inspecting DIEs until we hit the underlying import.  */
11160 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11161       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11162         {
11163           attr = dwarf2_attr (d, DW_AT_import, cu);
11164           if (attr == NULL)
11165             break;
11166
11167           d = follow_die_ref (d, attr, &imported_cu);
11168           if (d->tag != DW_TAG_imported_declaration)
11169             break;
11170         }
11171
11172       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11173         {
11174           complaint (_("DIE at %s has too many recursively imported "
11175                        "declarations"), sect_offset_str (d->sect_off));
11176           return 0;
11177         }
11178
11179       if (attr != NULL)
11180         {
11181           struct type *type;
11182           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11183
11184           type = get_die_type_at_offset (sect_off, cu->per_cu);
11185           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11186             {
11187               /* This declaration is a global namespace alias.  Add
11188                  a symbol for it whose type is the aliased namespace.  */
11189               new_symbol (die, type, cu);
11190               return 1;
11191             }
11192         }
11193     }
11194
11195   return 0;
11196 }
11197
11198 /* Return the using directives repository (global or local?) to use in the
11199    current context for CU.
11200
11201    For Ada, imported declarations can materialize renamings, which *may* be
11202    global.  However it is impossible (for now?) in DWARF to distinguish
11203    "external" imported declarations and "static" ones.  As all imported
11204    declarations seem to be static in all other languages, make them all CU-wide
11205    global only in Ada.  */
11206
11207 static struct using_direct **
11208 using_directives (struct dwarf2_cu *cu)
11209 {
11210   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11211     return cu->builder->get_global_using_directives ();
11212   else
11213     return cu->builder->get_local_using_directives ();
11214 }
11215
11216 /* Read the import statement specified by the given die and record it.  */
11217
11218 static void
11219 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11220 {
11221   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11222   struct attribute *import_attr;
11223   struct die_info *imported_die, *child_die;
11224   struct dwarf2_cu *imported_cu;
11225   const char *imported_name;
11226   const char *imported_name_prefix;
11227   const char *canonical_name;
11228   const char *import_alias;
11229   const char *imported_declaration = NULL;
11230   const char *import_prefix;
11231   std::vector<const char *> excludes;
11232
11233   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11234   if (import_attr == NULL)
11235     {
11236       complaint (_("Tag '%s' has no DW_AT_import"),
11237                  dwarf_tag_name (die->tag));
11238       return;
11239     }
11240
11241   imported_cu = cu;
11242   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11243   imported_name = dwarf2_name (imported_die, imported_cu);
11244   if (imported_name == NULL)
11245     {
11246       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11247
11248         The import in the following code:
11249         namespace A
11250           {
11251             typedef int B;
11252           }
11253
11254         int main ()
11255           {
11256             using A::B;
11257             B b;
11258             return b;
11259           }
11260
11261         ...
11262          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11263             <52>   DW_AT_decl_file   : 1
11264             <53>   DW_AT_decl_line   : 6
11265             <54>   DW_AT_import      : <0x75>
11266          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11267             <59>   DW_AT_name        : B
11268             <5b>   DW_AT_decl_file   : 1
11269             <5c>   DW_AT_decl_line   : 2
11270             <5d>   DW_AT_type        : <0x6e>
11271         ...
11272          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11273             <76>   DW_AT_byte_size   : 4
11274             <77>   DW_AT_encoding    : 5        (signed)
11275
11276         imports the wrong die ( 0x75 instead of 0x58 ).
11277         This case will be ignored until the gcc bug is fixed.  */
11278       return;
11279     }
11280
11281   /* Figure out the local name after import.  */
11282   import_alias = dwarf2_name (die, cu);
11283
11284   /* Figure out where the statement is being imported to.  */
11285   import_prefix = determine_prefix (die, cu);
11286
11287   /* Figure out what the scope of the imported die is and prepend it
11288      to the name of the imported die.  */
11289   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11290
11291   if (imported_die->tag != DW_TAG_namespace
11292       && imported_die->tag != DW_TAG_module)
11293     {
11294       imported_declaration = imported_name;
11295       canonical_name = imported_name_prefix;
11296     }
11297   else if (strlen (imported_name_prefix) > 0)
11298     canonical_name = obconcat (&objfile->objfile_obstack,
11299                                imported_name_prefix,
11300                                (cu->language == language_d ? "." : "::"),
11301                                imported_name, (char *) NULL);
11302   else
11303     canonical_name = imported_name;
11304
11305   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11306     for (child_die = die->child; child_die && child_die->tag;
11307          child_die = sibling_die (child_die))
11308       {
11309         /* DWARF-4: A Fortran use statement with a “rename list” may be
11310            represented by an imported module entry with an import attribute
11311            referring to the module and owned entries corresponding to those
11312            entities that are renamed as part of being imported.  */
11313
11314         if (child_die->tag != DW_TAG_imported_declaration)
11315           {
11316             complaint (_("child DW_TAG_imported_declaration expected "
11317                          "- DIE at %s [in module %s]"),
11318                        sect_offset_str (child_die->sect_off),
11319                        objfile_name (objfile));
11320             continue;
11321           }
11322
11323         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11324         if (import_attr == NULL)
11325           {
11326             complaint (_("Tag '%s' has no DW_AT_import"),
11327                        dwarf_tag_name (child_die->tag));
11328             continue;
11329           }
11330
11331         imported_cu = cu;
11332         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11333                                               &imported_cu);
11334         imported_name = dwarf2_name (imported_die, imported_cu);
11335         if (imported_name == NULL)
11336           {
11337             complaint (_("child DW_TAG_imported_declaration has unknown "
11338                          "imported name - DIE at %s [in module %s]"),
11339                        sect_offset_str (child_die->sect_off),
11340                        objfile_name (objfile));
11341             continue;
11342           }
11343
11344         excludes.push_back (imported_name);
11345
11346         process_die (child_die, cu);
11347       }
11348
11349   add_using_directive (using_directives (cu),
11350                        import_prefix,
11351                        canonical_name,
11352                        import_alias,
11353                        imported_declaration,
11354                        excludes,
11355                        0,
11356                        &objfile->objfile_obstack);
11357 }
11358
11359 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11360    types, but gives them a size of zero.  Starting with version 14,
11361    ICC is compatible with GCC.  */
11362
11363 static int
11364 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11365 {
11366   if (!cu->checked_producer)
11367     check_producer (cu);
11368
11369   return cu->producer_is_icc_lt_14;
11370 }
11371
11372 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11373    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11374    this, it was first present in GCC release 4.3.0.  */
11375
11376 static int
11377 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11378 {
11379   if (!cu->checked_producer)
11380     check_producer (cu);
11381
11382   return cu->producer_is_gcc_lt_4_3;
11383 }
11384
11385 static file_and_directory
11386 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11387 {
11388   file_and_directory res;
11389
11390   /* Find the filename.  Do not use dwarf2_name here, since the filename
11391      is not a source language identifier.  */
11392   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11393   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11394
11395   if (res.comp_dir == NULL
11396       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11397       && IS_ABSOLUTE_PATH (res.name))
11398     {
11399       res.comp_dir_storage = ldirname (res.name);
11400       if (!res.comp_dir_storage.empty ())
11401         res.comp_dir = res.comp_dir_storage.c_str ();
11402     }
11403   if (res.comp_dir != NULL)
11404     {
11405       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11406          directory, get rid of it.  */
11407       const char *cp = strchr (res.comp_dir, ':');
11408
11409       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11410         res.comp_dir = cp + 1;
11411     }
11412
11413   if (res.name == NULL)
11414     res.name = "<unknown>";
11415
11416   return res;
11417 }
11418
11419 /* Handle DW_AT_stmt_list for a compilation unit.
11420    DIE is the DW_TAG_compile_unit die for CU.
11421    COMP_DIR is the compilation directory.  LOWPC is passed to
11422    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11423
11424 static void
11425 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11426                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11427 {
11428   struct dwarf2_per_objfile *dwarf2_per_objfile
11429     = cu->per_cu->dwarf2_per_objfile;
11430   struct objfile *objfile = dwarf2_per_objfile->objfile;
11431   struct attribute *attr;
11432   struct line_header line_header_local;
11433   hashval_t line_header_local_hash;
11434   void **slot;
11435   int decode_mapping;
11436
11437   gdb_assert (! cu->per_cu->is_debug_types);
11438
11439   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11440   if (attr == NULL)
11441     return;
11442
11443   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11444
11445   /* The line header hash table is only created if needed (it exists to
11446      prevent redundant reading of the line table for partial_units).
11447      If we're given a partial_unit, we'll need it.  If we're given a
11448      compile_unit, then use the line header hash table if it's already
11449      created, but don't create one just yet.  */
11450
11451   if (dwarf2_per_objfile->line_header_hash == NULL
11452       && die->tag == DW_TAG_partial_unit)
11453     {
11454       dwarf2_per_objfile->line_header_hash
11455         = htab_create_alloc_ex (127, line_header_hash_voidp,
11456                                 line_header_eq_voidp,
11457                                 free_line_header_voidp,
11458                                 &objfile->objfile_obstack,
11459                                 hashtab_obstack_allocate,
11460                                 dummy_obstack_deallocate);
11461     }
11462
11463   line_header_local.sect_off = line_offset;
11464   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11465   line_header_local_hash = line_header_hash (&line_header_local);
11466   if (dwarf2_per_objfile->line_header_hash != NULL)
11467     {
11468       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11469                                        &line_header_local,
11470                                        line_header_local_hash, NO_INSERT);
11471
11472       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11473          is not present in *SLOT (since if there is something in *SLOT then
11474          it will be for a partial_unit).  */
11475       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11476         {
11477           gdb_assert (*slot != NULL);
11478           cu->line_header = (struct line_header *) *slot;
11479           return;
11480         }
11481     }
11482
11483   /* dwarf_decode_line_header does not yet provide sufficient information.
11484      We always have to call also dwarf_decode_lines for it.  */
11485   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11486   if (lh == NULL)
11487     return;
11488
11489   cu->line_header = lh.release ();
11490   cu->line_header_die_owner = die;
11491
11492   if (dwarf2_per_objfile->line_header_hash == NULL)
11493     slot = NULL;
11494   else
11495     {
11496       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11497                                        &line_header_local,
11498                                        line_header_local_hash, INSERT);
11499       gdb_assert (slot != NULL);
11500     }
11501   if (slot != NULL && *slot == NULL)
11502     {
11503       /* This newly decoded line number information unit will be owned
11504          by line_header_hash hash table.  */
11505       *slot = cu->line_header;
11506       cu->line_header_die_owner = NULL;
11507     }
11508   else
11509     {
11510       /* We cannot free any current entry in (*slot) as that struct line_header
11511          may be already used by multiple CUs.  Create only temporary decoded
11512          line_header for this CU - it may happen at most once for each line
11513          number information unit.  And if we're not using line_header_hash
11514          then this is what we want as well.  */
11515       gdb_assert (die->tag != DW_TAG_partial_unit);
11516     }
11517   decode_mapping = (die->tag != DW_TAG_partial_unit);
11518   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11519                       decode_mapping);
11520
11521 }
11522
11523 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11524
11525 static void
11526 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11527 {
11528   struct dwarf2_per_objfile *dwarf2_per_objfile
11529     = cu->per_cu->dwarf2_per_objfile;
11530   struct objfile *objfile = dwarf2_per_objfile->objfile;
11531   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11532   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11533   CORE_ADDR highpc = ((CORE_ADDR) 0);
11534   struct attribute *attr;
11535   struct die_info *child_die;
11536   CORE_ADDR baseaddr;
11537
11538   prepare_one_comp_unit (cu, die, cu->language);
11539   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11540
11541   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11542
11543   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11544      from finish_block.  */
11545   if (lowpc == ((CORE_ADDR) -1))
11546     lowpc = highpc;
11547   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11548
11549   file_and_directory fnd = find_file_and_directory (die, cu);
11550
11551   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11552      standardised yet.  As a workaround for the language detection we fall
11553      back to the DW_AT_producer string.  */
11554   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11555     cu->language = language_opencl;
11556
11557   /* Similar hack for Go.  */
11558   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11559     set_cu_language (DW_LANG_Go, cu);
11560
11561   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11562
11563   /* Decode line number information if present.  We do this before
11564      processing child DIEs, so that the line header table is available
11565      for DW_AT_decl_file.  */
11566   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11567
11568   /* Process all dies in compilation unit.  */
11569   if (die->child != NULL)
11570     {
11571       child_die = die->child;
11572       while (child_die && child_die->tag)
11573         {
11574           process_die (child_die, cu);
11575           child_die = sibling_die (child_die);
11576         }
11577     }
11578
11579   /* Decode macro information, if present.  Dwarf 2 macro information
11580      refers to information in the line number info statement program
11581      header, so we can only read it if we've read the header
11582      successfully.  */
11583   attr = dwarf2_attr (die, DW_AT_macros, cu);
11584   if (attr == NULL)
11585     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11586   if (attr && cu->line_header)
11587     {
11588       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11589         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11590
11591       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11592     }
11593   else
11594     {
11595       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11596       if (attr && cu->line_header)
11597         {
11598           unsigned int macro_offset = DW_UNSND (attr);
11599
11600           dwarf_decode_macros (cu, macro_offset, 0);
11601         }
11602     }
11603 }
11604
11605 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11606    Create the set of symtabs used by this TU, or if this TU is sharing
11607    symtabs with another TU and the symtabs have already been created
11608    then restore those symtabs in the line header.
11609    We don't need the pc/line-number mapping for type units.  */
11610
11611 static void
11612 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11613 {
11614   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11615   struct type_unit_group *tu_group;
11616   int first_time;
11617   struct attribute *attr;
11618   unsigned int i;
11619   struct signatured_type *sig_type;
11620
11621   gdb_assert (per_cu->is_debug_types);
11622   sig_type = (struct signatured_type *) per_cu;
11623
11624   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11625
11626   /* If we're using .gdb_index (includes -readnow) then
11627      per_cu->type_unit_group may not have been set up yet.  */
11628   if (sig_type->type_unit_group == NULL)
11629     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11630   tu_group = sig_type->type_unit_group;
11631
11632   /* If we've already processed this stmt_list there's no real need to
11633      do it again, we could fake it and just recreate the part we need
11634      (file name,index -> symtab mapping).  If data shows this optimization
11635      is useful we can do it then.  */
11636   first_time = tu_group->compunit_symtab == NULL;
11637
11638   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11639      debug info.  */
11640   line_header_up lh;
11641   if (attr != NULL)
11642     {
11643       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11644       lh = dwarf_decode_line_header (line_offset, cu);
11645     }
11646   if (lh == NULL)
11647     {
11648       if (first_time)
11649         dwarf2_start_symtab (cu, "", NULL, 0);
11650       else
11651         {
11652           gdb_assert (tu_group->symtabs == NULL);
11653           gdb_assert (cu->builder == nullptr);
11654           struct compunit_symtab *cust = tu_group->compunit_symtab;
11655           cu->builder.reset (new struct buildsym_compunit
11656                              (COMPUNIT_OBJFILE (cust), "",
11657                               COMPUNIT_DIRNAME (cust),
11658                               compunit_language (cust),
11659                               0, cust));
11660         }
11661       return;
11662     }
11663
11664   cu->line_header = lh.release ();
11665   cu->line_header_die_owner = die;
11666
11667   if (first_time)
11668     {
11669       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11670
11671       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11672          still initializing it, and our caller (a few levels up)
11673          process_full_type_unit still needs to know if this is the first
11674          time.  */
11675
11676       tu_group->num_symtabs = cu->line_header->file_names.size ();
11677       tu_group->symtabs = XNEWVEC (struct symtab *,
11678                                    cu->line_header->file_names.size ());
11679
11680       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11681         {
11682           file_entry &fe = cu->line_header->file_names[i];
11683
11684           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11685
11686           if (cu->builder->get_current_subfile ()->symtab == NULL)
11687             {
11688               /* NOTE: start_subfile will recognize when it's been
11689                  passed a file it has already seen.  So we can't
11690                  assume there's a simple mapping from
11691                  cu->line_header->file_names to subfiles, plus
11692                  cu->line_header->file_names may contain dups.  */
11693               cu->builder->get_current_subfile ()->symtab
11694                 = allocate_symtab (cust,
11695                                    cu->builder->get_current_subfile ()->name);
11696             }
11697
11698           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11699           tu_group->symtabs[i] = fe.symtab;
11700         }
11701     }
11702   else
11703     {
11704       gdb_assert (cu->builder == nullptr);
11705       struct compunit_symtab *cust = tu_group->compunit_symtab;
11706       cu->builder.reset (new struct buildsym_compunit
11707                          (COMPUNIT_OBJFILE (cust), "",
11708                           COMPUNIT_DIRNAME (cust),
11709                           compunit_language (cust),
11710                           0, cust));
11711
11712       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11713         {
11714           file_entry &fe = cu->line_header->file_names[i];
11715
11716           fe.symtab = tu_group->symtabs[i];
11717         }
11718     }
11719
11720   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11721      so they don't have a "real" (so to speak) symtab anyway.
11722      There is later code that will assign the main symtab to all symbols
11723      that don't have one.  We need to handle the case of a symbol with a
11724      missing symtab (DW_AT_decl_file) anyway.  */
11725 }
11726
11727 /* Process DW_TAG_type_unit.
11728    For TUs we want to skip the first top level sibling if it's not the
11729    actual type being defined by this TU.  In this case the first top
11730    level sibling is there to provide context only.  */
11731
11732 static void
11733 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11734 {
11735   struct die_info *child_die;
11736
11737   prepare_one_comp_unit (cu, die, language_minimal);
11738
11739   /* Initialize (or reinitialize) the machinery for building symtabs.
11740      We do this before processing child DIEs, so that the line header table
11741      is available for DW_AT_decl_file.  */
11742   setup_type_unit_groups (die, cu);
11743
11744   if (die->child != NULL)
11745     {
11746       child_die = die->child;
11747       while (child_die && child_die->tag)
11748         {
11749           process_die (child_die, cu);
11750           child_die = sibling_die (child_die);
11751         }
11752     }
11753 }
11754 \f
11755 /* DWO/DWP files.
11756
11757    http://gcc.gnu.org/wiki/DebugFission
11758    http://gcc.gnu.org/wiki/DebugFissionDWP
11759
11760    To simplify handling of both DWO files ("object" files with the DWARF info)
11761    and DWP files (a file with the DWOs packaged up into one file), we treat
11762    DWP files as having a collection of virtual DWO files.  */
11763
11764 static hashval_t
11765 hash_dwo_file (const void *item)
11766 {
11767   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11768   hashval_t hash;
11769
11770   hash = htab_hash_string (dwo_file->dwo_name);
11771   if (dwo_file->comp_dir != NULL)
11772     hash += htab_hash_string (dwo_file->comp_dir);
11773   return hash;
11774 }
11775
11776 static int
11777 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11778 {
11779   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11780   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11781
11782   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11783     return 0;
11784   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11785     return lhs->comp_dir == rhs->comp_dir;
11786   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11787 }
11788
11789 /* Allocate a hash table for DWO files.  */
11790
11791 static htab_t
11792 allocate_dwo_file_hash_table (struct objfile *objfile)
11793 {
11794   return htab_create_alloc_ex (41,
11795                                hash_dwo_file,
11796                                eq_dwo_file,
11797                                NULL,
11798                                &objfile->objfile_obstack,
11799                                hashtab_obstack_allocate,
11800                                dummy_obstack_deallocate);
11801 }
11802
11803 /* Lookup DWO file DWO_NAME.  */
11804
11805 static void **
11806 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11807                       const char *dwo_name,
11808                       const char *comp_dir)
11809 {
11810   struct dwo_file find_entry;
11811   void **slot;
11812
11813   if (dwarf2_per_objfile->dwo_files == NULL)
11814     dwarf2_per_objfile->dwo_files
11815       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11816
11817   memset (&find_entry, 0, sizeof (find_entry));
11818   find_entry.dwo_name = dwo_name;
11819   find_entry.comp_dir = comp_dir;
11820   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11821
11822   return slot;
11823 }
11824
11825 static hashval_t
11826 hash_dwo_unit (const void *item)
11827 {
11828   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11829
11830   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11831   return dwo_unit->signature;
11832 }
11833
11834 static int
11835 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11836 {
11837   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11838   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11839
11840   /* The signature is assumed to be unique within the DWO file.
11841      So while object file CU dwo_id's always have the value zero,
11842      that's OK, assuming each object file DWO file has only one CU,
11843      and that's the rule for now.  */
11844   return lhs->signature == rhs->signature;
11845 }
11846
11847 /* Allocate a hash table for DWO CUs,TUs.
11848    There is one of these tables for each of CUs,TUs for each DWO file.  */
11849
11850 static htab_t
11851 allocate_dwo_unit_table (struct objfile *objfile)
11852 {
11853   /* Start out with a pretty small number.
11854      Generally DWO files contain only one CU and maybe some TUs.  */
11855   return htab_create_alloc_ex (3,
11856                                hash_dwo_unit,
11857                                eq_dwo_unit,
11858                                NULL,
11859                                &objfile->objfile_obstack,
11860                                hashtab_obstack_allocate,
11861                                dummy_obstack_deallocate);
11862 }
11863
11864 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11865
11866 struct create_dwo_cu_data
11867 {
11868   struct dwo_file *dwo_file;
11869   struct dwo_unit dwo_unit;
11870 };
11871
11872 /* die_reader_func for create_dwo_cu.  */
11873
11874 static void
11875 create_dwo_cu_reader (const struct die_reader_specs *reader,
11876                       const gdb_byte *info_ptr,
11877                       struct die_info *comp_unit_die,
11878                       int has_children,
11879                       void *datap)
11880 {
11881   struct dwarf2_cu *cu = reader->cu;
11882   sect_offset sect_off = cu->per_cu->sect_off;
11883   struct dwarf2_section_info *section = cu->per_cu->section;
11884   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11885   struct dwo_file *dwo_file = data->dwo_file;
11886   struct dwo_unit *dwo_unit = &data->dwo_unit;
11887   struct attribute *attr;
11888
11889   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11890   if (attr == NULL)
11891     {
11892       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11893                    " its dwo_id [in module %s]"),
11894                  sect_offset_str (sect_off), dwo_file->dwo_name);
11895       return;
11896     }
11897
11898   dwo_unit->dwo_file = dwo_file;
11899   dwo_unit->signature = DW_UNSND (attr);
11900   dwo_unit->section = section;
11901   dwo_unit->sect_off = sect_off;
11902   dwo_unit->length = cu->per_cu->length;
11903
11904   if (dwarf_read_debug)
11905     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11906                         sect_offset_str (sect_off),
11907                         hex_string (dwo_unit->signature));
11908 }
11909
11910 /* Create the dwo_units for the CUs in a DWO_FILE.
11911    Note: This function processes DWO files only, not DWP files.  */
11912
11913 static void
11914 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11915                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11916                        htab_t &cus_htab)
11917 {
11918   struct objfile *objfile = dwarf2_per_objfile->objfile;
11919   const gdb_byte *info_ptr, *end_ptr;
11920
11921   dwarf2_read_section (objfile, &section);
11922   info_ptr = section.buffer;
11923
11924   if (info_ptr == NULL)
11925     return;
11926
11927   if (dwarf_read_debug)
11928     {
11929       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11930                           get_section_name (&section),
11931                           get_section_file_name (&section));
11932     }
11933
11934   end_ptr = info_ptr + section.size;
11935   while (info_ptr < end_ptr)
11936     {
11937       struct dwarf2_per_cu_data per_cu;
11938       struct create_dwo_cu_data create_dwo_cu_data;
11939       struct dwo_unit *dwo_unit;
11940       void **slot;
11941       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11942
11943       memset (&create_dwo_cu_data.dwo_unit, 0,
11944               sizeof (create_dwo_cu_data.dwo_unit));
11945       memset (&per_cu, 0, sizeof (per_cu));
11946       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11947       per_cu.is_debug_types = 0;
11948       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11949       per_cu.section = &section;
11950       create_dwo_cu_data.dwo_file = &dwo_file;
11951
11952       init_cutu_and_read_dies_no_follow (
11953           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11954       info_ptr += per_cu.length;
11955
11956       // If the unit could not be parsed, skip it.
11957       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11958         continue;
11959
11960       if (cus_htab == NULL)
11961         cus_htab = allocate_dwo_unit_table (objfile);
11962
11963       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11964       *dwo_unit = create_dwo_cu_data.dwo_unit;
11965       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11966       gdb_assert (slot != NULL);
11967       if (*slot != NULL)
11968         {
11969           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11970           sect_offset dup_sect_off = dup_cu->sect_off;
11971
11972           complaint (_("debug cu entry at offset %s is duplicate to"
11973                        " the entry at offset %s, signature %s"),
11974                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11975                      hex_string (dwo_unit->signature));
11976         }
11977       *slot = (void *)dwo_unit;
11978     }
11979 }
11980
11981 /* DWP file .debug_{cu,tu}_index section format:
11982    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11983
11984    DWP Version 1:
11985
11986    Both index sections have the same format, and serve to map a 64-bit
11987    signature to a set of section numbers.  Each section begins with a header,
11988    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11989    indexes, and a pool of 32-bit section numbers.  The index sections will be
11990    aligned at 8-byte boundaries in the file.
11991
11992    The index section header consists of:
11993
11994     V, 32 bit version number
11995     -, 32 bits unused
11996     N, 32 bit number of compilation units or type units in the index
11997     M, 32 bit number of slots in the hash table
11998
11999    Numbers are recorded using the byte order of the application binary.
12000
12001    The hash table begins at offset 16 in the section, and consists of an array
12002    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12003    order of the application binary).  Unused slots in the hash table are 0.
12004    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12005
12006    The parallel table begins immediately after the hash table
12007    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12008    array of 32-bit indexes (using the byte order of the application binary),
12009    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12010    table contains a 32-bit index into the pool of section numbers.  For unused
12011    hash table slots, the corresponding entry in the parallel table will be 0.
12012
12013    The pool of section numbers begins immediately following the hash table
12014    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12015    section numbers consists of an array of 32-bit words (using the byte order
12016    of the application binary).  Each item in the array is indexed starting
12017    from 0.  The hash table entry provides the index of the first section
12018    number in the set.  Additional section numbers in the set follow, and the
12019    set is terminated by a 0 entry (section number 0 is not used in ELF).
12020
12021    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12022    section must be the first entry in the set, and the .debug_abbrev.dwo must
12023    be the second entry. Other members of the set may follow in any order.
12024
12025    ---
12026
12027    DWP Version 2:
12028
12029    DWP Version 2 combines all the .debug_info, etc. sections into one,
12030    and the entries in the index tables are now offsets into these sections.
12031    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12032    section.
12033
12034    Index Section Contents:
12035     Header
12036     Hash Table of Signatures   dwp_hash_table.hash_table
12037     Parallel Table of Indices  dwp_hash_table.unit_table
12038     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12039     Table of Section Sizes     dwp_hash_table.v2.sizes
12040
12041    The index section header consists of:
12042
12043     V, 32 bit version number
12044     L, 32 bit number of columns in the table of section offsets
12045     N, 32 bit number of compilation units or type units in the index
12046     M, 32 bit number of slots in the hash table
12047
12048    Numbers are recorded using the byte order of the application binary.
12049
12050    The hash table has the same format as version 1.
12051    The parallel table of indices has the same format as version 1,
12052    except that the entries are origin-1 indices into the table of sections
12053    offsets and the table of section sizes.
12054
12055    The table of offsets begins immediately following the parallel table
12056    (at offset 16 + 12 * M from the beginning of the section).  The table is
12057    a two-dimensional array of 32-bit words (using the byte order of the
12058    application binary), with L columns and N+1 rows, in row-major order.
12059    Each row in the array is indexed starting from 0.  The first row provides
12060    a key to the remaining rows: each column in this row provides an identifier
12061    for a debug section, and the offsets in the same column of subsequent rows
12062    refer to that section.  The section identifiers are:
12063
12064     DW_SECT_INFO         1  .debug_info.dwo
12065     DW_SECT_TYPES        2  .debug_types.dwo
12066     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12067     DW_SECT_LINE         4  .debug_line.dwo
12068     DW_SECT_LOC          5  .debug_loc.dwo
12069     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12070     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12071     DW_SECT_MACRO        8  .debug_macro.dwo
12072
12073    The offsets provided by the CU and TU index sections are the base offsets
12074    for the contributions made by each CU or TU to the corresponding section
12075    in the package file.  Each CU and TU header contains an abbrev_offset
12076    field, used to find the abbreviations table for that CU or TU within the
12077    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12078    be interpreted as relative to the base offset given in the index section.
12079    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12080    should be interpreted as relative to the base offset for .debug_line.dwo,
12081    and offsets into other debug sections obtained from DWARF attributes should
12082    also be interpreted as relative to the corresponding base offset.
12083
12084    The table of sizes begins immediately following the table of offsets.
12085    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12086    with L columns and N rows, in row-major order.  Each row in the array is
12087    indexed starting from 1 (row 0 is shared by the two tables).
12088
12089    ---
12090
12091    Hash table lookup is handled the same in version 1 and 2:
12092
12093    We assume that N and M will not exceed 2^32 - 1.
12094    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12095
12096    Given a 64-bit compilation unit signature or a type signature S, an entry
12097    in the hash table is located as follows:
12098
12099    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12100       the low-order k bits all set to 1.
12101
12102    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12103
12104    3) If the hash table entry at index H matches the signature, use that
12105       entry.  If the hash table entry at index H is unused (all zeroes),
12106       terminate the search: the signature is not present in the table.
12107
12108    4) Let H = (H + H') modulo M. Repeat at Step 3.
12109
12110    Because M > N and H' and M are relatively prime, the search is guaranteed
12111    to stop at an unused slot or find the match.  */
12112
12113 /* Create a hash table to map DWO IDs to their CU/TU entry in
12114    .debug_{info,types}.dwo in DWP_FILE.
12115    Returns NULL if there isn't one.
12116    Note: This function processes DWP files only, not DWO files.  */
12117
12118 static struct dwp_hash_table *
12119 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12120                        struct dwp_file *dwp_file, int is_debug_types)
12121 {
12122   struct objfile *objfile = dwarf2_per_objfile->objfile;
12123   bfd *dbfd = dwp_file->dbfd.get ();
12124   const gdb_byte *index_ptr, *index_end;
12125   struct dwarf2_section_info *index;
12126   uint32_t version, nr_columns, nr_units, nr_slots;
12127   struct dwp_hash_table *htab;
12128
12129   if (is_debug_types)
12130     index = &dwp_file->sections.tu_index;
12131   else
12132     index = &dwp_file->sections.cu_index;
12133
12134   if (dwarf2_section_empty_p (index))
12135     return NULL;
12136   dwarf2_read_section (objfile, index);
12137
12138   index_ptr = index->buffer;
12139   index_end = index_ptr + index->size;
12140
12141   version = read_4_bytes (dbfd, index_ptr);
12142   index_ptr += 4;
12143   if (version == 2)
12144     nr_columns = read_4_bytes (dbfd, index_ptr);
12145   else
12146     nr_columns = 0;
12147   index_ptr += 4;
12148   nr_units = read_4_bytes (dbfd, index_ptr);
12149   index_ptr += 4;
12150   nr_slots = read_4_bytes (dbfd, index_ptr);
12151   index_ptr += 4;
12152
12153   if (version != 1 && version != 2)
12154     {
12155       error (_("Dwarf Error: unsupported DWP file version (%s)"
12156                " [in module %s]"),
12157              pulongest (version), dwp_file->name);
12158     }
12159   if (nr_slots != (nr_slots & -nr_slots))
12160     {
12161       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12162                " is not power of 2 [in module %s]"),
12163              pulongest (nr_slots), dwp_file->name);
12164     }
12165
12166   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12167   htab->version = version;
12168   htab->nr_columns = nr_columns;
12169   htab->nr_units = nr_units;
12170   htab->nr_slots = nr_slots;
12171   htab->hash_table = index_ptr;
12172   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12173
12174   /* Exit early if the table is empty.  */
12175   if (nr_slots == 0 || nr_units == 0
12176       || (version == 2 && nr_columns == 0))
12177     {
12178       /* All must be zero.  */
12179       if (nr_slots != 0 || nr_units != 0
12180           || (version == 2 && nr_columns != 0))
12181         {
12182           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12183                        " all zero [in modules %s]"),
12184                      dwp_file->name);
12185         }
12186       return htab;
12187     }
12188
12189   if (version == 1)
12190     {
12191       htab->section_pool.v1.indices =
12192         htab->unit_table + sizeof (uint32_t) * nr_slots;
12193       /* It's harder to decide whether the section is too small in v1.
12194          V1 is deprecated anyway so we punt.  */
12195     }
12196   else
12197     {
12198       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12199       int *ids = htab->section_pool.v2.section_ids;
12200       /* Reverse map for error checking.  */
12201       int ids_seen[DW_SECT_MAX + 1];
12202       int i;
12203
12204       if (nr_columns < 2)
12205         {
12206           error (_("Dwarf Error: bad DWP hash table, too few columns"
12207                    " in section table [in module %s]"),
12208                  dwp_file->name);
12209         }
12210       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12211         {
12212           error (_("Dwarf Error: bad DWP hash table, too many columns"
12213                    " in section table [in module %s]"),
12214                  dwp_file->name);
12215         }
12216       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12217       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12218       for (i = 0; i < nr_columns; ++i)
12219         {
12220           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12221
12222           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12223             {
12224               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12225                        " in section table [in module %s]"),
12226                      id, dwp_file->name);
12227             }
12228           if (ids_seen[id] != -1)
12229             {
12230               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12231                        " id %d in section table [in module %s]"),
12232                      id, dwp_file->name);
12233             }
12234           ids_seen[id] = i;
12235           ids[i] = id;
12236         }
12237       /* Must have exactly one info or types section.  */
12238       if (((ids_seen[DW_SECT_INFO] != -1)
12239            + (ids_seen[DW_SECT_TYPES] != -1))
12240           != 1)
12241         {
12242           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12243                    " DWO info/types section [in module %s]"),
12244                  dwp_file->name);
12245         }
12246       /* Must have an abbrev section.  */
12247       if (ids_seen[DW_SECT_ABBREV] == -1)
12248         {
12249           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12250                    " section [in module %s]"),
12251                  dwp_file->name);
12252         }
12253       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12254       htab->section_pool.v2.sizes =
12255         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12256                                          * nr_units * nr_columns);
12257       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12258                                           * nr_units * nr_columns))
12259           > index_end)
12260         {
12261           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12262                    " [in module %s]"),
12263                  dwp_file->name);
12264         }
12265     }
12266
12267   return htab;
12268 }
12269
12270 /* Update SECTIONS with the data from SECTP.
12271
12272    This function is like the other "locate" section routines that are
12273    passed to bfd_map_over_sections, but in this context the sections to
12274    read comes from the DWP V1 hash table, not the full ELF section table.
12275
12276    The result is non-zero for success, or zero if an error was found.  */
12277
12278 static int
12279 locate_v1_virtual_dwo_sections (asection *sectp,
12280                                 struct virtual_v1_dwo_sections *sections)
12281 {
12282   const struct dwop_section_names *names = &dwop_section_names;
12283
12284   if (section_is_p (sectp->name, &names->abbrev_dwo))
12285     {
12286       /* There can be only one.  */
12287       if (sections->abbrev.s.section != NULL)
12288         return 0;
12289       sections->abbrev.s.section = sectp;
12290       sections->abbrev.size = bfd_get_section_size (sectp);
12291     }
12292   else if (section_is_p (sectp->name, &names->info_dwo)
12293            || section_is_p (sectp->name, &names->types_dwo))
12294     {
12295       /* There can be only one.  */
12296       if (sections->info_or_types.s.section != NULL)
12297         return 0;
12298       sections->info_or_types.s.section = sectp;
12299       sections->info_or_types.size = bfd_get_section_size (sectp);
12300     }
12301   else if (section_is_p (sectp->name, &names->line_dwo))
12302     {
12303       /* There can be only one.  */
12304       if (sections->line.s.section != NULL)
12305         return 0;
12306       sections->line.s.section = sectp;
12307       sections->line.size = bfd_get_section_size (sectp);
12308     }
12309   else if (section_is_p (sectp->name, &names->loc_dwo))
12310     {
12311       /* There can be only one.  */
12312       if (sections->loc.s.section != NULL)
12313         return 0;
12314       sections->loc.s.section = sectp;
12315       sections->loc.size = bfd_get_section_size (sectp);
12316     }
12317   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12318     {
12319       /* There can be only one.  */
12320       if (sections->macinfo.s.section != NULL)
12321         return 0;
12322       sections->macinfo.s.section = sectp;
12323       sections->macinfo.size = bfd_get_section_size (sectp);
12324     }
12325   else if (section_is_p (sectp->name, &names->macro_dwo))
12326     {
12327       /* There can be only one.  */
12328       if (sections->macro.s.section != NULL)
12329         return 0;
12330       sections->macro.s.section = sectp;
12331       sections->macro.size = bfd_get_section_size (sectp);
12332     }
12333   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12334     {
12335       /* There can be only one.  */
12336       if (sections->str_offsets.s.section != NULL)
12337         return 0;
12338       sections->str_offsets.s.section = sectp;
12339       sections->str_offsets.size = bfd_get_section_size (sectp);
12340     }
12341   else
12342     {
12343       /* No other kind of section is valid.  */
12344       return 0;
12345     }
12346
12347   return 1;
12348 }
12349
12350 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12351    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12352    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12353    This is for DWP version 1 files.  */
12354
12355 static struct dwo_unit *
12356 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12357                            struct dwp_file *dwp_file,
12358                            uint32_t unit_index,
12359                            const char *comp_dir,
12360                            ULONGEST signature, int is_debug_types)
12361 {
12362   struct objfile *objfile = dwarf2_per_objfile->objfile;
12363   const struct dwp_hash_table *dwp_htab =
12364     is_debug_types ? dwp_file->tus : dwp_file->cus;
12365   bfd *dbfd = dwp_file->dbfd.get ();
12366   const char *kind = is_debug_types ? "TU" : "CU";
12367   struct dwo_file *dwo_file;
12368   struct dwo_unit *dwo_unit;
12369   struct virtual_v1_dwo_sections sections;
12370   void **dwo_file_slot;
12371   int i;
12372
12373   gdb_assert (dwp_file->version == 1);
12374
12375   if (dwarf_read_debug)
12376     {
12377       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12378                           kind,
12379                           pulongest (unit_index), hex_string (signature),
12380                           dwp_file->name);
12381     }
12382
12383   /* Fetch the sections of this DWO unit.
12384      Put a limit on the number of sections we look for so that bad data
12385      doesn't cause us to loop forever.  */
12386
12387 #define MAX_NR_V1_DWO_SECTIONS \
12388   (1 /* .debug_info or .debug_types */ \
12389    + 1 /* .debug_abbrev */ \
12390    + 1 /* .debug_line */ \
12391    + 1 /* .debug_loc */ \
12392    + 1 /* .debug_str_offsets */ \
12393    + 1 /* .debug_macro or .debug_macinfo */ \
12394    + 1 /* trailing zero */)
12395
12396   memset (&sections, 0, sizeof (sections));
12397
12398   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12399     {
12400       asection *sectp;
12401       uint32_t section_nr =
12402         read_4_bytes (dbfd,
12403                       dwp_htab->section_pool.v1.indices
12404                       + (unit_index + i) * sizeof (uint32_t));
12405
12406       if (section_nr == 0)
12407         break;
12408       if (section_nr >= dwp_file->num_sections)
12409         {
12410           error (_("Dwarf Error: bad DWP hash table, section number too large"
12411                    " [in module %s]"),
12412                  dwp_file->name);
12413         }
12414
12415       sectp = dwp_file->elf_sections[section_nr];
12416       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12417         {
12418           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12419                    " [in module %s]"),
12420                  dwp_file->name);
12421         }
12422     }
12423
12424   if (i < 2
12425       || dwarf2_section_empty_p (&sections.info_or_types)
12426       || dwarf2_section_empty_p (&sections.abbrev))
12427     {
12428       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12429                " [in module %s]"),
12430              dwp_file->name);
12431     }
12432   if (i == MAX_NR_V1_DWO_SECTIONS)
12433     {
12434       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12435                " [in module %s]"),
12436              dwp_file->name);
12437     }
12438
12439   /* It's easier for the rest of the code if we fake a struct dwo_file and
12440      have dwo_unit "live" in that.  At least for now.
12441
12442      The DWP file can be made up of a random collection of CUs and TUs.
12443      However, for each CU + set of TUs that came from the same original DWO
12444      file, we can combine them back into a virtual DWO file to save space
12445      (fewer struct dwo_file objects to allocate).  Remember that for really
12446      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12447
12448   std::string virtual_dwo_name =
12449     string_printf ("virtual-dwo/%d-%d-%d-%d",
12450                    get_section_id (&sections.abbrev),
12451                    get_section_id (&sections.line),
12452                    get_section_id (&sections.loc),
12453                    get_section_id (&sections.str_offsets));
12454   /* Can we use an existing virtual DWO file?  */
12455   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12456                                         virtual_dwo_name.c_str (),
12457                                         comp_dir);
12458   /* Create one if necessary.  */
12459   if (*dwo_file_slot == NULL)
12460     {
12461       if (dwarf_read_debug)
12462         {
12463           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12464                               virtual_dwo_name.c_str ());
12465         }
12466       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12467       dwo_file->dwo_name
12468         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12469                                         virtual_dwo_name.c_str (),
12470                                         virtual_dwo_name.size ());
12471       dwo_file->comp_dir = comp_dir;
12472       dwo_file->sections.abbrev = sections.abbrev;
12473       dwo_file->sections.line = sections.line;
12474       dwo_file->sections.loc = sections.loc;
12475       dwo_file->sections.macinfo = sections.macinfo;
12476       dwo_file->sections.macro = sections.macro;
12477       dwo_file->sections.str_offsets = sections.str_offsets;
12478       /* The "str" section is global to the entire DWP file.  */
12479       dwo_file->sections.str = dwp_file->sections.str;
12480       /* The info or types section is assigned below to dwo_unit,
12481          there's no need to record it in dwo_file.
12482          Also, we can't simply record type sections in dwo_file because
12483          we record a pointer into the vector in dwo_unit.  As we collect more
12484          types we'll grow the vector and eventually have to reallocate space
12485          for it, invalidating all copies of pointers into the previous
12486          contents.  */
12487       *dwo_file_slot = dwo_file;
12488     }
12489   else
12490     {
12491       if (dwarf_read_debug)
12492         {
12493           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12494                               virtual_dwo_name.c_str ());
12495         }
12496       dwo_file = (struct dwo_file *) *dwo_file_slot;
12497     }
12498
12499   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12500   dwo_unit->dwo_file = dwo_file;
12501   dwo_unit->signature = signature;
12502   dwo_unit->section =
12503     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12504   *dwo_unit->section = sections.info_or_types;
12505   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12506
12507   return dwo_unit;
12508 }
12509
12510 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12511    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12512    piece within that section used by a TU/CU, return a virtual section
12513    of just that piece.  */
12514
12515 static struct dwarf2_section_info
12516 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12517                        struct dwarf2_section_info *section,
12518                        bfd_size_type offset, bfd_size_type size)
12519 {
12520   struct dwarf2_section_info result;
12521   asection *sectp;
12522
12523   gdb_assert (section != NULL);
12524   gdb_assert (!section->is_virtual);
12525
12526   memset (&result, 0, sizeof (result));
12527   result.s.containing_section = section;
12528   result.is_virtual = 1;
12529
12530   if (size == 0)
12531     return result;
12532
12533   sectp = get_section_bfd_section (section);
12534
12535   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12536      bounds of the real section.  This is a pretty-rare event, so just
12537      flag an error (easier) instead of a warning and trying to cope.  */
12538   if (sectp == NULL
12539       || offset + size > bfd_get_section_size (sectp))
12540     {
12541       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12542                " in section %s [in module %s]"),
12543              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12544              objfile_name (dwarf2_per_objfile->objfile));
12545     }
12546
12547   result.virtual_offset = offset;
12548   result.size = size;
12549   return result;
12550 }
12551
12552 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12553    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12554    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12555    This is for DWP version 2 files.  */
12556
12557 static struct dwo_unit *
12558 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12559                            struct dwp_file *dwp_file,
12560                            uint32_t unit_index,
12561                            const char *comp_dir,
12562                            ULONGEST signature, int is_debug_types)
12563 {
12564   struct objfile *objfile = dwarf2_per_objfile->objfile;
12565   const struct dwp_hash_table *dwp_htab =
12566     is_debug_types ? dwp_file->tus : dwp_file->cus;
12567   bfd *dbfd = dwp_file->dbfd.get ();
12568   const char *kind = is_debug_types ? "TU" : "CU";
12569   struct dwo_file *dwo_file;
12570   struct dwo_unit *dwo_unit;
12571   struct virtual_v2_dwo_sections sections;
12572   void **dwo_file_slot;
12573   int i;
12574
12575   gdb_assert (dwp_file->version == 2);
12576
12577   if (dwarf_read_debug)
12578     {
12579       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12580                           kind,
12581                           pulongest (unit_index), hex_string (signature),
12582                           dwp_file->name);
12583     }
12584
12585   /* Fetch the section offsets of this DWO unit.  */
12586
12587   memset (&sections, 0, sizeof (sections));
12588
12589   for (i = 0; i < dwp_htab->nr_columns; ++i)
12590     {
12591       uint32_t offset = read_4_bytes (dbfd,
12592                                       dwp_htab->section_pool.v2.offsets
12593                                       + (((unit_index - 1) * dwp_htab->nr_columns
12594                                           + i)
12595                                          * sizeof (uint32_t)));
12596       uint32_t size = read_4_bytes (dbfd,
12597                                     dwp_htab->section_pool.v2.sizes
12598                                     + (((unit_index - 1) * dwp_htab->nr_columns
12599                                         + i)
12600                                        * sizeof (uint32_t)));
12601
12602       switch (dwp_htab->section_pool.v2.section_ids[i])
12603         {
12604         case DW_SECT_INFO:
12605         case DW_SECT_TYPES:
12606           sections.info_or_types_offset = offset;
12607           sections.info_or_types_size = size;
12608           break;
12609         case DW_SECT_ABBREV:
12610           sections.abbrev_offset = offset;
12611           sections.abbrev_size = size;
12612           break;
12613         case DW_SECT_LINE:
12614           sections.line_offset = offset;
12615           sections.line_size = size;
12616           break;
12617         case DW_SECT_LOC:
12618           sections.loc_offset = offset;
12619           sections.loc_size = size;
12620           break;
12621         case DW_SECT_STR_OFFSETS:
12622           sections.str_offsets_offset = offset;
12623           sections.str_offsets_size = size;
12624           break;
12625         case DW_SECT_MACINFO:
12626           sections.macinfo_offset = offset;
12627           sections.macinfo_size = size;
12628           break;
12629         case DW_SECT_MACRO:
12630           sections.macro_offset = offset;
12631           sections.macro_size = size;
12632           break;
12633         }
12634     }
12635
12636   /* It's easier for the rest of the code if we fake a struct dwo_file and
12637      have dwo_unit "live" in that.  At least for now.
12638
12639      The DWP file can be made up of a random collection of CUs and TUs.
12640      However, for each CU + set of TUs that came from the same original DWO
12641      file, we can combine them back into a virtual DWO file to save space
12642      (fewer struct dwo_file objects to allocate).  Remember that for really
12643      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12644
12645   std::string virtual_dwo_name =
12646     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12647                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12648                    (long) (sections.line_size ? sections.line_offset : 0),
12649                    (long) (sections.loc_size ? sections.loc_offset : 0),
12650                    (long) (sections.str_offsets_size
12651                            ? sections.str_offsets_offset : 0));
12652   /* Can we use an existing virtual DWO file?  */
12653   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12654                                         virtual_dwo_name.c_str (),
12655                                         comp_dir);
12656   /* Create one if necessary.  */
12657   if (*dwo_file_slot == NULL)
12658     {
12659       if (dwarf_read_debug)
12660         {
12661           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12662                               virtual_dwo_name.c_str ());
12663         }
12664       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12665       dwo_file->dwo_name
12666         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12667                                         virtual_dwo_name.c_str (),
12668                                         virtual_dwo_name.size ());
12669       dwo_file->comp_dir = comp_dir;
12670       dwo_file->sections.abbrev =
12671         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12672                                sections.abbrev_offset, sections.abbrev_size);
12673       dwo_file->sections.line =
12674         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12675                                sections.line_offset, sections.line_size);
12676       dwo_file->sections.loc =
12677         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12678                                sections.loc_offset, sections.loc_size);
12679       dwo_file->sections.macinfo =
12680         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12681                                sections.macinfo_offset, sections.macinfo_size);
12682       dwo_file->sections.macro =
12683         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12684                                sections.macro_offset, sections.macro_size);
12685       dwo_file->sections.str_offsets =
12686         create_dwp_v2_section (dwarf2_per_objfile,
12687                                &dwp_file->sections.str_offsets,
12688                                sections.str_offsets_offset,
12689                                sections.str_offsets_size);
12690       /* The "str" section is global to the entire DWP file.  */
12691       dwo_file->sections.str = dwp_file->sections.str;
12692       /* The info or types section is assigned below to dwo_unit,
12693          there's no need to record it in dwo_file.
12694          Also, we can't simply record type sections in dwo_file because
12695          we record a pointer into the vector in dwo_unit.  As we collect more
12696          types we'll grow the vector and eventually have to reallocate space
12697          for it, invalidating all copies of pointers into the previous
12698          contents.  */
12699       *dwo_file_slot = dwo_file;
12700     }
12701   else
12702     {
12703       if (dwarf_read_debug)
12704         {
12705           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12706                               virtual_dwo_name.c_str ());
12707         }
12708       dwo_file = (struct dwo_file *) *dwo_file_slot;
12709     }
12710
12711   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12712   dwo_unit->dwo_file = dwo_file;
12713   dwo_unit->signature = signature;
12714   dwo_unit->section =
12715     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12716   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12717                                               is_debug_types
12718                                               ? &dwp_file->sections.types
12719                                               : &dwp_file->sections.info,
12720                                               sections.info_or_types_offset,
12721                                               sections.info_or_types_size);
12722   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12723
12724   return dwo_unit;
12725 }
12726
12727 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12728    Returns NULL if the signature isn't found.  */
12729
12730 static struct dwo_unit *
12731 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12732                         struct dwp_file *dwp_file, const char *comp_dir,
12733                         ULONGEST signature, int is_debug_types)
12734 {
12735   const struct dwp_hash_table *dwp_htab =
12736     is_debug_types ? dwp_file->tus : dwp_file->cus;
12737   bfd *dbfd = dwp_file->dbfd.get ();
12738   uint32_t mask = dwp_htab->nr_slots - 1;
12739   uint32_t hash = signature & mask;
12740   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12741   unsigned int i;
12742   void **slot;
12743   struct dwo_unit find_dwo_cu;
12744
12745   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12746   find_dwo_cu.signature = signature;
12747   slot = htab_find_slot (is_debug_types
12748                          ? dwp_file->loaded_tus
12749                          : dwp_file->loaded_cus,
12750                          &find_dwo_cu, INSERT);
12751
12752   if (*slot != NULL)
12753     return (struct dwo_unit *) *slot;
12754
12755   /* Use a for loop so that we don't loop forever on bad debug info.  */
12756   for (i = 0; i < dwp_htab->nr_slots; ++i)
12757     {
12758       ULONGEST signature_in_table;
12759
12760       signature_in_table =
12761         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12762       if (signature_in_table == signature)
12763         {
12764           uint32_t unit_index =
12765             read_4_bytes (dbfd,
12766                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12767
12768           if (dwp_file->version == 1)
12769             {
12770               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12771                                                  dwp_file, unit_index,
12772                                                  comp_dir, signature,
12773                                                  is_debug_types);
12774             }
12775           else
12776             {
12777               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12778                                                  dwp_file, unit_index,
12779                                                  comp_dir, signature,
12780                                                  is_debug_types);
12781             }
12782           return (struct dwo_unit *) *slot;
12783         }
12784       if (signature_in_table == 0)
12785         return NULL;
12786       hash = (hash + hash2) & mask;
12787     }
12788
12789   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12790            " [in module %s]"),
12791          dwp_file->name);
12792 }
12793
12794 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12795    Open the file specified by FILE_NAME and hand it off to BFD for
12796    preliminary analysis.  Return a newly initialized bfd *, which
12797    includes a canonicalized copy of FILE_NAME.
12798    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12799    SEARCH_CWD is true if the current directory is to be searched.
12800    It will be searched before debug-file-directory.
12801    If successful, the file is added to the bfd include table of the
12802    objfile's bfd (see gdb_bfd_record_inclusion).
12803    If unable to find/open the file, return NULL.
12804    NOTE: This function is derived from symfile_bfd_open.  */
12805
12806 static gdb_bfd_ref_ptr
12807 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12808                     const char *file_name, int is_dwp, int search_cwd)
12809 {
12810   int desc;
12811   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12812      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12813      to debug_file_directory.  */
12814   const char *search_path;
12815   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12816
12817   gdb::unique_xmalloc_ptr<char> search_path_holder;
12818   if (search_cwd)
12819     {
12820       if (*debug_file_directory != '\0')
12821         {
12822           search_path_holder.reset (concat (".", dirname_separator_string,
12823                                             debug_file_directory,
12824                                             (char *) NULL));
12825           search_path = search_path_holder.get ();
12826         }
12827       else
12828         search_path = ".";
12829     }
12830   else
12831     search_path = debug_file_directory;
12832
12833   openp_flags flags = OPF_RETURN_REALPATH;
12834   if (is_dwp)
12835     flags |= OPF_SEARCH_IN_PATH;
12836
12837   gdb::unique_xmalloc_ptr<char> absolute_name;
12838   desc = openp (search_path, flags, file_name,
12839                 O_RDONLY | O_BINARY, &absolute_name);
12840   if (desc < 0)
12841     return NULL;
12842
12843   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12844                                          gnutarget, desc));
12845   if (sym_bfd == NULL)
12846     return NULL;
12847   bfd_set_cacheable (sym_bfd.get (), 1);
12848
12849   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12850     return NULL;
12851
12852   /* Success.  Record the bfd as having been included by the objfile's bfd.
12853      This is important because things like demangled_names_hash lives in the
12854      objfile's per_bfd space and may have references to things like symbol
12855      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12856   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12857
12858   return sym_bfd;
12859 }
12860
12861 /* Try to open DWO file FILE_NAME.
12862    COMP_DIR is the DW_AT_comp_dir attribute.
12863    The result is the bfd handle of the file.
12864    If there is a problem finding or opening the file, return NULL.
12865    Upon success, the canonicalized path of the file is stored in the bfd,
12866    same as symfile_bfd_open.  */
12867
12868 static gdb_bfd_ref_ptr
12869 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12870                const char *file_name, const char *comp_dir)
12871 {
12872   if (IS_ABSOLUTE_PATH (file_name))
12873     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12874                                0 /*is_dwp*/, 0 /*search_cwd*/);
12875
12876   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12877
12878   if (comp_dir != NULL)
12879     {
12880       char *path_to_try = concat (comp_dir, SLASH_STRING,
12881                                   file_name, (char *) NULL);
12882
12883       /* NOTE: If comp_dir is a relative path, this will also try the
12884          search path, which seems useful.  */
12885       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12886                                                 path_to_try,
12887                                                 0 /*is_dwp*/,
12888                                                 1 /*search_cwd*/));
12889       xfree (path_to_try);
12890       if (abfd != NULL)
12891         return abfd;
12892     }
12893
12894   /* That didn't work, try debug-file-directory, which, despite its name,
12895      is a list of paths.  */
12896
12897   if (*debug_file_directory == '\0')
12898     return NULL;
12899
12900   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12901                              0 /*is_dwp*/, 1 /*search_cwd*/);
12902 }
12903
12904 /* This function is mapped across the sections and remembers the offset and
12905    size of each of the DWO debugging sections we are interested in.  */
12906
12907 static void
12908 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12909 {
12910   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12911   const struct dwop_section_names *names = &dwop_section_names;
12912
12913   if (section_is_p (sectp->name, &names->abbrev_dwo))
12914     {
12915       dwo_sections->abbrev.s.section = sectp;
12916       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12917     }
12918   else if (section_is_p (sectp->name, &names->info_dwo))
12919     {
12920       dwo_sections->info.s.section = sectp;
12921       dwo_sections->info.size = bfd_get_section_size (sectp);
12922     }
12923   else if (section_is_p (sectp->name, &names->line_dwo))
12924     {
12925       dwo_sections->line.s.section = sectp;
12926       dwo_sections->line.size = bfd_get_section_size (sectp);
12927     }
12928   else if (section_is_p (sectp->name, &names->loc_dwo))
12929     {
12930       dwo_sections->loc.s.section = sectp;
12931       dwo_sections->loc.size = bfd_get_section_size (sectp);
12932     }
12933   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12934     {
12935       dwo_sections->macinfo.s.section = sectp;
12936       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12937     }
12938   else if (section_is_p (sectp->name, &names->macro_dwo))
12939     {
12940       dwo_sections->macro.s.section = sectp;
12941       dwo_sections->macro.size = bfd_get_section_size (sectp);
12942     }
12943   else if (section_is_p (sectp->name, &names->str_dwo))
12944     {
12945       dwo_sections->str.s.section = sectp;
12946       dwo_sections->str.size = bfd_get_section_size (sectp);
12947     }
12948   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12949     {
12950       dwo_sections->str_offsets.s.section = sectp;
12951       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12952     }
12953   else if (section_is_p (sectp->name, &names->types_dwo))
12954     {
12955       struct dwarf2_section_info type_section;
12956
12957       memset (&type_section, 0, sizeof (type_section));
12958       type_section.s.section = sectp;
12959       type_section.size = bfd_get_section_size (sectp);
12960       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12961                      &type_section);
12962     }
12963 }
12964
12965 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12966    by PER_CU.  This is for the non-DWP case.
12967    The result is NULL if DWO_NAME can't be found.  */
12968
12969 static struct dwo_file *
12970 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12971                         const char *dwo_name, const char *comp_dir)
12972 {
12973   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12974   struct objfile *objfile = dwarf2_per_objfile->objfile;
12975
12976   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12977   if (dbfd == NULL)
12978     {
12979       if (dwarf_read_debug)
12980         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12981       return NULL;
12982     }
12983
12984   /* We use a unique pointer here, despite the obstack allocation,
12985      because a dwo_file needs some cleanup if it is abandoned.  */
12986   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12987                                         struct dwo_file));
12988   dwo_file->dwo_name = dwo_name;
12989   dwo_file->comp_dir = comp_dir;
12990   dwo_file->dbfd = dbfd.release ();
12991
12992   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12993                          &dwo_file->sections);
12994
12995   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12996                          dwo_file->cus);
12997
12998   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12999                                  dwo_file->sections.types, dwo_file->tus);
13000
13001   if (dwarf_read_debug)
13002     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13003
13004   return dwo_file.release ();
13005 }
13006
13007 /* This function is mapped across the sections and remembers the offset and
13008    size of each of the DWP debugging sections common to version 1 and 2 that
13009    we are interested in.  */
13010
13011 static void
13012 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13013                                    void *dwp_file_ptr)
13014 {
13015   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13016   const struct dwop_section_names *names = &dwop_section_names;
13017   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13018
13019   /* Record the ELF section number for later lookup: this is what the
13020      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13021   gdb_assert (elf_section_nr < dwp_file->num_sections);
13022   dwp_file->elf_sections[elf_section_nr] = sectp;
13023
13024   /* Look for specific sections that we need.  */
13025   if (section_is_p (sectp->name, &names->str_dwo))
13026     {
13027       dwp_file->sections.str.s.section = sectp;
13028       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13029     }
13030   else if (section_is_p (sectp->name, &names->cu_index))
13031     {
13032       dwp_file->sections.cu_index.s.section = sectp;
13033       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13034     }
13035   else if (section_is_p (sectp->name, &names->tu_index))
13036     {
13037       dwp_file->sections.tu_index.s.section = sectp;
13038       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13039     }
13040 }
13041
13042 /* This function is mapped across the sections and remembers the offset and
13043    size of each of the DWP version 2 debugging sections that we are interested
13044    in.  This is split into a separate function because we don't know if we
13045    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13046
13047 static void
13048 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13049 {
13050   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13051   const struct dwop_section_names *names = &dwop_section_names;
13052   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13053
13054   /* Record the ELF section number for later lookup: this is what the
13055      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13056   gdb_assert (elf_section_nr < dwp_file->num_sections);
13057   dwp_file->elf_sections[elf_section_nr] = sectp;
13058
13059   /* Look for specific sections that we need.  */
13060   if (section_is_p (sectp->name, &names->abbrev_dwo))
13061     {
13062       dwp_file->sections.abbrev.s.section = sectp;
13063       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13064     }
13065   else if (section_is_p (sectp->name, &names->info_dwo))
13066     {
13067       dwp_file->sections.info.s.section = sectp;
13068       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13069     }
13070   else if (section_is_p (sectp->name, &names->line_dwo))
13071     {
13072       dwp_file->sections.line.s.section = sectp;
13073       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13074     }
13075   else if (section_is_p (sectp->name, &names->loc_dwo))
13076     {
13077       dwp_file->sections.loc.s.section = sectp;
13078       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13079     }
13080   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13081     {
13082       dwp_file->sections.macinfo.s.section = sectp;
13083       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13084     }
13085   else if (section_is_p (sectp->name, &names->macro_dwo))
13086     {
13087       dwp_file->sections.macro.s.section = sectp;
13088       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13089     }
13090   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13091     {
13092       dwp_file->sections.str_offsets.s.section = sectp;
13093       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13094     }
13095   else if (section_is_p (sectp->name, &names->types_dwo))
13096     {
13097       dwp_file->sections.types.s.section = sectp;
13098       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13099     }
13100 }
13101
13102 /* Hash function for dwp_file loaded CUs/TUs.  */
13103
13104 static hashval_t
13105 hash_dwp_loaded_cutus (const void *item)
13106 {
13107   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13108
13109   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13110   return dwo_unit->signature;
13111 }
13112
13113 /* Equality function for dwp_file loaded CUs/TUs.  */
13114
13115 static int
13116 eq_dwp_loaded_cutus (const void *a, const void *b)
13117 {
13118   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13119   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13120
13121   return dua->signature == dub->signature;
13122 }
13123
13124 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13125
13126 static htab_t
13127 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13128 {
13129   return htab_create_alloc_ex (3,
13130                                hash_dwp_loaded_cutus,
13131                                eq_dwp_loaded_cutus,
13132                                NULL,
13133                                &objfile->objfile_obstack,
13134                                hashtab_obstack_allocate,
13135                                dummy_obstack_deallocate);
13136 }
13137
13138 /* Try to open DWP file FILE_NAME.
13139    The result is the bfd handle of the file.
13140    If there is a problem finding or opening the file, return NULL.
13141    Upon success, the canonicalized path of the file is stored in the bfd,
13142    same as symfile_bfd_open.  */
13143
13144 static gdb_bfd_ref_ptr
13145 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13146                const char *file_name)
13147 {
13148   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13149                                             1 /*is_dwp*/,
13150                                             1 /*search_cwd*/));
13151   if (abfd != NULL)
13152     return abfd;
13153
13154   /* Work around upstream bug 15652.
13155      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13156      [Whether that's a "bug" is debatable, but it is getting in our way.]
13157      We have no real idea where the dwp file is, because gdb's realpath-ing
13158      of the executable's path may have discarded the needed info.
13159      [IWBN if the dwp file name was recorded in the executable, akin to
13160      .gnu_debuglink, but that doesn't exist yet.]
13161      Strip the directory from FILE_NAME and search again.  */
13162   if (*debug_file_directory != '\0')
13163     {
13164       /* Don't implicitly search the current directory here.
13165          If the user wants to search "." to handle this case,
13166          it must be added to debug-file-directory.  */
13167       return try_open_dwop_file (dwarf2_per_objfile,
13168                                  lbasename (file_name), 1 /*is_dwp*/,
13169                                  0 /*search_cwd*/);
13170     }
13171
13172   return NULL;
13173 }
13174
13175 /* Initialize the use of the DWP file for the current objfile.
13176    By convention the name of the DWP file is ${objfile}.dwp.
13177    The result is NULL if it can't be found.  */
13178
13179 static std::unique_ptr<struct dwp_file>
13180 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13181 {
13182   struct objfile *objfile = dwarf2_per_objfile->objfile;
13183
13184   /* Try to find first .dwp for the binary file before any symbolic links
13185      resolving.  */
13186
13187   /* If the objfile is a debug file, find the name of the real binary
13188      file and get the name of dwp file from there.  */
13189   std::string dwp_name;
13190   if (objfile->separate_debug_objfile_backlink != NULL)
13191     {
13192       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13193       const char *backlink_basename = lbasename (backlink->original_name);
13194
13195       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13196     }
13197   else
13198     dwp_name = objfile->original_name;
13199
13200   dwp_name += ".dwp";
13201
13202   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13203   if (dbfd == NULL
13204       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13205     {
13206       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13207       dwp_name = objfile_name (objfile);
13208       dwp_name += ".dwp";
13209       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13210     }
13211
13212   if (dbfd == NULL)
13213     {
13214       if (dwarf_read_debug)
13215         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13216       return std::unique_ptr<dwp_file> ();
13217     }
13218
13219   const char *name = bfd_get_filename (dbfd.get ());
13220   std::unique_ptr<struct dwp_file> dwp_file
13221     (new struct dwp_file (name, std::move (dbfd)));
13222
13223   /* +1: section 0 is unused */
13224   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13225   dwp_file->elf_sections =
13226     OBSTACK_CALLOC (&objfile->objfile_obstack,
13227                     dwp_file->num_sections, asection *);
13228
13229   bfd_map_over_sections (dwp_file->dbfd.get (),
13230                          dwarf2_locate_common_dwp_sections,
13231                          dwp_file.get ());
13232
13233   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13234                                          0);
13235
13236   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13237                                          1);
13238
13239   /* The DWP file version is stored in the hash table.  Oh well.  */
13240   if (dwp_file->cus && dwp_file->tus
13241       && dwp_file->cus->version != dwp_file->tus->version)
13242     {
13243       /* Technically speaking, we should try to limp along, but this is
13244          pretty bizarre.  We use pulongest here because that's the established
13245          portability solution (e.g, we cannot use %u for uint32_t).  */
13246       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13247                " TU version %s [in DWP file %s]"),
13248              pulongest (dwp_file->cus->version),
13249              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13250     }
13251
13252   if (dwp_file->cus)
13253     dwp_file->version = dwp_file->cus->version;
13254   else if (dwp_file->tus)
13255     dwp_file->version = dwp_file->tus->version;
13256   else
13257     dwp_file->version = 2;
13258
13259   if (dwp_file->version == 2)
13260     bfd_map_over_sections (dwp_file->dbfd.get (),
13261                            dwarf2_locate_v2_dwp_sections,
13262                            dwp_file.get ());
13263
13264   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13265   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13266
13267   if (dwarf_read_debug)
13268     {
13269       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13270       fprintf_unfiltered (gdb_stdlog,
13271                           "    %s CUs, %s TUs\n",
13272                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13273                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13274     }
13275
13276   return dwp_file;
13277 }
13278
13279 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13280
13281 static struct dwp_file *
13282 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13283 {
13284   if (! dwarf2_per_objfile->dwp_checked)
13285     {
13286       dwarf2_per_objfile->dwp_file
13287         = open_and_init_dwp_file (dwarf2_per_objfile);
13288       dwarf2_per_objfile->dwp_checked = 1;
13289     }
13290   return dwarf2_per_objfile->dwp_file.get ();
13291 }
13292
13293 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13294    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13295    or in the DWP file for the objfile, referenced by THIS_UNIT.
13296    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13297    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13298
13299    This is called, for example, when wanting to read a variable with a
13300    complex location.  Therefore we don't want to do file i/o for every call.
13301    Therefore we don't want to look for a DWO file on every call.
13302    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13303    then we check if we've already seen DWO_NAME, and only THEN do we check
13304    for a DWO file.
13305
13306    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13307    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13308
13309 static struct dwo_unit *
13310 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13311                  const char *dwo_name, const char *comp_dir,
13312                  ULONGEST signature, int is_debug_types)
13313 {
13314   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13315   struct objfile *objfile = dwarf2_per_objfile->objfile;
13316   const char *kind = is_debug_types ? "TU" : "CU";
13317   void **dwo_file_slot;
13318   struct dwo_file *dwo_file;
13319   struct dwp_file *dwp_file;
13320
13321   /* First see if there's a DWP file.
13322      If we have a DWP file but didn't find the DWO inside it, don't
13323      look for the original DWO file.  It makes gdb behave differently
13324      depending on whether one is debugging in the build tree.  */
13325
13326   dwp_file = get_dwp_file (dwarf2_per_objfile);
13327   if (dwp_file != NULL)
13328     {
13329       const struct dwp_hash_table *dwp_htab =
13330         is_debug_types ? dwp_file->tus : dwp_file->cus;
13331
13332       if (dwp_htab != NULL)
13333         {
13334           struct dwo_unit *dwo_cutu =
13335             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13336                                     signature, is_debug_types);
13337
13338           if (dwo_cutu != NULL)
13339             {
13340               if (dwarf_read_debug)
13341                 {
13342                   fprintf_unfiltered (gdb_stdlog,
13343                                       "Virtual DWO %s %s found: @%s\n",
13344                                       kind, hex_string (signature),
13345                                       host_address_to_string (dwo_cutu));
13346                 }
13347               return dwo_cutu;
13348             }
13349         }
13350     }
13351   else
13352     {
13353       /* No DWP file, look for the DWO file.  */
13354
13355       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13356                                             dwo_name, comp_dir);
13357       if (*dwo_file_slot == NULL)
13358         {
13359           /* Read in the file and build a table of the CUs/TUs it contains.  */
13360           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13361         }
13362       /* NOTE: This will be NULL if unable to open the file.  */
13363       dwo_file = (struct dwo_file *) *dwo_file_slot;
13364
13365       if (dwo_file != NULL)
13366         {
13367           struct dwo_unit *dwo_cutu = NULL;
13368
13369           if (is_debug_types && dwo_file->tus)
13370             {
13371               struct dwo_unit find_dwo_cutu;
13372
13373               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13374               find_dwo_cutu.signature = signature;
13375               dwo_cutu
13376                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13377             }
13378           else if (!is_debug_types && dwo_file->cus)
13379             {
13380               struct dwo_unit find_dwo_cutu;
13381
13382               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13383               find_dwo_cutu.signature = signature;
13384               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13385                                                        &find_dwo_cutu);
13386             }
13387
13388           if (dwo_cutu != NULL)
13389             {
13390               if (dwarf_read_debug)
13391                 {
13392                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13393                                       kind, dwo_name, hex_string (signature),
13394                                       host_address_to_string (dwo_cutu));
13395                 }
13396               return dwo_cutu;
13397             }
13398         }
13399     }
13400
13401   /* We didn't find it.  This could mean a dwo_id mismatch, or
13402      someone deleted the DWO/DWP file, or the search path isn't set up
13403      correctly to find the file.  */
13404
13405   if (dwarf_read_debug)
13406     {
13407       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13408                           kind, dwo_name, hex_string (signature));
13409     }
13410
13411   /* This is a warning and not a complaint because it can be caused by
13412      pilot error (e.g., user accidentally deleting the DWO).  */
13413   {
13414     /* Print the name of the DWP file if we looked there, helps the user
13415        better diagnose the problem.  */
13416     std::string dwp_text;
13417
13418     if (dwp_file != NULL)
13419       dwp_text = string_printf (" [in DWP file %s]",
13420                                 lbasename (dwp_file->name));
13421
13422     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13423                " [in module %s]"),
13424              kind, dwo_name, hex_string (signature),
13425              dwp_text.c_str (),
13426              this_unit->is_debug_types ? "TU" : "CU",
13427              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13428   }
13429   return NULL;
13430 }
13431
13432 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13433    See lookup_dwo_cutu_unit for details.  */
13434
13435 static struct dwo_unit *
13436 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13437                       const char *dwo_name, const char *comp_dir,
13438                       ULONGEST signature)
13439 {
13440   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13441 }
13442
13443 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13444    See lookup_dwo_cutu_unit for details.  */
13445
13446 static struct dwo_unit *
13447 lookup_dwo_type_unit (struct signatured_type *this_tu,
13448                       const char *dwo_name, const char *comp_dir)
13449 {
13450   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13451 }
13452
13453 /* Traversal function for queue_and_load_all_dwo_tus.  */
13454
13455 static int
13456 queue_and_load_dwo_tu (void **slot, void *info)
13457 {
13458   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13459   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13460   ULONGEST signature = dwo_unit->signature;
13461   struct signatured_type *sig_type =
13462     lookup_dwo_signatured_type (per_cu->cu, signature);
13463
13464   if (sig_type != NULL)
13465     {
13466       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13467
13468       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13469          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13470          while processing PER_CU.  */
13471       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13472         load_full_type_unit (sig_cu);
13473       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13474     }
13475
13476   return 1;
13477 }
13478
13479 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13480    The DWO may have the only definition of the type, though it may not be
13481    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13482    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13483
13484 static void
13485 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13486 {
13487   struct dwo_unit *dwo_unit;
13488   struct dwo_file *dwo_file;
13489
13490   gdb_assert (!per_cu->is_debug_types);
13491   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13492   gdb_assert (per_cu->cu != NULL);
13493
13494   dwo_unit = per_cu->cu->dwo_unit;
13495   gdb_assert (dwo_unit != NULL);
13496
13497   dwo_file = dwo_unit->dwo_file;
13498   if (dwo_file->tus != NULL)
13499     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13500 }
13501
13502 /* Free all resources associated with DWO_FILE.
13503    Close the DWO file and munmap the sections.  */
13504
13505 static void
13506 free_dwo_file (struct dwo_file *dwo_file)
13507 {
13508   /* Note: dbfd is NULL for virtual DWO files.  */
13509   gdb_bfd_unref (dwo_file->dbfd);
13510
13511   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13512 }
13513
13514 /* Traversal function for free_dwo_files.  */
13515
13516 static int
13517 free_dwo_file_from_slot (void **slot, void *info)
13518 {
13519   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13520
13521   free_dwo_file (dwo_file);
13522
13523   return 1;
13524 }
13525
13526 /* Free all resources associated with DWO_FILES.  */
13527
13528 static void
13529 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13530 {
13531   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13532 }
13533 \f
13534 /* Read in various DIEs.  */
13535
13536 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13537    Inherit only the children of the DW_AT_abstract_origin DIE not being
13538    already referenced by DW_AT_abstract_origin from the children of the
13539    current DIE.  */
13540
13541 static void
13542 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13543 {
13544   struct die_info *child_die;
13545   sect_offset *offsetp;
13546   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13547   struct die_info *origin_die;
13548   /* Iterator of the ORIGIN_DIE children.  */
13549   struct die_info *origin_child_die;
13550   struct attribute *attr;
13551   struct dwarf2_cu *origin_cu;
13552   struct pending **origin_previous_list_in_scope;
13553
13554   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13555   if (!attr)
13556     return;
13557
13558   /* Note that following die references may follow to a die in a
13559      different cu.  */
13560
13561   origin_cu = cu;
13562   origin_die = follow_die_ref (die, attr, &origin_cu);
13563
13564   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13565      symbols in.  */
13566   origin_previous_list_in_scope = origin_cu->list_in_scope;
13567   origin_cu->list_in_scope = cu->list_in_scope;
13568
13569   if (die->tag != origin_die->tag
13570       && !(die->tag == DW_TAG_inlined_subroutine
13571            && origin_die->tag == DW_TAG_subprogram))
13572     complaint (_("DIE %s and its abstract origin %s have different tags"),
13573                sect_offset_str (die->sect_off),
13574                sect_offset_str (origin_die->sect_off));
13575
13576   std::vector<sect_offset> offsets;
13577
13578   for (child_die = die->child;
13579        child_die && child_die->tag;
13580        child_die = sibling_die (child_die))
13581     {
13582       struct die_info *child_origin_die;
13583       struct dwarf2_cu *child_origin_cu;
13584
13585       /* We are trying to process concrete instance entries:
13586          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13587          it's not relevant to our analysis here. i.e. detecting DIEs that are
13588          present in the abstract instance but not referenced in the concrete
13589          one.  */
13590       if (child_die->tag == DW_TAG_call_site
13591           || child_die->tag == DW_TAG_GNU_call_site)
13592         continue;
13593
13594       /* For each CHILD_DIE, find the corresponding child of
13595          ORIGIN_DIE.  If there is more than one layer of
13596          DW_AT_abstract_origin, follow them all; there shouldn't be,
13597          but GCC versions at least through 4.4 generate this (GCC PR
13598          40573).  */
13599       child_origin_die = child_die;
13600       child_origin_cu = cu;
13601       while (1)
13602         {
13603           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13604                               child_origin_cu);
13605           if (attr == NULL)
13606             break;
13607           child_origin_die = follow_die_ref (child_origin_die, attr,
13608                                              &child_origin_cu);
13609         }
13610
13611       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13612          counterpart may exist.  */
13613       if (child_origin_die != child_die)
13614         {
13615           if (child_die->tag != child_origin_die->tag
13616               && !(child_die->tag == DW_TAG_inlined_subroutine
13617                    && child_origin_die->tag == DW_TAG_subprogram))
13618             complaint (_("Child DIE %s and its abstract origin %s have "
13619                          "different tags"),
13620                        sect_offset_str (child_die->sect_off),
13621                        sect_offset_str (child_origin_die->sect_off));
13622           if (child_origin_die->parent != origin_die)
13623             complaint (_("Child DIE %s and its abstract origin %s have "
13624                          "different parents"),
13625                        sect_offset_str (child_die->sect_off),
13626                        sect_offset_str (child_origin_die->sect_off));
13627           else
13628             offsets.push_back (child_origin_die->sect_off);
13629         }
13630     }
13631   std::sort (offsets.begin (), offsets.end ());
13632   sect_offset *offsets_end = offsets.data () + offsets.size ();
13633   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13634     if (offsetp[-1] == *offsetp)
13635       complaint (_("Multiple children of DIE %s refer "
13636                    "to DIE %s as their abstract origin"),
13637                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13638
13639   offsetp = offsets.data ();
13640   origin_child_die = origin_die->child;
13641   while (origin_child_die && origin_child_die->tag)
13642     {
13643       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13644       while (offsetp < offsets_end
13645              && *offsetp < origin_child_die->sect_off)
13646         offsetp++;
13647       if (offsetp >= offsets_end
13648           || *offsetp > origin_child_die->sect_off)
13649         {
13650           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13651              Check whether we're already processing ORIGIN_CHILD_DIE.
13652              This can happen with mutually referenced abstract_origins.
13653              PR 16581.  */
13654           if (!origin_child_die->in_process)
13655             process_die (origin_child_die, origin_cu);
13656         }
13657       origin_child_die = sibling_die (origin_child_die);
13658     }
13659   origin_cu->list_in_scope = origin_previous_list_in_scope;
13660 }
13661
13662 static void
13663 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13664 {
13665   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13666   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13667   struct context_stack *newobj;
13668   CORE_ADDR lowpc;
13669   CORE_ADDR highpc;
13670   struct die_info *child_die;
13671   struct attribute *attr, *call_line, *call_file;
13672   const char *name;
13673   CORE_ADDR baseaddr;
13674   struct block *block;
13675   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13676   std::vector<struct symbol *> template_args;
13677   struct template_symbol *templ_func = NULL;
13678
13679   if (inlined_func)
13680     {
13681       /* If we do not have call site information, we can't show the
13682          caller of this inlined function.  That's too confusing, so
13683          only use the scope for local variables.  */
13684       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13685       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13686       if (call_line == NULL || call_file == NULL)
13687         {
13688           read_lexical_block_scope (die, cu);
13689           return;
13690         }
13691     }
13692
13693   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13694
13695   name = dwarf2_name (die, cu);
13696
13697   /* Ignore functions with missing or empty names.  These are actually
13698      illegal according to the DWARF standard.  */
13699   if (name == NULL)
13700     {
13701       complaint (_("missing name for subprogram DIE at %s"),
13702                  sect_offset_str (die->sect_off));
13703       return;
13704     }
13705
13706   /* Ignore functions with missing or invalid low and high pc attributes.  */
13707   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13708       <= PC_BOUNDS_INVALID)
13709     {
13710       attr = dwarf2_attr (die, DW_AT_external, cu);
13711       if (!attr || !DW_UNSND (attr))
13712         complaint (_("cannot get low and high bounds "
13713                      "for subprogram DIE at %s"),
13714                    sect_offset_str (die->sect_off));
13715       return;
13716     }
13717
13718   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13719   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13720
13721   /* If we have any template arguments, then we must allocate a
13722      different sort of symbol.  */
13723   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13724     {
13725       if (child_die->tag == DW_TAG_template_type_param
13726           || child_die->tag == DW_TAG_template_value_param)
13727         {
13728           templ_func = allocate_template_symbol (objfile);
13729           templ_func->subclass = SYMBOL_TEMPLATE;
13730           break;
13731         }
13732     }
13733
13734   newobj = cu->builder->push_context (0, lowpc);
13735   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13736                              (struct symbol *) templ_func);
13737
13738   /* If there is a location expression for DW_AT_frame_base, record
13739      it.  */
13740   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13741   if (attr)
13742     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13743
13744   /* If there is a location for the static link, record it.  */
13745   newobj->static_link = NULL;
13746   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13747   if (attr)
13748     {
13749       newobj->static_link
13750         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13751       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13752     }
13753
13754   cu->list_in_scope = cu->builder->get_local_symbols ();
13755
13756   if (die->child != NULL)
13757     {
13758       child_die = die->child;
13759       while (child_die && child_die->tag)
13760         {
13761           if (child_die->tag == DW_TAG_template_type_param
13762               || child_die->tag == DW_TAG_template_value_param)
13763             {
13764               struct symbol *arg = new_symbol (child_die, NULL, cu);
13765
13766               if (arg != NULL)
13767                 template_args.push_back (arg);
13768             }
13769           else
13770             process_die (child_die, cu);
13771           child_die = sibling_die (child_die);
13772         }
13773     }
13774
13775   inherit_abstract_dies (die, cu);
13776
13777   /* If we have a DW_AT_specification, we might need to import using
13778      directives from the context of the specification DIE.  See the
13779      comment in determine_prefix.  */
13780   if (cu->language == language_cplus
13781       && dwarf2_attr (die, DW_AT_specification, cu))
13782     {
13783       struct dwarf2_cu *spec_cu = cu;
13784       struct die_info *spec_die = die_specification (die, &spec_cu);
13785
13786       while (spec_die)
13787         {
13788           child_die = spec_die->child;
13789           while (child_die && child_die->tag)
13790             {
13791               if (child_die->tag == DW_TAG_imported_module)
13792                 process_die (child_die, spec_cu);
13793               child_die = sibling_die (child_die);
13794             }
13795
13796           /* In some cases, GCC generates specification DIEs that
13797              themselves contain DW_AT_specification attributes.  */
13798           spec_die = die_specification (spec_die, &spec_cu);
13799         }
13800     }
13801
13802   struct context_stack cstk = cu->builder->pop_context ();
13803   /* Make a block for the local symbols within.  */
13804   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13805                                      cstk.static_link, lowpc, highpc);
13806
13807   /* For C++, set the block's scope.  */
13808   if ((cu->language == language_cplus
13809        || cu->language == language_fortran
13810        || cu->language == language_d
13811        || cu->language == language_rust)
13812       && cu->processing_has_namespace_info)
13813     block_set_scope (block, determine_prefix (die, cu),
13814                      &objfile->objfile_obstack);
13815
13816   /* If we have address ranges, record them.  */
13817   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13818
13819   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13820
13821   /* Attach template arguments to function.  */
13822   if (!template_args.empty ())
13823     {
13824       gdb_assert (templ_func != NULL);
13825
13826       templ_func->n_template_arguments = template_args.size ();
13827       templ_func->template_arguments
13828         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13829                      templ_func->n_template_arguments);
13830       memcpy (templ_func->template_arguments,
13831               template_args.data (),
13832               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13833
13834       /* Make sure that the symtab is set on the new symbols.  Even
13835          though they don't appear in this symtab directly, other parts
13836          of gdb assume that symbols do, and this is reasonably
13837          true.  */
13838       for (struct symbol *sym : template_args)
13839         symbol_set_symtab (sym, symbol_symtab (templ_func));
13840     }
13841
13842   /* In C++, we can have functions nested inside functions (e.g., when
13843      a function declares a class that has methods).  This means that
13844      when we finish processing a function scope, we may need to go
13845      back to building a containing block's symbol lists.  */
13846   *cu->builder->get_local_symbols () = cstk.locals;
13847   cu->builder->set_local_using_directives (cstk.local_using_directives);
13848
13849   /* If we've finished processing a top-level function, subsequent
13850      symbols go in the file symbol list.  */
13851   if (cu->builder->outermost_context_p ())
13852     cu->list_in_scope = cu->builder->get_file_symbols ();
13853 }
13854
13855 /* Process all the DIES contained within a lexical block scope.  Start
13856    a new scope, process the dies, and then close the scope.  */
13857
13858 static void
13859 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13860 {
13861   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13862   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13863   CORE_ADDR lowpc, highpc;
13864   struct die_info *child_die;
13865   CORE_ADDR baseaddr;
13866
13867   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13868
13869   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13870   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13871      as multiple lexical blocks?  Handling children in a sane way would
13872      be nasty.  Might be easier to properly extend generic blocks to
13873      describe ranges.  */
13874   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13875     {
13876     case PC_BOUNDS_NOT_PRESENT:
13877       /* DW_TAG_lexical_block has no attributes, process its children as if
13878          there was no wrapping by that DW_TAG_lexical_block.
13879          GCC does no longer produces such DWARF since GCC r224161.  */
13880       for (child_die = die->child;
13881            child_die != NULL && child_die->tag;
13882            child_die = sibling_die (child_die))
13883         process_die (child_die, cu);
13884       return;
13885     case PC_BOUNDS_INVALID:
13886       return;
13887     }
13888   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13889   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13890
13891   cu->builder->push_context (0, lowpc);
13892   if (die->child != NULL)
13893     {
13894       child_die = die->child;
13895       while (child_die && child_die->tag)
13896         {
13897           process_die (child_die, cu);
13898           child_die = sibling_die (child_die);
13899         }
13900     }
13901   inherit_abstract_dies (die, cu);
13902   struct context_stack cstk = cu->builder->pop_context ();
13903
13904   if (*cu->builder->get_local_symbols () != NULL
13905       || (*cu->builder->get_local_using_directives ()) != NULL)
13906     {
13907       struct block *block
13908         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13909                                      cstk.start_addr, highpc);
13910
13911       /* Note that recording ranges after traversing children, as we
13912          do here, means that recording a parent's ranges entails
13913          walking across all its children's ranges as they appear in
13914          the address map, which is quadratic behavior.
13915
13916          It would be nicer to record the parent's ranges before
13917          traversing its children, simply overriding whatever you find
13918          there.  But since we don't even decide whether to create a
13919          block until after we've traversed its children, that's hard
13920          to do.  */
13921       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13922     }
13923   *cu->builder->get_local_symbols () = cstk.locals;
13924   cu->builder->set_local_using_directives (cstk.local_using_directives);
13925 }
13926
13927 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13928
13929 static void
13930 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13931 {
13932   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13933   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13934   CORE_ADDR pc, baseaddr;
13935   struct attribute *attr;
13936   struct call_site *call_site, call_site_local;
13937   void **slot;
13938   int nparams;
13939   struct die_info *child_die;
13940
13941   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13942
13943   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13944   if (attr == NULL)
13945     {
13946       /* This was a pre-DWARF-5 GNU extension alias
13947          for DW_AT_call_return_pc.  */
13948       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13949     }
13950   if (!attr)
13951     {
13952       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13953                    "DIE %s [in module %s]"),
13954                  sect_offset_str (die->sect_off), objfile_name (objfile));
13955       return;
13956     }
13957   pc = attr_value_as_address (attr) + baseaddr;
13958   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13959
13960   if (cu->call_site_htab == NULL)
13961     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13962                                                NULL, &objfile->objfile_obstack,
13963                                                hashtab_obstack_allocate, NULL);
13964   call_site_local.pc = pc;
13965   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13966   if (*slot != NULL)
13967     {
13968       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13969                    "DIE %s [in module %s]"),
13970                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13971                  objfile_name (objfile));
13972       return;
13973     }
13974
13975   /* Count parameters at the caller.  */
13976
13977   nparams = 0;
13978   for (child_die = die->child; child_die && child_die->tag;
13979        child_die = sibling_die (child_die))
13980     {
13981       if (child_die->tag != DW_TAG_call_site_parameter
13982           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13983         {
13984           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13985                        "DW_TAG_call_site child DIE %s [in module %s]"),
13986                      child_die->tag, sect_offset_str (child_die->sect_off),
13987                      objfile_name (objfile));
13988           continue;
13989         }
13990
13991       nparams++;
13992     }
13993
13994   call_site
13995     = ((struct call_site *)
13996        obstack_alloc (&objfile->objfile_obstack,
13997                       sizeof (*call_site)
13998                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13999   *slot = call_site;
14000   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14001   call_site->pc = pc;
14002
14003   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14004       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14005     {
14006       struct die_info *func_die;
14007
14008       /* Skip also over DW_TAG_inlined_subroutine.  */
14009       for (func_die = die->parent;
14010            func_die && func_die->tag != DW_TAG_subprogram
14011            && func_die->tag != DW_TAG_subroutine_type;
14012            func_die = func_die->parent);
14013
14014       /* DW_AT_call_all_calls is a superset
14015          of DW_AT_call_all_tail_calls.  */
14016       if (func_die
14017           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14018           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14019           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14020           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14021         {
14022           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14023              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14024              both the initial caller containing the real return address PC and
14025              the final callee containing the current PC of a chain of tail
14026              calls do not need to have the tail call list complete.  But any
14027              function candidate for a virtual tail call frame searched via
14028              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14029              determined unambiguously.  */
14030         }
14031       else
14032         {
14033           struct type *func_type = NULL;
14034
14035           if (func_die)
14036             func_type = get_die_type (func_die, cu);
14037           if (func_type != NULL)
14038             {
14039               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14040
14041               /* Enlist this call site to the function.  */
14042               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14043               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14044             }
14045           else
14046             complaint (_("Cannot find function owning DW_TAG_call_site "
14047                          "DIE %s [in module %s]"),
14048                        sect_offset_str (die->sect_off), objfile_name (objfile));
14049         }
14050     }
14051
14052   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14053   if (attr == NULL)
14054     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14055   if (attr == NULL)
14056     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14057   if (attr == NULL)
14058     {
14059       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14060       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14061     }
14062   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14063   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14064     /* Keep NULL DWARF_BLOCK.  */;
14065   else if (attr_form_is_block (attr))
14066     {
14067       struct dwarf2_locexpr_baton *dlbaton;
14068
14069       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14070       dlbaton->data = DW_BLOCK (attr)->data;
14071       dlbaton->size = DW_BLOCK (attr)->size;
14072       dlbaton->per_cu = cu->per_cu;
14073
14074       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14075     }
14076   else if (attr_form_is_ref (attr))
14077     {
14078       struct dwarf2_cu *target_cu = cu;
14079       struct die_info *target_die;
14080
14081       target_die = follow_die_ref (die, attr, &target_cu);
14082       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14083       if (die_is_declaration (target_die, target_cu))
14084         {
14085           const char *target_physname;
14086
14087           /* Prefer the mangled name; otherwise compute the demangled one.  */
14088           target_physname = dw2_linkage_name (target_die, target_cu);
14089           if (target_physname == NULL)
14090             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14091           if (target_physname == NULL)
14092             complaint (_("DW_AT_call_target target DIE has invalid "
14093                          "physname, for referencing DIE %s [in module %s]"),
14094                        sect_offset_str (die->sect_off), objfile_name (objfile));
14095           else
14096             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14097         }
14098       else
14099         {
14100           CORE_ADDR lowpc;
14101
14102           /* DW_AT_entry_pc should be preferred.  */
14103           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14104               <= PC_BOUNDS_INVALID)
14105             complaint (_("DW_AT_call_target target DIE has invalid "
14106                          "low pc, for referencing DIE %s [in module %s]"),
14107                        sect_offset_str (die->sect_off), objfile_name (objfile));
14108           else
14109             {
14110               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14111               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14112             }
14113         }
14114     }
14115   else
14116     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14117                  "block nor reference, for DIE %s [in module %s]"),
14118                sect_offset_str (die->sect_off), objfile_name (objfile));
14119
14120   call_site->per_cu = cu->per_cu;
14121
14122   for (child_die = die->child;
14123        child_die && child_die->tag;
14124        child_die = sibling_die (child_die))
14125     {
14126       struct call_site_parameter *parameter;
14127       struct attribute *loc, *origin;
14128
14129       if (child_die->tag != DW_TAG_call_site_parameter
14130           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14131         {
14132           /* Already printed the complaint above.  */
14133           continue;
14134         }
14135
14136       gdb_assert (call_site->parameter_count < nparams);
14137       parameter = &call_site->parameter[call_site->parameter_count];
14138
14139       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14140          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14141          register is contained in DW_AT_call_value.  */
14142
14143       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14144       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14145       if (origin == NULL)
14146         {
14147           /* This was a pre-DWARF-5 GNU extension alias
14148              for DW_AT_call_parameter.  */
14149           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14150         }
14151       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14152         {
14153           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14154
14155           sect_offset sect_off
14156             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14157           if (!offset_in_cu_p (&cu->header, sect_off))
14158             {
14159               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14160                  binding can be done only inside one CU.  Such referenced DIE
14161                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14162               complaint (_("DW_AT_call_parameter offset is not in CU for "
14163                            "DW_TAG_call_site child DIE %s [in module %s]"),
14164                          sect_offset_str (child_die->sect_off),
14165                          objfile_name (objfile));
14166               continue;
14167             }
14168           parameter->u.param_cu_off
14169             = (cu_offset) (sect_off - cu->header.sect_off);
14170         }
14171       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14172         {
14173           complaint (_("No DW_FORM_block* DW_AT_location for "
14174                        "DW_TAG_call_site child DIE %s [in module %s]"),
14175                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14176           continue;
14177         }
14178       else
14179         {
14180           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14181             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14182           if (parameter->u.dwarf_reg != -1)
14183             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14184           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14185                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14186                                              &parameter->u.fb_offset))
14187             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14188           else
14189             {
14190               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14191                            "for DW_FORM_block* DW_AT_location is supported for "
14192                            "DW_TAG_call_site child DIE %s "
14193                            "[in module %s]"),
14194                          sect_offset_str (child_die->sect_off),
14195                          objfile_name (objfile));
14196               continue;
14197             }
14198         }
14199
14200       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14201       if (attr == NULL)
14202         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14203       if (!attr_form_is_block (attr))
14204         {
14205           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14206                        "DW_TAG_call_site child DIE %s [in module %s]"),
14207                      sect_offset_str (child_die->sect_off),
14208                      objfile_name (objfile));
14209           continue;
14210         }
14211       parameter->value = DW_BLOCK (attr)->data;
14212       parameter->value_size = DW_BLOCK (attr)->size;
14213
14214       /* Parameters are not pre-cleared by memset above.  */
14215       parameter->data_value = NULL;
14216       parameter->data_value_size = 0;
14217       call_site->parameter_count++;
14218
14219       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14220       if (attr == NULL)
14221         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14222       if (attr)
14223         {
14224           if (!attr_form_is_block (attr))
14225             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14226                          "DW_TAG_call_site child DIE %s [in module %s]"),
14227                        sect_offset_str (child_die->sect_off),
14228                        objfile_name (objfile));
14229           else
14230             {
14231               parameter->data_value = DW_BLOCK (attr)->data;
14232               parameter->data_value_size = DW_BLOCK (attr)->size;
14233             }
14234         }
14235     }
14236 }
14237
14238 /* Helper function for read_variable.  If DIE represents a virtual
14239    table, then return the type of the concrete object that is
14240    associated with the virtual table.  Otherwise, return NULL.  */
14241
14242 static struct type *
14243 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14244 {
14245   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14246   if (attr == NULL)
14247     return NULL;
14248
14249   /* Find the type DIE.  */
14250   struct die_info *type_die = NULL;
14251   struct dwarf2_cu *type_cu = cu;
14252
14253   if (attr_form_is_ref (attr))
14254     type_die = follow_die_ref (die, attr, &type_cu);
14255   if (type_die == NULL)
14256     return NULL;
14257
14258   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14259     return NULL;
14260   return die_containing_type (type_die, type_cu);
14261 }
14262
14263 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14264
14265 static void
14266 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14267 {
14268   struct rust_vtable_symbol *storage = NULL;
14269
14270   if (cu->language == language_rust)
14271     {
14272       struct type *containing_type = rust_containing_type (die, cu);
14273
14274       if (containing_type != NULL)
14275         {
14276           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14277
14278           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14279                                     struct rust_vtable_symbol);
14280           initialize_objfile_symbol (storage);
14281           storage->concrete_type = containing_type;
14282           storage->subclass = SYMBOL_RUST_VTABLE;
14283         }
14284     }
14285
14286   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
14907     {
14908       /* For other non-GCC compilers, expect their behavior is DWARF version
14909          compliant.  */
14910     }
14911
14912   cu->checked_producer = 1;
14913 }
14914
14915 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14916    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14917    during 4.6.0 experimental.  */
14918
14919 static int
14920 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14921 {
14922   if (!cu->checked_producer)
14923     check_producer (cu);
14924
14925   return cu->producer_is_gxx_lt_4_6;
14926 }
14927
14928 /* Return the default accessibility type if it is not overriden by
14929    DW_AT_accessibility.  */
14930
14931 static enum dwarf_access_attribute
14932 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14933 {
14934   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14935     {
14936       /* The default DWARF 2 accessibility for members is public, the default
14937          accessibility for inheritance is private.  */
14938
14939       if (die->tag != DW_TAG_inheritance)
14940         return DW_ACCESS_public;
14941       else
14942         return DW_ACCESS_private;
14943     }
14944   else
14945     {
14946       /* DWARF 3+ defines the default accessibility a different way.  The same
14947          rules apply now for DW_TAG_inheritance as for the members and it only
14948          depends on the container kind.  */
14949
14950       if (die->parent->tag == DW_TAG_class_type)
14951         return DW_ACCESS_private;
14952       else
14953         return DW_ACCESS_public;
14954     }
14955 }
14956
14957 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14958    offset.  If the attribute was not found return 0, otherwise return
14959    1.  If it was found but could not properly be handled, set *OFFSET
14960    to 0.  */
14961
14962 static int
14963 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14964                              LONGEST *offset)
14965 {
14966   struct attribute *attr;
14967
14968   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14969   if (attr != NULL)
14970     {
14971       *offset = 0;
14972
14973       /* Note that we do not check for a section offset first here.
14974          This is because DW_AT_data_member_location is new in DWARF 4,
14975          so if we see it, we can assume that a constant form is really
14976          a constant and not a section offset.  */
14977       if (attr_form_is_constant (attr))
14978         *offset = dwarf2_get_attr_constant_value (attr, 0);
14979       else if (attr_form_is_section_offset (attr))
14980         dwarf2_complex_location_expr_complaint ();
14981       else if (attr_form_is_block (attr))
14982         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14983       else
14984         dwarf2_complex_location_expr_complaint ();
14985
14986       return 1;
14987     }
14988
14989   return 0;
14990 }
14991
14992 /* Add an aggregate field to the field list.  */
14993
14994 static void
14995 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14996                   struct dwarf2_cu *cu)
14997 {
14998   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14999   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15000   struct nextfield *new_field;
15001   struct attribute *attr;
15002   struct field *fp;
15003   const char *fieldname = "";
15004
15005   if (die->tag == DW_TAG_inheritance)
15006     {
15007       fip->baseclasses.emplace_back ();
15008       new_field = &fip->baseclasses.back ();
15009     }
15010   else
15011     {
15012       fip->fields.emplace_back ();
15013       new_field = &fip->fields.back ();
15014     }
15015
15016   fip->nfields++;
15017
15018   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15019   if (attr)
15020     new_field->accessibility = DW_UNSND (attr);
15021   else
15022     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15023   if (new_field->accessibility != DW_ACCESS_public)
15024     fip->non_public_fields = 1;
15025
15026   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15027   if (attr)
15028     new_field->virtuality = DW_UNSND (attr);
15029   else
15030     new_field->virtuality = DW_VIRTUALITY_none;
15031
15032   fp = &new_field->field;
15033
15034   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15035     {
15036       LONGEST offset;
15037
15038       /* Data member other than a C++ static data member.  */
15039
15040       /* Get type of field.  */
15041       fp->type = die_type (die, cu);
15042
15043       SET_FIELD_BITPOS (*fp, 0);
15044
15045       /* Get bit size of field (zero if none).  */
15046       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15047       if (attr)
15048         {
15049           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15050         }
15051       else
15052         {
15053           FIELD_BITSIZE (*fp) = 0;
15054         }
15055
15056       /* Get bit offset of field.  */
15057       if (handle_data_member_location (die, cu, &offset))
15058         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15059       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15060       if (attr)
15061         {
15062           if (gdbarch_bits_big_endian (gdbarch))
15063             {
15064               /* For big endian bits, the DW_AT_bit_offset gives the
15065                  additional bit offset from the MSB of the containing
15066                  anonymous object to the MSB of the field.  We don't
15067                  have to do anything special since we don't need to
15068                  know the size of the anonymous object.  */
15069               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15070             }
15071           else
15072             {
15073               /* For little endian bits, compute the bit offset to the
15074                  MSB of the anonymous object, subtract off the number of
15075                  bits from the MSB of the field to the MSB of the
15076                  object, and then subtract off the number of bits of
15077                  the field itself.  The result is the bit offset of
15078                  the LSB of the field.  */
15079               int anonymous_size;
15080               int bit_offset = DW_UNSND (attr);
15081
15082               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15083               if (attr)
15084                 {
15085                   /* The size of the anonymous object containing
15086                      the bit field is explicit, so use the
15087                      indicated size (in bytes).  */
15088                   anonymous_size = DW_UNSND (attr);
15089                 }
15090               else
15091                 {
15092                   /* The size of the anonymous object containing
15093                      the bit field must be inferred from the type
15094                      attribute of the data member containing the
15095                      bit field.  */
15096                   anonymous_size = TYPE_LENGTH (fp->type);
15097                 }
15098               SET_FIELD_BITPOS (*fp,
15099                                 (FIELD_BITPOS (*fp)
15100                                  + anonymous_size * bits_per_byte
15101                                  - bit_offset - FIELD_BITSIZE (*fp)));
15102             }
15103         }
15104       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15105       if (attr != NULL)
15106         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15107                                 + dwarf2_get_attr_constant_value (attr, 0)));
15108
15109       /* Get name of field.  */
15110       fieldname = dwarf2_name (die, cu);
15111       if (fieldname == NULL)
15112         fieldname = "";
15113
15114       /* The name is already allocated along with this objfile, so we don't
15115          need to duplicate it for the type.  */
15116       fp->name = fieldname;
15117
15118       /* Change accessibility for artificial fields (e.g. virtual table
15119          pointer or virtual base class pointer) to private.  */
15120       if (dwarf2_attr (die, DW_AT_artificial, cu))
15121         {
15122           FIELD_ARTIFICIAL (*fp) = 1;
15123           new_field->accessibility = DW_ACCESS_private;
15124           fip->non_public_fields = 1;
15125         }
15126     }
15127   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15128     {
15129       /* C++ static member.  */
15130
15131       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15132          is a declaration, but all versions of G++ as of this writing
15133          (so through at least 3.2.1) incorrectly generate
15134          DW_TAG_variable tags.  */
15135
15136       const char *physname;
15137
15138       /* Get name of field.  */
15139       fieldname = dwarf2_name (die, cu);
15140       if (fieldname == NULL)
15141         return;
15142
15143       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15144       if (attr
15145           /* Only create a symbol if this is an external value.
15146              new_symbol checks this and puts the value in the global symbol
15147              table, which we want.  If it is not external, new_symbol
15148              will try to put the value in cu->list_in_scope which is wrong.  */
15149           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15150         {
15151           /* A static const member, not much different than an enum as far as
15152              we're concerned, except that we can support more types.  */
15153           new_symbol (die, NULL, cu);
15154         }
15155
15156       /* Get physical name.  */
15157       physname = dwarf2_physname (fieldname, die, cu);
15158
15159       /* The name is already allocated along with this objfile, so we don't
15160          need to duplicate it for the type.  */
15161       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15162       FIELD_TYPE (*fp) = die_type (die, cu);
15163       FIELD_NAME (*fp) = fieldname;
15164     }
15165   else if (die->tag == DW_TAG_inheritance)
15166     {
15167       LONGEST offset;
15168
15169       /* C++ base class field.  */
15170       if (handle_data_member_location (die, cu, &offset))
15171         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15172       FIELD_BITSIZE (*fp) = 0;
15173       FIELD_TYPE (*fp) = die_type (die, cu);
15174       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15175     }
15176   else if (die->tag == DW_TAG_variant_part)
15177     {
15178       /* process_structure_scope will treat this DIE as a union.  */
15179       process_structure_scope (die, cu);
15180
15181       /* The variant part is relative to the start of the enclosing
15182          structure.  */
15183       SET_FIELD_BITPOS (*fp, 0);
15184       fp->type = get_die_type (die, cu);
15185       fp->artificial = 1;
15186       fp->name = "<<variant>>";
15187
15188       /* Normally a DW_TAG_variant_part won't have a size, but our
15189          representation requires one, so set it to the maximum of the
15190          child sizes.  */
15191       if (TYPE_LENGTH (fp->type) == 0)
15192         {
15193           unsigned max = 0;
15194           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15195             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15196               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15197           TYPE_LENGTH (fp->type) = max;
15198         }
15199     }
15200   else
15201     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15202 }
15203
15204 /* Can the type given by DIE define another type?  */
15205
15206 static bool
15207 type_can_define_types (const struct die_info *die)
15208 {
15209   switch (die->tag)
15210     {
15211     case DW_TAG_typedef:
15212     case DW_TAG_class_type:
15213     case DW_TAG_structure_type:
15214     case DW_TAG_union_type:
15215     case DW_TAG_enumeration_type:
15216       return true;
15217
15218     default:
15219       return false;
15220     }
15221 }
15222
15223 /* Add a type definition defined in the scope of the FIP's class.  */
15224
15225 static void
15226 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15227                       struct dwarf2_cu *cu)
15228 {
15229   struct decl_field fp;
15230   memset (&fp, 0, sizeof (fp));
15231
15232   gdb_assert (type_can_define_types (die));
15233
15234   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15235   fp.name = dwarf2_name (die, cu);
15236   fp.type = read_type_die (die, cu);
15237
15238   /* Save accessibility.  */
15239   enum dwarf_access_attribute accessibility;
15240   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15241   if (attr != NULL)
15242     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15243   else
15244     accessibility = dwarf2_default_access_attribute (die, cu);
15245   switch (accessibility)
15246     {
15247     case DW_ACCESS_public:
15248       /* The assumed value if neither private nor protected.  */
15249       break;
15250     case DW_ACCESS_private:
15251       fp.is_private = 1;
15252       break;
15253     case DW_ACCESS_protected:
15254       fp.is_protected = 1;
15255       break;
15256     default:
15257       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15258     }
15259
15260   if (die->tag == DW_TAG_typedef)
15261     fip->typedef_field_list.push_back (fp);
15262   else
15263     fip->nested_types_list.push_back (fp);
15264 }
15265
15266 /* Create the vector of fields, and attach it to the type.  */
15267
15268 static void
15269 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15270                               struct dwarf2_cu *cu)
15271 {
15272   int nfields = fip->nfields;
15273
15274   /* Record the field count, allocate space for the array of fields,
15275      and create blank accessibility bitfields if necessary.  */
15276   TYPE_NFIELDS (type) = nfields;
15277   TYPE_FIELDS (type) = (struct field *)
15278     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15279
15280   if (fip->non_public_fields && cu->language != language_ada)
15281     {
15282       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15283
15284       TYPE_FIELD_PRIVATE_BITS (type) =
15285         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15286       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15287
15288       TYPE_FIELD_PROTECTED_BITS (type) =
15289         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15290       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15291
15292       TYPE_FIELD_IGNORE_BITS (type) =
15293         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15294       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15295     }
15296
15297   /* If the type has baseclasses, allocate and clear a bit vector for
15298      TYPE_FIELD_VIRTUAL_BITS.  */
15299   if (!fip->baseclasses.empty () && cu->language != language_ada)
15300     {
15301       int num_bytes = B_BYTES (fip->baseclasses.size ());
15302       unsigned char *pointer;
15303
15304       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15305       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15306       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15307       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15308       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15309     }
15310
15311   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15312     {
15313       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15314
15315       for (int index = 0; index < nfields; ++index)
15316         {
15317           struct nextfield &field = fip->fields[index];
15318
15319           if (field.variant.is_discriminant)
15320             di->discriminant_index = index;
15321           else if (field.variant.default_branch)
15322             di->default_index = index;
15323           else
15324             di->discriminants[index] = field.variant.discriminant_value;
15325         }
15326     }
15327
15328   /* Copy the saved-up fields into the field vector.  */
15329   for (int i = 0; i < nfields; ++i)
15330     {
15331       struct nextfield &field
15332         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15333            : fip->fields[i - fip->baseclasses.size ()]);
15334
15335       TYPE_FIELD (type, i) = field.field;
15336       switch (field.accessibility)
15337         {
15338         case DW_ACCESS_private:
15339           if (cu->language != language_ada)
15340             SET_TYPE_FIELD_PRIVATE (type, i);
15341           break;
15342
15343         case DW_ACCESS_protected:
15344           if (cu->language != language_ada)
15345             SET_TYPE_FIELD_PROTECTED (type, i);
15346           break;
15347
15348         case DW_ACCESS_public:
15349           break;
15350
15351         default:
15352           /* Unknown accessibility.  Complain and treat it as public.  */
15353           {
15354             complaint (_("unsupported accessibility %d"),
15355                        field.accessibility);
15356           }
15357           break;
15358         }
15359       if (i < fip->baseclasses.size ())
15360         {
15361           switch (field.virtuality)
15362             {
15363             case DW_VIRTUALITY_virtual:
15364             case DW_VIRTUALITY_pure_virtual:
15365               if (cu->language == language_ada)
15366                 error (_("unexpected virtuality in component of Ada type"));
15367               SET_TYPE_FIELD_VIRTUAL (type, i);
15368               break;
15369             }
15370         }
15371     }
15372 }
15373
15374 /* Return true if this member function is a constructor, false
15375    otherwise.  */
15376
15377 static int
15378 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15379 {
15380   const char *fieldname;
15381   const char *type_name;
15382   int len;
15383
15384   if (die->parent == NULL)
15385     return 0;
15386
15387   if (die->parent->tag != DW_TAG_structure_type
15388       && die->parent->tag != DW_TAG_union_type
15389       && die->parent->tag != DW_TAG_class_type)
15390     return 0;
15391
15392   fieldname = dwarf2_name (die, cu);
15393   type_name = dwarf2_name (die->parent, cu);
15394   if (fieldname == NULL || type_name == NULL)
15395     return 0;
15396
15397   len = strlen (fieldname);
15398   return (strncmp (fieldname, type_name, len) == 0
15399           && (type_name[len] == '\0' || type_name[len] == '<'));
15400 }
15401
15402 /* Add a member function to the proper fieldlist.  */
15403
15404 static void
15405 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15406                       struct type *type, struct dwarf2_cu *cu)
15407 {
15408   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15409   struct attribute *attr;
15410   int i;
15411   struct fnfieldlist *flp = nullptr;
15412   struct fn_field *fnp;
15413   const char *fieldname;
15414   struct type *this_type;
15415   enum dwarf_access_attribute accessibility;
15416
15417   if (cu->language == language_ada)
15418     error (_("unexpected member function in Ada type"));
15419
15420   /* Get name of member function.  */
15421   fieldname = dwarf2_name (die, cu);
15422   if (fieldname == NULL)
15423     return;
15424
15425   /* Look up member function name in fieldlist.  */
15426   for (i = 0; i < fip->fnfieldlists.size (); i++)
15427     {
15428       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15429         {
15430           flp = &fip->fnfieldlists[i];
15431           break;
15432         }
15433     }
15434
15435   /* Create a new fnfieldlist if necessary.  */
15436   if (flp == nullptr)
15437     {
15438       fip->fnfieldlists.emplace_back ();
15439       flp = &fip->fnfieldlists.back ();
15440       flp->name = fieldname;
15441       i = fip->fnfieldlists.size () - 1;
15442     }
15443
15444   /* Create a new member function field and add it to the vector of
15445      fnfieldlists.  */
15446   flp->fnfields.emplace_back ();
15447   fnp = &flp->fnfields.back ();
15448
15449   /* Delay processing of the physname until later.  */
15450   if (cu->language == language_cplus)
15451     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15452                         die, cu);
15453   else
15454     {
15455       const char *physname = dwarf2_physname (fieldname, die, cu);
15456       fnp->physname = physname ? physname : "";
15457     }
15458
15459   fnp->type = alloc_type (objfile);
15460   this_type = read_type_die (die, cu);
15461   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15462     {
15463       int nparams = TYPE_NFIELDS (this_type);
15464
15465       /* TYPE is the domain of this method, and THIS_TYPE is the type
15466            of the method itself (TYPE_CODE_METHOD).  */
15467       smash_to_method_type (fnp->type, type,
15468                             TYPE_TARGET_TYPE (this_type),
15469                             TYPE_FIELDS (this_type),
15470                             TYPE_NFIELDS (this_type),
15471                             TYPE_VARARGS (this_type));
15472
15473       /* Handle static member functions.
15474          Dwarf2 has no clean way to discern C++ static and non-static
15475          member functions.  G++ helps GDB by marking the first
15476          parameter for non-static member functions (which is the this
15477          pointer) as artificial.  We obtain this information from
15478          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15479       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15480         fnp->voffset = VOFFSET_STATIC;
15481     }
15482   else
15483     complaint (_("member function type missing for '%s'"),
15484                dwarf2_full_name (fieldname, die, cu));
15485
15486   /* Get fcontext from DW_AT_containing_type if present.  */
15487   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15488     fnp->fcontext = die_containing_type (die, cu);
15489
15490   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15491      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15492
15493   /* Get accessibility.  */
15494   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15495   if (attr)
15496     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15497   else
15498     accessibility = dwarf2_default_access_attribute (die, cu);
15499   switch (accessibility)
15500     {
15501     case DW_ACCESS_private:
15502       fnp->is_private = 1;
15503       break;
15504     case DW_ACCESS_protected:
15505       fnp->is_protected = 1;
15506       break;
15507     }
15508
15509   /* Check for artificial methods.  */
15510   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15511   if (attr && DW_UNSND (attr) != 0)
15512     fnp->is_artificial = 1;
15513
15514   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15515
15516   /* Get index in virtual function table if it is a virtual member
15517      function.  For older versions of GCC, this is an offset in the
15518      appropriate virtual table, as specified by DW_AT_containing_type.
15519      For everyone else, it is an expression to be evaluated relative
15520      to the object address.  */
15521
15522   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15523   if (attr)
15524     {
15525       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15526         {
15527           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15528             {
15529               /* Old-style GCC.  */
15530               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15531             }
15532           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15533                    || (DW_BLOCK (attr)->size > 1
15534                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15535                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15536             {
15537               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15538               if ((fnp->voffset % cu->header.addr_size) != 0)
15539                 dwarf2_complex_location_expr_complaint ();
15540               else
15541                 fnp->voffset /= cu->header.addr_size;
15542               fnp->voffset += 2;
15543             }
15544           else
15545             dwarf2_complex_location_expr_complaint ();
15546
15547           if (!fnp->fcontext)
15548             {
15549               /* If there is no `this' field and no DW_AT_containing_type,
15550                  we cannot actually find a base class context for the
15551                  vtable!  */
15552               if (TYPE_NFIELDS (this_type) == 0
15553                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15554                 {
15555                   complaint (_("cannot determine context for virtual member "
15556                                "function \"%s\" (offset %s)"),
15557                              fieldname, sect_offset_str (die->sect_off));
15558                 }
15559               else
15560                 {
15561                   fnp->fcontext
15562                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15563                 }
15564             }
15565         }
15566       else if (attr_form_is_section_offset (attr))
15567         {
15568           dwarf2_complex_location_expr_complaint ();
15569         }
15570       else
15571         {
15572           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15573                                                  fieldname);
15574         }
15575     }
15576   else
15577     {
15578       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15579       if (attr && DW_UNSND (attr))
15580         {
15581           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15582           complaint (_("Member function \"%s\" (offset %s) is virtual "
15583                        "but the vtable offset is not specified"),
15584                      fieldname, sect_offset_str (die->sect_off));
15585           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15586           TYPE_CPLUS_DYNAMIC (type) = 1;
15587         }
15588     }
15589 }
15590
15591 /* Create the vector of member function fields, and attach it to the type.  */
15592
15593 static void
15594 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15595                                  struct dwarf2_cu *cu)
15596 {
15597   if (cu->language == language_ada)
15598     error (_("unexpected member functions in Ada type"));
15599
15600   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15601   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15602     TYPE_ALLOC (type,
15603                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15604
15605   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15606     {
15607       struct fnfieldlist &nf = fip->fnfieldlists[i];
15608       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15609
15610       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15611       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15612       fn_flp->fn_fields = (struct fn_field *)
15613         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15614
15615       for (int k = 0; k < nf.fnfields.size (); ++k)
15616         fn_flp->fn_fields[k] = nf.fnfields[k];
15617     }
15618
15619   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15620 }
15621
15622 /* Returns non-zero if NAME is the name of a vtable member in CU's
15623    language, zero otherwise.  */
15624 static int
15625 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15626 {
15627   static const char vptr[] = "_vptr";
15628
15629   /* Look for the C++ form of the vtable.  */
15630   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15631     return 1;
15632
15633   return 0;
15634 }
15635
15636 /* GCC outputs unnamed structures that are really pointers to member
15637    functions, with the ABI-specified layout.  If TYPE describes
15638    such a structure, smash it into a member function type.
15639
15640    GCC shouldn't do this; it should just output pointer to member DIEs.
15641    This is GCC PR debug/28767.  */
15642
15643 static void
15644 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15645 {
15646   struct type *pfn_type, *self_type, *new_type;
15647
15648   /* Check for a structure with no name and two children.  */
15649   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15650     return;
15651
15652   /* Check for __pfn and __delta members.  */
15653   if (TYPE_FIELD_NAME (type, 0) == NULL
15654       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15655       || TYPE_FIELD_NAME (type, 1) == NULL
15656       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15657     return;
15658
15659   /* Find the type of the method.  */
15660   pfn_type = TYPE_FIELD_TYPE (type, 0);
15661   if (pfn_type == NULL
15662       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15663       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15664     return;
15665
15666   /* Look for the "this" argument.  */
15667   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15668   if (TYPE_NFIELDS (pfn_type) == 0
15669       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15670       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15671     return;
15672
15673   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15674   new_type = alloc_type (objfile);
15675   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15676                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15677                         TYPE_VARARGS (pfn_type));
15678   smash_to_methodptr_type (type, new_type);
15679 }
15680
15681 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15682    appropriate error checking and issuing complaints if there is a
15683    problem.  */
15684
15685 static ULONGEST
15686 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15687 {
15688   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15689
15690   if (attr == nullptr)
15691     return 0;
15692
15693   if (!attr_form_is_constant (attr))
15694     {
15695       complaint (_("DW_AT_alignment must have constant form"
15696                    " - DIE at %s [in module %s]"),
15697                  sect_offset_str (die->sect_off),
15698                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15699       return 0;
15700     }
15701
15702   ULONGEST align;
15703   if (attr->form == DW_FORM_sdata)
15704     {
15705       LONGEST val = DW_SND (attr);
15706       if (val < 0)
15707         {
15708           complaint (_("DW_AT_alignment value must not be negative"
15709                        " - DIE at %s [in module %s]"),
15710                      sect_offset_str (die->sect_off),
15711                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15712           return 0;
15713         }
15714       align = val;
15715     }
15716   else
15717     align = DW_UNSND (attr);
15718
15719   if (align == 0)
15720     {
15721       complaint (_("DW_AT_alignment value must not be zero"
15722                    " - DIE at %s [in module %s]"),
15723                  sect_offset_str (die->sect_off),
15724                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15725       return 0;
15726     }
15727   if ((align & (align - 1)) != 0)
15728     {
15729       complaint (_("DW_AT_alignment value must be a power of 2"
15730                    " - DIE at %s [in module %s]"),
15731                  sect_offset_str (die->sect_off),
15732                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15733       return 0;
15734     }
15735
15736   return align;
15737 }
15738
15739 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15740    the alignment for TYPE.  */
15741
15742 static void
15743 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15744                      struct type *type)
15745 {
15746   if (!set_type_align (type, get_alignment (cu, die)))
15747     complaint (_("DW_AT_alignment value too large"
15748                  " - DIE at %s [in module %s]"),
15749                sect_offset_str (die->sect_off),
15750                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15751 }
15752
15753 /* Called when we find the DIE that starts a structure or union scope
15754    (definition) to create a type for the structure or union.  Fill in
15755    the type's name and general properties; the members will not be
15756    processed until process_structure_scope.  A symbol table entry for
15757    the type will also not be done until process_structure_scope (assuming
15758    the type has a name).
15759
15760    NOTE: we need to call these functions regardless of whether or not the
15761    DIE has a DW_AT_name attribute, since it might be an anonymous
15762    structure or union.  This gets the type entered into our set of
15763    user defined types.  */
15764
15765 static struct type *
15766 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15767 {
15768   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15769   struct type *type;
15770   struct attribute *attr;
15771   const char *name;
15772
15773   /* If the definition of this type lives in .debug_types, read that type.
15774      Don't follow DW_AT_specification though, that will take us back up
15775      the chain and we want to go down.  */
15776   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15777   if (attr)
15778     {
15779       type = get_DW_AT_signature_type (die, attr, cu);
15780
15781       /* The type's CU may not be the same as CU.
15782          Ensure TYPE is recorded with CU in die_type_hash.  */
15783       return set_die_type (die, type, cu);
15784     }
15785
15786   type = alloc_type (objfile);
15787   INIT_CPLUS_SPECIFIC (type);
15788
15789   name = dwarf2_name (die, cu);
15790   if (name != NULL)
15791     {
15792       if (cu->language == language_cplus
15793           || cu->language == language_d
15794           || cu->language == language_rust)
15795         {
15796           const char *full_name = dwarf2_full_name (name, die, cu);
15797
15798           /* dwarf2_full_name might have already finished building the DIE's
15799              type.  If so, there is no need to continue.  */
15800           if (get_die_type (die, cu) != NULL)
15801             return get_die_type (die, cu);
15802
15803           TYPE_NAME (type) = full_name;
15804         }
15805       else
15806         {
15807           /* The name is already allocated along with this objfile, so
15808              we don't need to duplicate it for the type.  */
15809           TYPE_NAME (type) = name;
15810         }
15811     }
15812
15813   if (die->tag == DW_TAG_structure_type)
15814     {
15815       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15816     }
15817   else if (die->tag == DW_TAG_union_type)
15818     {
15819       TYPE_CODE (type) = TYPE_CODE_UNION;
15820     }
15821   else if (die->tag == DW_TAG_variant_part)
15822     {
15823       TYPE_CODE (type) = TYPE_CODE_UNION;
15824       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15825     }
15826   else
15827     {
15828       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15829     }
15830
15831   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15832     TYPE_DECLARED_CLASS (type) = 1;
15833
15834   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15835   if (attr)
15836     {
15837       if (attr_form_is_constant (attr))
15838         TYPE_LENGTH (type) = DW_UNSND (attr);
15839       else
15840         {
15841           /* For the moment, dynamic type sizes are not supported
15842              by GDB's struct type.  The actual size is determined
15843              on-demand when resolving the type of a given object,
15844              so set the type's length to zero for now.  Otherwise,
15845              we record an expression as the length, and that expression
15846              could lead to a very large value, which could eventually
15847              lead to us trying to allocate that much memory when creating
15848              a value of that type.  */
15849           TYPE_LENGTH (type) = 0;
15850         }
15851     }
15852   else
15853     {
15854       TYPE_LENGTH (type) = 0;
15855     }
15856
15857   maybe_set_alignment (cu, die, type);
15858
15859   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15860     {
15861       /* ICC<14 does not output the required DW_AT_declaration on
15862          incomplete types, but gives them a size of zero.  */
15863       TYPE_STUB (type) = 1;
15864     }
15865   else
15866     TYPE_STUB_SUPPORTED (type) = 1;
15867
15868   if (die_is_declaration (die, cu))
15869     TYPE_STUB (type) = 1;
15870   else if (attr == NULL && die->child == NULL
15871            && producer_is_realview (cu->producer))
15872     /* RealView does not output the required DW_AT_declaration
15873        on incomplete types.  */
15874     TYPE_STUB (type) = 1;
15875
15876   /* We need to add the type field to the die immediately so we don't
15877      infinitely recurse when dealing with pointers to the structure
15878      type within the structure itself.  */
15879   set_die_type (die, type, cu);
15880
15881   /* set_die_type should be already done.  */
15882   set_descriptive_type (type, die, cu);
15883
15884   return type;
15885 }
15886
15887 /* A helper for process_structure_scope that handles a single member
15888    DIE.  */
15889
15890 static void
15891 handle_struct_member_die (struct die_info *child_die, struct type *type,
15892                           struct field_info *fi,
15893                           std::vector<struct symbol *> *template_args,
15894                           struct dwarf2_cu *cu)
15895 {
15896   if (child_die->tag == DW_TAG_member
15897       || child_die->tag == DW_TAG_variable
15898       || child_die->tag == DW_TAG_variant_part)
15899     {
15900       /* NOTE: carlton/2002-11-05: A C++ static data member
15901          should be a DW_TAG_member that is a declaration, but
15902          all versions of G++ as of this writing (so through at
15903          least 3.2.1) incorrectly generate DW_TAG_variable
15904          tags for them instead.  */
15905       dwarf2_add_field (fi, child_die, cu);
15906     }
15907   else if (child_die->tag == DW_TAG_subprogram)
15908     {
15909       /* Rust doesn't have member functions in the C++ sense.
15910          However, it does emit ordinary functions as children
15911          of a struct DIE.  */
15912       if (cu->language == language_rust)
15913         read_func_scope (child_die, cu);
15914       else
15915         {
15916           /* C++ member function.  */
15917           dwarf2_add_member_fn (fi, child_die, type, cu);
15918         }
15919     }
15920   else if (child_die->tag == DW_TAG_inheritance)
15921     {
15922       /* C++ base class field.  */
15923       dwarf2_add_field (fi, child_die, cu);
15924     }
15925   else if (type_can_define_types (child_die))
15926     dwarf2_add_type_defn (fi, child_die, cu);
15927   else if (child_die->tag == DW_TAG_template_type_param
15928            || child_die->tag == DW_TAG_template_value_param)
15929     {
15930       struct symbol *arg = new_symbol (child_die, NULL, cu);
15931
15932       if (arg != NULL)
15933         template_args->push_back (arg);
15934     }
15935   else if (child_die->tag == DW_TAG_variant)
15936     {
15937       /* In a variant we want to get the discriminant and also add a
15938          field for our sole member child.  */
15939       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15940
15941       for (struct die_info *variant_child = child_die->child;
15942            variant_child != NULL;
15943            variant_child = sibling_die (variant_child))
15944         {
15945           if (variant_child->tag == DW_TAG_member)
15946             {
15947               handle_struct_member_die (variant_child, type, fi,
15948                                         template_args, cu);
15949               /* Only handle the one.  */
15950               break;
15951             }
15952         }
15953
15954       /* We don't handle this but we might as well report it if we see
15955          it.  */
15956       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15957           complaint (_("DW_AT_discr_list is not supported yet"
15958                        " - DIE at %s [in module %s]"),
15959                      sect_offset_str (child_die->sect_off),
15960                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15961
15962       /* The first field was just added, so we can stash the
15963          discriminant there.  */
15964       gdb_assert (!fi->fields.empty ());
15965       if (discr == NULL)
15966         fi->fields.back ().variant.default_branch = true;
15967       else
15968         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15969     }
15970 }
15971
15972 /* Finish creating a structure or union type, including filling in
15973    its members and creating a symbol for it.  */
15974
15975 static void
15976 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15977 {
15978   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15979   struct die_info *child_die;
15980   struct type *type;
15981
15982   type = get_die_type (die, cu);
15983   if (type == NULL)
15984     type = read_structure_type (die, cu);
15985
15986   /* When reading a DW_TAG_variant_part, we need to notice when we
15987      read the discriminant member, so we can record it later in the
15988      discriminant_info.  */
15989   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15990   sect_offset discr_offset;
15991   bool has_template_parameters = false;
15992
15993   if (is_variant_part)
15994     {
15995       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15996       if (discr == NULL)
15997         {
15998           /* Maybe it's a univariant form, an extension we support.
15999              In this case arrange not to check the offset.  */
16000           is_variant_part = false;
16001         }
16002       else if (attr_form_is_ref (discr))
16003         {
16004           struct dwarf2_cu *target_cu = cu;
16005           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16006
16007           discr_offset = target_die->sect_off;
16008         }
16009       else
16010         {
16011           complaint (_("DW_AT_discr does not have DIE reference form"
16012                        " - DIE at %s [in module %s]"),
16013                      sect_offset_str (die->sect_off),
16014                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16015           is_variant_part = false;
16016         }
16017     }
16018
16019   if (die->child != NULL && ! die_is_declaration (die, cu))
16020     {
16021       struct field_info fi;
16022       std::vector<struct symbol *> template_args;
16023
16024       child_die = die->child;
16025
16026       while (child_die && child_die->tag)
16027         {
16028           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16029
16030           if (is_variant_part && discr_offset == child_die->sect_off)
16031             fi.fields.back ().variant.is_discriminant = true;
16032
16033           child_die = sibling_die (child_die);
16034         }
16035
16036       /* Attach template arguments to type.  */
16037       if (!template_args.empty ())
16038         {
16039           has_template_parameters = true;
16040           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16041           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16042           TYPE_TEMPLATE_ARGUMENTS (type)
16043             = XOBNEWVEC (&objfile->objfile_obstack,
16044                          struct symbol *,
16045                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16046           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16047                   template_args.data (),
16048                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16049                    * sizeof (struct symbol *)));
16050         }
16051
16052       /* Attach fields and member functions to the type.  */
16053       if (fi.nfields)
16054         dwarf2_attach_fields_to_type (&fi, type, cu);
16055       if (!fi.fnfieldlists.empty ())
16056         {
16057           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16058
16059           /* Get the type which refers to the base class (possibly this
16060              class itself) which contains the vtable pointer for the current
16061              class from the DW_AT_containing_type attribute.  This use of
16062              DW_AT_containing_type is a GNU extension.  */
16063
16064           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16065             {
16066               struct type *t = die_containing_type (die, cu);
16067
16068               set_type_vptr_basetype (type, t);
16069               if (type == t)
16070                 {
16071                   int i;
16072
16073                   /* Our own class provides vtbl ptr.  */
16074                   for (i = TYPE_NFIELDS (t) - 1;
16075                        i >= TYPE_N_BASECLASSES (t);
16076                        --i)
16077                     {
16078                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16079
16080                       if (is_vtable_name (fieldname, cu))
16081                         {
16082                           set_type_vptr_fieldno (type, i);
16083                           break;
16084                         }
16085                     }
16086
16087                   /* Complain if virtual function table field not found.  */
16088                   if (i < TYPE_N_BASECLASSES (t))
16089                     complaint (_("virtual function table pointer "
16090                                  "not found when defining class '%s'"),
16091                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16092                 }
16093               else
16094                 {
16095                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16096                 }
16097             }
16098           else if (cu->producer
16099                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16100             {
16101               /* The IBM XLC compiler does not provide direct indication
16102                  of the containing type, but the vtable pointer is
16103                  always named __vfp.  */
16104
16105               int i;
16106
16107               for (i = TYPE_NFIELDS (type) - 1;
16108                    i >= TYPE_N_BASECLASSES (type);
16109                    --i)
16110                 {
16111                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16112                     {
16113                       set_type_vptr_fieldno (type, i);
16114                       set_type_vptr_basetype (type, type);
16115                       break;
16116                     }
16117                 }
16118             }
16119         }
16120
16121       /* Copy fi.typedef_field_list linked list elements content into the
16122          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16123       if (!fi.typedef_field_list.empty ())
16124         {
16125           int count = fi.typedef_field_list.size ();
16126
16127           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16128           TYPE_TYPEDEF_FIELD_ARRAY (type)
16129             = ((struct decl_field *)
16130                TYPE_ALLOC (type,
16131                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16132           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16133
16134           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16135             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16136         }
16137
16138       /* Copy fi.nested_types_list linked list elements content into the
16139          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16140       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16141         {
16142           int count = fi.nested_types_list.size ();
16143
16144           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16145           TYPE_NESTED_TYPES_ARRAY (type)
16146             = ((struct decl_field *)
16147                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16148           TYPE_NESTED_TYPES_COUNT (type) = count;
16149
16150           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16151             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16152         }
16153     }
16154
16155   quirk_gcc_member_function_pointer (type, objfile);
16156   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16157     cu->rust_unions.push_back (type);
16158
16159   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16160      snapshots) has been known to create a die giving a declaration
16161      for a class that has, as a child, a die giving a definition for a
16162      nested class.  So we have to process our children even if the
16163      current die is a declaration.  Normally, of course, a declaration
16164      won't have any children at all.  */
16165
16166   child_die = die->child;
16167
16168   while (child_die != NULL && child_die->tag)
16169     {
16170       if (child_die->tag == DW_TAG_member
16171           || child_die->tag == DW_TAG_variable
16172           || child_die->tag == DW_TAG_inheritance
16173           || child_die->tag == DW_TAG_template_value_param
16174           || child_die->tag == DW_TAG_template_type_param)
16175         {
16176           /* Do nothing.  */
16177         }
16178       else
16179         process_die (child_die, cu);
16180
16181       child_die = sibling_die (child_die);
16182     }
16183
16184   /* Do not consider external references.  According to the DWARF standard,
16185      these DIEs are identified by the fact that they have no byte_size
16186      attribute, and a declaration attribute.  */
16187   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16188       || !die_is_declaration (die, cu))
16189     {
16190       struct symbol *sym = new_symbol (die, type, cu);
16191
16192       if (has_template_parameters)
16193         {
16194           /* Make sure that the symtab is set on the new symbols.
16195              Even though they don't appear in this symtab directly,
16196              other parts of gdb assume that symbols do, and this is
16197              reasonably true.  */
16198           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16199             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16200                                symbol_symtab (sym));
16201         }
16202     }
16203 }
16204
16205 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16206    update TYPE using some information only available in DIE's children.  */
16207
16208 static void
16209 update_enumeration_type_from_children (struct die_info *die,
16210                                        struct type *type,
16211                                        struct dwarf2_cu *cu)
16212 {
16213   struct die_info *child_die;
16214   int unsigned_enum = 1;
16215   int flag_enum = 1;
16216   ULONGEST mask = 0;
16217
16218   auto_obstack obstack;
16219
16220   for (child_die = die->child;
16221        child_die != NULL && child_die->tag;
16222        child_die = sibling_die (child_die))
16223     {
16224       struct attribute *attr;
16225       LONGEST value;
16226       const gdb_byte *bytes;
16227       struct dwarf2_locexpr_baton *baton;
16228       const char *name;
16229
16230       if (child_die->tag != DW_TAG_enumerator)
16231         continue;
16232
16233       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16234       if (attr == NULL)
16235         continue;
16236
16237       name = dwarf2_name (child_die, cu);
16238       if (name == NULL)
16239         name = "<anonymous enumerator>";
16240
16241       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16242                                &value, &bytes, &baton);
16243       if (value < 0)
16244         {
16245           unsigned_enum = 0;
16246           flag_enum = 0;
16247         }
16248       else if ((mask & value) != 0)
16249         flag_enum = 0;
16250       else
16251         mask |= value;
16252
16253       /* If we already know that the enum type is neither unsigned, nor
16254          a flag type, no need to look at the rest of the enumerates.  */
16255       if (!unsigned_enum && !flag_enum)
16256         break;
16257     }
16258
16259   if (unsigned_enum)
16260     TYPE_UNSIGNED (type) = 1;
16261   if (flag_enum)
16262     TYPE_FLAG_ENUM (type) = 1;
16263 }
16264
16265 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16266    complete the type's fields yet, or create any symbols.  */
16267
16268 static struct type *
16269 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16270 {
16271   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16272   struct type *type;
16273   struct attribute *attr;
16274   const char *name;
16275
16276   /* If the definition of this type lives in .debug_types, read that type.
16277      Don't follow DW_AT_specification though, that will take us back up
16278      the chain and we want to go down.  */
16279   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16280   if (attr)
16281     {
16282       type = get_DW_AT_signature_type (die, attr, cu);
16283
16284       /* The type's CU may not be the same as CU.
16285          Ensure TYPE is recorded with CU in die_type_hash.  */
16286       return set_die_type (die, type, cu);
16287     }
16288
16289   type = alloc_type (objfile);
16290
16291   TYPE_CODE (type) = TYPE_CODE_ENUM;
16292   name = dwarf2_full_name (NULL, die, cu);
16293   if (name != NULL)
16294     TYPE_NAME (type) = name;
16295
16296   attr = dwarf2_attr (die, DW_AT_type, cu);
16297   if (attr != NULL)
16298     {
16299       struct type *underlying_type = die_type (die, cu);
16300
16301       TYPE_TARGET_TYPE (type) = underlying_type;
16302     }
16303
16304   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16305   if (attr)
16306     {
16307       TYPE_LENGTH (type) = DW_UNSND (attr);
16308     }
16309   else
16310     {
16311       TYPE_LENGTH (type) = 0;
16312     }
16313
16314   maybe_set_alignment (cu, die, type);
16315
16316   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16317      declared as private in the package spec, and then defined only
16318      inside the package body.  Such types are known as Taft Amendment
16319      Types.  When another package uses such a type, an incomplete DIE
16320      may be generated by the compiler.  */
16321   if (die_is_declaration (die, cu))
16322     TYPE_STUB (type) = 1;
16323
16324   /* Finish the creation of this type by using the enum's children.
16325      We must call this even when the underlying type has been provided
16326      so that we can determine if we're looking at a "flag" enum.  */
16327   update_enumeration_type_from_children (die, type, cu);
16328
16329   /* If this type has an underlying type that is not a stub, then we
16330      may use its attributes.  We always use the "unsigned" attribute
16331      in this situation, because ordinarily we guess whether the type
16332      is unsigned -- but the guess can be wrong and the underlying type
16333      can tell us the reality.  However, we defer to a local size
16334      attribute if one exists, because this lets the compiler override
16335      the underlying type if needed.  */
16336   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16337     {
16338       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16339       if (TYPE_LENGTH (type) == 0)
16340         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16341       if (TYPE_RAW_ALIGN (type) == 0
16342           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16343         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16344     }
16345
16346   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16347
16348   return set_die_type (die, type, cu);
16349 }
16350
16351 /* Given a pointer to a die which begins an enumeration, process all
16352    the dies that define the members of the enumeration, and create the
16353    symbol for the enumeration type.
16354
16355    NOTE: We reverse the order of the element list.  */
16356
16357 static void
16358 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16359 {
16360   struct type *this_type;
16361
16362   this_type = get_die_type (die, cu);
16363   if (this_type == NULL)
16364     this_type = read_enumeration_type (die, cu);
16365
16366   if (die->child != NULL)
16367     {
16368       struct die_info *child_die;
16369       struct symbol *sym;
16370       struct field *fields = NULL;
16371       int num_fields = 0;
16372       const char *name;
16373
16374       child_die = die->child;
16375       while (child_die && child_die->tag)
16376         {
16377           if (child_die->tag != DW_TAG_enumerator)
16378             {
16379               process_die (child_die, cu);
16380             }
16381           else
16382             {
16383               name = dwarf2_name (child_die, cu);
16384               if (name)
16385                 {
16386                   sym = new_symbol (child_die, this_type, cu);
16387
16388                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16389                     {
16390                       fields = (struct field *)
16391                         xrealloc (fields,
16392                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16393                                   * sizeof (struct field));
16394                     }
16395
16396                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16397                   FIELD_TYPE (fields[num_fields]) = NULL;
16398                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16399                   FIELD_BITSIZE (fields[num_fields]) = 0;
16400
16401                   num_fields++;
16402                 }
16403             }
16404
16405           child_die = sibling_die (child_die);
16406         }
16407
16408       if (num_fields)
16409         {
16410           TYPE_NFIELDS (this_type) = num_fields;
16411           TYPE_FIELDS (this_type) = (struct field *)
16412             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16413           memcpy (TYPE_FIELDS (this_type), fields,
16414                   sizeof (struct field) * num_fields);
16415           xfree (fields);
16416         }
16417     }
16418
16419   /* If we are reading an enum from a .debug_types unit, and the enum
16420      is a declaration, and the enum is not the signatured type in the
16421      unit, then we do not want to add a symbol for it.  Adding a
16422      symbol would in some cases obscure the true definition of the
16423      enum, giving users an incomplete type when the definition is
16424      actually available.  Note that we do not want to do this for all
16425      enums which are just declarations, because C++0x allows forward
16426      enum declarations.  */
16427   if (cu->per_cu->is_debug_types
16428       && die_is_declaration (die, cu))
16429     {
16430       struct signatured_type *sig_type;
16431
16432       sig_type = (struct signatured_type *) cu->per_cu;
16433       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16434       if (sig_type->type_offset_in_section != die->sect_off)
16435         return;
16436     }
16437
16438   new_symbol (die, this_type, cu);
16439 }
16440
16441 /* Extract all information from a DW_TAG_array_type DIE and put it in
16442    the DIE's type field.  For now, this only handles one dimensional
16443    arrays.  */
16444
16445 static struct type *
16446 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16447 {
16448   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16449   struct die_info *child_die;
16450   struct type *type;
16451   struct type *element_type, *range_type, *index_type;
16452   struct attribute *attr;
16453   const char *name;
16454   struct dynamic_prop *byte_stride_prop = NULL;
16455   unsigned int bit_stride = 0;
16456
16457   element_type = die_type (die, cu);
16458
16459   /* The die_type call above may have already set the type for this DIE.  */
16460   type = get_die_type (die, cu);
16461   if (type)
16462     return type;
16463
16464   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16465   if (attr != NULL)
16466     {
16467       int stride_ok;
16468
16469       byte_stride_prop
16470         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16471       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16472       if (!stride_ok)
16473         {
16474           complaint (_("unable to read array DW_AT_byte_stride "
16475                        " - DIE at %s [in module %s]"),
16476                      sect_offset_str (die->sect_off),
16477                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16478           /* Ignore this attribute.  We will likely not be able to print
16479              arrays of this type correctly, but there is little we can do
16480              to help if we cannot read the attribute's value.  */
16481           byte_stride_prop = NULL;
16482         }
16483     }
16484
16485   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16486   if (attr != NULL)
16487     bit_stride = DW_UNSND (attr);
16488
16489   /* Irix 6.2 native cc creates array types without children for
16490      arrays with unspecified length.  */
16491   if (die->child == NULL)
16492     {
16493       index_type = objfile_type (objfile)->builtin_int;
16494       range_type = create_static_range_type (NULL, index_type, 0, -1);
16495       type = create_array_type_with_stride (NULL, element_type, range_type,
16496                                             byte_stride_prop, bit_stride);
16497       return set_die_type (die, type, cu);
16498     }
16499
16500   std::vector<struct type *> range_types;
16501   child_die = die->child;
16502   while (child_die && child_die->tag)
16503     {
16504       if (child_die->tag == DW_TAG_subrange_type)
16505         {
16506           struct type *child_type = read_type_die (child_die, cu);
16507
16508           if (child_type != NULL)
16509             {
16510               /* The range type was succesfully read.  Save it for the
16511                  array type creation.  */
16512               range_types.push_back (child_type);
16513             }
16514         }
16515       child_die = sibling_die (child_die);
16516     }
16517
16518   /* Dwarf2 dimensions are output from left to right, create the
16519      necessary array types in backwards order.  */
16520
16521   type = element_type;
16522
16523   if (read_array_order (die, cu) == DW_ORD_col_major)
16524     {
16525       int i = 0;
16526
16527       while (i < range_types.size ())
16528         type = create_array_type_with_stride (NULL, type, range_types[i++],
16529                                               byte_stride_prop, bit_stride);
16530     }
16531   else
16532     {
16533       size_t ndim = range_types.size ();
16534       while (ndim-- > 0)
16535         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16536                                               byte_stride_prop, bit_stride);
16537     }
16538
16539   /* Understand Dwarf2 support for vector types (like they occur on
16540      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16541      array type.  This is not part of the Dwarf2/3 standard yet, but a
16542      custom vendor extension.  The main difference between a regular
16543      array and the vector variant is that vectors are passed by value
16544      to functions.  */
16545   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16546   if (attr)
16547     make_vector_type (type);
16548
16549   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16550      implementation may choose to implement triple vectors using this
16551      attribute.  */
16552   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16553   if (attr)
16554     {
16555       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16556         TYPE_LENGTH (type) = DW_UNSND (attr);
16557       else
16558         complaint (_("DW_AT_byte_size for array type smaller "
16559                      "than the total size of elements"));
16560     }
16561
16562   name = dwarf2_name (die, cu);
16563   if (name)
16564     TYPE_NAME (type) = name;
16565
16566   maybe_set_alignment (cu, die, type);
16567
16568   /* Install the type in the die.  */
16569   set_die_type (die, type, cu);
16570
16571   /* set_die_type should be already done.  */
16572   set_descriptive_type (type, die, cu);
16573
16574   return type;
16575 }
16576
16577 static enum dwarf_array_dim_ordering
16578 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16579 {
16580   struct attribute *attr;
16581
16582   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16583
16584   if (attr)
16585     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16586
16587   /* GNU F77 is a special case, as at 08/2004 array type info is the
16588      opposite order to the dwarf2 specification, but data is still
16589      laid out as per normal fortran.
16590
16591      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16592      version checking.  */
16593
16594   if (cu->language == language_fortran
16595       && cu->producer && strstr (cu->producer, "GNU F77"))
16596     {
16597       return DW_ORD_row_major;
16598     }
16599
16600   switch (cu->language_defn->la_array_ordering)
16601     {
16602     case array_column_major:
16603       return DW_ORD_col_major;
16604     case array_row_major:
16605     default:
16606       return DW_ORD_row_major;
16607     };
16608 }
16609
16610 /* Extract all information from a DW_TAG_set_type DIE and put it in
16611    the DIE's type field.  */
16612
16613 static struct type *
16614 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16615 {
16616   struct type *domain_type, *set_type;
16617   struct attribute *attr;
16618
16619   domain_type = die_type (die, cu);
16620
16621   /* The die_type call above may have already set the type for this DIE.  */
16622   set_type = get_die_type (die, cu);
16623   if (set_type)
16624     return set_type;
16625
16626   set_type = create_set_type (NULL, domain_type);
16627
16628   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16629   if (attr)
16630     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16631
16632   maybe_set_alignment (cu, die, set_type);
16633
16634   return set_die_type (die, set_type, cu);
16635 }
16636
16637 /* A helper for read_common_block that creates a locexpr baton.
16638    SYM is the symbol which we are marking as computed.
16639    COMMON_DIE is the DIE for the common block.
16640    COMMON_LOC is the location expression attribute for the common
16641    block itself.
16642    MEMBER_LOC is the location expression attribute for the particular
16643    member of the common block that we are processing.
16644    CU is the CU from which the above come.  */
16645
16646 static void
16647 mark_common_block_symbol_computed (struct symbol *sym,
16648                                    struct die_info *common_die,
16649                                    struct attribute *common_loc,
16650                                    struct attribute *member_loc,
16651                                    struct dwarf2_cu *cu)
16652 {
16653   struct dwarf2_per_objfile *dwarf2_per_objfile
16654     = cu->per_cu->dwarf2_per_objfile;
16655   struct objfile *objfile = dwarf2_per_objfile->objfile;
16656   struct dwarf2_locexpr_baton *baton;
16657   gdb_byte *ptr;
16658   unsigned int cu_off;
16659   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16660   LONGEST offset = 0;
16661
16662   gdb_assert (common_loc && member_loc);
16663   gdb_assert (attr_form_is_block (common_loc));
16664   gdb_assert (attr_form_is_block (member_loc)
16665               || attr_form_is_constant (member_loc));
16666
16667   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16668   baton->per_cu = cu->per_cu;
16669   gdb_assert (baton->per_cu);
16670
16671   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16672
16673   if (attr_form_is_constant (member_loc))
16674     {
16675       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16676       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16677     }
16678   else
16679     baton->size += DW_BLOCK (member_loc)->size;
16680
16681   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16682   baton->data = ptr;
16683
16684   *ptr++ = DW_OP_call4;
16685   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16686   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16687   ptr += 4;
16688
16689   if (attr_form_is_constant (member_loc))
16690     {
16691       *ptr++ = DW_OP_addr;
16692       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16693       ptr += cu->header.addr_size;
16694     }
16695   else
16696     {
16697       /* We have to copy the data here, because DW_OP_call4 will only
16698          use a DW_AT_location attribute.  */
16699       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16700       ptr += DW_BLOCK (member_loc)->size;
16701     }
16702
16703   *ptr++ = DW_OP_plus;
16704   gdb_assert (ptr - baton->data == baton->size);
16705
16706   SYMBOL_LOCATION_BATON (sym) = baton;
16707   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16708 }
16709
16710 /* Create appropriate locally-scoped variables for all the
16711    DW_TAG_common_block entries.  Also create a struct common_block
16712    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16713    is used to sepate the common blocks name namespace from regular
16714    variable names.  */
16715
16716 static void
16717 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16718 {
16719   struct attribute *attr;
16720
16721   attr = dwarf2_attr (die, DW_AT_location, cu);
16722   if (attr)
16723     {
16724       /* Support the .debug_loc offsets.  */
16725       if (attr_form_is_block (attr))
16726         {
16727           /* Ok.  */
16728         }
16729       else if (attr_form_is_section_offset (attr))
16730         {
16731           dwarf2_complex_location_expr_complaint ();
16732           attr = NULL;
16733         }
16734       else
16735         {
16736           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16737                                                  "common block member");
16738           attr = NULL;
16739         }
16740     }
16741
16742   if (die->child != NULL)
16743     {
16744       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16745       struct die_info *child_die;
16746       size_t n_entries = 0, size;
16747       struct common_block *common_block;
16748       struct symbol *sym;
16749
16750       for (child_die = die->child;
16751            child_die && child_die->tag;
16752            child_die = sibling_die (child_die))
16753         ++n_entries;
16754
16755       size = (sizeof (struct common_block)
16756               + (n_entries - 1) * sizeof (struct symbol *));
16757       common_block
16758         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16759                                                  size);
16760       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16761       common_block->n_entries = 0;
16762
16763       for (child_die = die->child;
16764            child_die && child_die->tag;
16765            child_die = sibling_die (child_die))
16766         {
16767           /* Create the symbol in the DW_TAG_common_block block in the current
16768              symbol scope.  */
16769           sym = new_symbol (child_die, NULL, cu);
16770           if (sym != NULL)
16771             {
16772               struct attribute *member_loc;
16773
16774               common_block->contents[common_block->n_entries++] = sym;
16775
16776               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16777                                         cu);
16778               if (member_loc)
16779                 {
16780                   /* GDB has handled this for a long time, but it is
16781                      not specified by DWARF.  It seems to have been
16782                      emitted by gfortran at least as recently as:
16783                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16784                   complaint (_("Variable in common block has "
16785                                "DW_AT_data_member_location "
16786                                "- DIE at %s [in module %s]"),
16787                                sect_offset_str (child_die->sect_off),
16788                              objfile_name (objfile));
16789
16790                   if (attr_form_is_section_offset (member_loc))
16791                     dwarf2_complex_location_expr_complaint ();
16792                   else if (attr_form_is_constant (member_loc)
16793                            || attr_form_is_block (member_loc))
16794                     {
16795                       if (attr)
16796                         mark_common_block_symbol_computed (sym, die, attr,
16797                                                            member_loc, cu);
16798                     }
16799                   else
16800                     dwarf2_complex_location_expr_complaint ();
16801                 }
16802             }
16803         }
16804
16805       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16806       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16807     }
16808 }
16809
16810 /* Create a type for a C++ namespace.  */
16811
16812 static struct type *
16813 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16814 {
16815   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16816   const char *previous_prefix, *name;
16817   int is_anonymous;
16818   struct type *type;
16819
16820   /* For extensions, reuse the type of the original namespace.  */
16821   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16822     {
16823       struct die_info *ext_die;
16824       struct dwarf2_cu *ext_cu = cu;
16825
16826       ext_die = dwarf2_extension (die, &ext_cu);
16827       type = read_type_die (ext_die, ext_cu);
16828
16829       /* EXT_CU may not be the same as CU.
16830          Ensure TYPE is recorded with CU in die_type_hash.  */
16831       return set_die_type (die, type, cu);
16832     }
16833
16834   name = namespace_name (die, &is_anonymous, cu);
16835
16836   /* Now build the name of the current namespace.  */
16837
16838   previous_prefix = determine_prefix (die, cu);
16839   if (previous_prefix[0] != '\0')
16840     name = typename_concat (&objfile->objfile_obstack,
16841                             previous_prefix, name, 0, cu);
16842
16843   /* Create the type.  */
16844   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16845
16846   return set_die_type (die, type, cu);
16847 }
16848
16849 /* Read a namespace scope.  */
16850
16851 static void
16852 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16853 {
16854   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16855   int is_anonymous;
16856
16857   /* Add a symbol associated to this if we haven't seen the namespace
16858      before.  Also, add a using directive if it's an anonymous
16859      namespace.  */
16860
16861   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16862     {
16863       struct type *type;
16864
16865       type = read_type_die (die, cu);
16866       new_symbol (die, type, cu);
16867
16868       namespace_name (die, &is_anonymous, cu);
16869       if (is_anonymous)
16870         {
16871           const char *previous_prefix = determine_prefix (die, cu);
16872
16873           std::vector<const char *> excludes;
16874           add_using_directive (using_directives (cu),
16875                                previous_prefix, TYPE_NAME (type), NULL,
16876                                NULL, excludes, 0, &objfile->objfile_obstack);
16877         }
16878     }
16879
16880   if (die->child != NULL)
16881     {
16882       struct die_info *child_die = die->child;
16883
16884       while (child_die && child_die->tag)
16885         {
16886           process_die (child_die, cu);
16887           child_die = sibling_die (child_die);
16888         }
16889     }
16890 }
16891
16892 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16893    imported module.  Still we need that type as local Fortran "use ... only"
16894    declaration imports depend on the created type in determine_prefix.  */
16895
16896 static struct type *
16897 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16898 {
16899   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16900   const char *module_name;
16901   struct type *type;
16902
16903   module_name = dwarf2_name (die, cu);
16904   if (!module_name)
16905     complaint (_("DW_TAG_module has no name, offset %s"),
16906                sect_offset_str (die->sect_off));
16907   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16908
16909   return set_die_type (die, type, cu);
16910 }
16911
16912 /* Read a Fortran module.  */
16913
16914 static void
16915 read_module (struct die_info *die, struct dwarf2_cu *cu)
16916 {
16917   struct die_info *child_die = die->child;
16918   struct type *type;
16919
16920   type = read_type_die (die, cu);
16921   new_symbol (die, type, cu);
16922
16923   while (child_die && child_die->tag)
16924     {
16925       process_die (child_die, cu);
16926       child_die = sibling_die (child_die);
16927     }
16928 }
16929
16930 /* Return the name of the namespace represented by DIE.  Set
16931    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16932    namespace.  */
16933
16934 static const char *
16935 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16936 {
16937   struct die_info *current_die;
16938   const char *name = NULL;
16939
16940   /* Loop through the extensions until we find a name.  */
16941
16942   for (current_die = die;
16943        current_die != NULL;
16944        current_die = dwarf2_extension (die, &cu))
16945     {
16946       /* We don't use dwarf2_name here so that we can detect the absence
16947          of a name -> anonymous namespace.  */
16948       name = dwarf2_string_attr (die, DW_AT_name, cu);
16949
16950       if (name != NULL)
16951         break;
16952     }
16953
16954   /* Is it an anonymous namespace?  */
16955
16956   *is_anonymous = (name == NULL);
16957   if (*is_anonymous)
16958     name = CP_ANONYMOUS_NAMESPACE_STR;
16959
16960   return name;
16961 }
16962
16963 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16964    the user defined type vector.  */
16965
16966 static struct type *
16967 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16968 {
16969   struct gdbarch *gdbarch
16970     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16971   struct comp_unit_head *cu_header = &cu->header;
16972   struct type *type;
16973   struct attribute *attr_byte_size;
16974   struct attribute *attr_address_class;
16975   int byte_size, addr_class;
16976   struct type *target_type;
16977
16978   target_type = die_type (die, cu);
16979
16980   /* The die_type call above may have already set the type for this DIE.  */
16981   type = get_die_type (die, cu);
16982   if (type)
16983     return type;
16984
16985   type = lookup_pointer_type (target_type);
16986
16987   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16988   if (attr_byte_size)
16989     byte_size = DW_UNSND (attr_byte_size);
16990   else
16991     byte_size = cu_header->addr_size;
16992
16993   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16994   if (attr_address_class)
16995     addr_class = DW_UNSND (attr_address_class);
16996   else
16997     addr_class = DW_ADDR_none;
16998
16999   ULONGEST alignment = get_alignment (cu, die);
17000
17001   /* If the pointer size, alignment, or address class is different
17002      than the default, create a type variant marked as such and set
17003      the length accordingly.  */
17004   if (TYPE_LENGTH (type) != byte_size
17005       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17006           && alignment != TYPE_RAW_ALIGN (type))
17007       || addr_class != DW_ADDR_none)
17008     {
17009       if (gdbarch_address_class_type_flags_p (gdbarch))
17010         {
17011           int type_flags;
17012
17013           type_flags = gdbarch_address_class_type_flags
17014                          (gdbarch, byte_size, addr_class);
17015           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17016                       == 0);
17017           type = make_type_with_address_space (type, type_flags);
17018         }
17019       else if (TYPE_LENGTH (type) != byte_size)
17020         {
17021           complaint (_("invalid pointer size %d"), byte_size);
17022         }
17023       else if (TYPE_RAW_ALIGN (type) != alignment)
17024         {
17025           complaint (_("Invalid DW_AT_alignment"
17026                        " - DIE at %s [in module %s]"),
17027                      sect_offset_str (die->sect_off),
17028                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17029         }
17030       else
17031         {
17032           /* Should we also complain about unhandled address classes?  */
17033         }
17034     }
17035
17036   TYPE_LENGTH (type) = byte_size;
17037   set_type_align (type, alignment);
17038   return set_die_type (die, type, cu);
17039 }
17040
17041 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17042    the user defined type vector.  */
17043
17044 static struct type *
17045 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17046 {
17047   struct type *type;
17048   struct type *to_type;
17049   struct type *domain;
17050
17051   to_type = die_type (die, cu);
17052   domain = die_containing_type (die, cu);
17053
17054   /* The calls above may have already set the type for this DIE.  */
17055   type = get_die_type (die, cu);
17056   if (type)
17057     return type;
17058
17059   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17060     type = lookup_methodptr_type (to_type);
17061   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17062     {
17063       struct type *new_type
17064         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17065
17066       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17067                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17068                             TYPE_VARARGS (to_type));
17069       type = lookup_methodptr_type (new_type);
17070     }
17071   else
17072     type = lookup_memberptr_type (to_type, domain);
17073
17074   return set_die_type (die, type, cu);
17075 }
17076
17077 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17078    the user defined type vector.  */
17079
17080 static struct type *
17081 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17082                           enum type_code refcode)
17083 {
17084   struct comp_unit_head *cu_header = &cu->header;
17085   struct type *type, *target_type;
17086   struct attribute *attr;
17087
17088   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17089
17090   target_type = die_type (die, cu);
17091
17092   /* The die_type call above may have already set the type for this DIE.  */
17093   type = get_die_type (die, cu);
17094   if (type)
17095     return type;
17096
17097   type = lookup_reference_type (target_type, refcode);
17098   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17099   if (attr)
17100     {
17101       TYPE_LENGTH (type) = DW_UNSND (attr);
17102     }
17103   else
17104     {
17105       TYPE_LENGTH (type) = cu_header->addr_size;
17106     }
17107   maybe_set_alignment (cu, die, type);
17108   return set_die_type (die, type, cu);
17109 }
17110
17111 /* Add the given cv-qualifiers to the element type of the array.  GCC
17112    outputs DWARF type qualifiers that apply to an array, not the
17113    element type.  But GDB relies on the array element type to carry
17114    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17115    specification.  */
17116
17117 static struct type *
17118 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17119                    struct type *base_type, int cnst, int voltl)
17120 {
17121   struct type *el_type, *inner_array;
17122
17123   base_type = copy_type (base_type);
17124   inner_array = base_type;
17125
17126   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17127     {
17128       TYPE_TARGET_TYPE (inner_array) =
17129         copy_type (TYPE_TARGET_TYPE (inner_array));
17130       inner_array = TYPE_TARGET_TYPE (inner_array);
17131     }
17132
17133   el_type = TYPE_TARGET_TYPE (inner_array);
17134   cnst |= TYPE_CONST (el_type);
17135   voltl |= TYPE_VOLATILE (el_type);
17136   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17137
17138   return set_die_type (die, base_type, cu);
17139 }
17140
17141 static struct type *
17142 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17143 {
17144   struct type *base_type, *cv_type;
17145
17146   base_type = die_type (die, cu);
17147
17148   /* The die_type call above may have already set the type for this DIE.  */
17149   cv_type = get_die_type (die, cu);
17150   if (cv_type)
17151     return cv_type;
17152
17153   /* In case the const qualifier is applied to an array type, the element type
17154      is so qualified, not the array type (section 6.7.3 of C99).  */
17155   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17156     return add_array_cv_type (die, cu, base_type, 1, 0);
17157
17158   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17159   return set_die_type (die, cv_type, cu);
17160 }
17161
17162 static struct type *
17163 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17164 {
17165   struct type *base_type, *cv_type;
17166
17167   base_type = die_type (die, cu);
17168
17169   /* The die_type call above may have already set the type for this DIE.  */
17170   cv_type = get_die_type (die, cu);
17171   if (cv_type)
17172     return cv_type;
17173
17174   /* In case the volatile qualifier is applied to an array type, the
17175      element type is so qualified, not the array type (section 6.7.3
17176      of C99).  */
17177   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17178     return add_array_cv_type (die, cu, base_type, 0, 1);
17179
17180   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17181   return set_die_type (die, cv_type, cu);
17182 }
17183
17184 /* Handle DW_TAG_restrict_type.  */
17185
17186 static struct type *
17187 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17188 {
17189   struct type *base_type, *cv_type;
17190
17191   base_type = die_type (die, cu);
17192
17193   /* The die_type call above may have already set the type for this DIE.  */
17194   cv_type = get_die_type (die, cu);
17195   if (cv_type)
17196     return cv_type;
17197
17198   cv_type = make_restrict_type (base_type);
17199   return set_die_type (die, cv_type, cu);
17200 }
17201
17202 /* Handle DW_TAG_atomic_type.  */
17203
17204 static struct type *
17205 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17206 {
17207   struct type *base_type, *cv_type;
17208
17209   base_type = die_type (die, cu);
17210
17211   /* The die_type call above may have already set the type for this DIE.  */
17212   cv_type = get_die_type (die, cu);
17213   if (cv_type)
17214     return cv_type;
17215
17216   cv_type = make_atomic_type (base_type);
17217   return set_die_type (die, cv_type, cu);
17218 }
17219
17220 /* Extract all information from a DW_TAG_string_type DIE and add to
17221    the user defined type vector.  It isn't really a user defined type,
17222    but it behaves like one, with other DIE's using an AT_user_def_type
17223    attribute to reference it.  */
17224
17225 static struct type *
17226 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17227 {
17228   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17229   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17230   struct type *type, *range_type, *index_type, *char_type;
17231   struct attribute *attr;
17232   unsigned int length;
17233
17234   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17235   if (attr)
17236     {
17237       length = DW_UNSND (attr);
17238     }
17239   else
17240     {
17241       /* Check for the DW_AT_byte_size attribute.  */
17242       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17243       if (attr)
17244         {
17245           length = DW_UNSND (attr);
17246         }
17247       else
17248         {
17249           length = 1;
17250         }
17251     }
17252
17253   index_type = objfile_type (objfile)->builtin_int;
17254   range_type = create_static_range_type (NULL, index_type, 1, length);
17255   char_type = language_string_char_type (cu->language_defn, gdbarch);
17256   type = create_string_type (NULL, char_type, range_type);
17257
17258   return set_die_type (die, type, cu);
17259 }
17260
17261 /* Assuming that DIE corresponds to a function, returns nonzero
17262    if the function is prototyped.  */
17263
17264 static int
17265 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17266 {
17267   struct attribute *attr;
17268
17269   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17270   if (attr && (DW_UNSND (attr) != 0))
17271     return 1;
17272
17273   /* The DWARF standard implies that the DW_AT_prototyped attribute
17274      is only meaninful for C, but the concept also extends to other
17275      languages that allow unprototyped functions (Eg: Objective C).
17276      For all other languages, assume that functions are always
17277      prototyped.  */
17278   if (cu->language != language_c
17279       && cu->language != language_objc
17280       && cu->language != language_opencl)
17281     return 1;
17282
17283   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17284      prototyped and unprototyped functions; default to prototyped,
17285      since that is more common in modern code (and RealView warns
17286      about unprototyped functions).  */
17287   if (producer_is_realview (cu->producer))
17288     return 1;
17289
17290   return 0;
17291 }
17292
17293 /* Handle DIES due to C code like:
17294
17295    struct foo
17296    {
17297    int (*funcp)(int a, long l);
17298    int b;
17299    };
17300
17301    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17302
17303 static struct type *
17304 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17305 {
17306   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17307   struct type *type;            /* Type that this function returns.  */
17308   struct type *ftype;           /* Function that returns above type.  */
17309   struct attribute *attr;
17310
17311   type = die_type (die, cu);
17312
17313   /* The die_type call above may have already set the type for this DIE.  */
17314   ftype = get_die_type (die, cu);
17315   if (ftype)
17316     return ftype;
17317
17318   ftype = lookup_function_type (type);
17319
17320   if (prototyped_function_p (die, cu))
17321     TYPE_PROTOTYPED (ftype) = 1;
17322
17323   /* Store the calling convention in the type if it's available in
17324      the subroutine die.  Otherwise set the calling convention to
17325      the default value DW_CC_normal.  */
17326   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17327   if (attr)
17328     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17329   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17330     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17331   else
17332     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17333
17334   /* Record whether the function returns normally to its caller or not
17335      if the DWARF producer set that information.  */
17336   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17337   if (attr && (DW_UNSND (attr) != 0))
17338     TYPE_NO_RETURN (ftype) = 1;
17339
17340   /* We need to add the subroutine type to the die immediately so
17341      we don't infinitely recurse when dealing with parameters
17342      declared as the same subroutine type.  */
17343   set_die_type (die, ftype, cu);
17344
17345   if (die->child != NULL)
17346     {
17347       struct type *void_type = objfile_type (objfile)->builtin_void;
17348       struct die_info *child_die;
17349       int nparams, iparams;
17350
17351       /* Count the number of parameters.
17352          FIXME: GDB currently ignores vararg functions, but knows about
17353          vararg member functions.  */
17354       nparams = 0;
17355       child_die = die->child;
17356       while (child_die && child_die->tag)
17357         {
17358           if (child_die->tag == DW_TAG_formal_parameter)
17359             nparams++;
17360           else if (child_die->tag == DW_TAG_unspecified_parameters)
17361             TYPE_VARARGS (ftype) = 1;
17362           child_die = sibling_die (child_die);
17363         }
17364
17365       /* Allocate storage for parameters and fill them in.  */
17366       TYPE_NFIELDS (ftype) = nparams;
17367       TYPE_FIELDS (ftype) = (struct field *)
17368         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17369
17370       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17371          even if we error out during the parameters reading below.  */
17372       for (iparams = 0; iparams < nparams; iparams++)
17373         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17374
17375       iparams = 0;
17376       child_die = die->child;
17377       while (child_die && child_die->tag)
17378         {
17379           if (child_die->tag == DW_TAG_formal_parameter)
17380             {
17381               struct type *arg_type;
17382
17383               /* DWARF version 2 has no clean way to discern C++
17384                  static and non-static member functions.  G++ helps
17385                  GDB by marking the first parameter for non-static
17386                  member functions (which is the this pointer) as
17387                  artificial.  We pass this information to
17388                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17389
17390                  DWARF version 3 added DW_AT_object_pointer, which GCC
17391                  4.5 does not yet generate.  */
17392               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17393               if (attr)
17394                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17395               else
17396                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17397               arg_type = die_type (child_die, cu);
17398
17399               /* RealView does not mark THIS as const, which the testsuite
17400                  expects.  GCC marks THIS as const in method definitions,
17401                  but not in the class specifications (GCC PR 43053).  */
17402               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17403                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17404                 {
17405                   int is_this = 0;
17406                   struct dwarf2_cu *arg_cu = cu;
17407                   const char *name = dwarf2_name (child_die, cu);
17408
17409                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17410                   if (attr)
17411                     {
17412                       /* If the compiler emits this, use it.  */
17413                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17414                         is_this = 1;
17415                     }
17416                   else if (name && strcmp (name, "this") == 0)
17417                     /* Function definitions will have the argument names.  */
17418                     is_this = 1;
17419                   else if (name == NULL && iparams == 0)
17420                     /* Declarations may not have the names, so like
17421                        elsewhere in GDB, assume an artificial first
17422                        argument is "this".  */
17423                     is_this = 1;
17424
17425                   if (is_this)
17426                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17427                                              arg_type, 0);
17428                 }
17429
17430               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17431               iparams++;
17432             }
17433           child_die = sibling_die (child_die);
17434         }
17435     }
17436
17437   return ftype;
17438 }
17439
17440 static struct type *
17441 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17442 {
17443   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17444   const char *name = NULL;
17445   struct type *this_type, *target_type;
17446
17447   name = dwarf2_full_name (NULL, die, cu);
17448   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17449   TYPE_TARGET_STUB (this_type) = 1;
17450   set_die_type (die, this_type, cu);
17451   target_type = die_type (die, cu);
17452   if (target_type != this_type)
17453     TYPE_TARGET_TYPE (this_type) = target_type;
17454   else
17455     {
17456       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17457          spec and cause infinite loops in GDB.  */
17458       complaint (_("Self-referential DW_TAG_typedef "
17459                    "- DIE at %s [in module %s]"),
17460                  sect_offset_str (die->sect_off), objfile_name (objfile));
17461       TYPE_TARGET_TYPE (this_type) = NULL;
17462     }
17463   return this_type;
17464 }
17465
17466 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17467    (which may be different from NAME) to the architecture back-end to allow
17468    it to guess the correct format if necessary.  */
17469
17470 static struct type *
17471 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17472                         const char *name_hint)
17473 {
17474   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17475   const struct floatformat **format;
17476   struct type *type;
17477
17478   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17479   if (format)
17480     type = init_float_type (objfile, bits, name, format);
17481   else
17482     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17483
17484   return type;
17485 }
17486
17487 /* Find a representation of a given base type and install
17488    it in the TYPE field of the die.  */
17489
17490 static struct type *
17491 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17492 {
17493   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17494   struct type *type;
17495   struct attribute *attr;
17496   int encoding = 0, bits = 0;
17497   const char *name;
17498
17499   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17500   if (attr)
17501     {
17502       encoding = DW_UNSND (attr);
17503     }
17504   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17505   if (attr)
17506     {
17507       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17508     }
17509   name = dwarf2_name (die, cu);
17510   if (!name)
17511     {
17512       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17513     }
17514
17515   switch (encoding)
17516     {
17517       case DW_ATE_address:
17518         /* Turn DW_ATE_address into a void * pointer.  */
17519         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17520         type = init_pointer_type (objfile, bits, name, type);
17521         break;
17522       case DW_ATE_boolean:
17523         type = init_boolean_type (objfile, bits, 1, name);
17524         break;
17525       case DW_ATE_complex_float:
17526         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17527         type = init_complex_type (objfile, name, type);
17528         break;
17529       case DW_ATE_decimal_float:
17530         type = init_decfloat_type (objfile, bits, name);
17531         break;
17532       case DW_ATE_float:
17533         type = dwarf2_init_float_type (objfile, bits, name, name);
17534         break;
17535       case DW_ATE_signed:
17536         type = init_integer_type (objfile, bits, 0, name);
17537         break;
17538       case DW_ATE_unsigned:
17539         if (cu->language == language_fortran
17540             && name
17541             && startswith (name, "character("))
17542           type = init_character_type (objfile, bits, 1, name);
17543         else
17544           type = init_integer_type (objfile, bits, 1, name);
17545         break;
17546       case DW_ATE_signed_char:
17547         if (cu->language == language_ada || cu->language == language_m2
17548             || cu->language == language_pascal
17549             || cu->language == language_fortran)
17550           type = init_character_type (objfile, bits, 0, name);
17551         else
17552           type = init_integer_type (objfile, bits, 0, name);
17553         break;
17554       case DW_ATE_unsigned_char:
17555         if (cu->language == language_ada || cu->language == language_m2
17556             || cu->language == language_pascal
17557             || cu->language == language_fortran
17558             || cu->language == language_rust)
17559           type = init_character_type (objfile, bits, 1, name);
17560         else
17561           type = init_integer_type (objfile, bits, 1, name);
17562         break;
17563       case DW_ATE_UTF:
17564         {
17565           gdbarch *arch = get_objfile_arch (objfile);
17566
17567           if (bits == 16)
17568             type = builtin_type (arch)->builtin_char16;
17569           else if (bits == 32)
17570             type = builtin_type (arch)->builtin_char32;
17571           else
17572             {
17573               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17574                          bits);
17575               type = init_integer_type (objfile, bits, 1, name);
17576             }
17577           return set_die_type (die, type, cu);
17578         }
17579         break;
17580
17581       default:
17582         complaint (_("unsupported DW_AT_encoding: '%s'"),
17583                    dwarf_type_encoding_name (encoding));
17584         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17585         break;
17586     }
17587
17588   if (name && strcmp (name, "char") == 0)
17589     TYPE_NOSIGN (type) = 1;
17590
17591   maybe_set_alignment (cu, die, type);
17592
17593   return set_die_type (die, type, cu);
17594 }
17595
17596 /* Parse dwarf attribute if it's a block, reference or constant and put the
17597    resulting value of the attribute into struct bound_prop.
17598    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17599
17600 static int
17601 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17602                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17603 {
17604   struct dwarf2_property_baton *baton;
17605   struct obstack *obstack
17606     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17607
17608   if (attr == NULL || prop == NULL)
17609     return 0;
17610
17611   if (attr_form_is_block (attr))
17612     {
17613       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17614       baton->referenced_type = NULL;
17615       baton->locexpr.per_cu = cu->per_cu;
17616       baton->locexpr.size = DW_BLOCK (attr)->size;
17617       baton->locexpr.data = DW_BLOCK (attr)->data;
17618       prop->data.baton = baton;
17619       prop->kind = PROP_LOCEXPR;
17620       gdb_assert (prop->data.baton != NULL);
17621     }
17622   else if (attr_form_is_ref (attr))
17623     {
17624       struct dwarf2_cu *target_cu = cu;
17625       struct die_info *target_die;
17626       struct attribute *target_attr;
17627
17628       target_die = follow_die_ref (die, attr, &target_cu);
17629       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17630       if (target_attr == NULL)
17631         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17632                                    target_cu);
17633       if (target_attr == NULL)
17634         return 0;
17635
17636       switch (target_attr->name)
17637         {
17638           case DW_AT_location:
17639             if (attr_form_is_section_offset (target_attr))
17640               {
17641                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17642                 baton->referenced_type = die_type (target_die, target_cu);
17643                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17644                 prop->data.baton = baton;
17645                 prop->kind = PROP_LOCLIST;
17646                 gdb_assert (prop->data.baton != NULL);
17647               }
17648             else if (attr_form_is_block (target_attr))
17649               {
17650                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17651                 baton->referenced_type = die_type (target_die, target_cu);
17652                 baton->locexpr.per_cu = cu->per_cu;
17653                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17654                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17655                 prop->data.baton = baton;
17656                 prop->kind = PROP_LOCEXPR;
17657                 gdb_assert (prop->data.baton != NULL);
17658               }
17659             else
17660               {
17661                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17662                                                        "dynamic property");
17663                 return 0;
17664               }
17665             break;
17666           case DW_AT_data_member_location:
17667             {
17668               LONGEST offset;
17669
17670               if (!handle_data_member_location (target_die, target_cu,
17671                                                 &offset))
17672                 return 0;
17673
17674               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17675               baton->referenced_type = read_type_die (target_die->parent,
17676                                                       target_cu);
17677               baton->offset_info.offset = offset;
17678               baton->offset_info.type = die_type (target_die, target_cu);
17679               prop->data.baton = baton;
17680               prop->kind = PROP_ADDR_OFFSET;
17681               break;
17682             }
17683         }
17684     }
17685   else if (attr_form_is_constant (attr))
17686     {
17687       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17688       prop->kind = PROP_CONST;
17689     }
17690   else
17691     {
17692       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17693                                              dwarf2_name (die, cu));
17694       return 0;
17695     }
17696
17697   return 1;
17698 }
17699
17700 /* Read the given DW_AT_subrange DIE.  */
17701
17702 static struct type *
17703 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17704 {
17705   struct type *base_type, *orig_base_type;
17706   struct type *range_type;
17707   struct attribute *attr;
17708   struct dynamic_prop low, high;
17709   int low_default_is_valid;
17710   int high_bound_is_count = 0;
17711   const char *name;
17712   LONGEST negative_mask;
17713
17714   orig_base_type = die_type (die, cu);
17715   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17716      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17717      creating the range type, but we use the result of check_typedef
17718      when examining properties of the type.  */
17719   base_type = check_typedef (orig_base_type);
17720
17721   /* The die_type call above may have already set the type for this DIE.  */
17722   range_type = get_die_type (die, cu);
17723   if (range_type)
17724     return range_type;
17725
17726   low.kind = PROP_CONST;
17727   high.kind = PROP_CONST;
17728   high.data.const_val = 0;
17729
17730   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17731      omitting DW_AT_lower_bound.  */
17732   switch (cu->language)
17733     {
17734     case language_c:
17735     case language_cplus:
17736       low.data.const_val = 0;
17737       low_default_is_valid = 1;
17738       break;
17739     case language_fortran:
17740       low.data.const_val = 1;
17741       low_default_is_valid = 1;
17742       break;
17743     case language_d:
17744     case language_objc:
17745     case language_rust:
17746       low.data.const_val = 0;
17747       low_default_is_valid = (cu->header.version >= 4);
17748       break;
17749     case language_ada:
17750     case language_m2:
17751     case language_pascal:
17752       low.data.const_val = 1;
17753       low_default_is_valid = (cu->header.version >= 4);
17754       break;
17755     default:
17756       low.data.const_val = 0;
17757       low_default_is_valid = 0;
17758       break;
17759     }
17760
17761   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17762   if (attr)
17763     attr_to_dynamic_prop (attr, die, cu, &low);
17764   else if (!low_default_is_valid)
17765     complaint (_("Missing DW_AT_lower_bound "
17766                                       "- DIE at %s [in module %s]"),
17767                sect_offset_str (die->sect_off),
17768                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17769
17770   struct attribute *attr_ub, *attr_count;
17771   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17772   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17773     {
17774       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17775       if (attr_to_dynamic_prop (attr, die, cu, &high))
17776         {
17777           /* If bounds are constant do the final calculation here.  */
17778           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17779             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17780           else
17781             high_bound_is_count = 1;
17782         }
17783       else
17784         {
17785           if (attr_ub != NULL)
17786             complaint (_("Unresolved DW_AT_upper_bound "
17787                          "- DIE at %s [in module %s]"),
17788                        sect_offset_str (die->sect_off),
17789                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17790           if (attr_count != NULL)
17791             complaint (_("Unresolved DW_AT_count "
17792                          "- DIE at %s [in module %s]"),
17793                        sect_offset_str (die->sect_off),
17794                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17795         }
17796         
17797     }
17798
17799   /* Dwarf-2 specifications explicitly allows to create subrange types
17800      without specifying a base type.
17801      In that case, the base type must be set to the type of
17802      the lower bound, upper bound or count, in that order, if any of these
17803      three attributes references an object that has a type.
17804      If no base type is found, the Dwarf-2 specifications say that
17805      a signed integer type of size equal to the size of an address should
17806      be used.
17807      For the following C code: `extern char gdb_int [];'
17808      GCC produces an empty range DIE.
17809      FIXME: muller/2010-05-28: Possible references to object for low bound,
17810      high bound or count are not yet handled by this code.  */
17811   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17812     {
17813       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17814       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17815       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17816       struct type *int_type = objfile_type (objfile)->builtin_int;
17817
17818       /* Test "int", "long int", and "long long int" objfile types,
17819          and select the first one having a size above or equal to the
17820          architecture address size.  */
17821       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17822         base_type = int_type;
17823       else
17824         {
17825           int_type = objfile_type (objfile)->builtin_long;
17826           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17827             base_type = int_type;
17828           else
17829             {
17830               int_type = objfile_type (objfile)->builtin_long_long;
17831               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17832                 base_type = int_type;
17833             }
17834         }
17835     }
17836
17837   /* Normally, the DWARF producers are expected to use a signed
17838      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17839      But this is unfortunately not always the case, as witnessed
17840      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17841      is used instead.  To work around that ambiguity, we treat
17842      the bounds as signed, and thus sign-extend their values, when
17843      the base type is signed.  */
17844   negative_mask =
17845     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17846   if (low.kind == PROP_CONST
17847       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17848     low.data.const_val |= negative_mask;
17849   if (high.kind == PROP_CONST
17850       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17851     high.data.const_val |= negative_mask;
17852
17853   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17854
17855   if (high_bound_is_count)
17856     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17857
17858   /* Ada expects an empty array on no boundary attributes.  */
17859   if (attr == NULL && cu->language != language_ada)
17860     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17861
17862   name = dwarf2_name (die, cu);
17863   if (name)
17864     TYPE_NAME (range_type) = name;
17865
17866   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17867   if (attr)
17868     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17869
17870   maybe_set_alignment (cu, die, range_type);
17871
17872   set_die_type (die, range_type, cu);
17873
17874   /* set_die_type should be already done.  */
17875   set_descriptive_type (range_type, die, cu);
17876
17877   return range_type;
17878 }
17879
17880 static struct type *
17881 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17882 {
17883   struct type *type;
17884
17885   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17886                     NULL);
17887   TYPE_NAME (type) = dwarf2_name (die, cu);
17888
17889   /* In Ada, an unspecified type is typically used when the description
17890      of the type is defered to a different unit.  When encountering
17891      such a type, we treat it as a stub, and try to resolve it later on,
17892      when needed.  */
17893   if (cu->language == language_ada)
17894     TYPE_STUB (type) = 1;
17895
17896   return set_die_type (die, type, cu);
17897 }
17898
17899 /* Read a single die and all its descendents.  Set the die's sibling
17900    field to NULL; set other fields in the die correctly, and set all
17901    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17902    location of the info_ptr after reading all of those dies.  PARENT
17903    is the parent of the die in question.  */
17904
17905 static struct die_info *
17906 read_die_and_children (const struct die_reader_specs *reader,
17907                        const gdb_byte *info_ptr,
17908                        const gdb_byte **new_info_ptr,
17909                        struct die_info *parent)
17910 {
17911   struct die_info *die;
17912   const gdb_byte *cur_ptr;
17913   int has_children;
17914
17915   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17916   if (die == NULL)
17917     {
17918       *new_info_ptr = cur_ptr;
17919       return NULL;
17920     }
17921   store_in_ref_table (die, reader->cu);
17922
17923   if (has_children)
17924     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17925   else
17926     {
17927       die->child = NULL;
17928       *new_info_ptr = cur_ptr;
17929     }
17930
17931   die->sibling = NULL;
17932   die->parent = parent;
17933   return die;
17934 }
17935
17936 /* Read a die, all of its descendents, and all of its siblings; set
17937    all of the fields of all of the dies correctly.  Arguments are as
17938    in read_die_and_children.  */
17939
17940 static struct die_info *
17941 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17942                          const gdb_byte *info_ptr,
17943                          const gdb_byte **new_info_ptr,
17944                          struct die_info *parent)
17945 {
17946   struct die_info *first_die, *last_sibling;
17947   const gdb_byte *cur_ptr;
17948
17949   cur_ptr = info_ptr;
17950   first_die = last_sibling = NULL;
17951
17952   while (1)
17953     {
17954       struct die_info *die
17955         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17956
17957       if (die == NULL)
17958         {
17959           *new_info_ptr = cur_ptr;
17960           return first_die;
17961         }
17962
17963       if (!first_die)
17964         first_die = die;
17965       else
17966         last_sibling->sibling = die;
17967
17968       last_sibling = die;
17969     }
17970 }
17971
17972 /* Read a die, all of its descendents, and all of its siblings; set
17973    all of the fields of all of the dies correctly.  Arguments are as
17974    in read_die_and_children.
17975    This the main entry point for reading a DIE and all its children.  */
17976
17977 static struct die_info *
17978 read_die_and_siblings (const struct die_reader_specs *reader,
17979                        const gdb_byte *info_ptr,
17980                        const gdb_byte **new_info_ptr,
17981                        struct die_info *parent)
17982 {
17983   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17984                                                   new_info_ptr, parent);
17985
17986   if (dwarf_die_debug)
17987     {
17988       fprintf_unfiltered (gdb_stdlog,
17989                           "Read die from %s@0x%x of %s:\n",
17990                           get_section_name (reader->die_section),
17991                           (unsigned) (info_ptr - reader->die_section->buffer),
17992                           bfd_get_filename (reader->abfd));
17993       dump_die (die, dwarf_die_debug);
17994     }
17995
17996   return die;
17997 }
17998
17999 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18000    attributes.
18001    The caller is responsible for filling in the extra attributes
18002    and updating (*DIEP)->num_attrs.
18003    Set DIEP to point to a newly allocated die with its information,
18004    except for its child, sibling, and parent fields.
18005    Set HAS_CHILDREN to tell whether the die has children or not.  */
18006
18007 static const gdb_byte *
18008 read_full_die_1 (const struct die_reader_specs *reader,
18009                  struct die_info **diep, const gdb_byte *info_ptr,
18010                  int *has_children, int num_extra_attrs)
18011 {
18012   unsigned int abbrev_number, bytes_read, i;
18013   struct abbrev_info *abbrev;
18014   struct die_info *die;
18015   struct dwarf2_cu *cu = reader->cu;
18016   bfd *abfd = reader->abfd;
18017
18018   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18019   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18020   info_ptr += bytes_read;
18021   if (!abbrev_number)
18022     {
18023       *diep = NULL;
18024       *has_children = 0;
18025       return info_ptr;
18026     }
18027
18028   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18029   if (!abbrev)
18030     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18031            abbrev_number,
18032            bfd_get_filename (abfd));
18033
18034   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18035   die->sect_off = sect_off;
18036   die->tag = abbrev->tag;
18037   die->abbrev = abbrev_number;
18038
18039   /* Make the result usable.
18040      The caller needs to update num_attrs after adding the extra
18041      attributes.  */
18042   die->num_attrs = abbrev->num_attrs;
18043
18044   for (i = 0; i < abbrev->num_attrs; ++i)
18045     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18046                                info_ptr);
18047
18048   *diep = die;
18049   *has_children = abbrev->has_children;
18050   return info_ptr;
18051 }
18052
18053 /* Read a die and all its attributes.
18054    Set DIEP to point to a newly allocated die with its information,
18055    except for its child, sibling, and parent fields.
18056    Set HAS_CHILDREN to tell whether the die has children or not.  */
18057
18058 static const gdb_byte *
18059 read_full_die (const struct die_reader_specs *reader,
18060                struct die_info **diep, const gdb_byte *info_ptr,
18061                int *has_children)
18062 {
18063   const gdb_byte *result;
18064
18065   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18066
18067   if (dwarf_die_debug)
18068     {
18069       fprintf_unfiltered (gdb_stdlog,
18070                           "Read die from %s@0x%x of %s:\n",
18071                           get_section_name (reader->die_section),
18072                           (unsigned) (info_ptr - reader->die_section->buffer),
18073                           bfd_get_filename (reader->abfd));
18074       dump_die (*diep, dwarf_die_debug);
18075     }
18076
18077   return result;
18078 }
18079 \f
18080 /* Abbreviation tables.
18081
18082    In DWARF version 2, the description of the debugging information is
18083    stored in a separate .debug_abbrev section.  Before we read any
18084    dies from a section we read in all abbreviations and install them
18085    in a hash table.  */
18086
18087 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18088
18089 struct abbrev_info *
18090 abbrev_table::alloc_abbrev ()
18091 {
18092   struct abbrev_info *abbrev;
18093
18094   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18095   memset (abbrev, 0, sizeof (struct abbrev_info));
18096
18097   return abbrev;
18098 }
18099
18100 /* Add an abbreviation to the table.  */
18101
18102 void
18103 abbrev_table::add_abbrev (unsigned int abbrev_number,
18104                           struct abbrev_info *abbrev)
18105 {
18106   unsigned int hash_number;
18107
18108   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18109   abbrev->next = m_abbrevs[hash_number];
18110   m_abbrevs[hash_number] = abbrev;
18111 }
18112
18113 /* Look up an abbrev in the table.
18114    Returns NULL if the abbrev is not found.  */
18115
18116 struct abbrev_info *
18117 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18118 {
18119   unsigned int hash_number;
18120   struct abbrev_info *abbrev;
18121
18122   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18123   abbrev = m_abbrevs[hash_number];
18124
18125   while (abbrev)
18126     {
18127       if (abbrev->number == abbrev_number)
18128         return abbrev;
18129       abbrev = abbrev->next;
18130     }
18131   return NULL;
18132 }
18133
18134 /* Read in an abbrev table.  */
18135
18136 static abbrev_table_up
18137 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18138                          struct dwarf2_section_info *section,
18139                          sect_offset sect_off)
18140 {
18141   struct objfile *objfile = dwarf2_per_objfile->objfile;
18142   bfd *abfd = get_section_bfd_owner (section);
18143   const gdb_byte *abbrev_ptr;
18144   struct abbrev_info *cur_abbrev;
18145   unsigned int abbrev_number, bytes_read, abbrev_name;
18146   unsigned int abbrev_form;
18147   struct attr_abbrev *cur_attrs;
18148   unsigned int allocated_attrs;
18149
18150   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18151
18152   dwarf2_read_section (objfile, section);
18153   abbrev_ptr = section->buffer + to_underlying (sect_off);
18154   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18155   abbrev_ptr += bytes_read;
18156
18157   allocated_attrs = ATTR_ALLOC_CHUNK;
18158   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18159
18160   /* Loop until we reach an abbrev number of 0.  */
18161   while (abbrev_number)
18162     {
18163       cur_abbrev = abbrev_table->alloc_abbrev ();
18164
18165       /* read in abbrev header */
18166       cur_abbrev->number = abbrev_number;
18167       cur_abbrev->tag
18168         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18169       abbrev_ptr += bytes_read;
18170       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18171       abbrev_ptr += 1;
18172
18173       /* now read in declarations */
18174       for (;;)
18175         {
18176           LONGEST implicit_const;
18177
18178           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18179           abbrev_ptr += bytes_read;
18180           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18181           abbrev_ptr += bytes_read;
18182           if (abbrev_form == DW_FORM_implicit_const)
18183             {
18184               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18185                                                    &bytes_read);
18186               abbrev_ptr += bytes_read;
18187             }
18188           else
18189             {
18190               /* Initialize it due to a false compiler warning.  */
18191               implicit_const = -1;
18192             }
18193
18194           if (abbrev_name == 0)
18195             break;
18196
18197           if (cur_abbrev->num_attrs == allocated_attrs)
18198             {
18199               allocated_attrs += ATTR_ALLOC_CHUNK;
18200               cur_attrs
18201                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18202             }
18203
18204           cur_attrs[cur_abbrev->num_attrs].name
18205             = (enum dwarf_attribute) abbrev_name;
18206           cur_attrs[cur_abbrev->num_attrs].form
18207             = (enum dwarf_form) abbrev_form;
18208           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18209           ++cur_abbrev->num_attrs;
18210         }
18211
18212       cur_abbrev->attrs =
18213         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18214                    cur_abbrev->num_attrs);
18215       memcpy (cur_abbrev->attrs, cur_attrs,
18216               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18217
18218       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18219
18220       /* Get next abbreviation.
18221          Under Irix6 the abbreviations for a compilation unit are not
18222          always properly terminated with an abbrev number of 0.
18223          Exit loop if we encounter an abbreviation which we have
18224          already read (which means we are about to read the abbreviations
18225          for the next compile unit) or if the end of the abbreviation
18226          table is reached.  */
18227       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18228         break;
18229       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18230       abbrev_ptr += bytes_read;
18231       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18232         break;
18233     }
18234
18235   xfree (cur_attrs);
18236   return abbrev_table;
18237 }
18238
18239 /* Returns nonzero if TAG represents a type that we might generate a partial
18240    symbol for.  */
18241
18242 static int
18243 is_type_tag_for_partial (int tag)
18244 {
18245   switch (tag)
18246     {
18247 #if 0
18248     /* Some types that would be reasonable to generate partial symbols for,
18249        that we don't at present.  */
18250     case DW_TAG_array_type:
18251     case DW_TAG_file_type:
18252     case DW_TAG_ptr_to_member_type:
18253     case DW_TAG_set_type:
18254     case DW_TAG_string_type:
18255     case DW_TAG_subroutine_type:
18256 #endif
18257     case DW_TAG_base_type:
18258     case DW_TAG_class_type:
18259     case DW_TAG_interface_type:
18260     case DW_TAG_enumeration_type:
18261     case DW_TAG_structure_type:
18262     case DW_TAG_subrange_type:
18263     case DW_TAG_typedef:
18264     case DW_TAG_union_type:
18265       return 1;
18266     default:
18267       return 0;
18268     }
18269 }
18270
18271 /* Load all DIEs that are interesting for partial symbols into memory.  */
18272
18273 static struct partial_die_info *
18274 load_partial_dies (const struct die_reader_specs *reader,
18275                    const gdb_byte *info_ptr, int building_psymtab)
18276 {
18277   struct dwarf2_cu *cu = reader->cu;
18278   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18279   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18280   unsigned int bytes_read;
18281   unsigned int load_all = 0;
18282   int nesting_level = 1;
18283
18284   parent_die = NULL;
18285   last_die = NULL;
18286
18287   gdb_assert (cu->per_cu != NULL);
18288   if (cu->per_cu->load_all_dies)
18289     load_all = 1;
18290
18291   cu->partial_dies
18292     = htab_create_alloc_ex (cu->header.length / 12,
18293                             partial_die_hash,
18294                             partial_die_eq,
18295                             NULL,
18296                             &cu->comp_unit_obstack,
18297                             hashtab_obstack_allocate,
18298                             dummy_obstack_deallocate);
18299
18300   while (1)
18301     {
18302       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18303
18304       /* A NULL abbrev means the end of a series of children.  */
18305       if (abbrev == NULL)
18306         {
18307           if (--nesting_level == 0)
18308             return first_die;
18309
18310           info_ptr += bytes_read;
18311           last_die = parent_die;
18312           parent_die = parent_die->die_parent;
18313           continue;
18314         }
18315
18316       /* Check for template arguments.  We never save these; if
18317          they're seen, we just mark the parent, and go on our way.  */
18318       if (parent_die != NULL
18319           && cu->language == language_cplus
18320           && (abbrev->tag == DW_TAG_template_type_param
18321               || abbrev->tag == DW_TAG_template_value_param))
18322         {
18323           parent_die->has_template_arguments = 1;
18324
18325           if (!load_all)
18326             {
18327               /* We don't need a partial DIE for the template argument.  */
18328               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18329               continue;
18330             }
18331         }
18332
18333       /* We only recurse into c++ subprograms looking for template arguments.
18334          Skip their other children.  */
18335       if (!load_all
18336           && cu->language == language_cplus
18337           && parent_die != NULL
18338           && parent_die->tag == DW_TAG_subprogram)
18339         {
18340           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18341           continue;
18342         }
18343
18344       /* Check whether this DIE is interesting enough to save.  Normally
18345          we would not be interested in members here, but there may be
18346          later variables referencing them via DW_AT_specification (for
18347          static members).  */
18348       if (!load_all
18349           && !is_type_tag_for_partial (abbrev->tag)
18350           && abbrev->tag != DW_TAG_constant
18351           && abbrev->tag != DW_TAG_enumerator
18352           && abbrev->tag != DW_TAG_subprogram
18353           && abbrev->tag != DW_TAG_inlined_subroutine
18354           && abbrev->tag != DW_TAG_lexical_block
18355           && abbrev->tag != DW_TAG_variable
18356           && abbrev->tag != DW_TAG_namespace
18357           && abbrev->tag != DW_TAG_module
18358           && abbrev->tag != DW_TAG_member
18359           && abbrev->tag != DW_TAG_imported_unit
18360           && abbrev->tag != DW_TAG_imported_declaration)
18361         {
18362           /* Otherwise we skip to the next sibling, if any.  */
18363           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18364           continue;
18365         }
18366
18367       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18368                                    abbrev);
18369
18370       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18371
18372       /* This two-pass algorithm for processing partial symbols has a
18373          high cost in cache pressure.  Thus, handle some simple cases
18374          here which cover the majority of C partial symbols.  DIEs
18375          which neither have specification tags in them, nor could have
18376          specification tags elsewhere pointing at them, can simply be
18377          processed and discarded.
18378
18379          This segment is also optional; scan_partial_symbols and
18380          add_partial_symbol will handle these DIEs if we chain
18381          them in normally.  When compilers which do not emit large
18382          quantities of duplicate debug information are more common,
18383          this code can probably be removed.  */
18384
18385       /* Any complete simple types at the top level (pretty much all
18386          of them, for a language without namespaces), can be processed
18387          directly.  */
18388       if (parent_die == NULL
18389           && pdi.has_specification == 0
18390           && pdi.is_declaration == 0
18391           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18392               || pdi.tag == DW_TAG_base_type
18393               || pdi.tag == DW_TAG_subrange_type))
18394         {
18395           if (building_psymtab && pdi.name != NULL)
18396             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18397                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18398                                  &objfile->static_psymbols,
18399                                  0, cu->language, objfile);
18400           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18401           continue;
18402         }
18403
18404       /* The exception for DW_TAG_typedef with has_children above is
18405          a workaround of GCC PR debug/47510.  In the case of this complaint
18406          type_name_or_error will error on such types later.
18407
18408          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18409          it could not find the child DIEs referenced later, this is checked
18410          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18411
18412       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18413         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18414                      "- DIE at %s [in module %s]"),
18415                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18416
18417       /* If we're at the second level, and we're an enumerator, and
18418          our parent has no specification (meaning possibly lives in a
18419          namespace elsewhere), then we can add the partial symbol now
18420          instead of queueing it.  */
18421       if (pdi.tag == DW_TAG_enumerator
18422           && parent_die != NULL
18423           && parent_die->die_parent == NULL
18424           && parent_die->tag == DW_TAG_enumeration_type
18425           && parent_die->has_specification == 0)
18426         {
18427           if (pdi.name == NULL)
18428             complaint (_("malformed enumerator DIE ignored"));
18429           else if (building_psymtab)
18430             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18431                                  VAR_DOMAIN, LOC_CONST, -1,
18432                                  cu->language == language_cplus
18433                                  ? &objfile->global_psymbols
18434                                  : &objfile->static_psymbols,
18435                                  0, cu->language, objfile);
18436
18437           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18438           continue;
18439         }
18440
18441       struct partial_die_info *part_die
18442         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18443
18444       /* We'll save this DIE so link it in.  */
18445       part_die->die_parent = parent_die;
18446       part_die->die_sibling = NULL;
18447       part_die->die_child = NULL;
18448
18449       if (last_die && last_die == parent_die)
18450         last_die->die_child = part_die;
18451       else if (last_die)
18452         last_die->die_sibling = part_die;
18453
18454       last_die = part_die;
18455
18456       if (first_die == NULL)
18457         first_die = part_die;
18458
18459       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18460          find interesting need to be in the hash table, because we
18461          also have the parent/sibling/child chains; only those that we
18462          might refer to by offset later during partial symbol reading.
18463
18464          For now this means things that might have be the target of a
18465          DW_AT_specification, DW_AT_abstract_origin, or
18466          DW_AT_extension.  DW_AT_extension will refer only to
18467          namespaces; DW_AT_abstract_origin refers to functions (and
18468          many things under the function DIE, but we do not recurse
18469          into function DIEs during partial symbol reading) and
18470          possibly variables as well; DW_AT_specification refers to
18471          declarations.  Declarations ought to have the DW_AT_declaration
18472          flag.  It happens that GCC forgets to put it in sometimes, but
18473          only for functions, not for types.
18474
18475          Adding more things than necessary to the hash table is harmless
18476          except for the performance cost.  Adding too few will result in
18477          wasted time in find_partial_die, when we reread the compilation
18478          unit with load_all_dies set.  */
18479
18480       if (load_all
18481           || abbrev->tag == DW_TAG_constant
18482           || abbrev->tag == DW_TAG_subprogram
18483           || abbrev->tag == DW_TAG_variable
18484           || abbrev->tag == DW_TAG_namespace
18485           || part_die->is_declaration)
18486         {
18487           void **slot;
18488
18489           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18490                                            to_underlying (part_die->sect_off),
18491                                            INSERT);
18492           *slot = part_die;
18493         }
18494
18495       /* For some DIEs we want to follow their children (if any).  For C
18496          we have no reason to follow the children of structures; for other
18497          languages we have to, so that we can get at method physnames
18498          to infer fully qualified class names, for DW_AT_specification,
18499          and for C++ template arguments.  For C++, we also look one level
18500          inside functions to find template arguments (if the name of the
18501          function does not already contain the template arguments).
18502
18503          For Ada, we need to scan the children of subprograms and lexical
18504          blocks as well because Ada allows the definition of nested
18505          entities that could be interesting for the debugger, such as
18506          nested subprograms for instance.  */
18507       if (last_die->has_children
18508           && (load_all
18509               || last_die->tag == DW_TAG_namespace
18510               || last_die->tag == DW_TAG_module
18511               || last_die->tag == DW_TAG_enumeration_type
18512               || (cu->language == language_cplus
18513                   && last_die->tag == DW_TAG_subprogram
18514                   && (last_die->name == NULL
18515                       || strchr (last_die->name, '<') == NULL))
18516               || (cu->language != language_c
18517                   && (last_die->tag == DW_TAG_class_type
18518                       || last_die->tag == DW_TAG_interface_type
18519                       || last_die->tag == DW_TAG_structure_type
18520                       || last_die->tag == DW_TAG_union_type))
18521               || (cu->language == language_ada
18522                   && (last_die->tag == DW_TAG_subprogram
18523                       || last_die->tag == DW_TAG_lexical_block))))
18524         {
18525           nesting_level++;
18526           parent_die = last_die;
18527           continue;
18528         }
18529
18530       /* Otherwise we skip to the next sibling, if any.  */
18531       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18532
18533       /* Back to the top, do it again.  */
18534     }
18535 }
18536
18537 partial_die_info::partial_die_info (sect_offset sect_off_,
18538                                     struct abbrev_info *abbrev)
18539   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18540 {
18541 }
18542
18543 /* Read a minimal amount of information into the minimal die structure.
18544    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18545
18546 const gdb_byte *
18547 partial_die_info::read (const struct die_reader_specs *reader,
18548                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18549 {
18550   struct dwarf2_cu *cu = reader->cu;
18551   struct dwarf2_per_objfile *dwarf2_per_objfile
18552     = cu->per_cu->dwarf2_per_objfile;
18553   unsigned int i;
18554   int has_low_pc_attr = 0;
18555   int has_high_pc_attr = 0;
18556   int high_pc_relative = 0;
18557
18558   for (i = 0; i < abbrev.num_attrs; ++i)
18559     {
18560       struct attribute attr;
18561
18562       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18563
18564       /* Store the data if it is of an attribute we want to keep in a
18565          partial symbol table.  */
18566       switch (attr.name)
18567         {
18568         case DW_AT_name:
18569           switch (tag)
18570             {
18571             case DW_TAG_compile_unit:
18572             case DW_TAG_partial_unit:
18573             case DW_TAG_type_unit:
18574               /* Compilation units have a DW_AT_name that is a filename, not
18575                  a source language identifier.  */
18576             case DW_TAG_enumeration_type:
18577             case DW_TAG_enumerator:
18578               /* These tags always have simple identifiers already; no need
18579                  to canonicalize them.  */
18580               name = DW_STRING (&attr);
18581               break;
18582             default:
18583               {
18584                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18585
18586                 name
18587                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18588                                               &objfile->per_bfd->storage_obstack);
18589               }
18590               break;
18591             }
18592           break;
18593         case DW_AT_linkage_name:
18594         case DW_AT_MIPS_linkage_name:
18595           /* Note that both forms of linkage name might appear.  We
18596              assume they will be the same, and we only store the last
18597              one we see.  */
18598           if (cu->language == language_ada)
18599             name = DW_STRING (&attr);
18600           linkage_name = DW_STRING (&attr);
18601           break;
18602         case DW_AT_low_pc:
18603           has_low_pc_attr = 1;
18604           lowpc = attr_value_as_address (&attr);
18605           break;
18606         case DW_AT_high_pc:
18607           has_high_pc_attr = 1;
18608           highpc = attr_value_as_address (&attr);
18609           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18610                 high_pc_relative = 1;
18611           break;
18612         case DW_AT_location:
18613           /* Support the .debug_loc offsets.  */
18614           if (attr_form_is_block (&attr))
18615             {
18616                d.locdesc = DW_BLOCK (&attr);
18617             }
18618           else if (attr_form_is_section_offset (&attr))
18619             {
18620               dwarf2_complex_location_expr_complaint ();
18621             }
18622           else
18623             {
18624               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18625                                                      "partial symbol information");
18626             }
18627           break;
18628         case DW_AT_external:
18629           is_external = DW_UNSND (&attr);
18630           break;
18631         case DW_AT_declaration:
18632           is_declaration = DW_UNSND (&attr);
18633           break;
18634         case DW_AT_type:
18635           has_type = 1;
18636           break;
18637         case DW_AT_abstract_origin:
18638         case DW_AT_specification:
18639         case DW_AT_extension:
18640           has_specification = 1;
18641           spec_offset = dwarf2_get_ref_die_offset (&attr);
18642           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18643                                    || cu->per_cu->is_dwz);
18644           break;
18645         case DW_AT_sibling:
18646           /* Ignore absolute siblings, they might point outside of
18647              the current compile unit.  */
18648           if (attr.form == DW_FORM_ref_addr)
18649             complaint (_("ignoring absolute DW_AT_sibling"));
18650           else
18651             {
18652               const gdb_byte *buffer = reader->buffer;
18653               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18654               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18655
18656               if (sibling_ptr < info_ptr)
18657                 complaint (_("DW_AT_sibling points backwards"));
18658               else if (sibling_ptr > reader->buffer_end)
18659                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18660               else
18661                 sibling = sibling_ptr;
18662             }
18663           break;
18664         case DW_AT_byte_size:
18665           has_byte_size = 1;
18666           break;
18667         case DW_AT_const_value:
18668           has_const_value = 1;
18669           break;
18670         case DW_AT_calling_convention:
18671           /* DWARF doesn't provide a way to identify a program's source-level
18672              entry point.  DW_AT_calling_convention attributes are only meant
18673              to describe functions' calling conventions.
18674
18675              However, because it's a necessary piece of information in
18676              Fortran, and before DWARF 4 DW_CC_program was the only
18677              piece of debugging information whose definition refers to
18678              a 'main program' at all, several compilers marked Fortran
18679              main programs with DW_CC_program --- even when those
18680              functions use the standard calling conventions.
18681
18682              Although DWARF now specifies a way to provide this
18683              information, we support this practice for backward
18684              compatibility.  */
18685           if (DW_UNSND (&attr) == DW_CC_program
18686               && cu->language == language_fortran)
18687             main_subprogram = 1;
18688           break;
18689         case DW_AT_inline:
18690           if (DW_UNSND (&attr) == DW_INL_inlined
18691               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18692             may_be_inlined = 1;
18693           break;
18694
18695         case DW_AT_import:
18696           if (tag == DW_TAG_imported_unit)
18697             {
18698               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18699               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18700                                   || cu->per_cu->is_dwz);
18701             }
18702           break;
18703
18704         case DW_AT_main_subprogram:
18705           main_subprogram = DW_UNSND (&attr);
18706           break;
18707
18708         default:
18709           break;
18710         }
18711     }
18712
18713   if (high_pc_relative)
18714     highpc += lowpc;
18715
18716   if (has_low_pc_attr && has_high_pc_attr)
18717     {
18718       /* When using the GNU linker, .gnu.linkonce. sections are used to
18719          eliminate duplicate copies of functions and vtables and such.
18720          The linker will arbitrarily choose one and discard the others.
18721          The AT_*_pc values for such functions refer to local labels in
18722          these sections.  If the section from that file was discarded, the
18723          labels are not in the output, so the relocs get a value of 0.
18724          If this is a discarded function, mark the pc bounds as invalid,
18725          so that GDB will ignore it.  */
18726       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18727         {
18728           struct objfile *objfile = dwarf2_per_objfile->objfile;
18729           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18730
18731           complaint (_("DW_AT_low_pc %s is zero "
18732                        "for DIE at %s [in module %s]"),
18733                      paddress (gdbarch, lowpc),
18734                      sect_offset_str (sect_off),
18735                      objfile_name (objfile));
18736         }
18737       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18738       else if (lowpc >= highpc)
18739         {
18740           struct objfile *objfile = dwarf2_per_objfile->objfile;
18741           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18742
18743           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18744                        "for DIE at %s [in module %s]"),
18745                      paddress (gdbarch, lowpc),
18746                      paddress (gdbarch, highpc),
18747                      sect_offset_str (sect_off),
18748                      objfile_name (objfile));
18749         }
18750       else
18751         has_pc_info = 1;
18752     }
18753
18754   return info_ptr;
18755 }
18756
18757 /* Find a cached partial DIE at OFFSET in CU.  */
18758
18759 struct partial_die_info *
18760 dwarf2_cu::find_partial_die (sect_offset sect_off)
18761 {
18762   struct partial_die_info *lookup_die = NULL;
18763   struct partial_die_info part_die (sect_off);
18764
18765   lookup_die = ((struct partial_die_info *)
18766                 htab_find_with_hash (partial_dies, &part_die,
18767                                      to_underlying (sect_off)));
18768
18769   return lookup_die;
18770 }
18771
18772 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18773    except in the case of .debug_types DIEs which do not reference
18774    outside their CU (they do however referencing other types via
18775    DW_FORM_ref_sig8).  */
18776
18777 static struct partial_die_info *
18778 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18779 {
18780   struct dwarf2_per_objfile *dwarf2_per_objfile
18781     = cu->per_cu->dwarf2_per_objfile;
18782   struct objfile *objfile = dwarf2_per_objfile->objfile;
18783   struct dwarf2_per_cu_data *per_cu = NULL;
18784   struct partial_die_info *pd = NULL;
18785
18786   if (offset_in_dwz == cu->per_cu->is_dwz
18787       && offset_in_cu_p (&cu->header, sect_off))
18788     {
18789       pd = cu->find_partial_die (sect_off);
18790       if (pd != NULL)
18791         return pd;
18792       /* We missed recording what we needed.
18793          Load all dies and try again.  */
18794       per_cu = cu->per_cu;
18795     }
18796   else
18797     {
18798       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18799       if (cu->per_cu->is_debug_types)
18800         {
18801           error (_("Dwarf Error: Type Unit at offset %s contains"
18802                    " external reference to offset %s [in module %s].\n"),
18803                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18804                  bfd_get_filename (objfile->obfd));
18805         }
18806       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18807                                                  dwarf2_per_objfile);
18808
18809       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18810         load_partial_comp_unit (per_cu);
18811
18812       per_cu->cu->last_used = 0;
18813       pd = per_cu->cu->find_partial_die (sect_off);
18814     }
18815
18816   /* If we didn't find it, and not all dies have been loaded,
18817      load them all and try again.  */
18818
18819   if (pd == NULL && per_cu->load_all_dies == 0)
18820     {
18821       per_cu->load_all_dies = 1;
18822
18823       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18824          THIS_CU->cu may already be in use.  So we can't just free it and
18825          replace its DIEs with the ones we read in.  Instead, we leave those
18826          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18827          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18828          set.  */
18829       load_partial_comp_unit (per_cu);
18830
18831       pd = per_cu->cu->find_partial_die (sect_off);
18832     }
18833
18834   if (pd == NULL)
18835     internal_error (__FILE__, __LINE__,
18836                     _("could not find partial DIE %s "
18837                       "in cache [from module %s]\n"),
18838                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18839   return pd;
18840 }
18841
18842 /* See if we can figure out if the class lives in a namespace.  We do
18843    this by looking for a member function; its demangled name will
18844    contain namespace info, if there is any.  */
18845
18846 static void
18847 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18848                                   struct dwarf2_cu *cu)
18849 {
18850   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18851      what template types look like, because the demangler
18852      frequently doesn't give the same name as the debug info.  We
18853      could fix this by only using the demangled name to get the
18854      prefix (but see comment in read_structure_type).  */
18855
18856   struct partial_die_info *real_pdi;
18857   struct partial_die_info *child_pdi;
18858
18859   /* If this DIE (this DIE's specification, if any) has a parent, then
18860      we should not do this.  We'll prepend the parent's fully qualified
18861      name when we create the partial symbol.  */
18862
18863   real_pdi = struct_pdi;
18864   while (real_pdi->has_specification)
18865     real_pdi = find_partial_die (real_pdi->spec_offset,
18866                                  real_pdi->spec_is_dwz, cu);
18867
18868   if (real_pdi->die_parent != NULL)
18869     return;
18870
18871   for (child_pdi = struct_pdi->die_child;
18872        child_pdi != NULL;
18873        child_pdi = child_pdi->die_sibling)
18874     {
18875       if (child_pdi->tag == DW_TAG_subprogram
18876           && child_pdi->linkage_name != NULL)
18877         {
18878           char *actual_class_name
18879             = language_class_name_from_physname (cu->language_defn,
18880                                                  child_pdi->linkage_name);
18881           if (actual_class_name != NULL)
18882             {
18883               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18884               struct_pdi->name
18885                 = ((const char *)
18886                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18887                                   actual_class_name,
18888                                   strlen (actual_class_name)));
18889               xfree (actual_class_name);
18890             }
18891           break;
18892         }
18893     }
18894 }
18895
18896 void
18897 partial_die_info::fixup (struct dwarf2_cu *cu)
18898 {
18899   /* Once we've fixed up a die, there's no point in doing so again.
18900      This also avoids a memory leak if we were to call
18901      guess_partial_die_structure_name multiple times.  */
18902   if (fixup_called)
18903     return;
18904
18905   /* If we found a reference attribute and the DIE has no name, try
18906      to find a name in the referred to DIE.  */
18907
18908   if (name == NULL && has_specification)
18909     {
18910       struct partial_die_info *spec_die;
18911
18912       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18913
18914       spec_die->fixup (cu);
18915
18916       if (spec_die->name)
18917         {
18918           name = spec_die->name;
18919
18920           /* Copy DW_AT_external attribute if it is set.  */
18921           if (spec_die->is_external)
18922             is_external = spec_die->is_external;
18923         }
18924     }
18925
18926   /* Set default names for some unnamed DIEs.  */
18927
18928   if (name == NULL && tag == DW_TAG_namespace)
18929     name = CP_ANONYMOUS_NAMESPACE_STR;
18930
18931   /* If there is no parent die to provide a namespace, and there are
18932      children, see if we can determine the namespace from their linkage
18933      name.  */
18934   if (cu->language == language_cplus
18935       && !VEC_empty (dwarf2_section_info_def,
18936                      cu->per_cu->dwarf2_per_objfile->types)
18937       && die_parent == NULL
18938       && has_children
18939       && (tag == DW_TAG_class_type
18940           || tag == DW_TAG_structure_type
18941           || tag == DW_TAG_union_type))
18942     guess_partial_die_structure_name (this, cu);
18943
18944   /* GCC might emit a nameless struct or union that has a linkage
18945      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18946   if (name == NULL
18947       && (tag == DW_TAG_class_type
18948           || tag == DW_TAG_interface_type
18949           || tag == DW_TAG_structure_type
18950           || tag == DW_TAG_union_type)
18951       && linkage_name != NULL)
18952     {
18953       char *demangled;
18954
18955       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18956       if (demangled)
18957         {
18958           const char *base;
18959
18960           /* Strip any leading namespaces/classes, keep only the base name.
18961              DW_AT_name for named DIEs does not contain the prefixes.  */
18962           base = strrchr (demangled, ':');
18963           if (base && base > demangled && base[-1] == ':')
18964             base++;
18965           else
18966             base = demangled;
18967
18968           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18969           name
18970             = ((const char *)
18971                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18972                               base, strlen (base)));
18973           xfree (demangled);
18974         }
18975     }
18976
18977   fixup_called = 1;
18978 }
18979
18980 /* Read an attribute value described by an attribute form.  */
18981
18982 static const gdb_byte *
18983 read_attribute_value (const struct die_reader_specs *reader,
18984                       struct attribute *attr, unsigned form,
18985                       LONGEST implicit_const, const gdb_byte *info_ptr)
18986 {
18987   struct dwarf2_cu *cu = reader->cu;
18988   struct dwarf2_per_objfile *dwarf2_per_objfile
18989     = cu->per_cu->dwarf2_per_objfile;
18990   struct objfile *objfile = dwarf2_per_objfile->objfile;
18991   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18992   bfd *abfd = reader->abfd;
18993   struct comp_unit_head *cu_header = &cu->header;
18994   unsigned int bytes_read;
18995   struct dwarf_block *blk;
18996
18997   attr->form = (enum dwarf_form) form;
18998   switch (form)
18999     {
19000     case DW_FORM_ref_addr:
19001       if (cu->header.version == 2)
19002         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19003       else
19004         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19005                                        &cu->header, &bytes_read);
19006       info_ptr += bytes_read;
19007       break;
19008     case DW_FORM_GNU_ref_alt:
19009       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19010       info_ptr += bytes_read;
19011       break;
19012     case DW_FORM_addr:
19013       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19014       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19015       info_ptr += bytes_read;
19016       break;
19017     case DW_FORM_block2:
19018       blk = dwarf_alloc_block (cu);
19019       blk->size = read_2_bytes (abfd, info_ptr);
19020       info_ptr += 2;
19021       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19022       info_ptr += blk->size;
19023       DW_BLOCK (attr) = blk;
19024       break;
19025     case DW_FORM_block4:
19026       blk = dwarf_alloc_block (cu);
19027       blk->size = read_4_bytes (abfd, info_ptr);
19028       info_ptr += 4;
19029       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19030       info_ptr += blk->size;
19031       DW_BLOCK (attr) = blk;
19032       break;
19033     case DW_FORM_data2:
19034       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19035       info_ptr += 2;
19036       break;
19037     case DW_FORM_data4:
19038       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19039       info_ptr += 4;
19040       break;
19041     case DW_FORM_data8:
19042       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19043       info_ptr += 8;
19044       break;
19045     case DW_FORM_data16:
19046       blk = dwarf_alloc_block (cu);
19047       blk->size = 16;
19048       blk->data = read_n_bytes (abfd, info_ptr, 16);
19049       info_ptr += 16;
19050       DW_BLOCK (attr) = blk;
19051       break;
19052     case DW_FORM_sec_offset:
19053       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19054       info_ptr += bytes_read;
19055       break;
19056     case DW_FORM_string:
19057       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19058       DW_STRING_IS_CANONICAL (attr) = 0;
19059       info_ptr += bytes_read;
19060       break;
19061     case DW_FORM_strp:
19062       if (!cu->per_cu->is_dwz)
19063         {
19064           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19065                                                    abfd, info_ptr, cu_header,
19066                                                    &bytes_read);
19067           DW_STRING_IS_CANONICAL (attr) = 0;
19068           info_ptr += bytes_read;
19069           break;
19070         }
19071       /* FALLTHROUGH */
19072     case DW_FORM_line_strp:
19073       if (!cu->per_cu->is_dwz)
19074         {
19075           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19076                                                         abfd, info_ptr,
19077                                                         cu_header, &bytes_read);
19078           DW_STRING_IS_CANONICAL (attr) = 0;
19079           info_ptr += bytes_read;
19080           break;
19081         }
19082       /* FALLTHROUGH */
19083     case DW_FORM_GNU_strp_alt:
19084       {
19085         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19086         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19087                                           &bytes_read);
19088
19089         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19090                                                           dwz, str_offset);
19091         DW_STRING_IS_CANONICAL (attr) = 0;
19092         info_ptr += bytes_read;
19093       }
19094       break;
19095     case DW_FORM_exprloc:
19096     case DW_FORM_block:
19097       blk = dwarf_alloc_block (cu);
19098       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19099       info_ptr += bytes_read;
19100       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19101       info_ptr += blk->size;
19102       DW_BLOCK (attr) = blk;
19103       break;
19104     case DW_FORM_block1:
19105       blk = dwarf_alloc_block (cu);
19106       blk->size = read_1_byte (abfd, info_ptr);
19107       info_ptr += 1;
19108       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19109       info_ptr += blk->size;
19110       DW_BLOCK (attr) = blk;
19111       break;
19112     case DW_FORM_data1:
19113       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19114       info_ptr += 1;
19115       break;
19116     case DW_FORM_flag:
19117       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19118       info_ptr += 1;
19119       break;
19120     case DW_FORM_flag_present:
19121       DW_UNSND (attr) = 1;
19122       break;
19123     case DW_FORM_sdata:
19124       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19125       info_ptr += bytes_read;
19126       break;
19127     case DW_FORM_udata:
19128       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19129       info_ptr += bytes_read;
19130       break;
19131     case DW_FORM_ref1:
19132       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19133                          + read_1_byte (abfd, info_ptr));
19134       info_ptr += 1;
19135       break;
19136     case DW_FORM_ref2:
19137       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19138                          + read_2_bytes (abfd, info_ptr));
19139       info_ptr += 2;
19140       break;
19141     case DW_FORM_ref4:
19142       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19143                          + read_4_bytes (abfd, info_ptr));
19144       info_ptr += 4;
19145       break;
19146     case DW_FORM_ref8:
19147       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19148                          + read_8_bytes (abfd, info_ptr));
19149       info_ptr += 8;
19150       break;
19151     case DW_FORM_ref_sig8:
19152       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19153       info_ptr += 8;
19154       break;
19155     case DW_FORM_ref_udata:
19156       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19157                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19158       info_ptr += bytes_read;
19159       break;
19160     case DW_FORM_indirect:
19161       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19162       info_ptr += bytes_read;
19163       if (form == DW_FORM_implicit_const)
19164         {
19165           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19166           info_ptr += bytes_read;
19167         }
19168       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19169                                        info_ptr);
19170       break;
19171     case DW_FORM_implicit_const:
19172       DW_SND (attr) = implicit_const;
19173       break;
19174     case DW_FORM_GNU_addr_index:
19175       if (reader->dwo_file == NULL)
19176         {
19177           /* For now flag a hard error.
19178              Later we can turn this into a complaint.  */
19179           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19180                  dwarf_form_name (form),
19181                  bfd_get_filename (abfd));
19182         }
19183       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19184       info_ptr += bytes_read;
19185       break;
19186     case DW_FORM_GNU_str_index:
19187       if (reader->dwo_file == NULL)
19188         {
19189           /* For now flag a hard error.
19190              Later we can turn this into a complaint if warranted.  */
19191           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19192                  dwarf_form_name (form),
19193                  bfd_get_filename (abfd));
19194         }
19195       {
19196         ULONGEST str_index =
19197           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19198
19199         DW_STRING (attr) = read_str_index (reader, str_index);
19200         DW_STRING_IS_CANONICAL (attr) = 0;
19201         info_ptr += bytes_read;
19202       }
19203       break;
19204     default:
19205       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19206              dwarf_form_name (form),
19207              bfd_get_filename (abfd));
19208     }
19209
19210   /* Super hack.  */
19211   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19212     attr->form = DW_FORM_GNU_ref_alt;
19213
19214   /* We have seen instances where the compiler tried to emit a byte
19215      size attribute of -1 which ended up being encoded as an unsigned
19216      0xffffffff.  Although 0xffffffff is technically a valid size value,
19217      an object of this size seems pretty unlikely so we can relatively
19218      safely treat these cases as if the size attribute was invalid and
19219      treat them as zero by default.  */
19220   if (attr->name == DW_AT_byte_size
19221       && form == DW_FORM_data4
19222       && DW_UNSND (attr) >= 0xffffffff)
19223     {
19224       complaint
19225         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19226          hex_string (DW_UNSND (attr)));
19227       DW_UNSND (attr) = 0;
19228     }
19229
19230   return info_ptr;
19231 }
19232
19233 /* Read an attribute described by an abbreviated attribute.  */
19234
19235 static const gdb_byte *
19236 read_attribute (const struct die_reader_specs *reader,
19237                 struct attribute *attr, struct attr_abbrev *abbrev,
19238                 const gdb_byte *info_ptr)
19239 {
19240   attr->name = abbrev->name;
19241   return read_attribute_value (reader, attr, abbrev->form,
19242                                abbrev->implicit_const, info_ptr);
19243 }
19244
19245 /* Read dwarf information from a buffer.  */
19246
19247 static unsigned int
19248 read_1_byte (bfd *abfd, const gdb_byte *buf)
19249 {
19250   return bfd_get_8 (abfd, buf);
19251 }
19252
19253 static int
19254 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19255 {
19256   return bfd_get_signed_8 (abfd, buf);
19257 }
19258
19259 static unsigned int
19260 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19261 {
19262   return bfd_get_16 (abfd, buf);
19263 }
19264
19265 static int
19266 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19267 {
19268   return bfd_get_signed_16 (abfd, buf);
19269 }
19270
19271 static unsigned int
19272 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19273 {
19274   return bfd_get_32 (abfd, buf);
19275 }
19276
19277 static int
19278 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19279 {
19280   return bfd_get_signed_32 (abfd, buf);
19281 }
19282
19283 static ULONGEST
19284 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19285 {
19286   return bfd_get_64 (abfd, buf);
19287 }
19288
19289 static CORE_ADDR
19290 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19291               unsigned int *bytes_read)
19292 {
19293   struct comp_unit_head *cu_header = &cu->header;
19294   CORE_ADDR retval = 0;
19295
19296   if (cu_header->signed_addr_p)
19297     {
19298       switch (cu_header->addr_size)
19299         {
19300         case 2:
19301           retval = bfd_get_signed_16 (abfd, buf);
19302           break;
19303         case 4:
19304           retval = bfd_get_signed_32 (abfd, buf);
19305           break;
19306         case 8:
19307           retval = bfd_get_signed_64 (abfd, buf);
19308           break;
19309         default:
19310           internal_error (__FILE__, __LINE__,
19311                           _("read_address: bad switch, signed [in module %s]"),
19312                           bfd_get_filename (abfd));
19313         }
19314     }
19315   else
19316     {
19317       switch (cu_header->addr_size)
19318         {
19319         case 2:
19320           retval = bfd_get_16 (abfd, buf);
19321           break;
19322         case 4:
19323           retval = bfd_get_32 (abfd, buf);
19324           break;
19325         case 8:
19326           retval = bfd_get_64 (abfd, buf);
19327           break;
19328         default:
19329           internal_error (__FILE__, __LINE__,
19330                           _("read_address: bad switch, "
19331                             "unsigned [in module %s]"),
19332                           bfd_get_filename (abfd));
19333         }
19334     }
19335
19336   *bytes_read = cu_header->addr_size;
19337   return retval;
19338 }
19339
19340 /* Read the initial length from a section.  The (draft) DWARF 3
19341    specification allows the initial length to take up either 4 bytes
19342    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19343    bytes describe the length and all offsets will be 8 bytes in length
19344    instead of 4.
19345
19346    An older, non-standard 64-bit format is also handled by this
19347    function.  The older format in question stores the initial length
19348    as an 8-byte quantity without an escape value.  Lengths greater
19349    than 2^32 aren't very common which means that the initial 4 bytes
19350    is almost always zero.  Since a length value of zero doesn't make
19351    sense for the 32-bit format, this initial zero can be considered to
19352    be an escape value which indicates the presence of the older 64-bit
19353    format.  As written, the code can't detect (old format) lengths
19354    greater than 4GB.  If it becomes necessary to handle lengths
19355    somewhat larger than 4GB, we could allow other small values (such
19356    as the non-sensical values of 1, 2, and 3) to also be used as
19357    escape values indicating the presence of the old format.
19358
19359    The value returned via bytes_read should be used to increment the
19360    relevant pointer after calling read_initial_length().
19361
19362    [ Note:  read_initial_length() and read_offset() are based on the
19363      document entitled "DWARF Debugging Information Format", revision
19364      3, draft 8, dated November 19, 2001.  This document was obtained
19365      from:
19366
19367         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19368
19369      This document is only a draft and is subject to change.  (So beware.)
19370
19371      Details regarding the older, non-standard 64-bit format were
19372      determined empirically by examining 64-bit ELF files produced by
19373      the SGI toolchain on an IRIX 6.5 machine.
19374
19375      - Kevin, July 16, 2002
19376    ] */
19377
19378 static LONGEST
19379 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19380 {
19381   LONGEST length = bfd_get_32 (abfd, buf);
19382
19383   if (length == 0xffffffff)
19384     {
19385       length = bfd_get_64 (abfd, buf + 4);
19386       *bytes_read = 12;
19387     }
19388   else if (length == 0)
19389     {
19390       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19391       length = bfd_get_64 (abfd, buf);
19392       *bytes_read = 8;
19393     }
19394   else
19395     {
19396       *bytes_read = 4;
19397     }
19398
19399   return length;
19400 }
19401
19402 /* Cover function for read_initial_length.
19403    Returns the length of the object at BUF, and stores the size of the
19404    initial length in *BYTES_READ and stores the size that offsets will be in
19405    *OFFSET_SIZE.
19406    If the initial length size is not equivalent to that specified in
19407    CU_HEADER then issue a complaint.
19408    This is useful when reading non-comp-unit headers.  */
19409
19410 static LONGEST
19411 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19412                                         const struct comp_unit_head *cu_header,
19413                                         unsigned int *bytes_read,
19414                                         unsigned int *offset_size)
19415 {
19416   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19417
19418   gdb_assert (cu_header->initial_length_size == 4
19419               || cu_header->initial_length_size == 8
19420               || cu_header->initial_length_size == 12);
19421
19422   if (cu_header->initial_length_size != *bytes_read)
19423     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19424
19425   *offset_size = (*bytes_read == 4) ? 4 : 8;
19426   return length;
19427 }
19428
19429 /* Read an offset from the data stream.  The size of the offset is
19430    given by cu_header->offset_size.  */
19431
19432 static LONGEST
19433 read_offset (bfd *abfd, const gdb_byte *buf,
19434              const struct comp_unit_head *cu_header,
19435              unsigned int *bytes_read)
19436 {
19437   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19438
19439   *bytes_read = cu_header->offset_size;
19440   return offset;
19441 }
19442
19443 /* Read an offset from the data stream.  */
19444
19445 static LONGEST
19446 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19447 {
19448   LONGEST retval = 0;
19449
19450   switch (offset_size)
19451     {
19452     case 4:
19453       retval = bfd_get_32 (abfd, buf);
19454       break;
19455     case 8:
19456       retval = bfd_get_64 (abfd, buf);
19457       break;
19458     default:
19459       internal_error (__FILE__, __LINE__,
19460                       _("read_offset_1: bad switch [in module %s]"),
19461                       bfd_get_filename (abfd));
19462     }
19463
19464   return retval;
19465 }
19466
19467 static const gdb_byte *
19468 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19469 {
19470   /* If the size of a host char is 8 bits, we can return a pointer
19471      to the buffer, otherwise we have to copy the data to a buffer
19472      allocated on the temporary obstack.  */
19473   gdb_assert (HOST_CHAR_BIT == 8);
19474   return buf;
19475 }
19476
19477 static const char *
19478 read_direct_string (bfd *abfd, const gdb_byte *buf,
19479                     unsigned int *bytes_read_ptr)
19480 {
19481   /* If the size of a host char is 8 bits, we can return a pointer
19482      to the string, otherwise we have to copy the string to a buffer
19483      allocated on the temporary obstack.  */
19484   gdb_assert (HOST_CHAR_BIT == 8);
19485   if (*buf == '\0')
19486     {
19487       *bytes_read_ptr = 1;
19488       return NULL;
19489     }
19490   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19491   return (const char *) buf;
19492 }
19493
19494 /* Return pointer to string at section SECT offset STR_OFFSET with error
19495    reporting strings FORM_NAME and SECT_NAME.  */
19496
19497 static const char *
19498 read_indirect_string_at_offset_from (struct objfile *objfile,
19499                                      bfd *abfd, LONGEST str_offset,
19500                                      struct dwarf2_section_info *sect,
19501                                      const char *form_name,
19502                                      const char *sect_name)
19503 {
19504   dwarf2_read_section (objfile, sect);
19505   if (sect->buffer == NULL)
19506     error (_("%s used without %s section [in module %s]"),
19507            form_name, sect_name, bfd_get_filename (abfd));
19508   if (str_offset >= sect->size)
19509     error (_("%s pointing outside of %s section [in module %s]"),
19510            form_name, sect_name, bfd_get_filename (abfd));
19511   gdb_assert (HOST_CHAR_BIT == 8);
19512   if (sect->buffer[str_offset] == '\0')
19513     return NULL;
19514   return (const char *) (sect->buffer + str_offset);
19515 }
19516
19517 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19518
19519 static const char *
19520 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19521                                 bfd *abfd, LONGEST str_offset)
19522 {
19523   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19524                                               abfd, str_offset,
19525                                               &dwarf2_per_objfile->str,
19526                                               "DW_FORM_strp", ".debug_str");
19527 }
19528
19529 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19530
19531 static const char *
19532 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19533                                      bfd *abfd, LONGEST str_offset)
19534 {
19535   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19536                                               abfd, str_offset,
19537                                               &dwarf2_per_objfile->line_str,
19538                                               "DW_FORM_line_strp",
19539                                               ".debug_line_str");
19540 }
19541
19542 /* Read a string at offset STR_OFFSET in the .debug_str section from
19543    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19544    the string consists of a single NUL byte, return NULL; otherwise
19545    return a pointer to the string.  */
19546
19547 static const char *
19548 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19549                                LONGEST str_offset)
19550 {
19551   dwarf2_read_section (objfile, &dwz->str);
19552
19553   if (dwz->str.buffer == NULL)
19554     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19555              "section [in module %s]"),
19556            bfd_get_filename (dwz->dwz_bfd));
19557   if (str_offset >= dwz->str.size)
19558     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19559              ".debug_str section [in module %s]"),
19560            bfd_get_filename (dwz->dwz_bfd));
19561   gdb_assert (HOST_CHAR_BIT == 8);
19562   if (dwz->str.buffer[str_offset] == '\0')
19563     return NULL;
19564   return (const char *) (dwz->str.buffer + str_offset);
19565 }
19566
19567 /* Return pointer to string at .debug_str offset as read from BUF.
19568    BUF is assumed to be in a compilation unit described by CU_HEADER.
19569    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19570
19571 static const char *
19572 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19573                       const gdb_byte *buf,
19574                       const struct comp_unit_head *cu_header,
19575                       unsigned int *bytes_read_ptr)
19576 {
19577   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19578
19579   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19580 }
19581
19582 /* Return pointer to string at .debug_line_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_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19588                            bfd *abfd, 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_line_string_at_offset (dwarf2_per_objfile, abfd,
19595                                               str_offset);
19596 }
19597
19598 ULONGEST
19599 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19600                           unsigned int *bytes_read_ptr)
19601 {
19602   ULONGEST result;
19603   unsigned int num_read;
19604   int shift;
19605   unsigned char byte;
19606
19607   result = 0;
19608   shift = 0;
19609   num_read = 0;
19610   while (1)
19611     {
19612       byte = bfd_get_8 (abfd, buf);
19613       buf++;
19614       num_read++;
19615       result |= ((ULONGEST) (byte & 127) << shift);
19616       if ((byte & 128) == 0)
19617         {
19618           break;
19619         }
19620       shift += 7;
19621     }
19622   *bytes_read_ptr = num_read;
19623   return result;
19624 }
19625
19626 static LONGEST
19627 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19628                     unsigned int *bytes_read_ptr)
19629 {
19630   LONGEST result;
19631   int shift, num_read;
19632   unsigned char byte;
19633
19634   result = 0;
19635   shift = 0;
19636   num_read = 0;
19637   while (1)
19638     {
19639       byte = bfd_get_8 (abfd, buf);
19640       buf++;
19641       num_read++;
19642       result |= ((LONGEST) (byte & 127) << shift);
19643       shift += 7;
19644       if ((byte & 128) == 0)
19645         {
19646           break;
19647         }
19648     }
19649   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19650     result |= -(((LONGEST) 1) << shift);
19651   *bytes_read_ptr = num_read;
19652   return result;
19653 }
19654
19655 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19656    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19657    ADDR_SIZE is the size of addresses from the CU header.  */
19658
19659 static CORE_ADDR
19660 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19661                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19662 {
19663   struct objfile *objfile = dwarf2_per_objfile->objfile;
19664   bfd *abfd = objfile->obfd;
19665   const gdb_byte *info_ptr;
19666
19667   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19668   if (dwarf2_per_objfile->addr.buffer == NULL)
19669     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19670            objfile_name (objfile));
19671   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19672     error (_("DW_FORM_addr_index pointing outside of "
19673              ".debug_addr section [in module %s]"),
19674            objfile_name (objfile));
19675   info_ptr = (dwarf2_per_objfile->addr.buffer
19676               + addr_base + addr_index * addr_size);
19677   if (addr_size == 4)
19678     return bfd_get_32 (abfd, info_ptr);
19679   else
19680     return bfd_get_64 (abfd, info_ptr);
19681 }
19682
19683 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19684
19685 static CORE_ADDR
19686 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19687 {
19688   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19689                             cu->addr_base, cu->header.addr_size);
19690 }
19691
19692 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19693
19694 static CORE_ADDR
19695 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19696                              unsigned int *bytes_read)
19697 {
19698   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19699   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19700
19701   return read_addr_index (cu, addr_index);
19702 }
19703
19704 /* Data structure to pass results from dwarf2_read_addr_index_reader
19705    back to dwarf2_read_addr_index.  */
19706
19707 struct dwarf2_read_addr_index_data
19708 {
19709   ULONGEST addr_base;
19710   int addr_size;
19711 };
19712
19713 /* die_reader_func for dwarf2_read_addr_index.  */
19714
19715 static void
19716 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19717                                const gdb_byte *info_ptr,
19718                                struct die_info *comp_unit_die,
19719                                int has_children,
19720                                void *data)
19721 {
19722   struct dwarf2_cu *cu = reader->cu;
19723   struct dwarf2_read_addr_index_data *aidata =
19724     (struct dwarf2_read_addr_index_data *) data;
19725
19726   aidata->addr_base = cu->addr_base;
19727   aidata->addr_size = cu->header.addr_size;
19728 }
19729
19730 /* Given an index in .debug_addr, fetch the value.
19731    NOTE: This can be called during dwarf expression evaluation,
19732    long after the debug information has been read, and thus per_cu->cu
19733    may no longer exist.  */
19734
19735 CORE_ADDR
19736 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19737                         unsigned int addr_index)
19738 {
19739   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19740   struct dwarf2_cu *cu = per_cu->cu;
19741   ULONGEST addr_base;
19742   int addr_size;
19743
19744   /* We need addr_base and addr_size.
19745      If we don't have PER_CU->cu, we have to get it.
19746      Nasty, but the alternative is storing the needed info in PER_CU,
19747      which at this point doesn't seem justified: it's not clear how frequently
19748      it would get used and it would increase the size of every PER_CU.
19749      Entry points like dwarf2_per_cu_addr_size do a similar thing
19750      so we're not in uncharted territory here.
19751      Alas we need to be a bit more complicated as addr_base is contained
19752      in the DIE.
19753
19754      We don't need to read the entire CU(/TU).
19755      We just need the header and top level die.
19756
19757      IWBN to use the aging mechanism to let us lazily later discard the CU.
19758      For now we skip this optimization.  */
19759
19760   if (cu != NULL)
19761     {
19762       addr_base = cu->addr_base;
19763       addr_size = cu->header.addr_size;
19764     }
19765   else
19766     {
19767       struct dwarf2_read_addr_index_data aidata;
19768
19769       /* Note: We can't use init_cutu_and_read_dies_simple here,
19770          we need addr_base.  */
19771       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19772                                dwarf2_read_addr_index_reader, &aidata);
19773       addr_base = aidata.addr_base;
19774       addr_size = aidata.addr_size;
19775     }
19776
19777   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19778                             addr_size);
19779 }
19780
19781 /* Given a DW_FORM_GNU_str_index, fetch the string.
19782    This is only used by the Fission support.  */
19783
19784 static const char *
19785 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19786 {
19787   struct dwarf2_cu *cu = reader->cu;
19788   struct dwarf2_per_objfile *dwarf2_per_objfile
19789     = cu->per_cu->dwarf2_per_objfile;
19790   struct objfile *objfile = dwarf2_per_objfile->objfile;
19791   const char *objf_name = objfile_name (objfile);
19792   bfd *abfd = objfile->obfd;
19793   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19794   struct dwarf2_section_info *str_offsets_section =
19795     &reader->dwo_file->sections.str_offsets;
19796   const gdb_byte *info_ptr;
19797   ULONGEST str_offset;
19798   static const char form_name[] = "DW_FORM_GNU_str_index";
19799
19800   dwarf2_read_section (objfile, str_section);
19801   dwarf2_read_section (objfile, str_offsets_section);
19802   if (str_section->buffer == NULL)
19803     error (_("%s used without .debug_str.dwo section"
19804              " in CU at offset %s [in module %s]"),
19805            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19806   if (str_offsets_section->buffer == NULL)
19807     error (_("%s used without .debug_str_offsets.dwo section"
19808              " in CU at offset %s [in module %s]"),
19809            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19810   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19811     error (_("%s pointing outside of .debug_str_offsets.dwo"
19812              " section in CU at offset %s [in module %s]"),
19813            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19814   info_ptr = (str_offsets_section->buffer
19815               + str_index * cu->header.offset_size);
19816   if (cu->header.offset_size == 4)
19817     str_offset = bfd_get_32 (abfd, info_ptr);
19818   else
19819     str_offset = bfd_get_64 (abfd, info_ptr);
19820   if (str_offset >= str_section->size)
19821     error (_("Offset from %s pointing outside of"
19822              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19823            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19824   return (const char *) (str_section->buffer + str_offset);
19825 }
19826
19827 /* Return the length of an LEB128 number in BUF.  */
19828
19829 static int
19830 leb128_size (const gdb_byte *buf)
19831 {
19832   const gdb_byte *begin = buf;
19833   gdb_byte byte;
19834
19835   while (1)
19836     {
19837       byte = *buf++;
19838       if ((byte & 128) == 0)
19839         return buf - begin;
19840     }
19841 }
19842
19843 static void
19844 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19845 {
19846   switch (lang)
19847     {
19848     case DW_LANG_C89:
19849     case DW_LANG_C99:
19850     case DW_LANG_C11:
19851     case DW_LANG_C:
19852     case DW_LANG_UPC:
19853       cu->language = language_c;
19854       break;
19855     case DW_LANG_Java:
19856     case DW_LANG_C_plus_plus:
19857     case DW_LANG_C_plus_plus_11:
19858     case DW_LANG_C_plus_plus_14:
19859       cu->language = language_cplus;
19860       break;
19861     case DW_LANG_D:
19862       cu->language = language_d;
19863       break;
19864     case DW_LANG_Fortran77:
19865     case DW_LANG_Fortran90:
19866     case DW_LANG_Fortran95:
19867     case DW_LANG_Fortran03:
19868     case DW_LANG_Fortran08:
19869       cu->language = language_fortran;
19870       break;
19871     case DW_LANG_Go:
19872       cu->language = language_go;
19873       break;
19874     case DW_LANG_Mips_Assembler:
19875       cu->language = language_asm;
19876       break;
19877     case DW_LANG_Ada83:
19878     case DW_LANG_Ada95:
19879       cu->language = language_ada;
19880       break;
19881     case DW_LANG_Modula2:
19882       cu->language = language_m2;
19883       break;
19884     case DW_LANG_Pascal83:
19885       cu->language = language_pascal;
19886       break;
19887     case DW_LANG_ObjC:
19888       cu->language = language_objc;
19889       break;
19890     case DW_LANG_Rust:
19891     case DW_LANG_Rust_old:
19892       cu->language = language_rust;
19893       break;
19894     case DW_LANG_Cobol74:
19895     case DW_LANG_Cobol85:
19896     default:
19897       cu->language = language_minimal;
19898       break;
19899     }
19900   cu->language_defn = language_def (cu->language);
19901 }
19902
19903 /* Return the named attribute or NULL if not there.  */
19904
19905 static struct attribute *
19906 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19907 {
19908   for (;;)
19909     {
19910       unsigned int i;
19911       struct attribute *spec = NULL;
19912
19913       for (i = 0; i < die->num_attrs; ++i)
19914         {
19915           if (die->attrs[i].name == name)
19916             return &die->attrs[i];
19917           if (die->attrs[i].name == DW_AT_specification
19918               || die->attrs[i].name == DW_AT_abstract_origin)
19919             spec = &die->attrs[i];
19920         }
19921
19922       if (!spec)
19923         break;
19924
19925       die = follow_die_ref (die, spec, &cu);
19926     }
19927
19928   return NULL;
19929 }
19930
19931 /* Return the named attribute or NULL if not there,
19932    but do not follow DW_AT_specification, etc.
19933    This is for use in contexts where we're reading .debug_types dies.
19934    Following DW_AT_specification, DW_AT_abstract_origin will take us
19935    back up the chain, and we want to go down.  */
19936
19937 static struct attribute *
19938 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19939 {
19940   unsigned int i;
19941
19942   for (i = 0; i < die->num_attrs; ++i)
19943     if (die->attrs[i].name == name)
19944       return &die->attrs[i];
19945
19946   return NULL;
19947 }
19948
19949 /* Return the string associated with a string-typed attribute, or NULL if it
19950    is either not found or is of an incorrect type.  */
19951
19952 static const char *
19953 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19954 {
19955   struct attribute *attr;
19956   const char *str = NULL;
19957
19958   attr = dwarf2_attr (die, name, cu);
19959
19960   if (attr != NULL)
19961     {
19962       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19963           || attr->form == DW_FORM_string
19964           || attr->form == DW_FORM_GNU_str_index
19965           || attr->form == DW_FORM_GNU_strp_alt)
19966         str = DW_STRING (attr);
19967       else
19968         complaint (_("string type expected for attribute %s for "
19969                      "DIE at %s in module %s"),
19970                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19971                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19972     }
19973
19974   return str;
19975 }
19976
19977 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19978    and holds a non-zero value.  This function should only be used for
19979    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19980
19981 static int
19982 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19983 {
19984   struct attribute *attr = dwarf2_attr (die, name, cu);
19985
19986   return (attr && DW_UNSND (attr));
19987 }
19988
19989 static int
19990 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19991 {
19992   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19993      which value is non-zero.  However, we have to be careful with
19994      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19995      (via dwarf2_flag_true_p) follows this attribute.  So we may
19996      end up accidently finding a declaration attribute that belongs
19997      to a different DIE referenced by the specification attribute,
19998      even though the given DIE does not have a declaration attribute.  */
19999   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20000           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20001 }
20002
20003 /* Return the die giving the specification for DIE, if there is
20004    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20005    containing the return value on output.  If there is no
20006    specification, but there is an abstract origin, that is
20007    returned.  */
20008
20009 static struct die_info *
20010 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20011 {
20012   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20013                                              *spec_cu);
20014
20015   if (spec_attr == NULL)
20016     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20017
20018   if (spec_attr == NULL)
20019     return NULL;
20020   else
20021     return follow_die_ref (die, spec_attr, spec_cu);
20022 }
20023
20024 /* Stub for free_line_header to match void * callback types.  */
20025
20026 static void
20027 free_line_header_voidp (void *arg)
20028 {
20029   struct line_header *lh = (struct line_header *) arg;
20030
20031   delete lh;
20032 }
20033
20034 void
20035 line_header::add_include_dir (const char *include_dir)
20036 {
20037   if (dwarf_line_debug >= 2)
20038     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20039                         include_dirs.size () + 1, include_dir);
20040
20041   include_dirs.push_back (include_dir);
20042 }
20043
20044 void
20045 line_header::add_file_name (const char *name,
20046                             dir_index d_index,
20047                             unsigned int mod_time,
20048                             unsigned int length)
20049 {
20050   if (dwarf_line_debug >= 2)
20051     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20052                         (unsigned) file_names.size () + 1, name);
20053
20054   file_names.emplace_back (name, d_index, mod_time, length);
20055 }
20056
20057 /* A convenience function to find the proper .debug_line section for a CU.  */
20058
20059 static struct dwarf2_section_info *
20060 get_debug_line_section (struct dwarf2_cu *cu)
20061 {
20062   struct dwarf2_section_info *section;
20063   struct dwarf2_per_objfile *dwarf2_per_objfile
20064     = cu->per_cu->dwarf2_per_objfile;
20065
20066   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20067      DWO file.  */
20068   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20069     section = &cu->dwo_unit->dwo_file->sections.line;
20070   else if (cu->per_cu->is_dwz)
20071     {
20072       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20073
20074       section = &dwz->line;
20075     }
20076   else
20077     section = &dwarf2_per_objfile->line;
20078
20079   return section;
20080 }
20081
20082 /* Read directory or file name entry format, starting with byte of
20083    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20084    entries count and the entries themselves in the described entry
20085    format.  */
20086
20087 static void
20088 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20089                         bfd *abfd, const gdb_byte **bufp,
20090                         struct line_header *lh,
20091                         const struct comp_unit_head *cu_header,
20092                         void (*callback) (struct line_header *lh,
20093                                           const char *name,
20094                                           dir_index d_index,
20095                                           unsigned int mod_time,
20096                                           unsigned int length))
20097 {
20098   gdb_byte format_count, formati;
20099   ULONGEST data_count, datai;
20100   const gdb_byte *buf = *bufp;
20101   const gdb_byte *format_header_data;
20102   unsigned int bytes_read;
20103
20104   format_count = read_1_byte (abfd, buf);
20105   buf += 1;
20106   format_header_data = buf;
20107   for (formati = 0; formati < format_count; formati++)
20108     {
20109       read_unsigned_leb128 (abfd, buf, &bytes_read);
20110       buf += bytes_read;
20111       read_unsigned_leb128 (abfd, buf, &bytes_read);
20112       buf += bytes_read;
20113     }
20114
20115   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20116   buf += bytes_read;
20117   for (datai = 0; datai < data_count; datai++)
20118     {
20119       const gdb_byte *format = format_header_data;
20120       struct file_entry fe;
20121
20122       for (formati = 0; formati < format_count; formati++)
20123         {
20124           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20125           format += bytes_read;
20126
20127           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20128           format += bytes_read;
20129
20130           gdb::optional<const char *> string;
20131           gdb::optional<unsigned int> uint;
20132
20133           switch (form)
20134             {
20135             case DW_FORM_string:
20136               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20137               buf += bytes_read;
20138               break;
20139
20140             case DW_FORM_line_strp:
20141               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20142                                                          abfd, buf,
20143                                                          cu_header,
20144                                                          &bytes_read));
20145               buf += bytes_read;
20146               break;
20147
20148             case DW_FORM_data1:
20149               uint.emplace (read_1_byte (abfd, buf));
20150               buf += 1;
20151               break;
20152
20153             case DW_FORM_data2:
20154               uint.emplace (read_2_bytes (abfd, buf));
20155               buf += 2;
20156               break;
20157
20158             case DW_FORM_data4:
20159               uint.emplace (read_4_bytes (abfd, buf));
20160               buf += 4;
20161               break;
20162
20163             case DW_FORM_data8:
20164               uint.emplace (read_8_bytes (abfd, buf));
20165               buf += 8;
20166               break;
20167
20168             case DW_FORM_udata:
20169               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20170               buf += bytes_read;
20171               break;
20172
20173             case DW_FORM_block:
20174               /* It is valid only for DW_LNCT_timestamp which is ignored by
20175                  current GDB.  */
20176               break;
20177             }
20178
20179           switch (content_type)
20180             {
20181             case DW_LNCT_path:
20182               if (string.has_value ())
20183                 fe.name = *string;
20184               break;
20185             case DW_LNCT_directory_index:
20186               if (uint.has_value ())
20187                 fe.d_index = (dir_index) *uint;
20188               break;
20189             case DW_LNCT_timestamp:
20190               if (uint.has_value ())
20191                 fe.mod_time = *uint;
20192               break;
20193             case DW_LNCT_size:
20194               if (uint.has_value ())
20195                 fe.length = *uint;
20196               break;
20197             case DW_LNCT_MD5:
20198               break;
20199             default:
20200               complaint (_("Unknown format content type %s"),
20201                          pulongest (content_type));
20202             }
20203         }
20204
20205       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20206     }
20207
20208   *bufp = buf;
20209 }
20210
20211 /* Read the statement program header starting at OFFSET in
20212    .debug_line, or .debug_line.dwo.  Return a pointer
20213    to a struct line_header, allocated using xmalloc.
20214    Returns NULL if there is a problem reading the header, e.g., if it
20215    has a version we don't understand.
20216
20217    NOTE: the strings in the include directory and file name tables of
20218    the returned object point into the dwarf line section buffer,
20219    and must not be freed.  */
20220
20221 static line_header_up
20222 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20223 {
20224   const gdb_byte *line_ptr;
20225   unsigned int bytes_read, offset_size;
20226   int i;
20227   const char *cur_dir, *cur_file;
20228   struct dwarf2_section_info *section;
20229   bfd *abfd;
20230   struct dwarf2_per_objfile *dwarf2_per_objfile
20231     = cu->per_cu->dwarf2_per_objfile;
20232
20233   section = get_debug_line_section (cu);
20234   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20235   if (section->buffer == NULL)
20236     {
20237       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20238         complaint (_("missing .debug_line.dwo section"));
20239       else
20240         complaint (_("missing .debug_line section"));
20241       return 0;
20242     }
20243
20244   /* We can't do this until we know the section is non-empty.
20245      Only then do we know we have such a section.  */
20246   abfd = get_section_bfd_owner (section);
20247
20248   /* Make sure that at least there's room for the total_length field.
20249      That could be 12 bytes long, but we're just going to fudge that.  */
20250   if (to_underlying (sect_off) + 4 >= section->size)
20251     {
20252       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20253       return 0;
20254     }
20255
20256   line_header_up lh (new line_header ());
20257
20258   lh->sect_off = sect_off;
20259   lh->offset_in_dwz = cu->per_cu->is_dwz;
20260
20261   line_ptr = section->buffer + to_underlying (sect_off);
20262
20263   /* Read in the header.  */
20264   lh->total_length =
20265     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20266                                             &bytes_read, &offset_size);
20267   line_ptr += bytes_read;
20268   if (line_ptr + lh->total_length > (section->buffer + section->size))
20269     {
20270       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20271       return 0;
20272     }
20273   lh->statement_program_end = line_ptr + lh->total_length;
20274   lh->version = read_2_bytes (abfd, line_ptr);
20275   line_ptr += 2;
20276   if (lh->version > 5)
20277     {
20278       /* This is a version we don't understand.  The format could have
20279          changed in ways we don't handle properly so just punt.  */
20280       complaint (_("unsupported version in .debug_line section"));
20281       return NULL;
20282     }
20283   if (lh->version >= 5)
20284     {
20285       gdb_byte segment_selector_size;
20286
20287       /* Skip address size.  */
20288       read_1_byte (abfd, line_ptr);
20289       line_ptr += 1;
20290
20291       segment_selector_size = read_1_byte (abfd, line_ptr);
20292       line_ptr += 1;
20293       if (segment_selector_size != 0)
20294         {
20295           complaint (_("unsupported segment selector size %u "
20296                        "in .debug_line section"),
20297                      segment_selector_size);
20298           return NULL;
20299         }
20300     }
20301   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20302   line_ptr += offset_size;
20303   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20304   line_ptr += 1;
20305   if (lh->version >= 4)
20306     {
20307       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20308       line_ptr += 1;
20309     }
20310   else
20311     lh->maximum_ops_per_instruction = 1;
20312
20313   if (lh->maximum_ops_per_instruction == 0)
20314     {
20315       lh->maximum_ops_per_instruction = 1;
20316       complaint (_("invalid maximum_ops_per_instruction "
20317                    "in `.debug_line' section"));
20318     }
20319
20320   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20321   line_ptr += 1;
20322   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20323   line_ptr += 1;
20324   lh->line_range = read_1_byte (abfd, line_ptr);
20325   line_ptr += 1;
20326   lh->opcode_base = read_1_byte (abfd, line_ptr);
20327   line_ptr += 1;
20328   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20329
20330   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20331   for (i = 1; i < lh->opcode_base; ++i)
20332     {
20333       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20334       line_ptr += 1;
20335     }
20336
20337   if (lh->version >= 5)
20338     {
20339       /* Read directory table.  */
20340       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20341                               &cu->header,
20342                               [] (struct line_header *lh, const char *name,
20343                                   dir_index d_index, unsigned int mod_time,
20344                                   unsigned int length)
20345         {
20346           lh->add_include_dir (name);
20347         });
20348
20349       /* Read file name table.  */
20350       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20351                               &cu->header,
20352                               [] (struct line_header *lh, const char *name,
20353                                   dir_index d_index, unsigned int mod_time,
20354                                   unsigned int length)
20355         {
20356           lh->add_file_name (name, d_index, mod_time, length);
20357         });
20358     }
20359   else
20360     {
20361       /* Read directory table.  */
20362       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20363         {
20364           line_ptr += bytes_read;
20365           lh->add_include_dir (cur_dir);
20366         }
20367       line_ptr += bytes_read;
20368
20369       /* Read file name table.  */
20370       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20371         {
20372           unsigned int mod_time, length;
20373           dir_index d_index;
20374
20375           line_ptr += bytes_read;
20376           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20377           line_ptr += bytes_read;
20378           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20379           line_ptr += bytes_read;
20380           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20381           line_ptr += bytes_read;
20382
20383           lh->add_file_name (cur_file, d_index, mod_time, length);
20384         }
20385       line_ptr += bytes_read;
20386     }
20387   lh->statement_program_start = line_ptr;
20388
20389   if (line_ptr > (section->buffer + section->size))
20390     complaint (_("line number info header doesn't "
20391                  "fit in `.debug_line' section"));
20392
20393   return lh;
20394 }
20395
20396 /* Subroutine of dwarf_decode_lines to simplify it.
20397    Return the file name of the psymtab for included file FILE_INDEX
20398    in line header LH of PST.
20399    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20400    If space for the result is malloc'd, *NAME_HOLDER will be set.
20401    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20402
20403 static const char *
20404 psymtab_include_file_name (const struct line_header *lh, int file_index,
20405                            const struct partial_symtab *pst,
20406                            const char *comp_dir,
20407                            gdb::unique_xmalloc_ptr<char> *name_holder)
20408 {
20409   const file_entry &fe = lh->file_names[file_index];
20410   const char *include_name = fe.name;
20411   const char *include_name_to_compare = include_name;
20412   const char *pst_filename;
20413   int file_is_pst;
20414
20415   const char *dir_name = fe.include_dir (lh);
20416
20417   gdb::unique_xmalloc_ptr<char> hold_compare;
20418   if (!IS_ABSOLUTE_PATH (include_name)
20419       && (dir_name != NULL || comp_dir != NULL))
20420     {
20421       /* Avoid creating a duplicate psymtab for PST.
20422          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20423          Before we do the comparison, however, we need to account
20424          for DIR_NAME and COMP_DIR.
20425          First prepend dir_name (if non-NULL).  If we still don't
20426          have an absolute path prepend comp_dir (if non-NULL).
20427          However, the directory we record in the include-file's
20428          psymtab does not contain COMP_DIR (to match the
20429          corresponding symtab(s)).
20430
20431          Example:
20432
20433          bash$ cd /tmp
20434          bash$ gcc -g ./hello.c
20435          include_name = "hello.c"
20436          dir_name = "."
20437          DW_AT_comp_dir = comp_dir = "/tmp"
20438          DW_AT_name = "./hello.c"
20439
20440       */
20441
20442       if (dir_name != NULL)
20443         {
20444           name_holder->reset (concat (dir_name, SLASH_STRING,
20445                                       include_name, (char *) NULL));
20446           include_name = name_holder->get ();
20447           include_name_to_compare = include_name;
20448         }
20449       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20450         {
20451           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20452                                       include_name, (char *) NULL));
20453           include_name_to_compare = hold_compare.get ();
20454         }
20455     }
20456
20457   pst_filename = pst->filename;
20458   gdb::unique_xmalloc_ptr<char> copied_name;
20459   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20460     {
20461       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20462                                  pst_filename, (char *) NULL));
20463       pst_filename = copied_name.get ();
20464     }
20465
20466   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20467
20468   if (file_is_pst)
20469     return NULL;
20470   return include_name;
20471 }
20472
20473 /* State machine to track the state of the line number program.  */
20474
20475 class lnp_state_machine
20476 {
20477 public:
20478   /* Initialize a machine state for the start of a line number
20479      program.  */
20480   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20481                      bool record_lines_p);
20482
20483   file_entry *current_file ()
20484   {
20485     /* lh->file_names is 0-based, but the file name numbers in the
20486        statement program are 1-based.  */
20487     return m_line_header->file_name_at (m_file);
20488   }
20489
20490   /* Record the line in the state machine.  END_SEQUENCE is true if
20491      we're processing the end of a sequence.  */
20492   void record_line (bool end_sequence);
20493
20494   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20495      nop-out rest of the lines in this sequence.  */
20496   void check_line_address (struct dwarf2_cu *cu,
20497                            const gdb_byte *line_ptr,
20498                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20499
20500   void handle_set_discriminator (unsigned int discriminator)
20501   {
20502     m_discriminator = discriminator;
20503     m_line_has_non_zero_discriminator |= discriminator != 0;
20504   }
20505
20506   /* Handle DW_LNE_set_address.  */
20507   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20508   {
20509     m_op_index = 0;
20510     address += baseaddr;
20511     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20512   }
20513
20514   /* Handle DW_LNS_advance_pc.  */
20515   void handle_advance_pc (CORE_ADDR adjust);
20516
20517   /* Handle a special opcode.  */
20518   void handle_special_opcode (unsigned char op_code);
20519
20520   /* Handle DW_LNS_advance_line.  */
20521   void handle_advance_line (int line_delta)
20522   {
20523     advance_line (line_delta);
20524   }
20525
20526   /* Handle DW_LNS_set_file.  */
20527   void handle_set_file (file_name_index file);
20528
20529   /* Handle DW_LNS_negate_stmt.  */
20530   void handle_negate_stmt ()
20531   {
20532     m_is_stmt = !m_is_stmt;
20533   }
20534
20535   /* Handle DW_LNS_const_add_pc.  */
20536   void handle_const_add_pc ();
20537
20538   /* Handle DW_LNS_fixed_advance_pc.  */
20539   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20540   {
20541     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20542     m_op_index = 0;
20543   }
20544
20545   /* Handle DW_LNS_copy.  */
20546   void handle_copy ()
20547   {
20548     record_line (false);
20549     m_discriminator = 0;
20550   }
20551
20552   /* Handle DW_LNE_end_sequence.  */
20553   void handle_end_sequence ()
20554   {
20555     m_currently_recording_lines = true;
20556   }
20557
20558 private:
20559   /* Advance the line by LINE_DELTA.  */
20560   void advance_line (int line_delta)
20561   {
20562     m_line += line_delta;
20563
20564     if (line_delta != 0)
20565       m_line_has_non_zero_discriminator = m_discriminator != 0;
20566   }
20567
20568   struct dwarf2_cu *m_cu;
20569
20570   gdbarch *m_gdbarch;
20571
20572   /* True if we're recording lines.
20573      Otherwise we're building partial symtabs and are just interested in
20574      finding include files mentioned by the line number program.  */
20575   bool m_record_lines_p;
20576
20577   /* The line number header.  */
20578   line_header *m_line_header;
20579
20580   /* These are part of the standard DWARF line number state machine,
20581      and initialized according to the DWARF spec.  */
20582
20583   unsigned char m_op_index = 0;
20584   /* The line table index (1-based) of the current file.  */
20585   file_name_index m_file = (file_name_index) 1;
20586   unsigned int m_line = 1;
20587
20588   /* These are initialized in the constructor.  */
20589
20590   CORE_ADDR m_address;
20591   bool m_is_stmt;
20592   unsigned int m_discriminator;
20593
20594   /* Additional bits of state we need to track.  */
20595
20596   /* The last file that we called dwarf2_start_subfile for.
20597      This is only used for TLLs.  */
20598   unsigned int m_last_file = 0;
20599   /* The last file a line number was recorded for.  */
20600   struct subfile *m_last_subfile = NULL;
20601
20602   /* When true, record the lines we decode.  */
20603   bool m_currently_recording_lines = false;
20604
20605   /* The last line number that was recorded, used to coalesce
20606      consecutive entries for the same line.  This can happen, for
20607      example, when discriminators are present.  PR 17276.  */
20608   unsigned int m_last_line = 0;
20609   bool m_line_has_non_zero_discriminator = false;
20610 };
20611
20612 void
20613 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20614 {
20615   CORE_ADDR addr_adj = (((m_op_index + adjust)
20616                          / m_line_header->maximum_ops_per_instruction)
20617                         * m_line_header->minimum_instruction_length);
20618   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20619   m_op_index = ((m_op_index + adjust)
20620                 % m_line_header->maximum_ops_per_instruction);
20621 }
20622
20623 void
20624 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20625 {
20626   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20627   CORE_ADDR addr_adj = (((m_op_index
20628                           + (adj_opcode / m_line_header->line_range))
20629                          / m_line_header->maximum_ops_per_instruction)
20630                         * m_line_header->minimum_instruction_length);
20631   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20632   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20633                 % m_line_header->maximum_ops_per_instruction);
20634
20635   int line_delta = (m_line_header->line_base
20636                     + (adj_opcode % m_line_header->line_range));
20637   advance_line (line_delta);
20638   record_line (false);
20639   m_discriminator = 0;
20640 }
20641
20642 void
20643 lnp_state_machine::handle_set_file (file_name_index file)
20644 {
20645   m_file = file;
20646
20647   const file_entry *fe = current_file ();
20648   if (fe == NULL)
20649     dwarf2_debug_line_missing_file_complaint ();
20650   else if (m_record_lines_p)
20651     {
20652       const char *dir = fe->include_dir (m_line_header);
20653
20654       m_last_subfile = m_cu->builder->get_current_subfile ();
20655       m_line_has_non_zero_discriminator = m_discriminator != 0;
20656       dwarf2_start_subfile (m_cu, fe->name, dir);
20657     }
20658 }
20659
20660 void
20661 lnp_state_machine::handle_const_add_pc ()
20662 {
20663   CORE_ADDR adjust
20664     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20665
20666   CORE_ADDR addr_adj
20667     = (((m_op_index + adjust)
20668         / m_line_header->maximum_ops_per_instruction)
20669        * m_line_header->minimum_instruction_length);
20670
20671   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20672   m_op_index = ((m_op_index + adjust)
20673                 % m_line_header->maximum_ops_per_instruction);
20674 }
20675
20676 /* Return non-zero if we should add LINE to the line number table.
20677    LINE is the line to add, LAST_LINE is the last line that was added,
20678    LAST_SUBFILE is the subfile for LAST_LINE.
20679    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20680    had a non-zero discriminator.
20681
20682    We have to be careful in the presence of discriminators.
20683    E.g., for this line:
20684
20685      for (i = 0; i < 100000; i++);
20686
20687    clang can emit four line number entries for that one line,
20688    each with a different discriminator.
20689    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20690
20691    However, we want gdb to coalesce all four entries into one.
20692    Otherwise the user could stepi into the middle of the line and
20693    gdb would get confused about whether the pc really was in the
20694    middle of the line.
20695
20696    Things are further complicated by the fact that two consecutive
20697    line number entries for the same line is a heuristic used by gcc
20698    to denote the end of the prologue.  So we can't just discard duplicate
20699    entries, we have to be selective about it.  The heuristic we use is
20700    that we only collapse consecutive entries for the same line if at least
20701    one of those entries has a non-zero discriminator.  PR 17276.
20702
20703    Note: Addresses in the line number state machine can never go backwards
20704    within one sequence, thus this coalescing is ok.  */
20705
20706 static int
20707 dwarf_record_line_p (struct dwarf2_cu *cu,
20708                      unsigned int line, unsigned int last_line,
20709                      int line_has_non_zero_discriminator,
20710                      struct subfile *last_subfile)
20711 {
20712   if (cu->builder->get_current_subfile () != last_subfile)
20713     return 1;
20714   if (line != last_line)
20715     return 1;
20716   /* Same line for the same file that we've seen already.
20717      As a last check, for pr 17276, only record the line if the line
20718      has never had a non-zero discriminator.  */
20719   if (!line_has_non_zero_discriminator)
20720     return 1;
20721   return 0;
20722 }
20723
20724 /* Use the CU's builder to record line number LINE beginning at
20725    address ADDRESS in the line table of subfile SUBFILE.  */
20726
20727 static void
20728 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20729                      unsigned int line, CORE_ADDR address,
20730                      struct dwarf2_cu *cu)
20731 {
20732   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20733
20734   if (dwarf_line_debug)
20735     {
20736       fprintf_unfiltered (gdb_stdlog,
20737                           "Recording line %u, file %s, address %s\n",
20738                           line, lbasename (subfile->name),
20739                           paddress (gdbarch, address));
20740     }
20741
20742   if (cu != nullptr)
20743     cu->builder->record_line (subfile, line, addr);
20744 }
20745
20746 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20747    Mark the end of a set of line number records.
20748    The arguments are the same as for dwarf_record_line_1.
20749    If SUBFILE is NULL the request is ignored.  */
20750
20751 static void
20752 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20753                    CORE_ADDR address, struct dwarf2_cu *cu)
20754 {
20755   if (subfile == NULL)
20756     return;
20757
20758   if (dwarf_line_debug)
20759     {
20760       fprintf_unfiltered (gdb_stdlog,
20761                           "Finishing current line, file %s, address %s\n",
20762                           lbasename (subfile->name),
20763                           paddress (gdbarch, address));
20764     }
20765
20766   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20767 }
20768
20769 void
20770 lnp_state_machine::record_line (bool end_sequence)
20771 {
20772   if (dwarf_line_debug)
20773     {
20774       fprintf_unfiltered (gdb_stdlog,
20775                           "Processing actual line %u: file %u,"
20776                           " address %s, is_stmt %u, discrim %u\n",
20777                           m_line, to_underlying (m_file),
20778                           paddress (m_gdbarch, m_address),
20779                           m_is_stmt, m_discriminator);
20780     }
20781
20782   file_entry *fe = current_file ();
20783
20784   if (fe == NULL)
20785     dwarf2_debug_line_missing_file_complaint ();
20786   /* For now we ignore lines not starting on an instruction boundary.
20787      But not when processing end_sequence for compatibility with the
20788      previous version of the code.  */
20789   else if (m_op_index == 0 || end_sequence)
20790     {
20791       fe->included_p = 1;
20792       if (m_record_lines_p && m_is_stmt)
20793         {
20794           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20795               || end_sequence)
20796             {
20797               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20798                                  m_currently_recording_lines ? m_cu : nullptr);
20799             }
20800
20801           if (!end_sequence)
20802             {
20803               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20804                                        m_line_has_non_zero_discriminator,
20805                                        m_last_subfile))
20806                 {
20807                   dwarf_record_line_1 (m_gdbarch,
20808                                        m_cu->builder->get_current_subfile (),
20809                                        m_line, m_address,
20810                                        m_currently_recording_lines ? m_cu : nullptr);
20811                 }
20812               m_last_subfile = m_cu->builder->get_current_subfile ();
20813               m_last_line = m_line;
20814             }
20815         }
20816     }
20817 }
20818
20819 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20820                                       line_header *lh, bool record_lines_p)
20821 {
20822   m_cu = cu;
20823   m_gdbarch = arch;
20824   m_record_lines_p = record_lines_p;
20825   m_line_header = lh;
20826
20827   m_currently_recording_lines = true;
20828
20829   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20830      was a line entry for it so that the backend has a chance to adjust it
20831      and also record it in case it needs it.  This is currently used by MIPS
20832      code, cf. `mips_adjust_dwarf2_line'.  */
20833   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20834   m_is_stmt = lh->default_is_stmt;
20835   m_discriminator = 0;
20836 }
20837
20838 void
20839 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20840                                        const gdb_byte *line_ptr,
20841                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20842 {
20843   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20844      the pc range of the CU.  However, we restrict the test to only ADDRESS
20845      values of zero to preserve GDB's previous behaviour which is to handle
20846      the specific case of a function being GC'd by the linker.  */
20847
20848   if (address == 0 && address < unrelocated_lowpc)
20849     {
20850       /* This line table is for a function which has been
20851          GCd by the linker.  Ignore it.  PR gdb/12528 */
20852
20853       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20854       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20855
20856       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20857                  line_offset, objfile_name (objfile));
20858       m_currently_recording_lines = false;
20859       /* Note: m_currently_recording_lines is left as false until we see
20860          DW_LNE_end_sequence.  */
20861     }
20862 }
20863
20864 /* Subroutine of dwarf_decode_lines to simplify it.
20865    Process the line number information in LH.
20866    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20867    program in order to set included_p for every referenced header.  */
20868
20869 static void
20870 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20871                       const int decode_for_pst_p, CORE_ADDR lowpc)
20872 {
20873   const gdb_byte *line_ptr, *extended_end;
20874   const gdb_byte *line_end;
20875   unsigned int bytes_read, extended_len;
20876   unsigned char op_code, extended_op;
20877   CORE_ADDR baseaddr;
20878   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20879   bfd *abfd = objfile->obfd;
20880   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20881   /* True if we're recording line info (as opposed to building partial
20882      symtabs and just interested in finding include files mentioned by
20883      the line number program).  */
20884   bool record_lines_p = !decode_for_pst_p;
20885
20886   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20887
20888   line_ptr = lh->statement_program_start;
20889   line_end = lh->statement_program_end;
20890
20891   /* Read the statement sequences until there's nothing left.  */
20892   while (line_ptr < line_end)
20893     {
20894       /* The DWARF line number program state machine.  Reset the state
20895          machine at the start of each sequence.  */
20896       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20897       bool end_sequence = false;
20898
20899       if (record_lines_p)
20900         {
20901           /* Start a subfile for the current file of the state
20902              machine.  */
20903           const file_entry *fe = state_machine.current_file ();
20904
20905           if (fe != NULL)
20906             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20907         }
20908
20909       /* Decode the table.  */
20910       while (line_ptr < line_end && !end_sequence)
20911         {
20912           op_code = read_1_byte (abfd, line_ptr);
20913           line_ptr += 1;
20914
20915           if (op_code >= lh->opcode_base)
20916             {
20917               /* Special opcode.  */
20918               state_machine.handle_special_opcode (op_code);
20919             }
20920           else switch (op_code)
20921             {
20922             case DW_LNS_extended_op:
20923               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20924                                                    &bytes_read);
20925               line_ptr += bytes_read;
20926               extended_end = line_ptr + extended_len;
20927               extended_op = read_1_byte (abfd, line_ptr);
20928               line_ptr += 1;
20929               switch (extended_op)
20930                 {
20931                 case DW_LNE_end_sequence:
20932                   state_machine.handle_end_sequence ();
20933                   end_sequence = true;
20934                   break;
20935                 case DW_LNE_set_address:
20936                   {
20937                     CORE_ADDR address
20938                       = read_address (abfd, line_ptr, cu, &bytes_read);
20939                     line_ptr += bytes_read;
20940
20941                     state_machine.check_line_address (cu, line_ptr,
20942                                                       lowpc - baseaddr, address);
20943                     state_machine.handle_set_address (baseaddr, address);
20944                   }
20945                   break;
20946                 case DW_LNE_define_file:
20947                   {
20948                     const char *cur_file;
20949                     unsigned int mod_time, length;
20950                     dir_index dindex;
20951
20952                     cur_file = read_direct_string (abfd, line_ptr,
20953                                                    &bytes_read);
20954                     line_ptr += bytes_read;
20955                     dindex = (dir_index)
20956                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20957                     line_ptr += bytes_read;
20958                     mod_time =
20959                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20960                     line_ptr += bytes_read;
20961                     length =
20962                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20963                     line_ptr += bytes_read;
20964                     lh->add_file_name (cur_file, dindex, mod_time, length);
20965                   }
20966                   break;
20967                 case DW_LNE_set_discriminator:
20968                   {
20969                     /* The discriminator is not interesting to the
20970                        debugger; just ignore it.  We still need to
20971                        check its value though:
20972                        if there are consecutive entries for the same
20973                        (non-prologue) line we want to coalesce them.
20974                        PR 17276.  */
20975                     unsigned int discr
20976                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20977                     line_ptr += bytes_read;
20978
20979                     state_machine.handle_set_discriminator (discr);
20980                   }
20981                   break;
20982                 default:
20983                   complaint (_("mangled .debug_line section"));
20984                   return;
20985                 }
20986               /* Make sure that we parsed the extended op correctly.  If e.g.
20987                  we expected a different address size than the producer used,
20988                  we may have read the wrong number of bytes.  */
20989               if (line_ptr != extended_end)
20990                 {
20991                   complaint (_("mangled .debug_line section"));
20992                   return;
20993                 }
20994               break;
20995             case DW_LNS_copy:
20996               state_machine.handle_copy ();
20997               break;
20998             case DW_LNS_advance_pc:
20999               {
21000                 CORE_ADDR adjust
21001                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21002                 line_ptr += bytes_read;
21003
21004                 state_machine.handle_advance_pc (adjust);
21005               }
21006               break;
21007             case DW_LNS_advance_line:
21008               {
21009                 int line_delta
21010                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21011                 line_ptr += bytes_read;
21012
21013                 state_machine.handle_advance_line (line_delta);
21014               }
21015               break;
21016             case DW_LNS_set_file:
21017               {
21018                 file_name_index file
21019                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21020                                                             &bytes_read);
21021                 line_ptr += bytes_read;
21022
21023                 state_machine.handle_set_file (file);
21024               }
21025               break;
21026             case DW_LNS_set_column:
21027               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21028               line_ptr += bytes_read;
21029               break;
21030             case DW_LNS_negate_stmt:
21031               state_machine.handle_negate_stmt ();
21032               break;
21033             case DW_LNS_set_basic_block:
21034               break;
21035             /* Add to the address register of the state machine the
21036                address increment value corresponding to special opcode
21037                255.  I.e., this value is scaled by the minimum
21038                instruction length since special opcode 255 would have
21039                scaled the increment.  */
21040             case DW_LNS_const_add_pc:
21041               state_machine.handle_const_add_pc ();
21042               break;
21043             case DW_LNS_fixed_advance_pc:
21044               {
21045                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21046                 line_ptr += 2;
21047
21048                 state_machine.handle_fixed_advance_pc (addr_adj);
21049               }
21050               break;
21051             default:
21052               {
21053                 /* Unknown standard opcode, ignore it.  */
21054                 int i;
21055
21056                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21057                   {
21058                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21059                     line_ptr += bytes_read;
21060                   }
21061               }
21062             }
21063         }
21064
21065       if (!end_sequence)
21066         dwarf2_debug_line_missing_end_sequence_complaint ();
21067
21068       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21069          in which case we still finish recording the last line).  */
21070       state_machine.record_line (true);
21071     }
21072 }
21073
21074 /* Decode the Line Number Program (LNP) for the given line_header
21075    structure and CU.  The actual information extracted and the type
21076    of structures created from the LNP depends on the value of PST.
21077
21078    1. If PST is NULL, then this procedure uses the data from the program
21079       to create all necessary symbol tables, and their linetables.
21080
21081    2. If PST is not NULL, this procedure reads the program to determine
21082       the list of files included by the unit represented by PST, and
21083       builds all the associated partial symbol tables.
21084
21085    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21086    It is used for relative paths in the line table.
21087    NOTE: When processing partial symtabs (pst != NULL),
21088    comp_dir == pst->dirname.
21089
21090    NOTE: It is important that psymtabs have the same file name (via strcmp)
21091    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21092    symtab we don't use it in the name of the psymtabs we create.
21093    E.g. expand_line_sal requires this when finding psymtabs to expand.
21094    A good testcase for this is mb-inline.exp.
21095
21096    LOWPC is the lowest address in CU (or 0 if not known).
21097
21098    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21099    for its PC<->lines mapping information.  Otherwise only the filename
21100    table is read in.  */
21101
21102 static void
21103 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21104                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21105                     CORE_ADDR lowpc, int decode_mapping)
21106 {
21107   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21108   const int decode_for_pst_p = (pst != NULL);
21109
21110   if (decode_mapping)
21111     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21112
21113   if (decode_for_pst_p)
21114     {
21115       int file_index;
21116
21117       /* Now that we're done scanning the Line Header Program, we can
21118          create the psymtab of each included file.  */
21119       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21120         if (lh->file_names[file_index].included_p == 1)
21121           {
21122             gdb::unique_xmalloc_ptr<char> name_holder;
21123             const char *include_name =
21124               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21125                                          &name_holder);
21126             if (include_name != NULL)
21127               dwarf2_create_include_psymtab (include_name, pst, objfile);
21128           }
21129     }
21130   else
21131     {
21132       /* Make sure a symtab is created for every file, even files
21133          which contain only variables (i.e. no code with associated
21134          line numbers).  */
21135       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21136       int i;
21137
21138       for (i = 0; i < lh->file_names.size (); i++)
21139         {
21140           file_entry &fe = lh->file_names[i];
21141
21142           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21143
21144           if (cu->builder->get_current_subfile ()->symtab == NULL)
21145             {
21146               cu->builder->get_current_subfile ()->symtab
21147                 = allocate_symtab (cust,
21148                                    cu->builder->get_current_subfile ()->name);
21149             }
21150           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21151         }
21152     }
21153 }
21154
21155 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21156    DIRNAME the name of the source directory which contains FILENAME
21157    or NULL if not known.
21158    This routine tries to keep line numbers from identical absolute and
21159    relative file names in a common subfile.
21160
21161    Using the `list' example from the GDB testsuite, which resides in
21162    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21163    of /srcdir/list0.c yields the following debugging information for list0.c:
21164
21165    DW_AT_name:          /srcdir/list0.c
21166    DW_AT_comp_dir:      /compdir
21167    files.files[0].name: list0.h
21168    files.files[0].dir:  /srcdir
21169    files.files[1].name: list0.c
21170    files.files[1].dir:  /srcdir
21171
21172    The line number information for list0.c has to end up in a single
21173    subfile, so that `break /srcdir/list0.c:1' works as expected.
21174    start_subfile will ensure that this happens provided that we pass the
21175    concatenation of files.files[1].dir and files.files[1].name as the
21176    subfile's name.  */
21177
21178 static void
21179 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21180                       const char *dirname)
21181 {
21182   char *copy = NULL;
21183
21184   /* In order not to lose the line information directory,
21185      we concatenate it to the filename when it makes sense.
21186      Note that the Dwarf3 standard says (speaking of filenames in line
21187      information): ``The directory index is ignored for file names
21188      that represent full path names''.  Thus ignoring dirname in the
21189      `else' branch below isn't an issue.  */
21190
21191   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21192     {
21193       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21194       filename = copy;
21195     }
21196
21197   cu->builder->start_subfile (filename);
21198
21199   if (copy != NULL)
21200     xfree (copy);
21201 }
21202
21203 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21204    buildsym_compunit constructor.  */
21205
21206 static struct compunit_symtab *
21207 dwarf2_start_symtab (struct dwarf2_cu *cu,
21208                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21209 {
21210   gdb_assert (cu->builder == nullptr);
21211
21212   cu->builder.reset (new struct buildsym_compunit
21213                      (cu->per_cu->dwarf2_per_objfile->objfile,
21214                       name, comp_dir, cu->language, low_pc));
21215
21216   cu->list_in_scope = cu->builder->get_file_symbols ();
21217
21218   cu->builder->record_debugformat ("DWARF 2");
21219   cu->builder->record_producer (cu->producer);
21220
21221   cu->processing_has_namespace_info = 0;
21222
21223   return cu->builder->get_compunit_symtab ();
21224 }
21225
21226 static void
21227 var_decode_location (struct attribute *attr, struct symbol *sym,
21228                      struct dwarf2_cu *cu)
21229 {
21230   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21231   struct comp_unit_head *cu_header = &cu->header;
21232
21233   /* NOTE drow/2003-01-30: There used to be a comment and some special
21234      code here to turn a symbol with DW_AT_external and a
21235      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21236      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21237      with some versions of binutils) where shared libraries could have
21238      relocations against symbols in their debug information - the
21239      minimal symbol would have the right address, but the debug info
21240      would not.  It's no longer necessary, because we will explicitly
21241      apply relocations when we read in the debug information now.  */
21242
21243   /* A DW_AT_location attribute with no contents indicates that a
21244      variable has been optimized away.  */
21245   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21246     {
21247       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21248       return;
21249     }
21250
21251   /* Handle one degenerate form of location expression specially, to
21252      preserve GDB's previous behavior when section offsets are
21253      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21254      then mark this symbol as LOC_STATIC.  */
21255
21256   if (attr_form_is_block (attr)
21257       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21258            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21259           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21260               && (DW_BLOCK (attr)->size
21261                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21262     {
21263       unsigned int dummy;
21264
21265       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21266         SYMBOL_VALUE_ADDRESS (sym) =
21267           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21268       else
21269         SYMBOL_VALUE_ADDRESS (sym) =
21270           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21271       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21272       fixup_symbol_section (sym, objfile);
21273       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21274                                               SYMBOL_SECTION (sym));
21275       return;
21276     }
21277
21278   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21279      expression evaluator, and use LOC_COMPUTED only when necessary
21280      (i.e. when the value of a register or memory location is
21281      referenced, or a thread-local block, etc.).  Then again, it might
21282      not be worthwhile.  I'm assuming that it isn't unless performance
21283      or memory numbers show me otherwise.  */
21284
21285   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21286
21287   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21288     cu->has_loclist = 1;
21289 }
21290
21291 /* Given a pointer to a DWARF information entry, figure out if we need
21292    to make a symbol table entry for it, and if so, create a new entry
21293    and return a pointer to it.
21294    If TYPE is NULL, determine symbol type from the die, otherwise
21295    used the passed type.
21296    If SPACE is not NULL, use it to hold the new symbol.  If it is
21297    NULL, allocate a new symbol on the objfile's obstack.  */
21298
21299 static struct symbol *
21300 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21301             struct symbol *space)
21302 {
21303   struct dwarf2_per_objfile *dwarf2_per_objfile
21304     = cu->per_cu->dwarf2_per_objfile;
21305   struct objfile *objfile = dwarf2_per_objfile->objfile;
21306   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21307   struct symbol *sym = NULL;
21308   const char *name;
21309   struct attribute *attr = NULL;
21310   struct attribute *attr2 = NULL;
21311   CORE_ADDR baseaddr;
21312   struct pending **list_to_add = NULL;
21313
21314   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21315
21316   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21317
21318   name = dwarf2_name (die, cu);
21319   if (name)
21320     {
21321       const char *linkagename;
21322       int suppress_add = 0;
21323
21324       if (space)
21325         sym = space;
21326       else
21327         sym = allocate_symbol (objfile);
21328       OBJSTAT (objfile, n_syms++);
21329
21330       /* Cache this symbol's name and the name's demangled form (if any).  */
21331       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21332       linkagename = dwarf2_physname (name, die, cu);
21333       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21334
21335       /* Fortran does not have mangling standard and the mangling does differ
21336          between gfortran, iFort etc.  */
21337       if (cu->language == language_fortran
21338           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21339         symbol_set_demangled_name (&(sym->ginfo),
21340                                    dwarf2_full_name (name, die, cu),
21341                                    NULL);
21342
21343       /* Default assumptions.
21344          Use the passed type or decode it from the die.  */
21345       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21346       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21347       if (type != NULL)
21348         SYMBOL_TYPE (sym) = type;
21349       else
21350         SYMBOL_TYPE (sym) = die_type (die, cu);
21351       attr = dwarf2_attr (die,
21352                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21353                           cu);
21354       if (attr)
21355         {
21356           SYMBOL_LINE (sym) = DW_UNSND (attr);
21357         }
21358
21359       attr = dwarf2_attr (die,
21360                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21361                           cu);
21362       if (attr)
21363         {
21364           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21365           struct file_entry *fe;
21366
21367           if (cu->line_header != NULL)
21368             fe = cu->line_header->file_name_at (file_index);
21369           else
21370             fe = NULL;
21371
21372           if (fe == NULL)
21373             complaint (_("file index out of range"));
21374           else
21375             symbol_set_symtab (sym, fe->symtab);
21376         }
21377
21378       switch (die->tag)
21379         {
21380         case DW_TAG_label:
21381           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21382           if (attr)
21383             {
21384               CORE_ADDR addr;
21385
21386               addr = attr_value_as_address (attr);
21387               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21388               SYMBOL_VALUE_ADDRESS (sym) = addr;
21389             }
21390           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21391           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21392           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21393           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21394           break;
21395         case DW_TAG_subprogram:
21396           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21397              finish_block.  */
21398           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21399           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21400           if ((attr2 && (DW_UNSND (attr2) != 0))
21401               || cu->language == language_ada)
21402             {
21403               /* Subprograms marked external are stored as a global symbol.
21404                  Ada subprograms, whether marked external or not, are always
21405                  stored as a global symbol, because we want to be able to
21406                  access them globally.  For instance, we want to be able
21407                  to break on a nested subprogram without having to
21408                  specify the context.  */
21409               list_to_add = cu->builder->get_global_symbols ();
21410             }
21411           else
21412             {
21413               list_to_add = cu->list_in_scope;
21414             }
21415           break;
21416         case DW_TAG_inlined_subroutine:
21417           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21418              finish_block.  */
21419           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21420           SYMBOL_INLINED (sym) = 1;
21421           list_to_add = cu->list_in_scope;
21422           break;
21423         case DW_TAG_template_value_param:
21424           suppress_add = 1;
21425           /* Fall through.  */
21426         case DW_TAG_constant:
21427         case DW_TAG_variable:
21428         case DW_TAG_member:
21429           /* Compilation with minimal debug info may result in
21430              variables with missing type entries.  Change the
21431              misleading `void' type to something sensible.  */
21432           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21433             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21434
21435           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21436           /* In the case of DW_TAG_member, we should only be called for
21437              static const members.  */
21438           if (die->tag == DW_TAG_member)
21439             {
21440               /* dwarf2_add_field uses die_is_declaration,
21441                  so we do the same.  */
21442               gdb_assert (die_is_declaration (die, cu));
21443               gdb_assert (attr);
21444             }
21445           if (attr)
21446             {
21447               dwarf2_const_value (attr, sym, cu);
21448               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21449               if (!suppress_add)
21450                 {
21451                   if (attr2 && (DW_UNSND (attr2) != 0))
21452                     list_to_add = cu->builder->get_global_symbols ();
21453                   else
21454                     list_to_add = cu->list_in_scope;
21455                 }
21456               break;
21457             }
21458           attr = dwarf2_attr (die, DW_AT_location, cu);
21459           if (attr)
21460             {
21461               var_decode_location (attr, sym, cu);
21462               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21463
21464               /* Fortran explicitly imports any global symbols to the local
21465                  scope by DW_TAG_common_block.  */
21466               if (cu->language == language_fortran && die->parent
21467                   && die->parent->tag == DW_TAG_common_block)
21468                 attr2 = NULL;
21469
21470               if (SYMBOL_CLASS (sym) == LOC_STATIC
21471                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21472                   && !dwarf2_per_objfile->has_section_at_zero)
21473                 {
21474                   /* When a static variable is eliminated by the linker,
21475                      the corresponding debug information is not stripped
21476                      out, but the variable address is set to null;
21477                      do not add such variables into symbol table.  */
21478                 }
21479               else if (attr2 && (DW_UNSND (attr2) != 0))
21480                 {
21481                   /* Workaround gfortran PR debug/40040 - it uses
21482                      DW_AT_location for variables in -fPIC libraries which may
21483                      get overriden by other libraries/executable and get
21484                      a different address.  Resolve it by the minimal symbol
21485                      which may come from inferior's executable using copy
21486                      relocation.  Make this workaround only for gfortran as for
21487                      other compilers GDB cannot guess the minimal symbol
21488                      Fortran mangling kind.  */
21489                   if (cu->language == language_fortran && die->parent
21490                       && die->parent->tag == DW_TAG_module
21491                       && cu->producer
21492                       && startswith (cu->producer, "GNU Fortran"))
21493                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21494
21495                   /* A variable with DW_AT_external is never static,
21496                      but it may be block-scoped.  */
21497                   list_to_add
21498                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21499                        ? cu->builder->get_global_symbols ()
21500                        : cu->list_in_scope);
21501                 }
21502               else
21503                 list_to_add = cu->list_in_scope;
21504             }
21505           else
21506             {
21507               /* We do not know the address of this symbol.
21508                  If it is an external symbol and we have type information
21509                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21510                  The address of the variable will then be determined from
21511                  the minimal symbol table whenever the variable is
21512                  referenced.  */
21513               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21514
21515               /* Fortran explicitly imports any global symbols to the local
21516                  scope by DW_TAG_common_block.  */
21517               if (cu->language == language_fortran && die->parent
21518                   && die->parent->tag == DW_TAG_common_block)
21519                 {
21520                   /* SYMBOL_CLASS doesn't matter here because
21521                      read_common_block is going to reset it.  */
21522                   if (!suppress_add)
21523                     list_to_add = cu->list_in_scope;
21524                 }
21525               else if (attr2 && (DW_UNSND (attr2) != 0)
21526                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21527                 {
21528                   /* A variable with DW_AT_external is never static, but it
21529                      may be block-scoped.  */
21530                   list_to_add
21531                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21532                        ? cu->builder->get_global_symbols ()
21533                        : cu->list_in_scope);
21534
21535                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21536                 }
21537               else if (!die_is_declaration (die, cu))
21538                 {
21539                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21540                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21541                   if (!suppress_add)
21542                     list_to_add = cu->list_in_scope;
21543                 }
21544             }
21545           break;
21546         case DW_TAG_formal_parameter:
21547           {
21548             /* If we are inside a function, mark this as an argument.  If
21549                not, we might be looking at an argument to an inlined function
21550                when we do not have enough information to show inlined frames;
21551                pretend it's a local variable in that case so that the user can
21552                still see it.  */
21553             struct context_stack *curr
21554               = cu->builder->get_current_context_stack ();
21555             if (curr != nullptr && curr->name != nullptr)
21556               SYMBOL_IS_ARGUMENT (sym) = 1;
21557             attr = dwarf2_attr (die, DW_AT_location, cu);
21558             if (attr)
21559               {
21560                 var_decode_location (attr, sym, cu);
21561               }
21562             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21563             if (attr)
21564               {
21565                 dwarf2_const_value (attr, sym, cu);
21566               }
21567
21568             list_to_add = cu->list_in_scope;
21569           }
21570           break;
21571         case DW_TAG_unspecified_parameters:
21572           /* From varargs functions; gdb doesn't seem to have any
21573              interest in this information, so just ignore it for now.
21574              (FIXME?) */
21575           break;
21576         case DW_TAG_template_type_param:
21577           suppress_add = 1;
21578           /* Fall through.  */
21579         case DW_TAG_class_type:
21580         case DW_TAG_interface_type:
21581         case DW_TAG_structure_type:
21582         case DW_TAG_union_type:
21583         case DW_TAG_set_type:
21584         case DW_TAG_enumeration_type:
21585           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21586           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21587
21588           {
21589             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21590                really ever be static objects: otherwise, if you try
21591                to, say, break of a class's method and you're in a file
21592                which doesn't mention that class, it won't work unless
21593                the check for all static symbols in lookup_symbol_aux
21594                saves you.  See the OtherFileClass tests in
21595                gdb.c++/namespace.exp.  */
21596
21597             if (!suppress_add)
21598               {
21599                 list_to_add
21600                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21601                      && cu->language == language_cplus
21602                      ? cu->builder->get_global_symbols ()
21603                      : cu->list_in_scope);
21604
21605                 /* The semantics of C++ state that "struct foo {
21606                    ... }" also defines a typedef for "foo".  */
21607                 if (cu->language == language_cplus
21608                     || cu->language == language_ada
21609                     || cu->language == language_d
21610                     || cu->language == language_rust)
21611                   {
21612                     /* The symbol's name is already allocated along
21613                        with this objfile, so we don't need to
21614                        duplicate it for the type.  */
21615                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21616                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21617                   }
21618               }
21619           }
21620           break;
21621         case DW_TAG_typedef:
21622           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21623           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21624           list_to_add = cu->list_in_scope;
21625           break;
21626         case DW_TAG_base_type:
21627         case DW_TAG_subrange_type:
21628           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21629           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21630           list_to_add = cu->list_in_scope;
21631           break;
21632         case DW_TAG_enumerator:
21633           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21634           if (attr)
21635             {
21636               dwarf2_const_value (attr, sym, cu);
21637             }
21638           {
21639             /* NOTE: carlton/2003-11-10: See comment above in the
21640                DW_TAG_class_type, etc. block.  */
21641
21642             list_to_add
21643               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21644                  && cu->language == language_cplus
21645                  ? cu->builder->get_global_symbols ()
21646                  : cu->list_in_scope);
21647           }
21648           break;
21649         case DW_TAG_imported_declaration:
21650         case DW_TAG_namespace:
21651           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21652           list_to_add = cu->builder->get_global_symbols ();
21653           break;
21654         case DW_TAG_module:
21655           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21656           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21657           list_to_add = cu->builder->get_global_symbols ();
21658           break;
21659         case DW_TAG_common_block:
21660           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21661           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21662           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21663           break;
21664         default:
21665           /* Not a tag we recognize.  Hopefully we aren't processing
21666              trash data, but since we must specifically ignore things
21667              we don't recognize, there is nothing else we should do at
21668              this point.  */
21669           complaint (_("unsupported tag: '%s'"),
21670                      dwarf_tag_name (die->tag));
21671           break;
21672         }
21673
21674       if (suppress_add)
21675         {
21676           sym->hash_next = objfile->template_symbols;
21677           objfile->template_symbols = sym;
21678           list_to_add = NULL;
21679         }
21680
21681       if (list_to_add != NULL)
21682         dw2_add_symbol_to_list (sym, list_to_add);
21683
21684       /* For the benefit of old versions of GCC, check for anonymous
21685          namespaces based on the demangled name.  */
21686       if (!cu->processing_has_namespace_info
21687           && cu->language == language_cplus)
21688         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21689     }
21690   return (sym);
21691 }
21692
21693 /* Given an attr with a DW_FORM_dataN value in host byte order,
21694    zero-extend it as appropriate for the symbol's type.  The DWARF
21695    standard (v4) is not entirely clear about the meaning of using
21696    DW_FORM_dataN for a constant with a signed type, where the type is
21697    wider than the data.  The conclusion of a discussion on the DWARF
21698    list was that this is unspecified.  We choose to always zero-extend
21699    because that is the interpretation long in use by GCC.  */
21700
21701 static gdb_byte *
21702 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21703                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21704 {
21705   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21706   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21707                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21708   LONGEST l = DW_UNSND (attr);
21709
21710   if (bits < sizeof (*value) * 8)
21711     {
21712       l &= ((LONGEST) 1 << bits) - 1;
21713       *value = l;
21714     }
21715   else if (bits == sizeof (*value) * 8)
21716     *value = l;
21717   else
21718     {
21719       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21720       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21721       return bytes;
21722     }
21723
21724   return NULL;
21725 }
21726
21727 /* Read a constant value from an attribute.  Either set *VALUE, or if
21728    the value does not fit in *VALUE, set *BYTES - either already
21729    allocated on the objfile obstack, or newly allocated on OBSTACK,
21730    or, set *BATON, if we translated the constant to a location
21731    expression.  */
21732
21733 static void
21734 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21735                          const char *name, struct obstack *obstack,
21736                          struct dwarf2_cu *cu,
21737                          LONGEST *value, const gdb_byte **bytes,
21738                          struct dwarf2_locexpr_baton **baton)
21739 {
21740   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21741   struct comp_unit_head *cu_header = &cu->header;
21742   struct dwarf_block *blk;
21743   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21744                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21745
21746   *value = 0;
21747   *bytes = NULL;
21748   *baton = NULL;
21749
21750   switch (attr->form)
21751     {
21752     case DW_FORM_addr:
21753     case DW_FORM_GNU_addr_index:
21754       {
21755         gdb_byte *data;
21756
21757         if (TYPE_LENGTH (type) != cu_header->addr_size)
21758           dwarf2_const_value_length_mismatch_complaint (name,
21759                                                         cu_header->addr_size,
21760                                                         TYPE_LENGTH (type));
21761         /* Symbols of this form are reasonably rare, so we just
21762            piggyback on the existing location code rather than writing
21763            a new implementation of symbol_computed_ops.  */
21764         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21765         (*baton)->per_cu = cu->per_cu;
21766         gdb_assert ((*baton)->per_cu);
21767
21768         (*baton)->size = 2 + cu_header->addr_size;
21769         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21770         (*baton)->data = data;
21771
21772         data[0] = DW_OP_addr;
21773         store_unsigned_integer (&data[1], cu_header->addr_size,
21774                                 byte_order, DW_ADDR (attr));
21775         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21776       }
21777       break;
21778     case DW_FORM_string:
21779     case DW_FORM_strp:
21780     case DW_FORM_GNU_str_index:
21781     case DW_FORM_GNU_strp_alt:
21782       /* DW_STRING is already allocated on the objfile obstack, point
21783          directly to it.  */
21784       *bytes = (const gdb_byte *) DW_STRING (attr);
21785       break;
21786     case DW_FORM_block1:
21787     case DW_FORM_block2:
21788     case DW_FORM_block4:
21789     case DW_FORM_block:
21790     case DW_FORM_exprloc:
21791     case DW_FORM_data16:
21792       blk = DW_BLOCK (attr);
21793       if (TYPE_LENGTH (type) != blk->size)
21794         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21795                                                       TYPE_LENGTH (type));
21796       *bytes = blk->data;
21797       break;
21798
21799       /* The DW_AT_const_value attributes are supposed to carry the
21800          symbol's value "represented as it would be on the target
21801          architecture."  By the time we get here, it's already been
21802          converted to host endianness, so we just need to sign- or
21803          zero-extend it as appropriate.  */
21804     case DW_FORM_data1:
21805       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21806       break;
21807     case DW_FORM_data2:
21808       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21809       break;
21810     case DW_FORM_data4:
21811       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21812       break;
21813     case DW_FORM_data8:
21814       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21815       break;
21816
21817     case DW_FORM_sdata:
21818     case DW_FORM_implicit_const:
21819       *value = DW_SND (attr);
21820       break;
21821
21822     case DW_FORM_udata:
21823       *value = DW_UNSND (attr);
21824       break;
21825
21826     default:
21827       complaint (_("unsupported const value attribute form: '%s'"),
21828                  dwarf_form_name (attr->form));
21829       *value = 0;
21830       break;
21831     }
21832 }
21833
21834
21835 /* Copy constant value from an attribute to a symbol.  */
21836
21837 static void
21838 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21839                     struct dwarf2_cu *cu)
21840 {
21841   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21842   LONGEST value;
21843   const gdb_byte *bytes;
21844   struct dwarf2_locexpr_baton *baton;
21845
21846   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21847                            SYMBOL_PRINT_NAME (sym),
21848                            &objfile->objfile_obstack, cu,
21849                            &value, &bytes, &baton);
21850
21851   if (baton != NULL)
21852     {
21853       SYMBOL_LOCATION_BATON (sym) = baton;
21854       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21855     }
21856   else if (bytes != NULL)
21857      {
21858       SYMBOL_VALUE_BYTES (sym) = bytes;
21859       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21860     }
21861   else
21862     {
21863       SYMBOL_VALUE (sym) = value;
21864       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21865     }
21866 }
21867
21868 /* Return the type of the die in question using its DW_AT_type attribute.  */
21869
21870 static struct type *
21871 die_type (struct die_info *die, struct dwarf2_cu *cu)
21872 {
21873   struct attribute *type_attr;
21874
21875   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21876   if (!type_attr)
21877     {
21878       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21879       /* A missing DW_AT_type represents a void type.  */
21880       return objfile_type (objfile)->builtin_void;
21881     }
21882
21883   return lookup_die_type (die, type_attr, cu);
21884 }
21885
21886 /* True iff CU's producer generates GNAT Ada auxiliary information
21887    that allows to find parallel types through that information instead
21888    of having to do expensive parallel lookups by type name.  */
21889
21890 static int
21891 need_gnat_info (struct dwarf2_cu *cu)
21892 {
21893   /* Assume that the Ada compiler was GNAT, which always produces
21894      the auxiliary information.  */
21895   return (cu->language == language_ada);
21896 }
21897
21898 /* Return the auxiliary type of the die in question using its
21899    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21900    attribute is not present.  */
21901
21902 static struct type *
21903 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21904 {
21905   struct attribute *type_attr;
21906
21907   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21908   if (!type_attr)
21909     return NULL;
21910
21911   return lookup_die_type (die, type_attr, cu);
21912 }
21913
21914 /* If DIE has a descriptive_type attribute, then set the TYPE's
21915    descriptive type accordingly.  */
21916
21917 static void
21918 set_descriptive_type (struct type *type, struct die_info *die,
21919                       struct dwarf2_cu *cu)
21920 {
21921   struct type *descriptive_type = die_descriptive_type (die, cu);
21922
21923   if (descriptive_type)
21924     {
21925       ALLOCATE_GNAT_AUX_TYPE (type);
21926       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21927     }
21928 }
21929
21930 /* Return the containing type of the die in question using its
21931    DW_AT_containing_type attribute.  */
21932
21933 static struct type *
21934 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21935 {
21936   struct attribute *type_attr;
21937   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21938
21939   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21940   if (!type_attr)
21941     error (_("Dwarf Error: Problem turning containing type into gdb type "
21942              "[in module %s]"), objfile_name (objfile));
21943
21944   return lookup_die_type (die, type_attr, cu);
21945 }
21946
21947 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21948
21949 static struct type *
21950 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21951 {
21952   struct dwarf2_per_objfile *dwarf2_per_objfile
21953     = cu->per_cu->dwarf2_per_objfile;
21954   struct objfile *objfile = dwarf2_per_objfile->objfile;
21955   char *saved;
21956
21957   std::string message
21958     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21959                      objfile_name (objfile),
21960                      sect_offset_str (cu->header.sect_off),
21961                      sect_offset_str (die->sect_off));
21962   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21963                                   message.c_str (), message.length ());
21964
21965   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21966 }
21967
21968 /* Look up the type of DIE in CU using its type attribute ATTR.
21969    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21970    DW_AT_containing_type.
21971    If there is no type substitute an error marker.  */
21972
21973 static struct type *
21974 lookup_die_type (struct die_info *die, const struct attribute *attr,
21975                  struct dwarf2_cu *cu)
21976 {
21977   struct dwarf2_per_objfile *dwarf2_per_objfile
21978     = cu->per_cu->dwarf2_per_objfile;
21979   struct objfile *objfile = dwarf2_per_objfile->objfile;
21980   struct type *this_type;
21981
21982   gdb_assert (attr->name == DW_AT_type
21983               || attr->name == DW_AT_GNAT_descriptive_type
21984               || attr->name == DW_AT_containing_type);
21985
21986   /* First see if we have it cached.  */
21987
21988   if (attr->form == DW_FORM_GNU_ref_alt)
21989     {
21990       struct dwarf2_per_cu_data *per_cu;
21991       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21992
21993       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
21994                                                  dwarf2_per_objfile);
21995       this_type = get_die_type_at_offset (sect_off, per_cu);
21996     }
21997   else if (attr_form_is_ref (attr))
21998     {
21999       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22000
22001       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22002     }
22003   else if (attr->form == DW_FORM_ref_sig8)
22004     {
22005       ULONGEST signature = DW_SIGNATURE (attr);
22006
22007       return get_signatured_type (die, signature, cu);
22008     }
22009   else
22010     {
22011       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22012                    " at %s [in module %s]"),
22013                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22014                  objfile_name (objfile));
22015       return build_error_marker_type (cu, die);
22016     }
22017
22018   /* If not cached we need to read it in.  */
22019
22020   if (this_type == NULL)
22021     {
22022       struct die_info *type_die = NULL;
22023       struct dwarf2_cu *type_cu = cu;
22024
22025       if (attr_form_is_ref (attr))
22026         type_die = follow_die_ref (die, attr, &type_cu);
22027       if (type_die == NULL)
22028         return build_error_marker_type (cu, die);
22029       /* If we find the type now, it's probably because the type came
22030          from an inter-CU reference and the type's CU got expanded before
22031          ours.  */
22032       this_type = read_type_die (type_die, type_cu);
22033     }
22034
22035   /* If we still don't have a type use an error marker.  */
22036
22037   if (this_type == NULL)
22038     return build_error_marker_type (cu, die);
22039
22040   return this_type;
22041 }
22042
22043 /* Return the type in DIE, CU.
22044    Returns NULL for invalid types.
22045
22046    This first does a lookup in die_type_hash,
22047    and only reads the die in if necessary.
22048
22049    NOTE: This can be called when reading in partial or full symbols.  */
22050
22051 static struct type *
22052 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22053 {
22054   struct type *this_type;
22055
22056   this_type = get_die_type (die, cu);
22057   if (this_type)
22058     return this_type;
22059
22060   return read_type_die_1 (die, cu);
22061 }
22062
22063 /* Read the type in DIE, CU.
22064    Returns NULL for invalid types.  */
22065
22066 static struct type *
22067 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22068 {
22069   struct type *this_type = NULL;
22070
22071   switch (die->tag)
22072     {
22073     case DW_TAG_class_type:
22074     case DW_TAG_interface_type:
22075     case DW_TAG_structure_type:
22076     case DW_TAG_union_type:
22077       this_type = read_structure_type (die, cu);
22078       break;
22079     case DW_TAG_enumeration_type:
22080       this_type = read_enumeration_type (die, cu);
22081       break;
22082     case DW_TAG_subprogram:
22083     case DW_TAG_subroutine_type:
22084     case DW_TAG_inlined_subroutine:
22085       this_type = read_subroutine_type (die, cu);
22086       break;
22087     case DW_TAG_array_type:
22088       this_type = read_array_type (die, cu);
22089       break;
22090     case DW_TAG_set_type:
22091       this_type = read_set_type (die, cu);
22092       break;
22093     case DW_TAG_pointer_type:
22094       this_type = read_tag_pointer_type (die, cu);
22095       break;
22096     case DW_TAG_ptr_to_member_type:
22097       this_type = read_tag_ptr_to_member_type (die, cu);
22098       break;
22099     case DW_TAG_reference_type:
22100       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22101       break;
22102     case DW_TAG_rvalue_reference_type:
22103       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22104       break;
22105     case DW_TAG_const_type:
22106       this_type = read_tag_const_type (die, cu);
22107       break;
22108     case DW_TAG_volatile_type:
22109       this_type = read_tag_volatile_type (die, cu);
22110       break;
22111     case DW_TAG_restrict_type:
22112       this_type = read_tag_restrict_type (die, cu);
22113       break;
22114     case DW_TAG_string_type:
22115       this_type = read_tag_string_type (die, cu);
22116       break;
22117     case DW_TAG_typedef:
22118       this_type = read_typedef (die, cu);
22119       break;
22120     case DW_TAG_subrange_type:
22121       this_type = read_subrange_type (die, cu);
22122       break;
22123     case DW_TAG_base_type:
22124       this_type = read_base_type (die, cu);
22125       break;
22126     case DW_TAG_unspecified_type:
22127       this_type = read_unspecified_type (die, cu);
22128       break;
22129     case DW_TAG_namespace:
22130       this_type = read_namespace_type (die, cu);
22131       break;
22132     case DW_TAG_module:
22133       this_type = read_module_type (die, cu);
22134       break;
22135     case DW_TAG_atomic_type:
22136       this_type = read_tag_atomic_type (die, cu);
22137       break;
22138     default:
22139       complaint (_("unexpected tag in read_type_die: '%s'"),
22140                  dwarf_tag_name (die->tag));
22141       break;
22142     }
22143
22144   return this_type;
22145 }
22146
22147 /* See if we can figure out if the class lives in a namespace.  We do
22148    this by looking for a member function; its demangled name will
22149    contain namespace info, if there is any.
22150    Return the computed name or NULL.
22151    Space for the result is allocated on the objfile's obstack.
22152    This is the full-die version of guess_partial_die_structure_name.
22153    In this case we know DIE has no useful parent.  */
22154
22155 static char *
22156 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22157 {
22158   struct die_info *spec_die;
22159   struct dwarf2_cu *spec_cu;
22160   struct die_info *child;
22161   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22162
22163   spec_cu = cu;
22164   spec_die = die_specification (die, &spec_cu);
22165   if (spec_die != NULL)
22166     {
22167       die = spec_die;
22168       cu = spec_cu;
22169     }
22170
22171   for (child = die->child;
22172        child != NULL;
22173        child = child->sibling)
22174     {
22175       if (child->tag == DW_TAG_subprogram)
22176         {
22177           const char *linkage_name = dw2_linkage_name (child, cu);
22178
22179           if (linkage_name != NULL)
22180             {
22181               char *actual_name
22182                 = language_class_name_from_physname (cu->language_defn,
22183                                                      linkage_name);
22184               char *name = NULL;
22185
22186               if (actual_name != NULL)
22187                 {
22188                   const char *die_name = dwarf2_name (die, cu);
22189
22190                   if (die_name != NULL
22191                       && strcmp (die_name, actual_name) != 0)
22192                     {
22193                       /* Strip off the class name from the full name.
22194                          We want the prefix.  */
22195                       int die_name_len = strlen (die_name);
22196                       int actual_name_len = strlen (actual_name);
22197
22198                       /* Test for '::' as a sanity check.  */
22199                       if (actual_name_len > die_name_len + 2
22200                           && actual_name[actual_name_len
22201                                          - die_name_len - 1] == ':')
22202                         name = (char *) obstack_copy0 (
22203                           &objfile->per_bfd->storage_obstack,
22204                           actual_name, actual_name_len - die_name_len - 2);
22205                     }
22206                 }
22207               xfree (actual_name);
22208               return name;
22209             }
22210         }
22211     }
22212
22213   return NULL;
22214 }
22215
22216 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22217    prefix part in such case.  See
22218    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22219
22220 static const char *
22221 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22222 {
22223   struct attribute *attr;
22224   const char *base;
22225
22226   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22227       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22228     return NULL;
22229
22230   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22231     return NULL;
22232
22233   attr = dw2_linkage_name_attr (die, cu);
22234   if (attr == NULL || DW_STRING (attr) == NULL)
22235     return NULL;
22236
22237   /* dwarf2_name had to be already called.  */
22238   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22239
22240   /* Strip the base name, keep any leading namespaces/classes.  */
22241   base = strrchr (DW_STRING (attr), ':');
22242   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22243     return "";
22244
22245   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22246   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22247                                  DW_STRING (attr),
22248                                  &base[-1] - DW_STRING (attr));
22249 }
22250
22251 /* Return the name of the namespace/class that DIE is defined within,
22252    or "" if we can't tell.  The caller should not xfree the result.
22253
22254    For example, if we're within the method foo() in the following
22255    code:
22256
22257    namespace N {
22258      class C {
22259        void foo () {
22260        }
22261      };
22262    }
22263
22264    then determine_prefix on foo's die will return "N::C".  */
22265
22266 static const char *
22267 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22268 {
22269   struct dwarf2_per_objfile *dwarf2_per_objfile
22270     = cu->per_cu->dwarf2_per_objfile;
22271   struct die_info *parent, *spec_die;
22272   struct dwarf2_cu *spec_cu;
22273   struct type *parent_type;
22274   const char *retval;
22275
22276   if (cu->language != language_cplus
22277       && cu->language != language_fortran && cu->language != language_d
22278       && cu->language != language_rust)
22279     return "";
22280
22281   retval = anonymous_struct_prefix (die, cu);
22282   if (retval)
22283     return retval;
22284
22285   /* We have to be careful in the presence of DW_AT_specification.
22286      For example, with GCC 3.4, given the code
22287
22288      namespace N {
22289        void foo() {
22290          // Definition of N::foo.
22291        }
22292      }
22293
22294      then we'll have a tree of DIEs like this:
22295
22296      1: DW_TAG_compile_unit
22297        2: DW_TAG_namespace        // N
22298          3: DW_TAG_subprogram     // declaration of N::foo
22299        4: DW_TAG_subprogram       // definition of N::foo
22300             DW_AT_specification   // refers to die #3
22301
22302      Thus, when processing die #4, we have to pretend that we're in
22303      the context of its DW_AT_specification, namely the contex of die
22304      #3.  */
22305   spec_cu = cu;
22306   spec_die = die_specification (die, &spec_cu);
22307   if (spec_die == NULL)
22308     parent = die->parent;
22309   else
22310     {
22311       parent = spec_die->parent;
22312       cu = spec_cu;
22313     }
22314
22315   if (parent == NULL)
22316     return "";
22317   else if (parent->building_fullname)
22318     {
22319       const char *name;
22320       const char *parent_name;
22321
22322       /* It has been seen on RealView 2.2 built binaries,
22323          DW_TAG_template_type_param types actually _defined_ as
22324          children of the parent class:
22325
22326          enum E {};
22327          template class <class Enum> Class{};
22328          Class<enum E> class_e;
22329
22330          1: DW_TAG_class_type (Class)
22331            2: DW_TAG_enumeration_type (E)
22332              3: DW_TAG_enumerator (enum1:0)
22333              3: DW_TAG_enumerator (enum2:1)
22334              ...
22335            2: DW_TAG_template_type_param
22336               DW_AT_type  DW_FORM_ref_udata (E)
22337
22338          Besides being broken debug info, it can put GDB into an
22339          infinite loop.  Consider:
22340
22341          When we're building the full name for Class<E>, we'll start
22342          at Class, and go look over its template type parameters,
22343          finding E.  We'll then try to build the full name of E, and
22344          reach here.  We're now trying to build the full name of E,
22345          and look over the parent DIE for containing scope.  In the
22346          broken case, if we followed the parent DIE of E, we'd again
22347          find Class, and once again go look at its template type
22348          arguments, etc., etc.  Simply don't consider such parent die
22349          as source-level parent of this die (it can't be, the language
22350          doesn't allow it), and break the loop here.  */
22351       name = dwarf2_name (die, cu);
22352       parent_name = dwarf2_name (parent, cu);
22353       complaint (_("template param type '%s' defined within parent '%s'"),
22354                  name ? name : "<unknown>",
22355                  parent_name ? parent_name : "<unknown>");
22356       return "";
22357     }
22358   else
22359     switch (parent->tag)
22360       {
22361       case DW_TAG_namespace:
22362         parent_type = read_type_die (parent, cu);
22363         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22364            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22365            Work around this problem here.  */
22366         if (cu->language == language_cplus
22367             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22368           return "";
22369         /* We give a name to even anonymous namespaces.  */
22370         return TYPE_NAME (parent_type);
22371       case DW_TAG_class_type:
22372       case DW_TAG_interface_type:
22373       case DW_TAG_structure_type:
22374       case DW_TAG_union_type:
22375       case DW_TAG_module:
22376         parent_type = read_type_die (parent, cu);
22377         if (TYPE_NAME (parent_type) != NULL)
22378           return TYPE_NAME (parent_type);
22379         else
22380           /* An anonymous structure is only allowed non-static data
22381              members; no typedefs, no member functions, et cetera.
22382              So it does not need a prefix.  */
22383           return "";
22384       case DW_TAG_compile_unit:
22385       case DW_TAG_partial_unit:
22386         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22387         if (cu->language == language_cplus
22388             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22389             && die->child != NULL
22390             && (die->tag == DW_TAG_class_type
22391                 || die->tag == DW_TAG_structure_type
22392                 || die->tag == DW_TAG_union_type))
22393           {
22394             char *name = guess_full_die_structure_name (die, cu);
22395             if (name != NULL)
22396               return name;
22397           }
22398         return "";
22399       case DW_TAG_enumeration_type:
22400         parent_type = read_type_die (parent, cu);
22401         if (TYPE_DECLARED_CLASS (parent_type))
22402           {
22403             if (TYPE_NAME (parent_type) != NULL)
22404               return TYPE_NAME (parent_type);
22405             return "";
22406           }
22407         /* Fall through.  */
22408       default:
22409         return determine_prefix (parent, cu);
22410       }
22411 }
22412
22413 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22414    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22415    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22416    an obconcat, otherwise allocate storage for the result.  The CU argument is
22417    used to determine the language and hence, the appropriate separator.  */
22418
22419 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22420
22421 static char *
22422 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22423                  int physname, struct dwarf2_cu *cu)
22424 {
22425   const char *lead = "";
22426   const char *sep;
22427
22428   if (suffix == NULL || suffix[0] == '\0'
22429       || prefix == NULL || prefix[0] == '\0')
22430     sep = "";
22431   else if (cu->language == language_d)
22432     {
22433       /* For D, the 'main' function could be defined in any module, but it
22434          should never be prefixed.  */
22435       if (strcmp (suffix, "D main") == 0)
22436         {
22437           prefix = "";
22438           sep = "";
22439         }
22440       else
22441         sep = ".";
22442     }
22443   else if (cu->language == language_fortran && physname)
22444     {
22445       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22446          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22447
22448       lead = "__";
22449       sep = "_MOD_";
22450     }
22451   else
22452     sep = "::";
22453
22454   if (prefix == NULL)
22455     prefix = "";
22456   if (suffix == NULL)
22457     suffix = "";
22458
22459   if (obs == NULL)
22460     {
22461       char *retval
22462         = ((char *)
22463            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22464
22465       strcpy (retval, lead);
22466       strcat (retval, prefix);
22467       strcat (retval, sep);
22468       strcat (retval, suffix);
22469       return retval;
22470     }
22471   else
22472     {
22473       /* We have an obstack.  */
22474       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22475     }
22476 }
22477
22478 /* Return sibling of die, NULL if no sibling.  */
22479
22480 static struct die_info *
22481 sibling_die (struct die_info *die)
22482 {
22483   return die->sibling;
22484 }
22485
22486 /* Get name of a die, return NULL if not found.  */
22487
22488 static const char *
22489 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22490                           struct obstack *obstack)
22491 {
22492   if (name && cu->language == language_cplus)
22493     {
22494       std::string canon_name = cp_canonicalize_string (name);
22495
22496       if (!canon_name.empty ())
22497         {
22498           if (canon_name != name)
22499             name = (const char *) obstack_copy0 (obstack,
22500                                                  canon_name.c_str (),
22501                                                  canon_name.length ());
22502         }
22503     }
22504
22505   return name;
22506 }
22507
22508 /* Get name of a die, return NULL if not found.
22509    Anonymous namespaces are converted to their magic string.  */
22510
22511 static const char *
22512 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22513 {
22514   struct attribute *attr;
22515   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22516
22517   attr = dwarf2_attr (die, DW_AT_name, cu);
22518   if ((!attr || !DW_STRING (attr))
22519       && die->tag != DW_TAG_namespace
22520       && die->tag != DW_TAG_class_type
22521       && die->tag != DW_TAG_interface_type
22522       && die->tag != DW_TAG_structure_type
22523       && die->tag != DW_TAG_union_type)
22524     return NULL;
22525
22526   switch (die->tag)
22527     {
22528     case DW_TAG_compile_unit:
22529     case DW_TAG_partial_unit:
22530       /* Compilation units have a DW_AT_name that is a filename, not
22531          a source language identifier.  */
22532     case DW_TAG_enumeration_type:
22533     case DW_TAG_enumerator:
22534       /* These tags always have simple identifiers already; no need
22535          to canonicalize them.  */
22536       return DW_STRING (attr);
22537
22538     case DW_TAG_namespace:
22539       if (attr != NULL && DW_STRING (attr) != NULL)
22540         return DW_STRING (attr);
22541       return CP_ANONYMOUS_NAMESPACE_STR;
22542
22543     case DW_TAG_class_type:
22544     case DW_TAG_interface_type:
22545     case DW_TAG_structure_type:
22546     case DW_TAG_union_type:
22547       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22548          structures or unions.  These were of the form "._%d" in GCC 4.1,
22549          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22550          and GCC 4.4.  We work around this problem by ignoring these.  */
22551       if (attr && DW_STRING (attr)
22552           && (startswith (DW_STRING (attr), "._")
22553               || startswith (DW_STRING (attr), "<anonymous")))
22554         return NULL;
22555
22556       /* GCC might emit a nameless typedef that has a linkage name.  See
22557          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22558       if (!attr || DW_STRING (attr) == NULL)
22559         {
22560           char *demangled = NULL;
22561
22562           attr = dw2_linkage_name_attr (die, cu);
22563           if (attr == NULL || DW_STRING (attr) == NULL)
22564             return NULL;
22565
22566           /* Avoid demangling DW_STRING (attr) the second time on a second
22567              call for the same DIE.  */
22568           if (!DW_STRING_IS_CANONICAL (attr))
22569             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22570
22571           if (demangled)
22572             {
22573               const char *base;
22574
22575               /* FIXME: we already did this for the partial symbol... */
22576               DW_STRING (attr)
22577                 = ((const char *)
22578                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22579                                   demangled, strlen (demangled)));
22580               DW_STRING_IS_CANONICAL (attr) = 1;
22581               xfree (demangled);
22582
22583               /* Strip any leading namespaces/classes, keep only the base name.
22584                  DW_AT_name for named DIEs does not contain the prefixes.  */
22585               base = strrchr (DW_STRING (attr), ':');
22586               if (base && base > DW_STRING (attr) && base[-1] == ':')
22587                 return &base[1];
22588               else
22589                 return DW_STRING (attr);
22590             }
22591         }
22592       break;
22593
22594     default:
22595       break;
22596     }
22597
22598   if (!DW_STRING_IS_CANONICAL (attr))
22599     {
22600       DW_STRING (attr)
22601         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22602                                     &objfile->per_bfd->storage_obstack);
22603       DW_STRING_IS_CANONICAL (attr) = 1;
22604     }
22605   return DW_STRING (attr);
22606 }
22607
22608 /* Return the die that this die in an extension of, or NULL if there
22609    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22610    containing the return value on output.  */
22611
22612 static struct die_info *
22613 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22614 {
22615   struct attribute *attr;
22616
22617   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22618   if (attr == NULL)
22619     return NULL;
22620
22621   return follow_die_ref (die, attr, ext_cu);
22622 }
22623
22624 /* Convert a DIE tag into its string name.  */
22625
22626 static const char *
22627 dwarf_tag_name (unsigned tag)
22628 {
22629   const char *name = get_DW_TAG_name (tag);
22630
22631   if (name == NULL)
22632     return "DW_TAG_<unknown>";
22633
22634   return name;
22635 }
22636
22637 /* Convert a DWARF attribute code into its string name.  */
22638
22639 static const char *
22640 dwarf_attr_name (unsigned attr)
22641 {
22642   const char *name;
22643
22644 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22645   if (attr == DW_AT_MIPS_fde)
22646     return "DW_AT_MIPS_fde";
22647 #else
22648   if (attr == DW_AT_HP_block_index)
22649     return "DW_AT_HP_block_index";
22650 #endif
22651
22652   name = get_DW_AT_name (attr);
22653
22654   if (name == NULL)
22655     return "DW_AT_<unknown>";
22656
22657   return name;
22658 }
22659
22660 /* Convert a DWARF value form code into its string name.  */
22661
22662 static const char *
22663 dwarf_form_name (unsigned form)
22664 {
22665   const char *name = get_DW_FORM_name (form);
22666
22667   if (name == NULL)
22668     return "DW_FORM_<unknown>";
22669
22670   return name;
22671 }
22672
22673 static const char *
22674 dwarf_bool_name (unsigned mybool)
22675 {
22676   if (mybool)
22677     return "TRUE";
22678   else
22679     return "FALSE";
22680 }
22681
22682 /* Convert a DWARF type code into its string name.  */
22683
22684 static const char *
22685 dwarf_type_encoding_name (unsigned enc)
22686 {
22687   const char *name = get_DW_ATE_name (enc);
22688
22689   if (name == NULL)
22690     return "DW_ATE_<unknown>";
22691
22692   return name;
22693 }
22694
22695 static void
22696 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22697 {
22698   unsigned int i;
22699
22700   print_spaces (indent, f);
22701   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22702                       dwarf_tag_name (die->tag), die->abbrev,
22703                       sect_offset_str (die->sect_off));
22704
22705   if (die->parent != NULL)
22706     {
22707       print_spaces (indent, f);
22708       fprintf_unfiltered (f, "  parent at offset: %s\n",
22709                           sect_offset_str (die->parent->sect_off));
22710     }
22711
22712   print_spaces (indent, f);
22713   fprintf_unfiltered (f, "  has children: %s\n",
22714            dwarf_bool_name (die->child != NULL));
22715
22716   print_spaces (indent, f);
22717   fprintf_unfiltered (f, "  attributes:\n");
22718
22719   for (i = 0; i < die->num_attrs; ++i)
22720     {
22721       print_spaces (indent, f);
22722       fprintf_unfiltered (f, "    %s (%s) ",
22723                dwarf_attr_name (die->attrs[i].name),
22724                dwarf_form_name (die->attrs[i].form));
22725
22726       switch (die->attrs[i].form)
22727         {
22728         case DW_FORM_addr:
22729         case DW_FORM_GNU_addr_index:
22730           fprintf_unfiltered (f, "address: ");
22731           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22732           break;
22733         case DW_FORM_block2:
22734         case DW_FORM_block4:
22735         case DW_FORM_block:
22736         case DW_FORM_block1:
22737           fprintf_unfiltered (f, "block: size %s",
22738                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22739           break;
22740         case DW_FORM_exprloc:
22741           fprintf_unfiltered (f, "expression: size %s",
22742                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22743           break;
22744         case DW_FORM_data16:
22745           fprintf_unfiltered (f, "constant of 16 bytes");
22746           break;
22747         case DW_FORM_ref_addr:
22748           fprintf_unfiltered (f, "ref address: ");
22749           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22750           break;
22751         case DW_FORM_GNU_ref_alt:
22752           fprintf_unfiltered (f, "alt ref address: ");
22753           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22754           break;
22755         case DW_FORM_ref1:
22756         case DW_FORM_ref2:
22757         case DW_FORM_ref4:
22758         case DW_FORM_ref8:
22759         case DW_FORM_ref_udata:
22760           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22761                               (long) (DW_UNSND (&die->attrs[i])));
22762           break;
22763         case DW_FORM_data1:
22764         case DW_FORM_data2:
22765         case DW_FORM_data4:
22766         case DW_FORM_data8:
22767         case DW_FORM_udata:
22768         case DW_FORM_sdata:
22769           fprintf_unfiltered (f, "constant: %s",
22770                               pulongest (DW_UNSND (&die->attrs[i])));
22771           break;
22772         case DW_FORM_sec_offset:
22773           fprintf_unfiltered (f, "section offset: %s",
22774                               pulongest (DW_UNSND (&die->attrs[i])));
22775           break;
22776         case DW_FORM_ref_sig8:
22777           fprintf_unfiltered (f, "signature: %s",
22778                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22779           break;
22780         case DW_FORM_string:
22781         case DW_FORM_strp:
22782         case DW_FORM_line_strp:
22783         case DW_FORM_GNU_str_index:
22784         case DW_FORM_GNU_strp_alt:
22785           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22786                    DW_STRING (&die->attrs[i])
22787                    ? DW_STRING (&die->attrs[i]) : "",
22788                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22789           break;
22790         case DW_FORM_flag:
22791           if (DW_UNSND (&die->attrs[i]))
22792             fprintf_unfiltered (f, "flag: TRUE");
22793           else
22794             fprintf_unfiltered (f, "flag: FALSE");
22795           break;
22796         case DW_FORM_flag_present:
22797           fprintf_unfiltered (f, "flag: TRUE");
22798           break;
22799         case DW_FORM_indirect:
22800           /* The reader will have reduced the indirect form to
22801              the "base form" so this form should not occur.  */
22802           fprintf_unfiltered (f, 
22803                               "unexpected attribute form: DW_FORM_indirect");
22804           break;
22805         case DW_FORM_implicit_const:
22806           fprintf_unfiltered (f, "constant: %s",
22807                               plongest (DW_SND (&die->attrs[i])));
22808           break;
22809         default:
22810           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22811                    die->attrs[i].form);
22812           break;
22813         }
22814       fprintf_unfiltered (f, "\n");
22815     }
22816 }
22817
22818 static void
22819 dump_die_for_error (struct die_info *die)
22820 {
22821   dump_die_shallow (gdb_stderr, 0, die);
22822 }
22823
22824 static void
22825 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22826 {
22827   int indent = level * 4;
22828
22829   gdb_assert (die != NULL);
22830
22831   if (level >= max_level)
22832     return;
22833
22834   dump_die_shallow (f, indent, die);
22835
22836   if (die->child != NULL)
22837     {
22838       print_spaces (indent, f);
22839       fprintf_unfiltered (f, "  Children:");
22840       if (level + 1 < max_level)
22841         {
22842           fprintf_unfiltered (f, "\n");
22843           dump_die_1 (f, level + 1, max_level, die->child);
22844         }
22845       else
22846         {
22847           fprintf_unfiltered (f,
22848                               " [not printed, max nesting level reached]\n");
22849         }
22850     }
22851
22852   if (die->sibling != NULL && level > 0)
22853     {
22854       dump_die_1 (f, level, max_level, die->sibling);
22855     }
22856 }
22857
22858 /* This is called from the pdie macro in gdbinit.in.
22859    It's not static so gcc will keep a copy callable from gdb.  */
22860
22861 void
22862 dump_die (struct die_info *die, int max_level)
22863 {
22864   dump_die_1 (gdb_stdlog, 0, max_level, die);
22865 }
22866
22867 static void
22868 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22869 {
22870   void **slot;
22871
22872   slot = htab_find_slot_with_hash (cu->die_hash, die,
22873                                    to_underlying (die->sect_off),
22874                                    INSERT);
22875
22876   *slot = die;
22877 }
22878
22879 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22880    required kind.  */
22881
22882 static sect_offset
22883 dwarf2_get_ref_die_offset (const struct attribute *attr)
22884 {
22885   if (attr_form_is_ref (attr))
22886     return (sect_offset) DW_UNSND (attr);
22887
22888   complaint (_("unsupported die ref attribute form: '%s'"),
22889              dwarf_form_name (attr->form));
22890   return {};
22891 }
22892
22893 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22894  * the value held by the attribute is not constant.  */
22895
22896 static LONGEST
22897 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22898 {
22899   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22900     return DW_SND (attr);
22901   else if (attr->form == DW_FORM_udata
22902            || attr->form == DW_FORM_data1
22903            || attr->form == DW_FORM_data2
22904            || attr->form == DW_FORM_data4
22905            || attr->form == DW_FORM_data8)
22906     return DW_UNSND (attr);
22907   else
22908     {
22909       /* For DW_FORM_data16 see attr_form_is_constant.  */
22910       complaint (_("Attribute value is not a constant (%s)"),
22911                  dwarf_form_name (attr->form));
22912       return default_value;
22913     }
22914 }
22915
22916 /* Follow reference or signature attribute ATTR of SRC_DIE.
22917    On entry *REF_CU is the CU of SRC_DIE.
22918    On exit *REF_CU is the CU of the result.  */
22919
22920 static struct die_info *
22921 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22922                        struct dwarf2_cu **ref_cu)
22923 {
22924   struct die_info *die;
22925
22926   if (attr_form_is_ref (attr))
22927     die = follow_die_ref (src_die, attr, ref_cu);
22928   else if (attr->form == DW_FORM_ref_sig8)
22929     die = follow_die_sig (src_die, attr, ref_cu);
22930   else
22931     {
22932       dump_die_for_error (src_die);
22933       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22934              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22935     }
22936
22937   return die;
22938 }
22939
22940 /* Follow reference OFFSET.
22941    On entry *REF_CU is the CU of the source die referencing OFFSET.
22942    On exit *REF_CU is the CU of the result.
22943    Returns NULL if OFFSET is invalid.  */
22944
22945 static struct die_info *
22946 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22947                    struct dwarf2_cu **ref_cu)
22948 {
22949   struct die_info temp_die;
22950   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22951   struct dwarf2_per_objfile *dwarf2_per_objfile
22952     = cu->per_cu->dwarf2_per_objfile;
22953
22954   gdb_assert (cu->per_cu != NULL);
22955
22956   target_cu = cu;
22957
22958   if (cu->per_cu->is_debug_types)
22959     {
22960       /* .debug_types CUs cannot reference anything outside their CU.
22961          If they need to, they have to reference a signatured type via
22962          DW_FORM_ref_sig8.  */
22963       if (!offset_in_cu_p (&cu->header, sect_off))
22964         return NULL;
22965     }
22966   else if (offset_in_dwz != cu->per_cu->is_dwz
22967            || !offset_in_cu_p (&cu->header, sect_off))
22968     {
22969       struct dwarf2_per_cu_data *per_cu;
22970
22971       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22972                                                  dwarf2_per_objfile);
22973
22974       /* If necessary, add it to the queue and load its DIEs.  */
22975       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22976         load_full_comp_unit (per_cu, false, cu->language);
22977
22978       target_cu = per_cu->cu;
22979     }
22980   else if (cu->dies == NULL)
22981     {
22982       /* We're loading full DIEs during partial symbol reading.  */
22983       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22984       load_full_comp_unit (cu->per_cu, false, language_minimal);
22985     }
22986
22987   *ref_cu = target_cu;
22988   temp_die.sect_off = sect_off;
22989   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22990                                                   &temp_die,
22991                                                   to_underlying (sect_off));
22992 }
22993
22994 /* Follow reference attribute ATTR of SRC_DIE.
22995    On entry *REF_CU is the CU of SRC_DIE.
22996    On exit *REF_CU is the CU of the result.  */
22997
22998 static struct die_info *
22999 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23000                 struct dwarf2_cu **ref_cu)
23001 {
23002   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23003   struct dwarf2_cu *cu = *ref_cu;
23004   struct die_info *die;
23005
23006   die = follow_die_offset (sect_off,
23007                            (attr->form == DW_FORM_GNU_ref_alt
23008                             || cu->per_cu->is_dwz),
23009                            ref_cu);
23010   if (!die)
23011     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23012            "at %s [in module %s]"),
23013            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23014            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23015
23016   return die;
23017 }
23018
23019 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23020    Returned value is intended for DW_OP_call*.  Returned
23021    dwarf2_locexpr_baton->data has lifetime of
23022    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23023
23024 struct dwarf2_locexpr_baton
23025 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23026                                struct dwarf2_per_cu_data *per_cu,
23027                                CORE_ADDR (*get_frame_pc) (void *baton),
23028                                void *baton, bool resolve_abstract_p)
23029 {
23030   struct dwarf2_cu *cu;
23031   struct die_info *die;
23032   struct attribute *attr;
23033   struct dwarf2_locexpr_baton retval;
23034   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23035   struct objfile *objfile = dwarf2_per_objfile->objfile;
23036
23037   if (per_cu->cu == NULL)
23038     load_cu (per_cu, false);
23039   cu = per_cu->cu;
23040   if (cu == NULL)
23041     {
23042       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23043          Instead just throw an error, not much else we can do.  */
23044       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23045              sect_offset_str (sect_off), objfile_name (objfile));
23046     }
23047
23048   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23049   if (!die)
23050     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23051            sect_offset_str (sect_off), objfile_name (objfile));
23052
23053   attr = dwarf2_attr (die, DW_AT_location, cu);
23054   if (!attr && resolve_abstract_p
23055       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23056           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23057     {
23058       CORE_ADDR pc = (*get_frame_pc) (baton);
23059
23060       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23061         {
23062           if (!cand->parent
23063               || cand->parent->tag != DW_TAG_subprogram)
23064             continue;
23065
23066           CORE_ADDR pc_low, pc_high;
23067           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23068           if (pc_low == ((CORE_ADDR) -1)
23069               || !(pc_low <= pc && pc < pc_high))
23070             continue;
23071
23072           die = cand;
23073           attr = dwarf2_attr (die, DW_AT_location, cu);
23074           break;
23075         }
23076     }
23077
23078   if (!attr)
23079     {
23080       /* DWARF: "If there is no such attribute, then there is no effect.".
23081          DATA is ignored if SIZE is 0.  */
23082
23083       retval.data = NULL;
23084       retval.size = 0;
23085     }
23086   else if (attr_form_is_section_offset (attr))
23087     {
23088       struct dwarf2_loclist_baton loclist_baton;
23089       CORE_ADDR pc = (*get_frame_pc) (baton);
23090       size_t size;
23091
23092       fill_in_loclist_baton (cu, &loclist_baton, attr);
23093
23094       retval.data = dwarf2_find_location_expression (&loclist_baton,
23095                                                      &size, pc);
23096       retval.size = size;
23097     }
23098   else
23099     {
23100       if (!attr_form_is_block (attr))
23101         error (_("Dwarf Error: DIE at %s referenced in module %s "
23102                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23103                sect_offset_str (sect_off), objfile_name (objfile));
23104
23105       retval.data = DW_BLOCK (attr)->data;
23106       retval.size = DW_BLOCK (attr)->size;
23107     }
23108   retval.per_cu = cu->per_cu;
23109
23110   age_cached_comp_units (dwarf2_per_objfile);
23111
23112   return retval;
23113 }
23114
23115 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23116    offset.  */
23117
23118 struct dwarf2_locexpr_baton
23119 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23120                              struct dwarf2_per_cu_data *per_cu,
23121                              CORE_ADDR (*get_frame_pc) (void *baton),
23122                              void *baton)
23123 {
23124   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23125
23126   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23127 }
23128
23129 /* Write a constant of a given type as target-ordered bytes into
23130    OBSTACK.  */
23131
23132 static const gdb_byte *
23133 write_constant_as_bytes (struct obstack *obstack,
23134                          enum bfd_endian byte_order,
23135                          struct type *type,
23136                          ULONGEST value,
23137                          LONGEST *len)
23138 {
23139   gdb_byte *result;
23140
23141   *len = TYPE_LENGTH (type);
23142   result = (gdb_byte *) obstack_alloc (obstack, *len);
23143   store_unsigned_integer (result, *len, byte_order, value);
23144
23145   return result;
23146 }
23147
23148 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23149    pointer to the constant bytes and set LEN to the length of the
23150    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23151    does not have a DW_AT_const_value, return NULL.  */
23152
23153 const gdb_byte *
23154 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23155                              struct dwarf2_per_cu_data *per_cu,
23156                              struct obstack *obstack,
23157                              LONGEST *len)
23158 {
23159   struct dwarf2_cu *cu;
23160   struct die_info *die;
23161   struct attribute *attr;
23162   const gdb_byte *result = NULL;
23163   struct type *type;
23164   LONGEST value;
23165   enum bfd_endian byte_order;
23166   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23167
23168   if (per_cu->cu == NULL)
23169     load_cu (per_cu, false);
23170   cu = per_cu->cu;
23171   if (cu == NULL)
23172     {
23173       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23174          Instead just throw an error, not much else we can do.  */
23175       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23176              sect_offset_str (sect_off), objfile_name (objfile));
23177     }
23178
23179   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23180   if (!die)
23181     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23182            sect_offset_str (sect_off), objfile_name (objfile));
23183
23184   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23185   if (attr == NULL)
23186     return NULL;
23187
23188   byte_order = (bfd_big_endian (objfile->obfd)
23189                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23190
23191   switch (attr->form)
23192     {
23193     case DW_FORM_addr:
23194     case DW_FORM_GNU_addr_index:
23195       {
23196         gdb_byte *tem;
23197
23198         *len = cu->header.addr_size;
23199         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23200         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23201         result = tem;
23202       }
23203       break;
23204     case DW_FORM_string:
23205     case DW_FORM_strp:
23206     case DW_FORM_GNU_str_index:
23207     case DW_FORM_GNU_strp_alt:
23208       /* DW_STRING is already allocated on the objfile obstack, point
23209          directly to it.  */
23210       result = (const gdb_byte *) DW_STRING (attr);
23211       *len = strlen (DW_STRING (attr));
23212       break;
23213     case DW_FORM_block1:
23214     case DW_FORM_block2:
23215     case DW_FORM_block4:
23216     case DW_FORM_block:
23217     case DW_FORM_exprloc:
23218     case DW_FORM_data16:
23219       result = DW_BLOCK (attr)->data;
23220       *len = DW_BLOCK (attr)->size;
23221       break;
23222
23223       /* The DW_AT_const_value attributes are supposed to carry the
23224          symbol's value "represented as it would be on the target
23225          architecture."  By the time we get here, it's already been
23226          converted to host endianness, so we just need to sign- or
23227          zero-extend it as appropriate.  */
23228     case DW_FORM_data1:
23229       type = die_type (die, cu);
23230       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23231       if (result == NULL)
23232         result = write_constant_as_bytes (obstack, byte_order,
23233                                           type, value, len);
23234       break;
23235     case DW_FORM_data2:
23236       type = die_type (die, cu);
23237       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23238       if (result == NULL)
23239         result = write_constant_as_bytes (obstack, byte_order,
23240                                           type, value, len);
23241       break;
23242     case DW_FORM_data4:
23243       type = die_type (die, cu);
23244       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23245       if (result == NULL)
23246         result = write_constant_as_bytes (obstack, byte_order,
23247                                           type, value, len);
23248       break;
23249     case DW_FORM_data8:
23250       type = die_type (die, cu);
23251       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23252       if (result == NULL)
23253         result = write_constant_as_bytes (obstack, byte_order,
23254                                           type, value, len);
23255       break;
23256
23257     case DW_FORM_sdata:
23258     case DW_FORM_implicit_const:
23259       type = die_type (die, cu);
23260       result = write_constant_as_bytes (obstack, byte_order,
23261                                         type, DW_SND (attr), len);
23262       break;
23263
23264     case DW_FORM_udata:
23265       type = die_type (die, cu);
23266       result = write_constant_as_bytes (obstack, byte_order,
23267                                         type, DW_UNSND (attr), len);
23268       break;
23269
23270     default:
23271       complaint (_("unsupported const value attribute form: '%s'"),
23272                  dwarf_form_name (attr->form));
23273       break;
23274     }
23275
23276   return result;
23277 }
23278
23279 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23280    valid type for this die is found.  */
23281
23282 struct type *
23283 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23284                                 struct dwarf2_per_cu_data *per_cu)
23285 {
23286   struct dwarf2_cu *cu;
23287   struct die_info *die;
23288
23289   if (per_cu->cu == NULL)
23290     load_cu (per_cu, false);
23291   cu = per_cu->cu;
23292   if (!cu)
23293     return NULL;
23294
23295   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23296   if (!die)
23297     return NULL;
23298
23299   return die_type (die, cu);
23300 }
23301
23302 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23303    PER_CU.  */
23304
23305 struct type *
23306 dwarf2_get_die_type (cu_offset die_offset,
23307                      struct dwarf2_per_cu_data *per_cu)
23308 {
23309   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23310   return get_die_type_at_offset (die_offset_sect, per_cu);
23311 }
23312
23313 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23314    On entry *REF_CU is the CU of SRC_DIE.
23315    On exit *REF_CU is the CU of the result.
23316    Returns NULL if the referenced DIE isn't found.  */
23317
23318 static struct die_info *
23319 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23320                   struct dwarf2_cu **ref_cu)
23321 {
23322   struct die_info temp_die;
23323   struct dwarf2_cu *sig_cu;
23324   struct die_info *die;
23325
23326   /* While it might be nice to assert sig_type->type == NULL here,
23327      we can get here for DW_AT_imported_declaration where we need
23328      the DIE not the type.  */
23329
23330   /* If necessary, add it to the queue and load its DIEs.  */
23331
23332   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23333     read_signatured_type (sig_type);
23334
23335   sig_cu = sig_type->per_cu.cu;
23336   gdb_assert (sig_cu != NULL);
23337   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23338   temp_die.sect_off = sig_type->type_offset_in_section;
23339   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23340                                                  to_underlying (temp_die.sect_off));
23341   if (die)
23342     {
23343       struct dwarf2_per_objfile *dwarf2_per_objfile
23344         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23345
23346       /* For .gdb_index version 7 keep track of included TUs.
23347          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23348       if (dwarf2_per_objfile->index_table != NULL
23349           && dwarf2_per_objfile->index_table->version <= 7)
23350         {
23351           VEC_safe_push (dwarf2_per_cu_ptr,
23352                          (*ref_cu)->per_cu->imported_symtabs,
23353                          sig_cu->per_cu);
23354         }
23355
23356       *ref_cu = sig_cu;
23357       return die;
23358     }
23359
23360   return NULL;
23361 }
23362
23363 /* Follow signatured type referenced by ATTR in SRC_DIE.
23364    On entry *REF_CU is the CU of SRC_DIE.
23365    On exit *REF_CU is the CU of the result.
23366    The result is the DIE of the type.
23367    If the referenced type cannot be found an error is thrown.  */
23368
23369 static struct die_info *
23370 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23371                 struct dwarf2_cu **ref_cu)
23372 {
23373   ULONGEST signature = DW_SIGNATURE (attr);
23374   struct signatured_type *sig_type;
23375   struct die_info *die;
23376
23377   gdb_assert (attr->form == DW_FORM_ref_sig8);
23378
23379   sig_type = lookup_signatured_type (*ref_cu, signature);
23380   /* sig_type will be NULL if the signatured type is missing from
23381      the debug info.  */
23382   if (sig_type == NULL)
23383     {
23384       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23385                " from DIE at %s [in module %s]"),
23386              hex_string (signature), sect_offset_str (src_die->sect_off),
23387              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23388     }
23389
23390   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23391   if (die == NULL)
23392     {
23393       dump_die_for_error (src_die);
23394       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23395                " from DIE at %s [in module %s]"),
23396              hex_string (signature), sect_offset_str (src_die->sect_off),
23397              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23398     }
23399
23400   return die;
23401 }
23402
23403 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23404    reading in and processing the type unit if necessary.  */
23405
23406 static struct type *
23407 get_signatured_type (struct die_info *die, ULONGEST signature,
23408                      struct dwarf2_cu *cu)
23409 {
23410   struct dwarf2_per_objfile *dwarf2_per_objfile
23411     = cu->per_cu->dwarf2_per_objfile;
23412   struct signatured_type *sig_type;
23413   struct dwarf2_cu *type_cu;
23414   struct die_info *type_die;
23415   struct type *type;
23416
23417   sig_type = lookup_signatured_type (cu, signature);
23418   /* sig_type will be NULL if the signatured type is missing from
23419      the debug info.  */
23420   if (sig_type == NULL)
23421     {
23422       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23423                    " from DIE at %s [in module %s]"),
23424                  hex_string (signature), sect_offset_str (die->sect_off),
23425                  objfile_name (dwarf2_per_objfile->objfile));
23426       return build_error_marker_type (cu, die);
23427     }
23428
23429   /* If we already know the type we're done.  */
23430   if (sig_type->type != NULL)
23431     return sig_type->type;
23432
23433   type_cu = cu;
23434   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23435   if (type_die != NULL)
23436     {
23437       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23438          is created.  This is important, for example, because for c++ classes
23439          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23440       type = read_type_die (type_die, type_cu);
23441       if (type == NULL)
23442         {
23443           complaint (_("Dwarf Error: Cannot build signatured type %s"
23444                        " referenced from DIE at %s [in module %s]"),
23445                      hex_string (signature), sect_offset_str (die->sect_off),
23446                      objfile_name (dwarf2_per_objfile->objfile));
23447           type = build_error_marker_type (cu, die);
23448         }
23449     }
23450   else
23451     {
23452       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23453                    " from DIE at %s [in module %s]"),
23454                  hex_string (signature), sect_offset_str (die->sect_off),
23455                  objfile_name (dwarf2_per_objfile->objfile));
23456       type = build_error_marker_type (cu, die);
23457     }
23458   sig_type->type = type;
23459
23460   return type;
23461 }
23462
23463 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23464    reading in and processing the type unit if necessary.  */
23465
23466 static struct type *
23467 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23468                           struct dwarf2_cu *cu) /* ARI: editCase function */
23469 {
23470   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23471   if (attr_form_is_ref (attr))
23472     {
23473       struct dwarf2_cu *type_cu = cu;
23474       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23475
23476       return read_type_die (type_die, type_cu);
23477     }
23478   else if (attr->form == DW_FORM_ref_sig8)
23479     {
23480       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23481     }
23482   else
23483     {
23484       struct dwarf2_per_objfile *dwarf2_per_objfile
23485         = cu->per_cu->dwarf2_per_objfile;
23486
23487       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23488                    " at %s [in module %s]"),
23489                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23490                  objfile_name (dwarf2_per_objfile->objfile));
23491       return build_error_marker_type (cu, die);
23492     }
23493 }
23494
23495 /* Load the DIEs associated with type unit PER_CU into memory.  */
23496
23497 static void
23498 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23499 {
23500   struct signatured_type *sig_type;
23501
23502   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23503   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23504
23505   /* We have the per_cu, but we need the signatured_type.
23506      Fortunately this is an easy translation.  */
23507   gdb_assert (per_cu->is_debug_types);
23508   sig_type = (struct signatured_type *) per_cu;
23509
23510   gdb_assert (per_cu->cu == NULL);
23511
23512   read_signatured_type (sig_type);
23513
23514   gdb_assert (per_cu->cu != NULL);
23515 }
23516
23517 /* die_reader_func for read_signatured_type.
23518    This is identical to load_full_comp_unit_reader,
23519    but is kept separate for now.  */
23520
23521 static void
23522 read_signatured_type_reader (const struct die_reader_specs *reader,
23523                              const gdb_byte *info_ptr,
23524                              struct die_info *comp_unit_die,
23525                              int has_children,
23526                              void *data)
23527 {
23528   struct dwarf2_cu *cu = reader->cu;
23529
23530   gdb_assert (cu->die_hash == NULL);
23531   cu->die_hash =
23532     htab_create_alloc_ex (cu->header.length / 12,
23533                           die_hash,
23534                           die_eq,
23535                           NULL,
23536                           &cu->comp_unit_obstack,
23537                           hashtab_obstack_allocate,
23538                           dummy_obstack_deallocate);
23539
23540   if (has_children)
23541     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23542                                                   &info_ptr, comp_unit_die);
23543   cu->dies = comp_unit_die;
23544   /* comp_unit_die is not stored in die_hash, no need.  */
23545
23546   /* We try not to read any attributes in this function, because not
23547      all CUs needed for references have been loaded yet, and symbol
23548      table processing isn't initialized.  But we have to set the CU language,
23549      or we won't be able to build types correctly.
23550      Similarly, if we do not read the producer, we can not apply
23551      producer-specific interpretation.  */
23552   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23553 }
23554
23555 /* Read in a signatured type and build its CU and DIEs.
23556    If the type is a stub for the real type in a DWO file,
23557    read in the real type from the DWO file as well.  */
23558
23559 static void
23560 read_signatured_type (struct signatured_type *sig_type)
23561 {
23562   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23563
23564   gdb_assert (per_cu->is_debug_types);
23565   gdb_assert (per_cu->cu == NULL);
23566
23567   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23568                            read_signatured_type_reader, NULL);
23569   sig_type->per_cu.tu_read = 1;
23570 }
23571
23572 /* Decode simple location descriptions.
23573    Given a pointer to a dwarf block that defines a location, compute
23574    the location and return the value.
23575
23576    NOTE drow/2003-11-18: This function is called in two situations
23577    now: for the address of static or global variables (partial symbols
23578    only) and for offsets into structures which are expected to be
23579    (more or less) constant.  The partial symbol case should go away,
23580    and only the constant case should remain.  That will let this
23581    function complain more accurately.  A few special modes are allowed
23582    without complaint for global variables (for instance, global
23583    register values and thread-local values).
23584
23585    A location description containing no operations indicates that the
23586    object is optimized out.  The return value is 0 for that case.
23587    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23588    callers will only want a very basic result and this can become a
23589    complaint.
23590
23591    Note that stack[0] is unused except as a default error return.  */
23592
23593 static CORE_ADDR
23594 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23595 {
23596   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23597   size_t i;
23598   size_t size = blk->size;
23599   const gdb_byte *data = blk->data;
23600   CORE_ADDR stack[64];
23601   int stacki;
23602   unsigned int bytes_read, unsnd;
23603   gdb_byte op;
23604
23605   i = 0;
23606   stacki = 0;
23607   stack[stacki] = 0;
23608   stack[++stacki] = 0;
23609
23610   while (i < size)
23611     {
23612       op = data[i++];
23613       switch (op)
23614         {
23615         case DW_OP_lit0:
23616         case DW_OP_lit1:
23617         case DW_OP_lit2:
23618         case DW_OP_lit3:
23619         case DW_OP_lit4:
23620         case DW_OP_lit5:
23621         case DW_OP_lit6:
23622         case DW_OP_lit7:
23623         case DW_OP_lit8:
23624         case DW_OP_lit9:
23625         case DW_OP_lit10:
23626         case DW_OP_lit11:
23627         case DW_OP_lit12:
23628         case DW_OP_lit13:
23629         case DW_OP_lit14:
23630         case DW_OP_lit15:
23631         case DW_OP_lit16:
23632         case DW_OP_lit17:
23633         case DW_OP_lit18:
23634         case DW_OP_lit19:
23635         case DW_OP_lit20:
23636         case DW_OP_lit21:
23637         case DW_OP_lit22:
23638         case DW_OP_lit23:
23639         case DW_OP_lit24:
23640         case DW_OP_lit25:
23641         case DW_OP_lit26:
23642         case DW_OP_lit27:
23643         case DW_OP_lit28:
23644         case DW_OP_lit29:
23645         case DW_OP_lit30:
23646         case DW_OP_lit31:
23647           stack[++stacki] = op - DW_OP_lit0;
23648           break;
23649
23650         case DW_OP_reg0:
23651         case DW_OP_reg1:
23652         case DW_OP_reg2:
23653         case DW_OP_reg3:
23654         case DW_OP_reg4:
23655         case DW_OP_reg5:
23656         case DW_OP_reg6:
23657         case DW_OP_reg7:
23658         case DW_OP_reg8:
23659         case DW_OP_reg9:
23660         case DW_OP_reg10:
23661         case DW_OP_reg11:
23662         case DW_OP_reg12:
23663         case DW_OP_reg13:
23664         case DW_OP_reg14:
23665         case DW_OP_reg15:
23666         case DW_OP_reg16:
23667         case DW_OP_reg17:
23668         case DW_OP_reg18:
23669         case DW_OP_reg19:
23670         case DW_OP_reg20:
23671         case DW_OP_reg21:
23672         case DW_OP_reg22:
23673         case DW_OP_reg23:
23674         case DW_OP_reg24:
23675         case DW_OP_reg25:
23676         case DW_OP_reg26:
23677         case DW_OP_reg27:
23678         case DW_OP_reg28:
23679         case DW_OP_reg29:
23680         case DW_OP_reg30:
23681         case DW_OP_reg31:
23682           stack[++stacki] = op - DW_OP_reg0;
23683           if (i < size)
23684             dwarf2_complex_location_expr_complaint ();
23685           break;
23686
23687         case DW_OP_regx:
23688           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23689           i += bytes_read;
23690           stack[++stacki] = unsnd;
23691           if (i < size)
23692             dwarf2_complex_location_expr_complaint ();
23693           break;
23694
23695         case DW_OP_addr:
23696           stack[++stacki] = read_address (objfile->obfd, &data[i],
23697                                           cu, &bytes_read);
23698           i += bytes_read;
23699           break;
23700
23701         case DW_OP_const1u:
23702           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23703           i += 1;
23704           break;
23705
23706         case DW_OP_const1s:
23707           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23708           i += 1;
23709           break;
23710
23711         case DW_OP_const2u:
23712           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23713           i += 2;
23714           break;
23715
23716         case DW_OP_const2s:
23717           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23718           i += 2;
23719           break;
23720
23721         case DW_OP_const4u:
23722           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23723           i += 4;
23724           break;
23725
23726         case DW_OP_const4s:
23727           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23728           i += 4;
23729           break;
23730
23731         case DW_OP_const8u:
23732           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23733           i += 8;
23734           break;
23735
23736         case DW_OP_constu:
23737           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23738                                                   &bytes_read);
23739           i += bytes_read;
23740           break;
23741
23742         case DW_OP_consts:
23743           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23744           i += bytes_read;
23745           break;
23746
23747         case DW_OP_dup:
23748           stack[stacki + 1] = stack[stacki];
23749           stacki++;
23750           break;
23751
23752         case DW_OP_plus:
23753           stack[stacki - 1] += stack[stacki];
23754           stacki--;
23755           break;
23756
23757         case DW_OP_plus_uconst:
23758           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23759                                                  &bytes_read);
23760           i += bytes_read;
23761           break;
23762
23763         case DW_OP_minus:
23764           stack[stacki - 1] -= stack[stacki];
23765           stacki--;
23766           break;
23767
23768         case DW_OP_deref:
23769           /* If we're not the last op, then we definitely can't encode
23770              this using GDB's address_class enum.  This is valid for partial
23771              global symbols, although the variable's address will be bogus
23772              in the psymtab.  */
23773           if (i < size)
23774             dwarf2_complex_location_expr_complaint ();
23775           break;
23776
23777         case DW_OP_GNU_push_tls_address:
23778         case DW_OP_form_tls_address:
23779           /* The top of the stack has the offset from the beginning
23780              of the thread control block at which the variable is located.  */
23781           /* Nothing should follow this operator, so the top of stack would
23782              be returned.  */
23783           /* This is valid for partial global symbols, but the variable's
23784              address will be bogus in the psymtab.  Make it always at least
23785              non-zero to not look as a variable garbage collected by linker
23786              which have DW_OP_addr 0.  */
23787           if (i < size)
23788             dwarf2_complex_location_expr_complaint ();
23789           stack[stacki]++;
23790           break;
23791
23792         case DW_OP_GNU_uninit:
23793           break;
23794
23795         case DW_OP_GNU_addr_index:
23796         case DW_OP_GNU_const_index:
23797           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23798                                                          &bytes_read);
23799           i += bytes_read;
23800           break;
23801
23802         default:
23803           {
23804             const char *name = get_DW_OP_name (op);
23805
23806             if (name)
23807               complaint (_("unsupported stack op: '%s'"),
23808                          name);
23809             else
23810               complaint (_("unsupported stack op: '%02x'"),
23811                          op);
23812           }
23813
23814           return (stack[stacki]);
23815         }
23816
23817       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23818          outside of the allocated space.  Also enforce minimum>0.  */
23819       if (stacki >= ARRAY_SIZE (stack) - 1)
23820         {
23821           complaint (_("location description stack overflow"));
23822           return 0;
23823         }
23824
23825       if (stacki <= 0)
23826         {
23827           complaint (_("location description stack underflow"));
23828           return 0;
23829         }
23830     }
23831   return (stack[stacki]);
23832 }
23833
23834 /* memory allocation interface */
23835
23836 static struct dwarf_block *
23837 dwarf_alloc_block (struct dwarf2_cu *cu)
23838 {
23839   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23840 }
23841
23842 static struct die_info *
23843 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23844 {
23845   struct die_info *die;
23846   size_t size = sizeof (struct die_info);
23847
23848   if (num_attrs > 1)
23849     size += (num_attrs - 1) * sizeof (struct attribute);
23850
23851   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23852   memset (die, 0, sizeof (struct die_info));
23853   return (die);
23854 }
23855
23856 \f
23857 /* Macro support.  */
23858
23859 /* Return file name relative to the compilation directory of file number I in
23860    *LH's file name table.  The result is allocated using xmalloc; the caller is
23861    responsible for freeing it.  */
23862
23863 static char *
23864 file_file_name (int file, struct line_header *lh)
23865 {
23866   /* Is the file number a valid index into the line header's file name
23867      table?  Remember that file numbers start with one, not zero.  */
23868   if (1 <= file && file <= lh->file_names.size ())
23869     {
23870       const file_entry &fe = lh->file_names[file - 1];
23871
23872       if (!IS_ABSOLUTE_PATH (fe.name))
23873         {
23874           const char *dir = fe.include_dir (lh);
23875           if (dir != NULL)
23876             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23877         }
23878       return xstrdup (fe.name);
23879     }
23880   else
23881     {
23882       /* The compiler produced a bogus file number.  We can at least
23883          record the macro definitions made in the file, even if we
23884          won't be able to find the file by name.  */
23885       char fake_name[80];
23886
23887       xsnprintf (fake_name, sizeof (fake_name),
23888                  "<bad macro file number %d>", file);
23889
23890       complaint (_("bad file number in macro information (%d)"),
23891                  file);
23892
23893       return xstrdup (fake_name);
23894     }
23895 }
23896
23897 /* Return the full name of file number I in *LH's file name table.
23898    Use COMP_DIR as the name of the current directory of the
23899    compilation.  The result is allocated using xmalloc; the caller is
23900    responsible for freeing it.  */
23901 static char *
23902 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23903 {
23904   /* Is the file number a valid index into the line header's file name
23905      table?  Remember that file numbers start with one, not zero.  */
23906   if (1 <= file && file <= lh->file_names.size ())
23907     {
23908       char *relative = file_file_name (file, lh);
23909
23910       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23911         return relative;
23912       return reconcat (relative, comp_dir, SLASH_STRING,
23913                        relative, (char *) NULL);
23914     }
23915   else
23916     return file_file_name (file, lh);
23917 }
23918
23919
23920 static struct macro_source_file *
23921 macro_start_file (struct dwarf2_cu *cu,
23922                   int file, int line,
23923                   struct macro_source_file *current_file,
23924                   struct line_header *lh)
23925 {
23926   /* File name relative to the compilation directory of this source file.  */
23927   char *file_name = file_file_name (file, lh);
23928
23929   if (! current_file)
23930     {
23931       /* Note: We don't create a macro table for this compilation unit
23932          at all until we actually get a filename.  */
23933       struct macro_table *macro_table = cu->builder->get_macro_table ();
23934
23935       /* If we have no current file, then this must be the start_file
23936          directive for the compilation unit's main source file.  */
23937       current_file = macro_set_main (macro_table, file_name);
23938       macro_define_special (macro_table);
23939     }
23940   else
23941     current_file = macro_include (current_file, line, file_name);
23942
23943   xfree (file_name);
23944
23945   return current_file;
23946 }
23947
23948 static const char *
23949 consume_improper_spaces (const char *p, const char *body)
23950 {
23951   if (*p == ' ')
23952     {
23953       complaint (_("macro definition contains spaces "
23954                    "in formal argument list:\n`%s'"),
23955                  body);
23956
23957       while (*p == ' ')
23958         p++;
23959     }
23960
23961   return p;
23962 }
23963
23964
23965 static void
23966 parse_macro_definition (struct macro_source_file *file, int line,
23967                         const char *body)
23968 {
23969   const char *p;
23970
23971   /* The body string takes one of two forms.  For object-like macro
23972      definitions, it should be:
23973
23974         <macro name> " " <definition>
23975
23976      For function-like macro definitions, it should be:
23977
23978         <macro name> "() " <definition>
23979      or
23980         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23981
23982      Spaces may appear only where explicitly indicated, and in the
23983      <definition>.
23984
23985      The Dwarf 2 spec says that an object-like macro's name is always
23986      followed by a space, but versions of GCC around March 2002 omit
23987      the space when the macro's definition is the empty string.
23988
23989      The Dwarf 2 spec says that there should be no spaces between the
23990      formal arguments in a function-like macro's formal argument list,
23991      but versions of GCC around March 2002 include spaces after the
23992      commas.  */
23993
23994
23995   /* Find the extent of the macro name.  The macro name is terminated
23996      by either a space or null character (for an object-like macro) or
23997      an opening paren (for a function-like macro).  */
23998   for (p = body; *p; p++)
23999     if (*p == ' ' || *p == '(')
24000       break;
24001
24002   if (*p == ' ' || *p == '\0')
24003     {
24004       /* It's an object-like macro.  */
24005       int name_len = p - body;
24006       char *name = savestring (body, name_len);
24007       const char *replacement;
24008
24009       if (*p == ' ')
24010         replacement = body + name_len + 1;
24011       else
24012         {
24013           dwarf2_macro_malformed_definition_complaint (body);
24014           replacement = body + name_len;
24015         }
24016
24017       macro_define_object (file, line, name, replacement);
24018
24019       xfree (name);
24020     }
24021   else if (*p == '(')
24022     {
24023       /* It's a function-like macro.  */
24024       char *name = savestring (body, p - body);
24025       int argc = 0;
24026       int argv_size = 1;
24027       char **argv = XNEWVEC (char *, argv_size);
24028
24029       p++;
24030
24031       p = consume_improper_spaces (p, body);
24032
24033       /* Parse the formal argument list.  */
24034       while (*p && *p != ')')
24035         {
24036           /* Find the extent of the current argument name.  */
24037           const char *arg_start = p;
24038
24039           while (*p && *p != ',' && *p != ')' && *p != ' ')
24040             p++;
24041
24042           if (! *p || p == arg_start)
24043             dwarf2_macro_malformed_definition_complaint (body);
24044           else
24045             {
24046               /* Make sure argv has room for the new argument.  */
24047               if (argc >= argv_size)
24048                 {
24049                   argv_size *= 2;
24050                   argv = XRESIZEVEC (char *, argv, argv_size);
24051                 }
24052
24053               argv[argc++] = savestring (arg_start, p - arg_start);
24054             }
24055
24056           p = consume_improper_spaces (p, body);
24057
24058           /* Consume the comma, if present.  */
24059           if (*p == ',')
24060             {
24061               p++;
24062
24063               p = consume_improper_spaces (p, body);
24064             }
24065         }
24066
24067       if (*p == ')')
24068         {
24069           p++;
24070
24071           if (*p == ' ')
24072             /* Perfectly formed definition, no complaints.  */
24073             macro_define_function (file, line, name,
24074                                    argc, (const char **) argv,
24075                                    p + 1);
24076           else if (*p == '\0')
24077             {
24078               /* Complain, but do define it.  */
24079               dwarf2_macro_malformed_definition_complaint (body);
24080               macro_define_function (file, line, name,
24081                                      argc, (const char **) argv,
24082                                      p);
24083             }
24084           else
24085             /* Just complain.  */
24086             dwarf2_macro_malformed_definition_complaint (body);
24087         }
24088       else
24089         /* Just complain.  */
24090         dwarf2_macro_malformed_definition_complaint (body);
24091
24092       xfree (name);
24093       {
24094         int i;
24095
24096         for (i = 0; i < argc; i++)
24097           xfree (argv[i]);
24098       }
24099       xfree (argv);
24100     }
24101   else
24102     dwarf2_macro_malformed_definition_complaint (body);
24103 }
24104
24105 /* Skip some bytes from BYTES according to the form given in FORM.
24106    Returns the new pointer.  */
24107
24108 static const gdb_byte *
24109 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24110                  enum dwarf_form form,
24111                  unsigned int offset_size,
24112                  struct dwarf2_section_info *section)
24113 {
24114   unsigned int bytes_read;
24115
24116   switch (form)
24117     {
24118     case DW_FORM_data1:
24119     case DW_FORM_flag:
24120       ++bytes;
24121       break;
24122
24123     case DW_FORM_data2:
24124       bytes += 2;
24125       break;
24126
24127     case DW_FORM_data4:
24128       bytes += 4;
24129       break;
24130
24131     case DW_FORM_data8:
24132       bytes += 8;
24133       break;
24134
24135     case DW_FORM_data16:
24136       bytes += 16;
24137       break;
24138
24139     case DW_FORM_string:
24140       read_direct_string (abfd, bytes, &bytes_read);
24141       bytes += bytes_read;
24142       break;
24143
24144     case DW_FORM_sec_offset:
24145     case DW_FORM_strp:
24146     case DW_FORM_GNU_strp_alt:
24147       bytes += offset_size;
24148       break;
24149
24150     case DW_FORM_block:
24151       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24152       bytes += bytes_read;
24153       break;
24154
24155     case DW_FORM_block1:
24156       bytes += 1 + read_1_byte (abfd, bytes);
24157       break;
24158     case DW_FORM_block2:
24159       bytes += 2 + read_2_bytes (abfd, bytes);
24160       break;
24161     case DW_FORM_block4:
24162       bytes += 4 + read_4_bytes (abfd, bytes);
24163       break;
24164
24165     case DW_FORM_sdata:
24166     case DW_FORM_udata:
24167     case DW_FORM_GNU_addr_index:
24168     case DW_FORM_GNU_str_index:
24169       bytes = gdb_skip_leb128 (bytes, buffer_end);
24170       if (bytes == NULL)
24171         {
24172           dwarf2_section_buffer_overflow_complaint (section);
24173           return NULL;
24174         }
24175       break;
24176
24177     case DW_FORM_implicit_const:
24178       break;
24179
24180     default:
24181       {
24182         complaint (_("invalid form 0x%x in `%s'"),
24183                    form, get_section_name (section));
24184         return NULL;
24185       }
24186     }
24187
24188   return bytes;
24189 }
24190
24191 /* A helper for dwarf_decode_macros that handles skipping an unknown
24192    opcode.  Returns an updated pointer to the macro data buffer; or,
24193    on error, issues a complaint and returns NULL.  */
24194
24195 static const gdb_byte *
24196 skip_unknown_opcode (unsigned int opcode,
24197                      const gdb_byte **opcode_definitions,
24198                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24199                      bfd *abfd,
24200                      unsigned int offset_size,
24201                      struct dwarf2_section_info *section)
24202 {
24203   unsigned int bytes_read, i;
24204   unsigned long arg;
24205   const gdb_byte *defn;
24206
24207   if (opcode_definitions[opcode] == NULL)
24208     {
24209       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24210                  opcode);
24211       return NULL;
24212     }
24213
24214   defn = opcode_definitions[opcode];
24215   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24216   defn += bytes_read;
24217
24218   for (i = 0; i < arg; ++i)
24219     {
24220       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24221                                  (enum dwarf_form) defn[i], offset_size,
24222                                  section);
24223       if (mac_ptr == NULL)
24224         {
24225           /* skip_form_bytes already issued the complaint.  */
24226           return NULL;
24227         }
24228     }
24229
24230   return mac_ptr;
24231 }
24232
24233 /* A helper function which parses the header of a macro section.
24234    If the macro section is the extended (for now called "GNU") type,
24235    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24236    the header, or issues a complaint and returns NULL on error.  */
24237
24238 static const gdb_byte *
24239 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24240                           bfd *abfd,
24241                           const gdb_byte *mac_ptr,
24242                           unsigned int *offset_size,
24243                           int section_is_gnu)
24244 {
24245   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24246
24247   if (section_is_gnu)
24248     {
24249       unsigned int version, flags;
24250
24251       version = read_2_bytes (abfd, mac_ptr);
24252       if (version != 4 && version != 5)
24253         {
24254           complaint (_("unrecognized version `%d' in .debug_macro section"),
24255                      version);
24256           return NULL;
24257         }
24258       mac_ptr += 2;
24259
24260       flags = read_1_byte (abfd, mac_ptr);
24261       ++mac_ptr;
24262       *offset_size = (flags & 1) ? 8 : 4;
24263
24264       if ((flags & 2) != 0)
24265         /* We don't need the line table offset.  */
24266         mac_ptr += *offset_size;
24267
24268       /* Vendor opcode descriptions.  */
24269       if ((flags & 4) != 0)
24270         {
24271           unsigned int i, count;
24272
24273           count = read_1_byte (abfd, mac_ptr);
24274           ++mac_ptr;
24275           for (i = 0; i < count; ++i)
24276             {
24277               unsigned int opcode, bytes_read;
24278               unsigned long arg;
24279
24280               opcode = read_1_byte (abfd, mac_ptr);
24281               ++mac_ptr;
24282               opcode_definitions[opcode] = mac_ptr;
24283               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24284               mac_ptr += bytes_read;
24285               mac_ptr += arg;
24286             }
24287         }
24288     }
24289
24290   return mac_ptr;
24291 }
24292
24293 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24294    including DW_MACRO_import.  */
24295
24296 static void
24297 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24298                           bfd *abfd,
24299                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24300                           struct macro_source_file *current_file,
24301                           struct line_header *lh,
24302                           struct dwarf2_section_info *section,
24303                           int section_is_gnu, int section_is_dwz,
24304                           unsigned int offset_size,
24305                           htab_t include_hash)
24306 {
24307   struct dwarf2_per_objfile *dwarf2_per_objfile
24308     = cu->per_cu->dwarf2_per_objfile;
24309   struct objfile *objfile = dwarf2_per_objfile->objfile;
24310   enum dwarf_macro_record_type macinfo_type;
24311   int at_commandline;
24312   const gdb_byte *opcode_definitions[256];
24313
24314   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24315                                       &offset_size, section_is_gnu);
24316   if (mac_ptr == NULL)
24317     {
24318       /* We already issued a complaint.  */
24319       return;
24320     }
24321
24322   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24323      GDB is still reading the definitions from command line.  First
24324      DW_MACINFO_start_file will need to be ignored as it was already executed
24325      to create CURRENT_FILE for the main source holding also the command line
24326      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24327      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24328
24329   at_commandline = 1;
24330
24331   do
24332     {
24333       /* Do we at least have room for a macinfo type byte?  */
24334       if (mac_ptr >= mac_end)
24335         {
24336           dwarf2_section_buffer_overflow_complaint (section);
24337           break;
24338         }
24339
24340       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24341       mac_ptr++;
24342
24343       /* Note that we rely on the fact that the corresponding GNU and
24344          DWARF constants are the same.  */
24345       DIAGNOSTIC_PUSH
24346       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24347       switch (macinfo_type)
24348         {
24349           /* A zero macinfo type indicates the end of the macro
24350              information.  */
24351         case 0:
24352           break;
24353
24354         case DW_MACRO_define:
24355         case DW_MACRO_undef:
24356         case DW_MACRO_define_strp:
24357         case DW_MACRO_undef_strp:
24358         case DW_MACRO_define_sup:
24359         case DW_MACRO_undef_sup:
24360           {
24361             unsigned int bytes_read;
24362             int line;
24363             const char *body;
24364             int is_define;
24365
24366             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24367             mac_ptr += bytes_read;
24368
24369             if (macinfo_type == DW_MACRO_define
24370                 || macinfo_type == DW_MACRO_undef)
24371               {
24372                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24373                 mac_ptr += bytes_read;
24374               }
24375             else
24376               {
24377                 LONGEST str_offset;
24378
24379                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24380                 mac_ptr += offset_size;
24381
24382                 if (macinfo_type == DW_MACRO_define_sup
24383                     || macinfo_type == DW_MACRO_undef_sup
24384                     || section_is_dwz)
24385                   {
24386                     struct dwz_file *dwz
24387                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24388
24389                     body = read_indirect_string_from_dwz (objfile,
24390                                                           dwz, str_offset);
24391                   }
24392                 else
24393                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24394                                                          abfd, str_offset);
24395               }
24396
24397             is_define = (macinfo_type == DW_MACRO_define
24398                          || macinfo_type == DW_MACRO_define_strp
24399                          || macinfo_type == DW_MACRO_define_sup);
24400             if (! current_file)
24401               {
24402                 /* DWARF violation as no main source is present.  */
24403                 complaint (_("debug info with no main source gives macro %s "
24404                              "on line %d: %s"),
24405                            is_define ? _("definition") : _("undefinition"),
24406                            line, body);
24407                 break;
24408               }
24409             if ((line == 0 && !at_commandline)
24410                 || (line != 0 && at_commandline))
24411               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24412                          at_commandline ? _("command-line") : _("in-file"),
24413                          is_define ? _("definition") : _("undefinition"),
24414                          line == 0 ? _("zero") : _("non-zero"), line, body);
24415
24416             if (is_define)
24417               parse_macro_definition (current_file, line, body);
24418             else
24419               {
24420                 gdb_assert (macinfo_type == DW_MACRO_undef
24421                             || macinfo_type == DW_MACRO_undef_strp
24422                             || macinfo_type == DW_MACRO_undef_sup);
24423                 macro_undef (current_file, line, body);
24424               }
24425           }
24426           break;
24427
24428         case DW_MACRO_start_file:
24429           {
24430             unsigned int bytes_read;
24431             int line, file;
24432
24433             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24434             mac_ptr += bytes_read;
24435             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24436             mac_ptr += bytes_read;
24437
24438             if ((line == 0 && !at_commandline)
24439                 || (line != 0 && at_commandline))
24440               complaint (_("debug info gives source %d included "
24441                            "from %s at %s line %d"),
24442                          file, at_commandline ? _("command-line") : _("file"),
24443                          line == 0 ? _("zero") : _("non-zero"), line);
24444
24445             if (at_commandline)
24446               {
24447                 /* This DW_MACRO_start_file was executed in the
24448                    pass one.  */
24449                 at_commandline = 0;
24450               }
24451             else
24452               current_file = macro_start_file (cu, file, line, current_file,
24453                                                lh);
24454           }
24455           break;
24456
24457         case DW_MACRO_end_file:
24458           if (! current_file)
24459             complaint (_("macro debug info has an unmatched "
24460                          "`close_file' directive"));
24461           else
24462             {
24463               current_file = current_file->included_by;
24464               if (! current_file)
24465                 {
24466                   enum dwarf_macro_record_type next_type;
24467
24468                   /* GCC circa March 2002 doesn't produce the zero
24469                      type byte marking the end of the compilation
24470                      unit.  Complain if it's not there, but exit no
24471                      matter what.  */
24472
24473                   /* Do we at least have room for a macinfo type byte?  */
24474                   if (mac_ptr >= mac_end)
24475                     {
24476                       dwarf2_section_buffer_overflow_complaint (section);
24477                       return;
24478                     }
24479
24480                   /* We don't increment mac_ptr here, so this is just
24481                      a look-ahead.  */
24482                   next_type
24483                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24484                                                                   mac_ptr);
24485                   if (next_type != 0)
24486                     complaint (_("no terminating 0-type entry for "
24487                                  "macros in `.debug_macinfo' section"));
24488
24489                   return;
24490                 }
24491             }
24492           break;
24493
24494         case DW_MACRO_import:
24495         case DW_MACRO_import_sup:
24496           {
24497             LONGEST offset;
24498             void **slot;
24499             bfd *include_bfd = abfd;
24500             struct dwarf2_section_info *include_section = section;
24501             const gdb_byte *include_mac_end = mac_end;
24502             int is_dwz = section_is_dwz;
24503             const gdb_byte *new_mac_ptr;
24504
24505             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24506             mac_ptr += offset_size;
24507
24508             if (macinfo_type == DW_MACRO_import_sup)
24509               {
24510                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24511
24512                 dwarf2_read_section (objfile, &dwz->macro);
24513
24514                 include_section = &dwz->macro;
24515                 include_bfd = get_section_bfd_owner (include_section);
24516                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24517                 is_dwz = 1;
24518               }
24519
24520             new_mac_ptr = include_section->buffer + offset;
24521             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24522
24523             if (*slot != NULL)
24524               {
24525                 /* This has actually happened; see
24526                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24527                 complaint (_("recursive DW_MACRO_import in "
24528                              ".debug_macro section"));
24529               }
24530             else
24531               {
24532                 *slot = (void *) new_mac_ptr;
24533
24534                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24535                                           include_mac_end, current_file, lh,
24536                                           section, section_is_gnu, is_dwz,
24537                                           offset_size, include_hash);
24538
24539                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24540               }
24541           }
24542           break;
24543
24544         case DW_MACINFO_vendor_ext:
24545           if (!section_is_gnu)
24546             {
24547               unsigned int bytes_read;
24548
24549               /* This reads the constant, but since we don't recognize
24550                  any vendor extensions, we ignore it.  */
24551               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24552               mac_ptr += bytes_read;
24553               read_direct_string (abfd, mac_ptr, &bytes_read);
24554               mac_ptr += bytes_read;
24555
24556               /* We don't recognize any vendor extensions.  */
24557               break;
24558             }
24559           /* FALLTHROUGH */
24560
24561         default:
24562           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24563                                          mac_ptr, mac_end, abfd, offset_size,
24564                                          section);
24565           if (mac_ptr == NULL)
24566             return;
24567           break;
24568         }
24569       DIAGNOSTIC_POP
24570     } while (macinfo_type != 0);
24571 }
24572
24573 static void
24574 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24575                      int section_is_gnu)
24576 {
24577   struct dwarf2_per_objfile *dwarf2_per_objfile
24578     = cu->per_cu->dwarf2_per_objfile;
24579   struct objfile *objfile = dwarf2_per_objfile->objfile;
24580   struct line_header *lh = cu->line_header;
24581   bfd *abfd;
24582   const gdb_byte *mac_ptr, *mac_end;
24583   struct macro_source_file *current_file = 0;
24584   enum dwarf_macro_record_type macinfo_type;
24585   unsigned int offset_size = cu->header.offset_size;
24586   const gdb_byte *opcode_definitions[256];
24587   void **slot;
24588   struct dwarf2_section_info *section;
24589   const char *section_name;
24590
24591   if (cu->dwo_unit != NULL)
24592     {
24593       if (section_is_gnu)
24594         {
24595           section = &cu->dwo_unit->dwo_file->sections.macro;
24596           section_name = ".debug_macro.dwo";
24597         }
24598       else
24599         {
24600           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24601           section_name = ".debug_macinfo.dwo";
24602         }
24603     }
24604   else
24605     {
24606       if (section_is_gnu)
24607         {
24608           section = &dwarf2_per_objfile->macro;
24609           section_name = ".debug_macro";
24610         }
24611       else
24612         {
24613           section = &dwarf2_per_objfile->macinfo;
24614           section_name = ".debug_macinfo";
24615         }
24616     }
24617
24618   dwarf2_read_section (objfile, section);
24619   if (section->buffer == NULL)
24620     {
24621       complaint (_("missing %s section"), section_name);
24622       return;
24623     }
24624   abfd = get_section_bfd_owner (section);
24625
24626   /* First pass: Find the name of the base filename.
24627      This filename is needed in order to process all macros whose definition
24628      (or undefinition) comes from the command line.  These macros are defined
24629      before the first DW_MACINFO_start_file entry, and yet still need to be
24630      associated to the base file.
24631
24632      To determine the base file name, we scan the macro definitions until we
24633      reach the first DW_MACINFO_start_file entry.  We then initialize
24634      CURRENT_FILE accordingly so that any macro definition found before the
24635      first DW_MACINFO_start_file can still be associated to the base file.  */
24636
24637   mac_ptr = section->buffer + offset;
24638   mac_end = section->buffer + section->size;
24639
24640   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24641                                       &offset_size, section_is_gnu);
24642   if (mac_ptr == NULL)
24643     {
24644       /* We already issued a complaint.  */
24645       return;
24646     }
24647
24648   do
24649     {
24650       /* Do we at least have room for a macinfo type byte?  */
24651       if (mac_ptr >= mac_end)
24652         {
24653           /* Complaint is printed during the second pass as GDB will probably
24654              stop the first pass earlier upon finding
24655              DW_MACINFO_start_file.  */
24656           break;
24657         }
24658
24659       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24660       mac_ptr++;
24661
24662       /* Note that we rely on the fact that the corresponding GNU and
24663          DWARF constants are the same.  */
24664       DIAGNOSTIC_PUSH
24665       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24666       switch (macinfo_type)
24667         {
24668           /* A zero macinfo type indicates the end of the macro
24669              information.  */
24670         case 0:
24671           break;
24672
24673         case DW_MACRO_define:
24674         case DW_MACRO_undef:
24675           /* Only skip the data by MAC_PTR.  */
24676           {
24677             unsigned int bytes_read;
24678
24679             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24680             mac_ptr += bytes_read;
24681             read_direct_string (abfd, mac_ptr, &bytes_read);
24682             mac_ptr += bytes_read;
24683           }
24684           break;
24685
24686         case DW_MACRO_start_file:
24687           {
24688             unsigned int bytes_read;
24689             int line, file;
24690
24691             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24692             mac_ptr += bytes_read;
24693             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24694             mac_ptr += bytes_read;
24695
24696             current_file = macro_start_file (cu, file, line, current_file, lh);
24697           }
24698           break;
24699
24700         case DW_MACRO_end_file:
24701           /* No data to skip by MAC_PTR.  */
24702           break;
24703
24704         case DW_MACRO_define_strp:
24705         case DW_MACRO_undef_strp:
24706         case DW_MACRO_define_sup:
24707         case DW_MACRO_undef_sup:
24708           {
24709             unsigned int bytes_read;
24710
24711             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24712             mac_ptr += bytes_read;
24713             mac_ptr += offset_size;
24714           }
24715           break;
24716
24717         case DW_MACRO_import:
24718         case DW_MACRO_import_sup:
24719           /* Note that, according to the spec, a transparent include
24720              chain cannot call DW_MACRO_start_file.  So, we can just
24721              skip this opcode.  */
24722           mac_ptr += offset_size;
24723           break;
24724
24725         case DW_MACINFO_vendor_ext:
24726           /* Only skip the data by MAC_PTR.  */
24727           if (!section_is_gnu)
24728             {
24729               unsigned int bytes_read;
24730
24731               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24732               mac_ptr += bytes_read;
24733               read_direct_string (abfd, mac_ptr, &bytes_read);
24734               mac_ptr += bytes_read;
24735             }
24736           /* FALLTHROUGH */
24737
24738         default:
24739           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24740                                          mac_ptr, mac_end, abfd, offset_size,
24741                                          section);
24742           if (mac_ptr == NULL)
24743             return;
24744           break;
24745         }
24746       DIAGNOSTIC_POP
24747     } while (macinfo_type != 0 && current_file == NULL);
24748
24749   /* Second pass: Process all entries.
24750
24751      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24752      command-line macro definitions/undefinitions.  This flag is unset when we
24753      reach the first DW_MACINFO_start_file entry.  */
24754
24755   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24756                                            htab_eq_pointer,
24757                                            NULL, xcalloc, xfree));
24758   mac_ptr = section->buffer + offset;
24759   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24760   *slot = (void *) mac_ptr;
24761   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24762                             current_file, lh, section,
24763                             section_is_gnu, 0, offset_size,
24764                             include_hash.get ());
24765 }
24766
24767 /* Check if the attribute's form is a DW_FORM_block*
24768    if so return true else false.  */
24769
24770 static int
24771 attr_form_is_block (const struct attribute *attr)
24772 {
24773   return (attr == NULL ? 0 :
24774       attr->form == DW_FORM_block1
24775       || attr->form == DW_FORM_block2
24776       || attr->form == DW_FORM_block4
24777       || attr->form == DW_FORM_block
24778       || attr->form == DW_FORM_exprloc);
24779 }
24780
24781 /* Return non-zero if ATTR's value is a section offset --- classes
24782    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24783    You may use DW_UNSND (attr) to retrieve such offsets.
24784
24785    Section 7.5.4, "Attribute Encodings", explains that no attribute
24786    may have a value that belongs to more than one of these classes; it
24787    would be ambiguous if we did, because we use the same forms for all
24788    of them.  */
24789
24790 static int
24791 attr_form_is_section_offset (const struct attribute *attr)
24792 {
24793   return (attr->form == DW_FORM_data4
24794           || attr->form == DW_FORM_data8
24795           || attr->form == DW_FORM_sec_offset);
24796 }
24797
24798 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24799    zero otherwise.  When this function returns true, you can apply
24800    dwarf2_get_attr_constant_value to it.
24801
24802    However, note that for some attributes you must check
24803    attr_form_is_section_offset before using this test.  DW_FORM_data4
24804    and DW_FORM_data8 are members of both the constant class, and of
24805    the classes that contain offsets into other debug sections
24806    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24807    that, if an attribute's can be either a constant or one of the
24808    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24809    taken as section offsets, not constants.
24810
24811    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24812    cannot handle that.  */
24813
24814 static int
24815 attr_form_is_constant (const struct attribute *attr)
24816 {
24817   switch (attr->form)
24818     {
24819     case DW_FORM_sdata:
24820     case DW_FORM_udata:
24821     case DW_FORM_data1:
24822     case DW_FORM_data2:
24823     case DW_FORM_data4:
24824     case DW_FORM_data8:
24825     case DW_FORM_implicit_const:
24826       return 1;
24827     default:
24828       return 0;
24829     }
24830 }
24831
24832
24833 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24834    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24835
24836 static int
24837 attr_form_is_ref (const struct attribute *attr)
24838 {
24839   switch (attr->form)
24840     {
24841     case DW_FORM_ref_addr:
24842     case DW_FORM_ref1:
24843     case DW_FORM_ref2:
24844     case DW_FORM_ref4:
24845     case DW_FORM_ref8:
24846     case DW_FORM_ref_udata:
24847     case DW_FORM_GNU_ref_alt:
24848       return 1;
24849     default:
24850       return 0;
24851     }
24852 }
24853
24854 /* Return the .debug_loc section to use for CU.
24855    For DWO files use .debug_loc.dwo.  */
24856
24857 static struct dwarf2_section_info *
24858 cu_debug_loc_section (struct dwarf2_cu *cu)
24859 {
24860   struct dwarf2_per_objfile *dwarf2_per_objfile
24861     = cu->per_cu->dwarf2_per_objfile;
24862
24863   if (cu->dwo_unit)
24864     {
24865       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24866       
24867       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24868     }
24869   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24870                                   : &dwarf2_per_objfile->loc);
24871 }
24872
24873 /* A helper function that fills in a dwarf2_loclist_baton.  */
24874
24875 static void
24876 fill_in_loclist_baton (struct dwarf2_cu *cu,
24877                        struct dwarf2_loclist_baton *baton,
24878                        const struct attribute *attr)
24879 {
24880   struct dwarf2_per_objfile *dwarf2_per_objfile
24881     = cu->per_cu->dwarf2_per_objfile;
24882   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24883
24884   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24885
24886   baton->per_cu = cu->per_cu;
24887   gdb_assert (baton->per_cu);
24888   /* We don't know how long the location list is, but make sure we
24889      don't run off the edge of the section.  */
24890   baton->size = section->size - DW_UNSND (attr);
24891   baton->data = section->buffer + DW_UNSND (attr);
24892   baton->base_address = cu->base_address;
24893   baton->from_dwo = cu->dwo_unit != NULL;
24894 }
24895
24896 static void
24897 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24898                              struct dwarf2_cu *cu, int is_block)
24899 {
24900   struct dwarf2_per_objfile *dwarf2_per_objfile
24901     = cu->per_cu->dwarf2_per_objfile;
24902   struct objfile *objfile = dwarf2_per_objfile->objfile;
24903   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24904
24905   if (attr_form_is_section_offset (attr)
24906       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24907          the section.  If so, fall through to the complaint in the
24908          other branch.  */
24909       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24910     {
24911       struct dwarf2_loclist_baton *baton;
24912
24913       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24914
24915       fill_in_loclist_baton (cu, baton, attr);
24916
24917       if (cu->base_known == 0)
24918         complaint (_("Location list used without "
24919                      "specifying the CU base address."));
24920
24921       SYMBOL_ACLASS_INDEX (sym) = (is_block
24922                                    ? dwarf2_loclist_block_index
24923                                    : dwarf2_loclist_index);
24924       SYMBOL_LOCATION_BATON (sym) = baton;
24925     }
24926   else
24927     {
24928       struct dwarf2_locexpr_baton *baton;
24929
24930       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24931       baton->per_cu = cu->per_cu;
24932       gdb_assert (baton->per_cu);
24933
24934       if (attr_form_is_block (attr))
24935         {
24936           /* Note that we're just copying the block's data pointer
24937              here, not the actual data.  We're still pointing into the
24938              info_buffer for SYM's objfile; right now we never release
24939              that buffer, but when we do clean up properly this may
24940              need to change.  */
24941           baton->size = DW_BLOCK (attr)->size;
24942           baton->data = DW_BLOCK (attr)->data;
24943         }
24944       else
24945         {
24946           dwarf2_invalid_attrib_class_complaint ("location description",
24947                                                  SYMBOL_NATURAL_NAME (sym));
24948           baton->size = 0;
24949         }
24950
24951       SYMBOL_ACLASS_INDEX (sym) = (is_block
24952                                    ? dwarf2_locexpr_block_index
24953                                    : dwarf2_locexpr_index);
24954       SYMBOL_LOCATION_BATON (sym) = baton;
24955     }
24956 }
24957
24958 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24959    came from a separate debuginfo file, then the master objfile is
24960    returned.  */
24961
24962 struct objfile *
24963 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24964 {
24965   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24966
24967   /* Return the master objfile, so that we can report and look up the
24968      correct file containing this variable.  */
24969   if (objfile->separate_debug_objfile_backlink)
24970     objfile = objfile->separate_debug_objfile_backlink;
24971
24972   return objfile;
24973 }
24974
24975 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24976    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24977    CU_HEADERP first.  */
24978
24979 static const struct comp_unit_head *
24980 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24981                        struct dwarf2_per_cu_data *per_cu)
24982 {
24983   const gdb_byte *info_ptr;
24984
24985   if (per_cu->cu)
24986     return &per_cu->cu->header;
24987
24988   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24989
24990   memset (cu_headerp, 0, sizeof (*cu_headerp));
24991   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24992                        rcuh_kind::COMPILE);
24993
24994   return cu_headerp;
24995 }
24996
24997 /* Return the address size given in the compilation unit header for CU.  */
24998
24999 int
25000 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25001 {
25002   struct comp_unit_head cu_header_local;
25003   const struct comp_unit_head *cu_headerp;
25004
25005   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25006
25007   return cu_headerp->addr_size;
25008 }
25009
25010 /* Return the offset size given in the compilation unit header for CU.  */
25011
25012 int
25013 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25014 {
25015   struct comp_unit_head cu_header_local;
25016   const struct comp_unit_head *cu_headerp;
25017
25018   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25019
25020   return cu_headerp->offset_size;
25021 }
25022
25023 /* See its dwarf2loc.h declaration.  */
25024
25025 int
25026 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25027 {
25028   struct comp_unit_head cu_header_local;
25029   const struct comp_unit_head *cu_headerp;
25030
25031   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25032
25033   if (cu_headerp->version == 2)
25034     return cu_headerp->addr_size;
25035   else
25036     return cu_headerp->offset_size;
25037 }
25038
25039 /* Return the text offset of the CU.  The returned offset comes from
25040    this CU's objfile.  If this objfile came from a separate debuginfo
25041    file, then the offset may be different from the corresponding
25042    offset in the parent objfile.  */
25043
25044 CORE_ADDR
25045 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25046 {
25047   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25048
25049   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25050 }
25051
25052 /* Return DWARF version number of PER_CU.  */
25053
25054 short
25055 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25056 {
25057   return per_cu->dwarf_version;
25058 }
25059
25060 /* Locate the .debug_info compilation unit from CU's objfile which contains
25061    the DIE at OFFSET.  Raises an error on failure.  */
25062
25063 static struct dwarf2_per_cu_data *
25064 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25065                                   unsigned int offset_in_dwz,
25066                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25067 {
25068   struct dwarf2_per_cu_data *this_cu;
25069   int low, high;
25070   const sect_offset *cu_off;
25071
25072   low = 0;
25073   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25074   while (high > low)
25075     {
25076       struct dwarf2_per_cu_data *mid_cu;
25077       int mid = low + (high - low) / 2;
25078
25079       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25080       cu_off = &mid_cu->sect_off;
25081       if (mid_cu->is_dwz > offset_in_dwz
25082           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25083         high = mid;
25084       else
25085         low = mid + 1;
25086     }
25087   gdb_assert (low == high);
25088   this_cu = dwarf2_per_objfile->all_comp_units[low];
25089   cu_off = &this_cu->sect_off;
25090   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25091     {
25092       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25093         error (_("Dwarf Error: could not find partial DIE containing "
25094                "offset %s [in module %s]"),
25095                sect_offset_str (sect_off),
25096                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25097
25098       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25099                   <= sect_off);
25100       return dwarf2_per_objfile->all_comp_units[low-1];
25101     }
25102   else
25103     {
25104       this_cu = dwarf2_per_objfile->all_comp_units[low];
25105       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25106           && sect_off >= this_cu->sect_off + this_cu->length)
25107         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25108       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25109       return this_cu;
25110     }
25111 }
25112
25113 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25114
25115 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25116   : per_cu (per_cu_),
25117     mark (0),
25118     has_loclist (0),
25119     checked_producer (0),
25120     producer_is_gxx_lt_4_6 (0),
25121     producer_is_gcc_lt_4_3 (0),
25122     producer_is_icc_lt_14 (0),
25123     processing_has_namespace_info (0)
25124 {
25125   per_cu->cu = this;
25126 }
25127
25128 /* Destroy a dwarf2_cu.  */
25129
25130 dwarf2_cu::~dwarf2_cu ()
25131 {
25132   per_cu->cu = NULL;
25133 }
25134
25135 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25136
25137 static void
25138 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25139                        enum language pretend_language)
25140 {
25141   struct attribute *attr;
25142
25143   /* Set the language we're debugging.  */
25144   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25145   if (attr)
25146     set_cu_language (DW_UNSND (attr), cu);
25147   else
25148     {
25149       cu->language = pretend_language;
25150       cu->language_defn = language_def (cu->language);
25151     }
25152
25153   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25154 }
25155
25156 /* Increase the age counter on each cached compilation unit, and free
25157    any that are too old.  */
25158
25159 static void
25160 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25161 {
25162   struct dwarf2_per_cu_data *per_cu, **last_chain;
25163
25164   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25165   per_cu = dwarf2_per_objfile->read_in_chain;
25166   while (per_cu != NULL)
25167     {
25168       per_cu->cu->last_used ++;
25169       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25170         dwarf2_mark (per_cu->cu);
25171       per_cu = per_cu->cu->read_in_chain;
25172     }
25173
25174   per_cu = dwarf2_per_objfile->read_in_chain;
25175   last_chain = &dwarf2_per_objfile->read_in_chain;
25176   while (per_cu != NULL)
25177     {
25178       struct dwarf2_per_cu_data *next_cu;
25179
25180       next_cu = per_cu->cu->read_in_chain;
25181
25182       if (!per_cu->cu->mark)
25183         {
25184           delete per_cu->cu;
25185           *last_chain = next_cu;
25186         }
25187       else
25188         last_chain = &per_cu->cu->read_in_chain;
25189
25190       per_cu = next_cu;
25191     }
25192 }
25193
25194 /* Remove a single compilation unit from the cache.  */
25195
25196 static void
25197 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25198 {
25199   struct dwarf2_per_cu_data *per_cu, **last_chain;
25200   struct dwarf2_per_objfile *dwarf2_per_objfile
25201     = target_per_cu->dwarf2_per_objfile;
25202
25203   per_cu = dwarf2_per_objfile->read_in_chain;
25204   last_chain = &dwarf2_per_objfile->read_in_chain;
25205   while (per_cu != NULL)
25206     {
25207       struct dwarf2_per_cu_data *next_cu;
25208
25209       next_cu = per_cu->cu->read_in_chain;
25210
25211       if (per_cu == target_per_cu)
25212         {
25213           delete per_cu->cu;
25214           per_cu->cu = NULL;
25215           *last_chain = next_cu;
25216           break;
25217         }
25218       else
25219         last_chain = &per_cu->cu->read_in_chain;
25220
25221       per_cu = next_cu;
25222     }
25223 }
25224
25225 /* Cleanup function for the dwarf2_per_objfile data.  */
25226
25227 static void
25228 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25229 {
25230   struct dwarf2_per_objfile *dwarf2_per_objfile
25231     = static_cast<struct dwarf2_per_objfile *> (datum);
25232
25233   delete dwarf2_per_objfile;
25234 }
25235
25236 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25237    We store these in a hash table separate from the DIEs, and preserve them
25238    when the DIEs are flushed out of cache.
25239
25240    The CU "per_cu" pointer is needed because offset alone is not enough to
25241    uniquely identify the type.  A file may have multiple .debug_types sections,
25242    or the type may come from a DWO file.  Furthermore, while it's more logical
25243    to use per_cu->section+offset, with Fission the section with the data is in
25244    the DWO file but we don't know that section at the point we need it.
25245    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25246    because we can enter the lookup routine, get_die_type_at_offset, from
25247    outside this file, and thus won't necessarily have PER_CU->cu.
25248    Fortunately, PER_CU is stable for the life of the objfile.  */
25249
25250 struct dwarf2_per_cu_offset_and_type
25251 {
25252   const struct dwarf2_per_cu_data *per_cu;
25253   sect_offset sect_off;
25254   struct type *type;
25255 };
25256
25257 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25258
25259 static hashval_t
25260 per_cu_offset_and_type_hash (const void *item)
25261 {
25262   const struct dwarf2_per_cu_offset_and_type *ofs
25263     = (const struct dwarf2_per_cu_offset_and_type *) item;
25264
25265   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25266 }
25267
25268 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25269
25270 static int
25271 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25272 {
25273   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25274     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25275   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25276     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25277
25278   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25279           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25280 }
25281
25282 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25283    table if necessary.  For convenience, return TYPE.
25284
25285    The DIEs reading must have careful ordering to:
25286     * Not cause infite loops trying to read in DIEs as a prerequisite for
25287       reading current DIE.
25288     * Not trying to dereference contents of still incompletely read in types
25289       while reading in other DIEs.
25290     * Enable referencing still incompletely read in types just by a pointer to
25291       the type without accessing its fields.
25292
25293    Therefore caller should follow these rules:
25294      * Try to fetch any prerequisite types we may need to build this DIE type
25295        before building the type and calling set_die_type.
25296      * After building type call set_die_type for current DIE as soon as
25297        possible before fetching more types to complete the current type.
25298      * Make the type as complete as possible before fetching more types.  */
25299
25300 static struct type *
25301 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25302 {
25303   struct dwarf2_per_objfile *dwarf2_per_objfile
25304     = cu->per_cu->dwarf2_per_objfile;
25305   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25306   struct objfile *objfile = dwarf2_per_objfile->objfile;
25307   struct attribute *attr;
25308   struct dynamic_prop prop;
25309
25310   /* For Ada types, make sure that the gnat-specific data is always
25311      initialized (if not already set).  There are a few types where
25312      we should not be doing so, because the type-specific area is
25313      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25314      where the type-specific area is used to store the floatformat).
25315      But this is not a problem, because the gnat-specific information
25316      is actually not needed for these types.  */
25317   if (need_gnat_info (cu)
25318       && TYPE_CODE (type) != TYPE_CODE_FUNC
25319       && TYPE_CODE (type) != TYPE_CODE_FLT
25320       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25321       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25322       && TYPE_CODE (type) != TYPE_CODE_METHOD
25323       && !HAVE_GNAT_AUX_INFO (type))
25324     INIT_GNAT_SPECIFIC (type);
25325
25326   /* Read DW_AT_allocated and set in type.  */
25327   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25328   if (attr_form_is_block (attr))
25329     {
25330       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25331         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25332     }
25333   else if (attr != NULL)
25334     {
25335       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25336                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25337                  sect_offset_str (die->sect_off));
25338     }
25339
25340   /* Read DW_AT_associated and set in type.  */
25341   attr = dwarf2_attr (die, DW_AT_associated, cu);
25342   if (attr_form_is_block (attr))
25343     {
25344       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25345         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25346     }
25347   else if (attr != NULL)
25348     {
25349       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25350                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25351                  sect_offset_str (die->sect_off));
25352     }
25353
25354   /* Read DW_AT_data_location and set in type.  */
25355   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25356   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25357     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25358
25359   if (dwarf2_per_objfile->die_type_hash == NULL)
25360     {
25361       dwarf2_per_objfile->die_type_hash =
25362         htab_create_alloc_ex (127,
25363                               per_cu_offset_and_type_hash,
25364                               per_cu_offset_and_type_eq,
25365                               NULL,
25366                               &objfile->objfile_obstack,
25367                               hashtab_obstack_allocate,
25368                               dummy_obstack_deallocate);
25369     }
25370
25371   ofs.per_cu = cu->per_cu;
25372   ofs.sect_off = die->sect_off;
25373   ofs.type = type;
25374   slot = (struct dwarf2_per_cu_offset_and_type **)
25375     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25376   if (*slot)
25377     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25378                sect_offset_str (die->sect_off));
25379   *slot = XOBNEW (&objfile->objfile_obstack,
25380                   struct dwarf2_per_cu_offset_and_type);
25381   **slot = ofs;
25382   return type;
25383 }
25384
25385 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25386    or return NULL if the die does not have a saved type.  */
25387
25388 static struct type *
25389 get_die_type_at_offset (sect_offset sect_off,
25390                         struct dwarf2_per_cu_data *per_cu)
25391 {
25392   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25393   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25394
25395   if (dwarf2_per_objfile->die_type_hash == NULL)
25396     return NULL;
25397
25398   ofs.per_cu = per_cu;
25399   ofs.sect_off = sect_off;
25400   slot = ((struct dwarf2_per_cu_offset_and_type *)
25401           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25402   if (slot)
25403     return slot->type;
25404   else
25405     return NULL;
25406 }
25407
25408 /* Look up the type for DIE in CU in die_type_hash,
25409    or return NULL if DIE does not have a saved type.  */
25410
25411 static struct type *
25412 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25413 {
25414   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25415 }
25416
25417 /* Add a dependence relationship from CU to REF_PER_CU.  */
25418
25419 static void
25420 dwarf2_add_dependence (struct dwarf2_cu *cu,
25421                        struct dwarf2_per_cu_data *ref_per_cu)
25422 {
25423   void **slot;
25424
25425   if (cu->dependencies == NULL)
25426     cu->dependencies
25427       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25428                               NULL, &cu->comp_unit_obstack,
25429                               hashtab_obstack_allocate,
25430                               dummy_obstack_deallocate);
25431
25432   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25433   if (*slot == NULL)
25434     *slot = ref_per_cu;
25435 }
25436
25437 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25438    Set the mark field in every compilation unit in the
25439    cache that we must keep because we are keeping CU.  */
25440
25441 static int
25442 dwarf2_mark_helper (void **slot, void *data)
25443 {
25444   struct dwarf2_per_cu_data *per_cu;
25445
25446   per_cu = (struct dwarf2_per_cu_data *) *slot;
25447
25448   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25449      reading of the chain.  As such dependencies remain valid it is not much
25450      useful to track and undo them during QUIT cleanups.  */
25451   if (per_cu->cu == NULL)
25452     return 1;
25453
25454   if (per_cu->cu->mark)
25455     return 1;
25456   per_cu->cu->mark = 1;
25457
25458   if (per_cu->cu->dependencies != NULL)
25459     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25460
25461   return 1;
25462 }
25463
25464 /* Set the mark field in CU and in every other compilation unit in the
25465    cache that we must keep because we are keeping CU.  */
25466
25467 static void
25468 dwarf2_mark (struct dwarf2_cu *cu)
25469 {
25470   if (cu->mark)
25471     return;
25472   cu->mark = 1;
25473   if (cu->dependencies != NULL)
25474     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25475 }
25476
25477 static void
25478 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25479 {
25480   while (per_cu)
25481     {
25482       per_cu->cu->mark = 0;
25483       per_cu = per_cu->cu->read_in_chain;
25484     }
25485 }
25486
25487 /* Trivial hash function for partial_die_info: the hash value of a DIE
25488    is its offset in .debug_info for this objfile.  */
25489
25490 static hashval_t
25491 partial_die_hash (const void *item)
25492 {
25493   const struct partial_die_info *part_die
25494     = (const struct partial_die_info *) item;
25495
25496   return to_underlying (part_die->sect_off);
25497 }
25498
25499 /* Trivial comparison function for partial_die_info structures: two DIEs
25500    are equal if they have the same offset.  */
25501
25502 static int
25503 partial_die_eq (const void *item_lhs, const void *item_rhs)
25504 {
25505   const struct partial_die_info *part_die_lhs
25506     = (const struct partial_die_info *) item_lhs;
25507   const struct partial_die_info *part_die_rhs
25508     = (const struct partial_die_info *) item_rhs;
25509
25510   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25511 }
25512
25513 struct cmd_list_element *set_dwarf_cmdlist;
25514 struct cmd_list_element *show_dwarf_cmdlist;
25515
25516 static void
25517 set_dwarf_cmd (const char *args, int from_tty)
25518 {
25519   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25520              gdb_stdout);
25521 }
25522
25523 static void
25524 show_dwarf_cmd (const char *args, int from_tty)
25525 {
25526   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25527 }
25528
25529 int dwarf_always_disassemble;
25530
25531 static void
25532 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25533                                struct cmd_list_element *c, const char *value)
25534 {
25535   fprintf_filtered (file,
25536                     _("Whether to always disassemble "
25537                       "DWARF expressions is %s.\n"),
25538                     value);
25539 }
25540
25541 static void
25542 show_check_physname (struct ui_file *file, int from_tty,
25543                      struct cmd_list_element *c, const char *value)
25544 {
25545   fprintf_filtered (file,
25546                     _("Whether to check \"physname\" is %s.\n"),
25547                     value);
25548 }
25549
25550 void
25551 _initialize_dwarf2_read (void)
25552 {
25553   dwarf2_objfile_data_key
25554     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25555
25556   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25557 Set DWARF specific variables.\n\
25558 Configure DWARF variables such as the cache size"),
25559                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25560                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25561
25562   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25563 Show DWARF specific variables\n\
25564 Show DWARF variables such as the cache size"),
25565                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25566                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25567
25568   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25569                             &dwarf_max_cache_age, _("\
25570 Set the upper bound on the age of cached DWARF compilation units."), _("\
25571 Show the upper bound on the age of cached DWARF compilation units."), _("\
25572 A higher limit means that cached compilation units will be stored\n\
25573 in memory longer, and more total memory will be used.  Zero disables\n\
25574 caching, which can slow down startup."),
25575                             NULL,
25576                             show_dwarf_max_cache_age,
25577                             &set_dwarf_cmdlist,
25578                             &show_dwarf_cmdlist);
25579
25580   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25581                            &dwarf_always_disassemble, _("\
25582 Set whether `info address' always disassembles DWARF expressions."), _("\
25583 Show whether `info address' always disassembles DWARF expressions."), _("\
25584 When enabled, DWARF expressions are always printed in an assembly-like\n\
25585 syntax.  When disabled, expressions will be printed in a more\n\
25586 conversational style, when possible."),
25587                            NULL,
25588                            show_dwarf_always_disassemble,
25589                            &set_dwarf_cmdlist,
25590                            &show_dwarf_cmdlist);
25591
25592   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25593 Set debugging of the DWARF reader."), _("\
25594 Show debugging of the DWARF reader."), _("\
25595 When enabled (non-zero), debugging messages are printed during DWARF\n\
25596 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25597 information.  A value greater than 1 provides more verbose information."),
25598                             NULL,
25599                             NULL,
25600                             &setdebuglist, &showdebuglist);
25601
25602   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25603 Set debugging of the DWARF DIE reader."), _("\
25604 Show debugging of the DWARF DIE reader."), _("\
25605 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25606 The value is the maximum depth to print."),
25607                              NULL,
25608                              NULL,
25609                              &setdebuglist, &showdebuglist);
25610
25611   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25612 Set debugging of the dwarf line reader."), _("\
25613 Show debugging of the dwarf line reader."), _("\
25614 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25615 A value of 1 (one) provides basic information.\n\
25616 A value greater than 1 provides more verbose information."),
25617                              NULL,
25618                              NULL,
25619                              &setdebuglist, &showdebuglist);
25620
25621   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25622 Set cross-checking of \"physname\" code against demangler."), _("\
25623 Show cross-checking of \"physname\" code against demangler."), _("\
25624 When enabled, GDB's internal \"physname\" code is checked against\n\
25625 the demangler."),
25626                            NULL, show_check_physname,
25627                            &setdebuglist, &showdebuglist);
25628
25629   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25630                            no_class, &use_deprecated_index_sections, _("\
25631 Set whether to use deprecated gdb_index sections."), _("\
25632 Show whether to use deprecated gdb_index sections."), _("\
25633 When enabled, deprecated .gdb_index sections are used anyway.\n\
25634 Normally they are ignored either because of a missing feature or\n\
25635 performance issue.\n\
25636 Warning: This option must be enabled before gdb reads the file."),
25637                            NULL,
25638                            NULL,
25639                            &setlist, &showlist);
25640
25641   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25642                                                         &dwarf2_locexpr_funcs);
25643   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25644                                                         &dwarf2_loclist_funcs);
25645
25646   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25647                                         &dwarf2_block_frame_base_locexpr_funcs);
25648   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25649                                         &dwarf2_block_frame_base_loclist_funcs);
25650
25651 #if GDB_SELF_TEST
25652   selftests::register_test ("dw2_expand_symtabs_matching",
25653                             selftests::dw2_expand_symtabs_matching::run_test);
25654 #endif
25655 }