GDB: Work around buggy dwarf line information produced by Codewarrior Version 5.0...
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2018 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "dwarf2read.h"
33 #include "dwarf-index-cache.h"
34 #include "dwarf-index-common.h"
35 #include "bfd.h"
36 #include "elf-bfd.h"
37 #include "symtab.h"
38 #include "gdbtypes.h"
39 #include "objfiles.h"
40 #include "dwarf2.h"
41 #include "buildsym.h"
42 #include "demangle.h"
43 #include "gdb-demangle.h"
44 #include "expression.h"
45 #include "filenames.h"  /* for DOSish file names */
46 #include "macrotab.h"
47 #include "language.h"
48 #include "complaints.h"
49 #include "bcache.h"
50 #include "dwarf2expr.h"
51 #include "dwarf2loc.h"
52 #include "cp-support.h"
53 #include "hashtab.h"
54 #include "command.h"
55 #include "gdbcmd.h"
56 #include "block.h"
57 #include "addrmap.h"
58 #include "typeprint.h"
59 #include "psympriv.h"
60 #include <sys/stat.h>
61 #include "completer.h"
62 #include "vec.h"
63 #include "c-lang.h"
64 #include "go-lang.h"
65 #include "valprint.h"
66 #include "gdbcore.h" /* for gnutarget */
67 #include "gdb/gdb-index.h"
68 #include <ctype.h>
69 #include "gdb_bfd.h"
70 #include "f-lang.h"
71 #include "source.h"
72 #include "filestuff.h"
73 #include "build-id.h"
74 #include "namespace.h"
75 #include "common/gdb_unlinker.h"
76 #include "common/function-view.h"
77 #include "common/gdb_optional.h"
78 #include "common/underlying.h"
79 #include "common/byte-vector.h"
80 #include "common/hash_enum.h"
81 #include "filename-seen-cache.h"
82 #include "producer.h"
83 #include <fcntl.h>
84 #include <sys/types.h>
85 #include <algorithm>
86 #include <unordered_set>
87 #include <unordered_map>
88 #include "selftest.h"
89 #include <cmath>
90 #include <set>
91 #include <forward_list>
92 #include "rust-lang.h"
93 #include "common/pathstuff.h"
94
95 /* When == 1, print basic high level tracing messages.
96    When > 1, be more verbose.
97    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
98 static unsigned int dwarf_read_debug = 0;
99
100 /* When non-zero, dump DIEs after they are read in.  */
101 static unsigned int dwarf_die_debug = 0;
102
103 /* When non-zero, dump line number entries as they are read in.  */
104 static unsigned int dwarf_line_debug = 0;
105
106 /* When non-zero, cross-check physname against demangler.  */
107 static int check_physname = 0;
108
109 /* When non-zero, do not reject deprecated .gdb_index sections.  */
110 static int use_deprecated_index_sections = 0;
111
112 static const struct objfile_data *dwarf2_objfile_data_key;
113
114 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
115
116 static int dwarf2_locexpr_index;
117 static int dwarf2_loclist_index;
118 static int dwarf2_locexpr_block_index;
119 static int dwarf2_loclist_block_index;
120
121 /* An index into a (C++) symbol name component in a symbol name as
122    recorded in the mapped_index's symbol table.  For each C++ symbol
123    in the symbol table, we record one entry for the start of each
124    component in the symbol in a table of name components, and then
125    sort the table, in order to be able to binary search symbol names,
126    ignoring leading namespaces, both completion and regular look up.
127    For example, for symbol "A::B::C", we'll have an entry that points
128    to "A::B::C", another that points to "B::C", and another for "C".
129    Note that function symbols in GDB index have no parameter
130    information, just the function/method names.  You can convert a
131    name_component to a "const char *" using the
132    'mapped_index::symbol_name_at(offset_type)' method.  */
133
134 struct name_component
135 {
136   /* Offset in the symbol name where the component starts.  Stored as
137      a (32-bit) offset instead of a pointer to save memory and improve
138      locality on 64-bit architectures.  */
139   offset_type name_offset;
140
141   /* The symbol's index in the symbol and constant pool tables of a
142      mapped_index.  */
143   offset_type idx;
144 };
145
146 /* Base class containing bits shared by both .gdb_index and
147    .debug_name indexes.  */
148
149 struct mapped_index_base
150 {
151   mapped_index_base () = default;
152   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
153
154   /* The name_component table (a sorted vector).  See name_component's
155      description above.  */
156   std::vector<name_component> name_components;
157
158   /* How NAME_COMPONENTS is sorted.  */
159   enum case_sensitivity name_components_casing;
160
161   /* Return the number of names in the symbol table.  */
162   virtual size_t symbol_name_count () const = 0;
163
164   /* Get the name of the symbol at IDX in the symbol table.  */
165   virtual const char *symbol_name_at (offset_type idx) const = 0;
166
167   /* Return whether the name at IDX in the symbol table should be
168      ignored.  */
169   virtual bool symbol_name_slot_invalid (offset_type idx) const
170   {
171     return false;
172   }
173
174   /* Build the symbol name component sorted vector, if we haven't
175      yet.  */
176   void build_name_components ();
177
178   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
179      possible matches for LN_NO_PARAMS in the name component
180      vector.  */
181   std::pair<std::vector<name_component>::const_iterator,
182             std::vector<name_component>::const_iterator>
183     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
184
185   /* Prevent deleting/destroying via a base class pointer.  */
186 protected:
187   ~mapped_index_base() = default;
188 };
189
190 /* A description of the mapped index.  The file format is described in
191    a comment by the code that writes the index.  */
192 struct mapped_index final : public mapped_index_base
193 {
194   /* A slot/bucket in the symbol table hash.  */
195   struct symbol_table_slot
196   {
197     const offset_type name;
198     const offset_type vec;
199   };
200
201   /* Index data format version.  */
202   int version = 0;
203
204   /* The address table data.  */
205   gdb::array_view<const gdb_byte> address_table;
206
207   /* The symbol table, implemented as a hash table.  */
208   gdb::array_view<symbol_table_slot> symbol_table;
209
210   /* A pointer to the constant pool.  */
211   const char *constant_pool = nullptr;
212
213   bool symbol_name_slot_invalid (offset_type idx) const override
214   {
215     const auto &bucket = this->symbol_table[idx];
216     return bucket.name == 0 && bucket.vec;
217   }
218
219   /* Convenience method to get at the name of the symbol at IDX in the
220      symbol table.  */
221   const char *symbol_name_at (offset_type idx) const override
222   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
223
224   size_t symbol_name_count () const override
225   { return this->symbol_table.size (); }
226 };
227
228 /* A description of the mapped .debug_names.
229    Uninitialized map has CU_COUNT 0.  */
230 struct mapped_debug_names final : public mapped_index_base
231 {
232   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
233   : dwarf2_per_objfile (dwarf2_per_objfile_)
234   {}
235
236   struct dwarf2_per_objfile *dwarf2_per_objfile;
237   bfd_endian dwarf5_byte_order;
238   bool dwarf5_is_dwarf64;
239   bool augmentation_is_gdb;
240   uint8_t offset_size;
241   uint32_t cu_count = 0;
242   uint32_t tu_count, bucket_count, name_count;
243   const gdb_byte *cu_table_reordered, *tu_table_reordered;
244   const uint32_t *bucket_table_reordered, *hash_table_reordered;
245   const gdb_byte *name_table_string_offs_reordered;
246   const gdb_byte *name_table_entry_offs_reordered;
247   const gdb_byte *entry_pool;
248
249   struct index_val
250   {
251     ULONGEST dwarf_tag;
252     struct attr
253     {
254       /* Attribute name DW_IDX_*.  */
255       ULONGEST dw_idx;
256
257       /* Attribute form DW_FORM_*.  */
258       ULONGEST form;
259
260       /* Value if FORM is DW_FORM_implicit_const.  */
261       LONGEST implicit_const;
262     };
263     std::vector<attr> attr_vec;
264   };
265
266   std::unordered_map<ULONGEST, index_val> abbrev_map;
267
268   const char *namei_to_name (uint32_t namei) const;
269
270   /* Implementation of the mapped_index_base virtual interface, for
271      the name_components cache.  */
272
273   const char *symbol_name_at (offset_type idx) const override
274   { return namei_to_name (idx); }
275
276   size_t symbol_name_count () const override
277   { return this->name_count; }
278 };
279
280 /* See dwarf2read.h.  */
281
282 dwarf2_per_objfile *
283 get_dwarf2_per_objfile (struct objfile *objfile)
284 {
285   return ((struct dwarf2_per_objfile *)
286           objfile_data (objfile, dwarf2_objfile_data_key));
287 }
288
289 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
290
291 void
292 set_dwarf2_per_objfile (struct objfile *objfile,
293                         struct dwarf2_per_objfile *dwarf2_per_objfile)
294 {
295   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
296   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
297 }
298
299 /* Default names of the debugging sections.  */
300
301 /* Note that if the debugging section has been compressed, it might
302    have a name like .zdebug_info.  */
303
304 static const struct dwarf2_debug_sections dwarf2_elf_names =
305 {
306   { ".debug_info", ".zdebug_info" },
307   { ".debug_abbrev", ".zdebug_abbrev" },
308   { ".debug_line", ".zdebug_line" },
309   { ".debug_loc", ".zdebug_loc" },
310   { ".debug_loclists", ".zdebug_loclists" },
311   { ".debug_macinfo", ".zdebug_macinfo" },
312   { ".debug_macro", ".zdebug_macro" },
313   { ".debug_str", ".zdebug_str" },
314   { ".debug_line_str", ".zdebug_line_str" },
315   { ".debug_ranges", ".zdebug_ranges" },
316   { ".debug_rnglists", ".zdebug_rnglists" },
317   { ".debug_types", ".zdebug_types" },
318   { ".debug_addr", ".zdebug_addr" },
319   { ".debug_frame", ".zdebug_frame" },
320   { ".eh_frame", NULL },
321   { ".gdb_index", ".zgdb_index" },
322   { ".debug_names", ".zdebug_names" },
323   { ".debug_aranges", ".zdebug_aranges" },
324   23
325 };
326
327 /* List of DWO/DWP sections.  */
328
329 static const struct dwop_section_names
330 {
331   struct dwarf2_section_names abbrev_dwo;
332   struct dwarf2_section_names info_dwo;
333   struct dwarf2_section_names line_dwo;
334   struct dwarf2_section_names loc_dwo;
335   struct dwarf2_section_names loclists_dwo;
336   struct dwarf2_section_names macinfo_dwo;
337   struct dwarf2_section_names macro_dwo;
338   struct dwarf2_section_names str_dwo;
339   struct dwarf2_section_names str_offsets_dwo;
340   struct dwarf2_section_names types_dwo;
341   struct dwarf2_section_names cu_index;
342   struct dwarf2_section_names tu_index;
343 }
344 dwop_section_names =
345 {
346   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
347   { ".debug_info.dwo", ".zdebug_info.dwo" },
348   { ".debug_line.dwo", ".zdebug_line.dwo" },
349   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
350   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
351   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
352   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
353   { ".debug_str.dwo", ".zdebug_str.dwo" },
354   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
355   { ".debug_types.dwo", ".zdebug_types.dwo" },
356   { ".debug_cu_index", ".zdebug_cu_index" },
357   { ".debug_tu_index", ".zdebug_tu_index" },
358 };
359
360 /* local data types */
361
362 /* The data in a compilation unit header, after target2host
363    translation, looks like this.  */
364 struct comp_unit_head
365 {
366   unsigned int length;
367   short version;
368   unsigned char addr_size;
369   unsigned char signed_addr_p;
370   sect_offset abbrev_sect_off;
371
372   /* Size of file offsets; either 4 or 8.  */
373   unsigned int offset_size;
374
375   /* Size of the length field; either 4 or 12.  */
376   unsigned int initial_length_size;
377
378   enum dwarf_unit_type unit_type;
379
380   /* Offset to the first byte of this compilation unit header in the
381      .debug_info section, for resolving relative reference dies.  */
382   sect_offset sect_off;
383
384   /* Offset to first die in this cu from the start of the cu.
385      This will be the first byte following the compilation unit header.  */
386   cu_offset first_die_cu_offset;
387
388   /* 64-bit signature of this type unit - it is valid only for
389      UNIT_TYPE DW_UT_type.  */
390   ULONGEST signature;
391
392   /* For types, offset in the type's DIE of the type defined by this TU.  */
393   cu_offset type_cu_offset_in_tu;
394 };
395
396 /* Type used for delaying computation of method physnames.
397    See comments for compute_delayed_physnames.  */
398 struct delayed_method_info
399 {
400   /* The type to which the method is attached, i.e., its parent class.  */
401   struct type *type;
402
403   /* The index of the method in the type's function fieldlists.  */
404   int fnfield_index;
405
406   /* The index of the method in the fieldlist.  */
407   int index;
408
409   /* The name of the DIE.  */
410   const char *name;
411
412   /*  The DIE associated with this method.  */
413   struct die_info *die;
414 };
415
416 /* Internal state when decoding a particular compilation unit.  */
417 struct dwarf2_cu
418 {
419   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
420   ~dwarf2_cu ();
421
422   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
423
424   /* The header of the compilation unit.  */
425   struct comp_unit_head header {};
426
427   /* Base address of this compilation unit.  */
428   CORE_ADDR base_address = 0;
429
430   /* Non-zero if base_address has been set.  */
431   int base_known = 0;
432
433   /* The language we are debugging.  */
434   enum language language = language_unknown;
435   const struct language_defn *language_defn = nullptr;
436
437   const char *producer = nullptr;
438
439   /* The symtab builder for this CU.  This is only non-NULL when full
440      symbols are being read.  */
441   std::unique_ptr<buildsym_compunit> builder;
442
443   /* The generic symbol table building routines have separate lists for
444      file scope symbols and all all other scopes (local scopes).  So
445      we need to select the right one to pass to add_symbol_to_list().
446      We do it by keeping a pointer to the correct list in list_in_scope.
447
448      FIXME: The original dwarf code just treated the file scope as the
449      first local scope, and all other local scopes as nested local
450      scopes, and worked fine.  Check to see if we really need to
451      distinguish these in buildsym.c.  */
452   struct pending **list_in_scope = nullptr;
453
454   /* Hash table holding all the loaded partial DIEs
455      with partial_die->offset.SECT_OFF as hash.  */
456   htab_t partial_dies = nullptr;
457
458   /* Storage for things with the same lifetime as this read-in compilation
459      unit, including partial DIEs.  */
460   auto_obstack comp_unit_obstack;
461
462   /* When multiple dwarf2_cu structures are living in memory, this field
463      chains them all together, so that they can be released efficiently.
464      We will probably also want a generation counter so that most-recently-used
465      compilation units are cached...  */
466   struct dwarf2_per_cu_data *read_in_chain = nullptr;
467
468   /* Backlink to our per_cu entry.  */
469   struct dwarf2_per_cu_data *per_cu;
470
471   /* How many compilation units ago was this CU last referenced?  */
472   int last_used = 0;
473
474   /* A hash table of DIE cu_offset for following references with
475      die_info->offset.sect_off as hash.  */
476   htab_t die_hash = nullptr;
477
478   /* Full DIEs if read in.  */
479   struct die_info *dies = nullptr;
480
481   /* A set of pointers to dwarf2_per_cu_data objects for compilation
482      units referenced by this one.  Only set during full symbol processing;
483      partial symbol tables do not have dependencies.  */
484   htab_t dependencies = nullptr;
485
486   /* Header data from the line table, during full symbol processing.  */
487   struct line_header *line_header = nullptr;
488   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
489      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
490      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
491      to the line header as long as this DIE is being processed.  See
492      process_die_scope.  */
493   die_info *line_header_die_owner = nullptr;
494
495   /* A list of methods which need to have physnames computed
496      after all type information has been read.  */
497   std::vector<delayed_method_info> method_list;
498
499   /* To be copied to symtab->call_site_htab.  */
500   htab_t call_site_htab = nullptr;
501
502   /* Non-NULL if this CU came from a DWO file.
503      There is an invariant here that is important to remember:
504      Except for attributes copied from the top level DIE in the "main"
505      (or "stub") file in preparation for reading the DWO file
506      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
507      Either there isn't a DWO file (in which case this is NULL and the point
508      is moot), or there is and either we're not going to read it (in which
509      case this is NULL) or there is and we are reading it (in which case this
510      is non-NULL).  */
511   struct dwo_unit *dwo_unit = nullptr;
512
513   /* The DW_AT_addr_base attribute if present, zero otherwise
514      (zero is a valid value though).
515      Note this value comes from the Fission stub CU/TU's DIE.  */
516   ULONGEST addr_base = 0;
517
518   /* The DW_AT_ranges_base attribute if present, zero otherwise
519      (zero is a valid value though).
520      Note this value comes from the Fission stub CU/TU's DIE.
521      Also note that the value is zero in the non-DWO case so this value can
522      be used without needing to know whether DWO files are in use or not.
523      N.B. This does not apply to DW_AT_ranges appearing in
524      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
525      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
526      DW_AT_ranges_base *would* have to be applied, and we'd have to care
527      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
528   ULONGEST ranges_base = 0;
529
530   /* When reading debug info generated by older versions of rustc, we
531      have to rewrite some union types to be struct types with a
532      variant part.  This rewriting must be done after the CU is fully
533      read in, because otherwise at the point of rewriting some struct
534      type might not have been fully processed.  So, we keep a list of
535      all such types here and process them after expansion.  */
536   std::vector<struct type *> rust_unions;
537
538   /* Mark used when releasing cached dies.  */
539   unsigned int mark : 1;
540
541   /* This CU references .debug_loc.  See the symtab->locations_valid field.
542      This test is imperfect as there may exist optimized debug code not using
543      any location list and still facing inlining issues if handled as
544      unoptimized code.  For a future better test see GCC PR other/32998.  */
545   unsigned int has_loclist : 1;
546
547   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
548      if all the producer_is_* fields are valid.  This information is cached
549      because profiling CU expansion showed excessive time spent in
550      producer_is_gxx_lt_4_6.  */
551   unsigned int checked_producer : 1;
552   unsigned int producer_is_gxx_lt_4_6 : 1;
553   unsigned int producer_is_gcc_lt_4_3 : 1;
554   unsigned int producer_is_icc_lt_14 : 1;
555   bool producer_is_codewarrior : 1;
556
557   /* When set, the file that we're processing is known to have
558      debugging info for C++ namespaces.  GCC 3.3.x did not produce
559      this information, but later versions do.  */
560
561   unsigned int processing_has_namespace_info : 1;
562
563   struct partial_die_info *find_partial_die (sect_offset sect_off);
564 };
565
566 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
567    This includes type_unit_group and quick_file_names.  */
568
569 struct stmt_list_hash
570 {
571   /* The DWO unit this table is from or NULL if there is none.  */
572   struct dwo_unit *dwo_unit;
573
574   /* Offset in .debug_line or .debug_line.dwo.  */
575   sect_offset line_sect_off;
576 };
577
578 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
579    an object of this type.  */
580
581 struct type_unit_group
582 {
583   /* dwarf2read.c's main "handle" on a TU symtab.
584      To simplify things we create an artificial CU that "includes" all the
585      type units using this stmt_list so that the rest of the code still has
586      a "per_cu" handle on the symtab.
587      This PER_CU is recognized by having no section.  */
588 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
589   struct dwarf2_per_cu_data per_cu;
590
591   /* The TUs that share this DW_AT_stmt_list entry.
592      This is added to while parsing type units to build partial symtabs,
593      and is deleted afterwards and not used again.  */
594   VEC (sig_type_ptr) *tus;
595
596   /* The compunit symtab.
597      Type units in a group needn't all be defined in the same source file,
598      so we create an essentially anonymous symtab as the compunit symtab.  */
599   struct compunit_symtab *compunit_symtab;
600
601   /* The data used to construct the hash key.  */
602   struct stmt_list_hash hash;
603
604   /* The number of symtabs from the line header.
605      The value here must match line_header.num_file_names.  */
606   unsigned int num_symtabs;
607
608   /* The symbol tables for this TU (obtained from the files listed in
609      DW_AT_stmt_list).
610      WARNING: The order of entries here must match the order of entries
611      in the line header.  After the first TU using this type_unit_group, the
612      line header for the subsequent TUs is recreated from this.  This is done
613      because we need to use the same symtabs for each TU using the same
614      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
615      there's no guarantee the line header doesn't have duplicate entries.  */
616   struct symtab **symtabs;
617 };
618
619 /* These sections are what may appear in a (real or virtual) DWO file.  */
620
621 struct dwo_sections
622 {
623   struct dwarf2_section_info abbrev;
624   struct dwarf2_section_info line;
625   struct dwarf2_section_info loc;
626   struct dwarf2_section_info loclists;
627   struct dwarf2_section_info macinfo;
628   struct dwarf2_section_info macro;
629   struct dwarf2_section_info str;
630   struct dwarf2_section_info str_offsets;
631   /* In the case of a virtual DWO file, these two are unused.  */
632   struct dwarf2_section_info info;
633   VEC (dwarf2_section_info_def) *types;
634 };
635
636 /* CUs/TUs in DWP/DWO files.  */
637
638 struct dwo_unit
639 {
640   /* Backlink to the containing struct dwo_file.  */
641   struct dwo_file *dwo_file;
642
643   /* The "id" that distinguishes this CU/TU.
644      .debug_info calls this "dwo_id", .debug_types calls this "signature".
645      Since signatures came first, we stick with it for consistency.  */
646   ULONGEST signature;
647
648   /* The section this CU/TU lives in, in the DWO file.  */
649   struct dwarf2_section_info *section;
650
651   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
652   sect_offset sect_off;
653   unsigned int length;
654
655   /* For types, offset in the type's DIE of the type defined by this TU.  */
656   cu_offset type_offset_in_tu;
657 };
658
659 /* include/dwarf2.h defines the DWP section codes.
660    It defines a max value but it doesn't define a min value, which we
661    use for error checking, so provide one.  */
662
663 enum dwp_v2_section_ids
664 {
665   DW_SECT_MIN = 1
666 };
667
668 /* Data for one DWO file.
669
670    This includes virtual DWO files (a virtual DWO file is a DWO file as it
671    appears in a DWP file).  DWP files don't really have DWO files per se -
672    comdat folding of types "loses" the DWO file they came from, and from
673    a high level view DWP files appear to contain a mass of random types.
674    However, to maintain consistency with the non-DWP case we pretend DWP
675    files contain virtual DWO files, and we assign each TU with one virtual
676    DWO file (generally based on the line and abbrev section offsets -
677    a heuristic that seems to work in practice).  */
678
679 struct dwo_file
680 {
681   /* The DW_AT_GNU_dwo_name attribute.
682      For virtual DWO files the name is constructed from the section offsets
683      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
684      from related CU+TUs.  */
685   const char *dwo_name;
686
687   /* The DW_AT_comp_dir attribute.  */
688   const char *comp_dir;
689
690   /* The bfd, when the file is open.  Otherwise this is NULL.
691      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
692   bfd *dbfd;
693
694   /* The sections that make up this DWO file.
695      Remember that for virtual DWO files in DWP V2, these are virtual
696      sections (for lack of a better name).  */
697   struct dwo_sections sections;
698
699   /* The CUs in the file.
700      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
701      an extension to handle LLVM's Link Time Optimization output (where
702      multiple source files may be compiled into a single object/dwo pair). */
703   htab_t cus;
704
705   /* Table of TUs in the file.
706      Each element is a struct dwo_unit.  */
707   htab_t tus;
708 };
709
710 /* These sections are what may appear in a DWP file.  */
711
712 struct dwp_sections
713 {
714   /* These are used by both DWP version 1 and 2.  */
715   struct dwarf2_section_info str;
716   struct dwarf2_section_info cu_index;
717   struct dwarf2_section_info tu_index;
718
719   /* These are only used by DWP version 2 files.
720      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
721      sections are referenced by section number, and are not recorded here.
722      In DWP version 2 there is at most one copy of all these sections, each
723      section being (effectively) comprised of the concatenation of all of the
724      individual sections that exist in the version 1 format.
725      To keep the code simple we treat each of these concatenated pieces as a
726      section itself (a virtual section?).  */
727   struct dwarf2_section_info abbrev;
728   struct dwarf2_section_info info;
729   struct dwarf2_section_info line;
730   struct dwarf2_section_info loc;
731   struct dwarf2_section_info macinfo;
732   struct dwarf2_section_info macro;
733   struct dwarf2_section_info str_offsets;
734   struct dwarf2_section_info types;
735 };
736
737 /* These sections are what may appear in a virtual DWO file in DWP version 1.
738    A virtual DWO file is a DWO file as it appears in a DWP file.  */
739
740 struct virtual_v1_dwo_sections
741 {
742   struct dwarf2_section_info abbrev;
743   struct dwarf2_section_info line;
744   struct dwarf2_section_info loc;
745   struct dwarf2_section_info macinfo;
746   struct dwarf2_section_info macro;
747   struct dwarf2_section_info str_offsets;
748   /* Each DWP hash table entry records one CU or one TU.
749      That is recorded here, and copied to dwo_unit.section.  */
750   struct dwarf2_section_info info_or_types;
751 };
752
753 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
754    In version 2, the sections of the DWO files are concatenated together
755    and stored in one section of that name.  Thus each ELF section contains
756    several "virtual" sections.  */
757
758 struct virtual_v2_dwo_sections
759 {
760   bfd_size_type abbrev_offset;
761   bfd_size_type abbrev_size;
762
763   bfd_size_type line_offset;
764   bfd_size_type line_size;
765
766   bfd_size_type loc_offset;
767   bfd_size_type loc_size;
768
769   bfd_size_type macinfo_offset;
770   bfd_size_type macinfo_size;
771
772   bfd_size_type macro_offset;
773   bfd_size_type macro_size;
774
775   bfd_size_type str_offsets_offset;
776   bfd_size_type str_offsets_size;
777
778   /* Each DWP hash table entry records one CU or one TU.
779      That is recorded here, and copied to dwo_unit.section.  */
780   bfd_size_type info_or_types_offset;
781   bfd_size_type info_or_types_size;
782 };
783
784 /* Contents of DWP hash tables.  */
785
786 struct dwp_hash_table
787 {
788   uint32_t version, nr_columns;
789   uint32_t nr_units, nr_slots;
790   const gdb_byte *hash_table, *unit_table;
791   union
792   {
793     struct
794     {
795       const gdb_byte *indices;
796     } v1;
797     struct
798     {
799       /* This is indexed by column number and gives the id of the section
800          in that column.  */
801 #define MAX_NR_V2_DWO_SECTIONS \
802   (1 /* .debug_info or .debug_types */ \
803    + 1 /* .debug_abbrev */ \
804    + 1 /* .debug_line */ \
805    + 1 /* .debug_loc */ \
806    + 1 /* .debug_str_offsets */ \
807    + 1 /* .debug_macro or .debug_macinfo */)
808       int section_ids[MAX_NR_V2_DWO_SECTIONS];
809       const gdb_byte *offsets;
810       const gdb_byte *sizes;
811     } v2;
812   } section_pool;
813 };
814
815 /* Data for one DWP file.  */
816
817 struct dwp_file
818 {
819   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
820     : name (name_),
821       dbfd (std::move (abfd))
822   {
823   }
824
825   /* Name of the file.  */
826   const char *name;
827
828   /* File format version.  */
829   int version = 0;
830
831   /* The bfd.  */
832   gdb_bfd_ref_ptr dbfd;
833
834   /* Section info for this file.  */
835   struct dwp_sections sections {};
836
837   /* Table of CUs in the file.  */
838   const struct dwp_hash_table *cus = nullptr;
839
840   /* Table of TUs in the file.  */
841   const struct dwp_hash_table *tus = nullptr;
842
843   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
844   htab_t loaded_cus {};
845   htab_t loaded_tus {};
846
847   /* Table to map ELF section numbers to their sections.
848      This is only needed for the DWP V1 file format.  */
849   unsigned int num_sections = 0;
850   asection **elf_sections = nullptr;
851 };
852
853 /* This represents a '.dwz' file.  */
854
855 struct dwz_file
856 {
857   dwz_file (gdb_bfd_ref_ptr &&bfd)
858     : dwz_bfd (std::move (bfd))
859   {
860   }
861
862   /* A dwz file can only contain a few sections.  */
863   struct dwarf2_section_info abbrev {};
864   struct dwarf2_section_info info {};
865   struct dwarf2_section_info str {};
866   struct dwarf2_section_info line {};
867   struct dwarf2_section_info macro {};
868   struct dwarf2_section_info gdb_index {};
869   struct dwarf2_section_info debug_names {};
870
871   /* The dwz's BFD.  */
872   gdb_bfd_ref_ptr dwz_bfd;
873
874   /* If we loaded the index from an external file, this contains the
875      resources associated to the open file, memory mapping, etc.  */
876   std::unique_ptr<index_cache_resource> index_cache_res;
877 };
878
879 /* Struct used to pass misc. parameters to read_die_and_children, et
880    al.  which are used for both .debug_info and .debug_types dies.
881    All parameters here are unchanging for the life of the call.  This
882    struct exists to abstract away the constant parameters of die reading.  */
883
884 struct die_reader_specs
885 {
886   /* The bfd of die_section.  */
887   bfd* abfd;
888
889   /* The CU of the DIE we are parsing.  */
890   struct dwarf2_cu *cu;
891
892   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
893   struct dwo_file *dwo_file;
894
895   /* The section the die comes from.
896      This is either .debug_info or .debug_types, or the .dwo variants.  */
897   struct dwarf2_section_info *die_section;
898
899   /* die_section->buffer.  */
900   const gdb_byte *buffer;
901
902   /* The end of the buffer.  */
903   const gdb_byte *buffer_end;
904
905   /* The value of the DW_AT_comp_dir attribute.  */
906   const char *comp_dir;
907
908   /* The abbreviation table to use when reading the DIEs.  */
909   struct abbrev_table *abbrev_table;
910 };
911
912 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
913 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
914                                       const gdb_byte *info_ptr,
915                                       struct die_info *comp_unit_die,
916                                       int has_children,
917                                       void *data);
918
919 /* A 1-based directory index.  This is a strong typedef to prevent
920    accidentally using a directory index as a 0-based index into an
921    array/vector.  */
922 enum class dir_index : unsigned int {};
923
924 /* Likewise, a 1-based file name index.  */
925 enum class file_name_index : unsigned int {};
926
927 struct file_entry
928 {
929   file_entry () = default;
930
931   file_entry (const char *name_, dir_index d_index_,
932               unsigned int mod_time_, unsigned int length_)
933     : name (name_),
934       d_index (d_index_),
935       mod_time (mod_time_),
936       length (length_)
937   {}
938
939   /* Return the include directory at D_INDEX stored in LH.  Returns
940      NULL if D_INDEX is out of bounds.  */
941   const char *include_dir (const line_header *lh) const;
942
943   /* The file name.  Note this is an observing pointer.  The memory is
944      owned by debug_line_buffer.  */
945   const char *name {};
946
947   /* The directory index (1-based).  */
948   dir_index d_index {};
949
950   unsigned int mod_time {};
951
952   unsigned int length {};
953
954   /* True if referenced by the Line Number Program.  */
955   bool included_p {};
956
957   /* The associated symbol table, if any.  */
958   struct symtab *symtab {};
959 };
960
961 /* The line number information for a compilation unit (found in the
962    .debug_line section) begins with a "statement program header",
963    which contains the following information.  */
964 struct line_header
965 {
966   line_header ()
967     : offset_in_dwz {}
968   {}
969
970   /* Add an entry to the include directory table.  */
971   void add_include_dir (const char *include_dir);
972
973   /* Add an entry to the file name table.  */
974   void add_file_name (const char *name, dir_index d_index,
975                       unsigned int mod_time, unsigned int length);
976
977   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
978      is out of bounds.  */
979   const char *include_dir_at (dir_index index) const
980   {
981     /* Convert directory index number (1-based) to vector index
982        (0-based).  */
983     size_t vec_index = to_underlying (index) - 1;
984
985     if (vec_index >= include_dirs.size ())
986       return NULL;
987     return include_dirs[vec_index];
988   }
989
990   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
991      is out of bounds.  */
992   file_entry *file_name_at (file_name_index index)
993   {
994     /* Convert file name index number (1-based) to vector index
995        (0-based).  */
996     size_t vec_index = to_underlying (index) - 1;
997
998     if (vec_index >= file_names.size ())
999       return NULL;
1000     return &file_names[vec_index];
1001   }
1002
1003   /* Const version of the above.  */
1004   const file_entry *file_name_at (unsigned int index) const
1005   {
1006     if (index >= file_names.size ())
1007       return NULL;
1008     return &file_names[index];
1009   }
1010
1011   /* Offset of line number information in .debug_line section.  */
1012   sect_offset sect_off {};
1013
1014   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1015   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1016
1017   unsigned int total_length {};
1018   unsigned short version {};
1019   unsigned int header_length {};
1020   unsigned char minimum_instruction_length {};
1021   unsigned char maximum_ops_per_instruction {};
1022   unsigned char default_is_stmt {};
1023   int line_base {};
1024   unsigned char line_range {};
1025   unsigned char opcode_base {};
1026
1027   /* standard_opcode_lengths[i] is the number of operands for the
1028      standard opcode whose value is i.  This means that
1029      standard_opcode_lengths[0] is unused, and the last meaningful
1030      element is standard_opcode_lengths[opcode_base - 1].  */
1031   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1032
1033   /* The include_directories table.  Note these are observing
1034      pointers.  The memory is owned by debug_line_buffer.  */
1035   std::vector<const char *> include_dirs;
1036
1037   /* The file_names table.  */
1038   std::vector<file_entry> file_names;
1039
1040   /* The start and end of the statement program following this
1041      header.  These point into dwarf2_per_objfile->line_buffer.  */
1042   const gdb_byte *statement_program_start {}, *statement_program_end {};
1043 };
1044
1045 typedef std::unique_ptr<line_header> line_header_up;
1046
1047 const char *
1048 file_entry::include_dir (const line_header *lh) const
1049 {
1050   return lh->include_dir_at (d_index);
1051 }
1052
1053 /* When we construct a partial symbol table entry we only
1054    need this much information.  */
1055 struct partial_die_info : public allocate_on_obstack
1056   {
1057     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1058
1059     /* Disable assign but still keep copy ctor, which is needed
1060        load_partial_dies.   */
1061     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1062
1063     /* Adjust the partial die before generating a symbol for it.  This
1064        function may set the is_external flag or change the DIE's
1065        name.  */
1066     void fixup (struct dwarf2_cu *cu);
1067
1068     /* Read a minimal amount of information into the minimal die
1069        structure.  */
1070     const gdb_byte *read (const struct die_reader_specs *reader,
1071                           const struct abbrev_info &abbrev,
1072                           const gdb_byte *info_ptr);
1073
1074     /* Offset of this DIE.  */
1075     const sect_offset sect_off;
1076
1077     /* DWARF-2 tag for this DIE.  */
1078     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1079
1080     /* Assorted flags describing the data found in this DIE.  */
1081     const unsigned int has_children : 1;
1082
1083     unsigned int is_external : 1;
1084     unsigned int is_declaration : 1;
1085     unsigned int has_type : 1;
1086     unsigned int has_specification : 1;
1087     unsigned int has_pc_info : 1;
1088     unsigned int may_be_inlined : 1;
1089
1090     /* This DIE has been marked DW_AT_main_subprogram.  */
1091     unsigned int main_subprogram : 1;
1092
1093     /* Flag set if the SCOPE field of this structure has been
1094        computed.  */
1095     unsigned int scope_set : 1;
1096
1097     /* Flag set if the DIE has a byte_size attribute.  */
1098     unsigned int has_byte_size : 1;
1099
1100     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1101     unsigned int has_const_value : 1;
1102
1103     /* Flag set if any of the DIE's children are template arguments.  */
1104     unsigned int has_template_arguments : 1;
1105
1106     /* Flag set if fixup has been called on this die.  */
1107     unsigned int fixup_called : 1;
1108
1109     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1110     unsigned int is_dwz : 1;
1111
1112     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1113     unsigned int spec_is_dwz : 1;
1114
1115     /* The name of this DIE.  Normally the value of DW_AT_name, but
1116        sometimes a default name for unnamed DIEs.  */
1117     const char *name = nullptr;
1118
1119     /* The linkage name, if present.  */
1120     const char *linkage_name = nullptr;
1121
1122     /* The scope to prepend to our children.  This is generally
1123        allocated on the comp_unit_obstack, so will disappear
1124        when this compilation unit leaves the cache.  */
1125     const char *scope = nullptr;
1126
1127     /* Some data associated with the partial DIE.  The tag determines
1128        which field is live.  */
1129     union
1130     {
1131       /* The location description associated with this DIE, if any.  */
1132       struct dwarf_block *locdesc;
1133       /* The offset of an import, for DW_TAG_imported_unit.  */
1134       sect_offset sect_off;
1135     } d {};
1136
1137     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1138     CORE_ADDR lowpc = 0;
1139     CORE_ADDR highpc = 0;
1140
1141     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1142        DW_AT_sibling, if any.  */
1143     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1144        could return DW_AT_sibling values to its caller load_partial_dies.  */
1145     const gdb_byte *sibling = nullptr;
1146
1147     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1148        DW_AT_specification (or DW_AT_abstract_origin or
1149        DW_AT_extension).  */
1150     sect_offset spec_offset {};
1151
1152     /* Pointers to this DIE's parent, first child, and next sibling,
1153        if any.  */
1154     struct partial_die_info *die_parent = nullptr;
1155     struct partial_die_info *die_child = nullptr;
1156     struct partial_die_info *die_sibling = nullptr;
1157
1158     friend struct partial_die_info *
1159     dwarf2_cu::find_partial_die (sect_offset sect_off);
1160
1161   private:
1162     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1163     partial_die_info (sect_offset sect_off)
1164       : partial_die_info (sect_off, DW_TAG_padding, 0)
1165     {
1166     }
1167
1168     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1169                       int has_children_)
1170       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1171     {
1172       is_external = 0;
1173       is_declaration = 0;
1174       has_type = 0;
1175       has_specification = 0;
1176       has_pc_info = 0;
1177       may_be_inlined = 0;
1178       main_subprogram = 0;
1179       scope_set = 0;
1180       has_byte_size = 0;
1181       has_const_value = 0;
1182       has_template_arguments = 0;
1183       fixup_called = 0;
1184       is_dwz = 0;
1185       spec_is_dwz = 0;
1186     }
1187   };
1188
1189 /* This data structure holds the information of an abbrev.  */
1190 struct abbrev_info
1191   {
1192     unsigned int number;        /* number identifying abbrev */
1193     enum dwarf_tag tag;         /* dwarf tag */
1194     unsigned short has_children;                /* boolean */
1195     unsigned short num_attrs;   /* number of attributes */
1196     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1197     struct abbrev_info *next;   /* next in chain */
1198   };
1199
1200 struct attr_abbrev
1201   {
1202     ENUM_BITFIELD(dwarf_attribute) name : 16;
1203     ENUM_BITFIELD(dwarf_form) form : 16;
1204
1205     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1206     LONGEST implicit_const;
1207   };
1208
1209 /* Size of abbrev_table.abbrev_hash_table.  */
1210 #define ABBREV_HASH_SIZE 121
1211
1212 /* Top level data structure to contain an abbreviation table.  */
1213
1214 struct abbrev_table
1215 {
1216   explicit abbrev_table (sect_offset off)
1217     : sect_off (off)
1218   {
1219     m_abbrevs =
1220       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1221     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1222   }
1223
1224   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1225
1226   /* Allocate space for a struct abbrev_info object in
1227      ABBREV_TABLE.  */
1228   struct abbrev_info *alloc_abbrev ();
1229
1230   /* Add an abbreviation to the table.  */
1231   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1232
1233   /* Look up an abbrev in the table.
1234      Returns NULL if the abbrev is not found.  */
1235
1236   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1237
1238
1239   /* Where the abbrev table came from.
1240      This is used as a sanity check when the table is used.  */
1241   const sect_offset sect_off;
1242
1243   /* Storage for the abbrev table.  */
1244   auto_obstack abbrev_obstack;
1245
1246 private:
1247
1248   /* Hash table of abbrevs.
1249      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1250      It could be statically allocated, but the previous code didn't so we
1251      don't either.  */
1252   struct abbrev_info **m_abbrevs;
1253 };
1254
1255 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1256
1257 /* Attributes have a name and a value.  */
1258 struct attribute
1259   {
1260     ENUM_BITFIELD(dwarf_attribute) name : 16;
1261     ENUM_BITFIELD(dwarf_form) form : 15;
1262
1263     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1264        field should be in u.str (existing only for DW_STRING) but it is kept
1265        here for better struct attribute alignment.  */
1266     unsigned int string_is_canonical : 1;
1267
1268     union
1269       {
1270         const char *str;
1271         struct dwarf_block *blk;
1272         ULONGEST unsnd;
1273         LONGEST snd;
1274         CORE_ADDR addr;
1275         ULONGEST signature;
1276       }
1277     u;
1278   };
1279
1280 /* This data structure holds a complete die structure.  */
1281 struct die_info
1282   {
1283     /* DWARF-2 tag for this DIE.  */
1284     ENUM_BITFIELD(dwarf_tag) tag : 16;
1285
1286     /* Number of attributes */
1287     unsigned char num_attrs;
1288
1289     /* True if we're presently building the full type name for the
1290        type derived from this DIE.  */
1291     unsigned char building_fullname : 1;
1292
1293     /* True if this die is in process.  PR 16581.  */
1294     unsigned char in_process : 1;
1295
1296     /* Abbrev number */
1297     unsigned int abbrev;
1298
1299     /* Offset in .debug_info or .debug_types section.  */
1300     sect_offset sect_off;
1301
1302     /* The dies in a compilation unit form an n-ary tree.  PARENT
1303        points to this die's parent; CHILD points to the first child of
1304        this node; and all the children of a given node are chained
1305        together via their SIBLING fields.  */
1306     struct die_info *child;     /* Its first child, if any.  */
1307     struct die_info *sibling;   /* Its next sibling, if any.  */
1308     struct die_info *parent;    /* Its parent, if any.  */
1309
1310     /* An array of attributes, with NUM_ATTRS elements.  There may be
1311        zero, but it's not common and zero-sized arrays are not
1312        sufficiently portable C.  */
1313     struct attribute attrs[1];
1314   };
1315
1316 /* Get at parts of an attribute structure.  */
1317
1318 #define DW_STRING(attr)    ((attr)->u.str)
1319 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1320 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1321 #define DW_BLOCK(attr)     ((attr)->u.blk)
1322 #define DW_SND(attr)       ((attr)->u.snd)
1323 #define DW_ADDR(attr)      ((attr)->u.addr)
1324 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1325
1326 /* Blocks are a bunch of untyped bytes.  */
1327 struct dwarf_block
1328   {
1329     size_t size;
1330
1331     /* Valid only if SIZE is not zero.  */
1332     const gdb_byte *data;
1333   };
1334
1335 #ifndef ATTR_ALLOC_CHUNK
1336 #define ATTR_ALLOC_CHUNK 4
1337 #endif
1338
1339 /* Allocate fields for structs, unions and enums in this size.  */
1340 #ifndef DW_FIELD_ALLOC_CHUNK
1341 #define DW_FIELD_ALLOC_CHUNK 4
1342 #endif
1343
1344 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1345    but this would require a corresponding change in unpack_field_as_long
1346    and friends.  */
1347 static int bits_per_byte = 8;
1348
1349 /* When reading a variant or variant part, we track a bit more
1350    information about the field, and store it in an object of this
1351    type.  */
1352
1353 struct variant_field
1354 {
1355   /* If we see a DW_TAG_variant, then this will be the discriminant
1356      value.  */
1357   ULONGEST discriminant_value;
1358   /* If we see a DW_TAG_variant, then this will be set if this is the
1359      default branch.  */
1360   bool default_branch;
1361   /* While reading a DW_TAG_variant_part, this will be set if this
1362      field is the discriminant.  */
1363   bool is_discriminant;
1364 };
1365
1366 struct nextfield
1367 {
1368   int accessibility = 0;
1369   int virtuality = 0;
1370   /* Extra information to describe a variant or variant part.  */
1371   struct variant_field variant {};
1372   struct field field {};
1373 };
1374
1375 struct fnfieldlist
1376 {
1377   const char *name = nullptr;
1378   std::vector<struct fn_field> fnfields;
1379 };
1380
1381 /* The routines that read and process dies for a C struct or C++ class
1382    pass lists of data member fields and lists of member function fields
1383    in an instance of a field_info structure, as defined below.  */
1384 struct field_info
1385   {
1386     /* List of data member and baseclasses fields.  */
1387     std::vector<struct nextfield> fields;
1388     std::vector<struct nextfield> baseclasses;
1389
1390     /* Number of fields (including baseclasses).  */
1391     int nfields = 0;
1392
1393     /* Set if the accesibility of one of the fields is not public.  */
1394     int non_public_fields = 0;
1395
1396     /* Member function fieldlist array, contains name of possibly overloaded
1397        member function, number of overloaded member functions and a pointer
1398        to the head of the member function field chain.  */
1399     std::vector<struct fnfieldlist> fnfieldlists;
1400
1401     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1402        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1403     std::vector<struct decl_field> typedef_field_list;
1404
1405     /* Nested types defined by this class and the number of elements in this
1406        list.  */
1407     std::vector<struct decl_field> nested_types_list;
1408   };
1409
1410 /* One item on the queue of compilation units to read in full symbols
1411    for.  */
1412 struct dwarf2_queue_item
1413 {
1414   struct dwarf2_per_cu_data *per_cu;
1415   enum language pretend_language;
1416   struct dwarf2_queue_item *next;
1417 };
1418
1419 /* The current queue.  */
1420 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1421
1422 /* Loaded secondary compilation units are kept in memory until they
1423    have not been referenced for the processing of this many
1424    compilation units.  Set this to zero to disable caching.  Cache
1425    sizes of up to at least twenty will improve startup time for
1426    typical inter-CU-reference binaries, at an obvious memory cost.  */
1427 static int dwarf_max_cache_age = 5;
1428 static void
1429 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1430                           struct cmd_list_element *c, const char *value)
1431 {
1432   fprintf_filtered (file, _("The upper bound on the age of cached "
1433                             "DWARF compilation units is %s.\n"),
1434                     value);
1435 }
1436 \f
1437 /* local function prototypes */
1438
1439 static const char *get_section_name (const struct dwarf2_section_info *);
1440
1441 static const char *get_section_file_name (const struct dwarf2_section_info *);
1442
1443 static void dwarf2_find_base_address (struct die_info *die,
1444                                       struct dwarf2_cu *cu);
1445
1446 static struct partial_symtab *create_partial_symtab
1447   (struct dwarf2_per_cu_data *per_cu, const char *name);
1448
1449 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1450                                         const gdb_byte *info_ptr,
1451                                         struct die_info *type_unit_die,
1452                                         int has_children, void *data);
1453
1454 static void dwarf2_build_psymtabs_hard
1455   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1456
1457 static void scan_partial_symbols (struct partial_die_info *,
1458                                   CORE_ADDR *, CORE_ADDR *,
1459                                   int, struct dwarf2_cu *);
1460
1461 static void add_partial_symbol (struct partial_die_info *,
1462                                 struct dwarf2_cu *);
1463
1464 static void add_partial_namespace (struct partial_die_info *pdi,
1465                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1466                                    int set_addrmap, struct dwarf2_cu *cu);
1467
1468 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1469                                 CORE_ADDR *highpc, int set_addrmap,
1470                                 struct dwarf2_cu *cu);
1471
1472 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1473                                      struct dwarf2_cu *cu);
1474
1475 static void add_partial_subprogram (struct partial_die_info *pdi,
1476                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1477                                     int need_pc, struct dwarf2_cu *cu);
1478
1479 static void dwarf2_read_symtab (struct partial_symtab *,
1480                                 struct objfile *);
1481
1482 static void psymtab_to_symtab_1 (struct partial_symtab *);
1483
1484 static abbrev_table_up abbrev_table_read_table
1485   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1486    sect_offset);
1487
1488 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1489
1490 static struct partial_die_info *load_partial_dies
1491   (const struct die_reader_specs *, const gdb_byte *, int);
1492
1493 static struct partial_die_info *find_partial_die (sect_offset, int,
1494                                                   struct dwarf2_cu *);
1495
1496 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1497                                        struct attribute *, struct attr_abbrev *,
1498                                        const gdb_byte *);
1499
1500 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1501
1502 static int read_1_signed_byte (bfd *, const gdb_byte *);
1503
1504 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1505
1506 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1507
1508 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1509
1510 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1511                                unsigned int *);
1512
1513 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1514
1515 static LONGEST read_checked_initial_length_and_offset
1516   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1517    unsigned int *, unsigned int *);
1518
1519 static LONGEST read_offset (bfd *, const gdb_byte *,
1520                             const struct comp_unit_head *,
1521                             unsigned int *);
1522
1523 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1524
1525 static sect_offset read_abbrev_offset
1526   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1527    struct dwarf2_section_info *, sect_offset);
1528
1529 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1530
1531 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1532
1533 static const char *read_indirect_string
1534   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1535    const struct comp_unit_head *, unsigned int *);
1536
1537 static const char *read_indirect_line_string
1538   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1539    const struct comp_unit_head *, unsigned int *);
1540
1541 static const char *read_indirect_string_at_offset
1542   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1543    LONGEST str_offset);
1544
1545 static const char *read_indirect_string_from_dwz
1546   (struct objfile *objfile, struct dwz_file *, LONGEST);
1547
1548 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1549
1550 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1551                                               const gdb_byte *,
1552                                               unsigned int *);
1553
1554 static const char *read_str_index (const struct die_reader_specs *reader,
1555                                    ULONGEST str_index);
1556
1557 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1558
1559 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1560                                       struct dwarf2_cu *);
1561
1562 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1563                                                 unsigned int);
1564
1565 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1566                                        struct dwarf2_cu *cu);
1567
1568 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1569                                struct dwarf2_cu *cu);
1570
1571 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1572
1573 static struct die_info *die_specification (struct die_info *die,
1574                                            struct dwarf2_cu **);
1575
1576 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1577                                                 struct dwarf2_cu *cu);
1578
1579 static void dwarf_decode_lines (struct line_header *, const char *,
1580                                 struct dwarf2_cu *, struct partial_symtab *,
1581                                 CORE_ADDR, int decode_mapping);
1582
1583 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1584                                   const char *);
1585
1586 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1587                                                     const char *, const char *,
1588                                                     CORE_ADDR);
1589
1590 static struct symbol *new_symbol (struct die_info *, struct type *,
1591                                   struct dwarf2_cu *, struct symbol * = NULL);
1592
1593 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1594                                 struct dwarf2_cu *);
1595
1596 static void dwarf2_const_value_attr (const struct attribute *attr,
1597                                      struct type *type,
1598                                      const char *name,
1599                                      struct obstack *obstack,
1600                                      struct dwarf2_cu *cu, LONGEST *value,
1601                                      const gdb_byte **bytes,
1602                                      struct dwarf2_locexpr_baton **baton);
1603
1604 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1605
1606 static int need_gnat_info (struct dwarf2_cu *);
1607
1608 static struct type *die_descriptive_type (struct die_info *,
1609                                           struct dwarf2_cu *);
1610
1611 static void set_descriptive_type (struct type *, struct die_info *,
1612                                   struct dwarf2_cu *);
1613
1614 static struct type *die_containing_type (struct die_info *,
1615                                          struct dwarf2_cu *);
1616
1617 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1618                                      struct dwarf2_cu *);
1619
1620 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1621
1622 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1623
1624 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1625
1626 static char *typename_concat (struct obstack *obs, const char *prefix,
1627                               const char *suffix, int physname,
1628                               struct dwarf2_cu *cu);
1629
1630 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1631
1632 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1633
1634 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1635
1636 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1637
1638 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1639
1640 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1641
1642 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1643                                struct dwarf2_cu *, struct partial_symtab *);
1644
1645 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1646    values.  Keep the items ordered with increasing constraints compliance.  */
1647 enum pc_bounds_kind
1648 {
1649   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1650   PC_BOUNDS_NOT_PRESENT,
1651
1652   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1653      were present but they do not form a valid range of PC addresses.  */
1654   PC_BOUNDS_INVALID,
1655
1656   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1657   PC_BOUNDS_RANGES,
1658
1659   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1660   PC_BOUNDS_HIGH_LOW,
1661 };
1662
1663 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1664                                                  CORE_ADDR *, CORE_ADDR *,
1665                                                  struct dwarf2_cu *,
1666                                                  struct partial_symtab *);
1667
1668 static void get_scope_pc_bounds (struct die_info *,
1669                                  CORE_ADDR *, CORE_ADDR *,
1670                                  struct dwarf2_cu *);
1671
1672 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1673                                         CORE_ADDR, struct dwarf2_cu *);
1674
1675 static void dwarf2_add_field (struct field_info *, struct die_info *,
1676                               struct dwarf2_cu *);
1677
1678 static void dwarf2_attach_fields_to_type (struct field_info *,
1679                                           struct type *, struct dwarf2_cu *);
1680
1681 static void dwarf2_add_member_fn (struct field_info *,
1682                                   struct die_info *, struct type *,
1683                                   struct dwarf2_cu *);
1684
1685 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1686                                              struct type *,
1687                                              struct dwarf2_cu *);
1688
1689 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1690
1691 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1692
1693 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1694
1695 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1696
1697 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1698
1699 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1700
1701 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1702
1703 static struct type *read_module_type (struct die_info *die,
1704                                       struct dwarf2_cu *cu);
1705
1706 static const char *namespace_name (struct die_info *die,
1707                                    int *is_anonymous, struct dwarf2_cu *);
1708
1709 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1710
1711 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1712
1713 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1714                                                        struct dwarf2_cu *);
1715
1716 static struct die_info *read_die_and_siblings_1
1717   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1718    struct die_info *);
1719
1720 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1721                                                const gdb_byte *info_ptr,
1722                                                const gdb_byte **new_info_ptr,
1723                                                struct die_info *parent);
1724
1725 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1726                                         struct die_info **, const gdb_byte *,
1727                                         int *, int);
1728
1729 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1730                                       struct die_info **, const gdb_byte *,
1731                                       int *);
1732
1733 static void process_die (struct die_info *, struct dwarf2_cu *);
1734
1735 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1736                                              struct obstack *);
1737
1738 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1739
1740 static const char *dwarf2_full_name (const char *name,
1741                                      struct die_info *die,
1742                                      struct dwarf2_cu *cu);
1743
1744 static const char *dwarf2_physname (const char *name, struct die_info *die,
1745                                     struct dwarf2_cu *cu);
1746
1747 static struct die_info *dwarf2_extension (struct die_info *die,
1748                                           struct dwarf2_cu **);
1749
1750 static const char *dwarf_tag_name (unsigned int);
1751
1752 static const char *dwarf_attr_name (unsigned int);
1753
1754 static const char *dwarf_form_name (unsigned int);
1755
1756 static const char *dwarf_bool_name (unsigned int);
1757
1758 static const char *dwarf_type_encoding_name (unsigned int);
1759
1760 static struct die_info *sibling_die (struct die_info *);
1761
1762 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1763
1764 static void dump_die_for_error (struct die_info *);
1765
1766 static void dump_die_1 (struct ui_file *, int level, int max_level,
1767                         struct die_info *);
1768
1769 /*static*/ void dump_die (struct die_info *, int max_level);
1770
1771 static void store_in_ref_table (struct die_info *,
1772                                 struct dwarf2_cu *);
1773
1774 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1775
1776 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1777
1778 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1779                                                const struct attribute *,
1780                                                struct dwarf2_cu **);
1781
1782 static struct die_info *follow_die_ref (struct die_info *,
1783                                         const struct attribute *,
1784                                         struct dwarf2_cu **);
1785
1786 static struct die_info *follow_die_sig (struct die_info *,
1787                                         const struct attribute *,
1788                                         struct dwarf2_cu **);
1789
1790 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1791                                          struct dwarf2_cu *);
1792
1793 static struct type *get_DW_AT_signature_type (struct die_info *,
1794                                               const struct attribute *,
1795                                               struct dwarf2_cu *);
1796
1797 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1798
1799 static void read_signatured_type (struct signatured_type *);
1800
1801 static int attr_to_dynamic_prop (const struct attribute *attr,
1802                                  struct die_info *die, struct dwarf2_cu *cu,
1803                                  struct dynamic_prop *prop);
1804
1805 /* memory allocation interface */
1806
1807 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1808
1809 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1810
1811 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1812
1813 static int attr_form_is_block (const struct attribute *);
1814
1815 static int attr_form_is_section_offset (const struct attribute *);
1816
1817 static int attr_form_is_constant (const struct attribute *);
1818
1819 static int attr_form_is_ref (const struct attribute *);
1820
1821 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1822                                    struct dwarf2_loclist_baton *baton,
1823                                    const struct attribute *attr);
1824
1825 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1826                                          struct symbol *sym,
1827                                          struct dwarf2_cu *cu,
1828                                          int is_block);
1829
1830 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1831                                      const gdb_byte *info_ptr,
1832                                      struct abbrev_info *abbrev);
1833
1834 static hashval_t partial_die_hash (const void *item);
1835
1836 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1837
1838 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1839   (sect_offset sect_off, unsigned int offset_in_dwz,
1840    struct dwarf2_per_objfile *dwarf2_per_objfile);
1841
1842 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1843                                    struct die_info *comp_unit_die,
1844                                    enum language pretend_language);
1845
1846 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1847
1848 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1849
1850 static struct type *set_die_type (struct die_info *, struct type *,
1851                                   struct dwarf2_cu *);
1852
1853 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1854
1855 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1856
1857 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1858                                  enum language);
1859
1860 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1861                                     enum language);
1862
1863 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1864                                     enum language);
1865
1866 static void dwarf2_add_dependence (struct dwarf2_cu *,
1867                                    struct dwarf2_per_cu_data *);
1868
1869 static void dwarf2_mark (struct dwarf2_cu *);
1870
1871 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1872
1873 static struct type *get_die_type_at_offset (sect_offset,
1874                                             struct dwarf2_per_cu_data *);
1875
1876 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1877
1878 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1879                              enum language pretend_language);
1880
1881 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1882
1883 /* Class, the destructor of which frees all allocated queue entries.  This
1884    will only have work to do if an error was thrown while processing the
1885    dwarf.  If no error was thrown then the queue entries should have all
1886    been processed, and freed, as we went along.  */
1887
1888 class dwarf2_queue_guard
1889 {
1890 public:
1891   dwarf2_queue_guard () = default;
1892
1893   /* Free any entries remaining on the queue.  There should only be
1894      entries left if we hit an error while processing the dwarf.  */
1895   ~dwarf2_queue_guard ()
1896   {
1897     struct dwarf2_queue_item *item, *last;
1898
1899     item = dwarf2_queue;
1900     while (item)
1901       {
1902         /* Anything still marked queued is likely to be in an
1903            inconsistent state, so discard it.  */
1904         if (item->per_cu->queued)
1905           {
1906             if (item->per_cu->cu != NULL)
1907               free_one_cached_comp_unit (item->per_cu);
1908             item->per_cu->queued = 0;
1909           }
1910
1911         last = item;
1912         item = item->next;
1913         xfree (last);
1914       }
1915
1916     dwarf2_queue = dwarf2_queue_tail = NULL;
1917   }
1918 };
1919
1920 /* The return type of find_file_and_directory.  Note, the enclosed
1921    string pointers are only valid while this object is valid.  */
1922
1923 struct file_and_directory
1924 {
1925   /* The filename.  This is never NULL.  */
1926   const char *name;
1927
1928   /* The compilation directory.  NULL if not known.  If we needed to
1929      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1930      points directly to the DW_AT_comp_dir string attribute owned by
1931      the obstack that owns the DIE.  */
1932   const char *comp_dir;
1933
1934   /* If we needed to build a new string for comp_dir, this is what
1935      owns the storage.  */
1936   std::string comp_dir_storage;
1937 };
1938
1939 static file_and_directory find_file_and_directory (struct die_info *die,
1940                                                    struct dwarf2_cu *cu);
1941
1942 static char *file_full_name (int file, struct line_header *lh,
1943                              const char *comp_dir);
1944
1945 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1946 enum class rcuh_kind { COMPILE, TYPE };
1947
1948 static const gdb_byte *read_and_check_comp_unit_head
1949   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1950    struct comp_unit_head *header,
1951    struct dwarf2_section_info *section,
1952    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1953    rcuh_kind section_kind);
1954
1955 static void init_cutu_and_read_dies
1956   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1957    int use_existing_cu, int keep, bool skip_partial,
1958    die_reader_func_ftype *die_reader_func, void *data);
1959
1960 static void init_cutu_and_read_dies_simple
1961   (struct dwarf2_per_cu_data *this_cu,
1962    die_reader_func_ftype *die_reader_func, void *data);
1963
1964 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1965
1966 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1967
1968 static struct dwo_unit *lookup_dwo_unit_in_dwp
1969   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1970    struct dwp_file *dwp_file, const char *comp_dir,
1971    ULONGEST signature, int is_debug_types);
1972
1973 static struct dwp_file *get_dwp_file
1974   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1975
1976 static struct dwo_unit *lookup_dwo_comp_unit
1977   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1978
1979 static struct dwo_unit *lookup_dwo_type_unit
1980   (struct signatured_type *, const char *, const char *);
1981
1982 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1983
1984 static void free_dwo_file (struct dwo_file *);
1985
1986 /* A unique_ptr helper to free a dwo_file.  */
1987
1988 struct dwo_file_deleter
1989 {
1990   void operator() (struct dwo_file *df) const
1991   {
1992     free_dwo_file (df);
1993   }
1994 };
1995
1996 /* A unique pointer to a dwo_file.  */
1997
1998 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1999
2000 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2001
2002 static void check_producer (struct dwarf2_cu *cu);
2003
2004 static void free_line_header_voidp (void *arg);
2005 \f
2006 /* Various complaints about symbol reading that don't abort the process.  */
2007
2008 static void
2009 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2010 {
2011   complaint (_("statement list doesn't fit in .debug_line section"));
2012 }
2013
2014 static void
2015 dwarf2_debug_line_missing_file_complaint (void)
2016 {
2017   complaint (_(".debug_line section has line data without a file"));
2018 }
2019
2020 static void
2021 dwarf2_debug_line_missing_end_sequence_complaint (void)
2022 {
2023   complaint (_(".debug_line section has line "
2024                "program sequence without an end"));
2025 }
2026
2027 static void
2028 dwarf2_complex_location_expr_complaint (void)
2029 {
2030   complaint (_("location expression too complex"));
2031 }
2032
2033 static void
2034 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2035                                               int arg3)
2036 {
2037   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2038              arg1, arg2, arg3);
2039 }
2040
2041 static void
2042 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2043 {
2044   complaint (_("debug info runs off end of %s section"
2045                " [in module %s]"),
2046              get_section_name (section),
2047              get_section_file_name (section));
2048 }
2049
2050 static void
2051 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2052 {
2053   complaint (_("macro debug info contains a "
2054                "malformed macro definition:\n`%s'"),
2055              arg1);
2056 }
2057
2058 static void
2059 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2060 {
2061   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2062              arg1, arg2);
2063 }
2064
2065 /* Hash function for line_header_hash.  */
2066
2067 static hashval_t
2068 line_header_hash (const struct line_header *ofs)
2069 {
2070   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2071 }
2072
2073 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2074
2075 static hashval_t
2076 line_header_hash_voidp (const void *item)
2077 {
2078   const struct line_header *ofs = (const struct line_header *) item;
2079
2080   return line_header_hash (ofs);
2081 }
2082
2083 /* Equality function for line_header_hash.  */
2084
2085 static int
2086 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2087 {
2088   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2089   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2090
2091   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2092           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2093 }
2094
2095 \f
2096
2097 /* Read the given attribute value as an address, taking the attribute's
2098    form into account.  */
2099
2100 static CORE_ADDR
2101 attr_value_as_address (struct attribute *attr)
2102 {
2103   CORE_ADDR addr;
2104
2105   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2106     {
2107       /* Aside from a few clearly defined exceptions, attributes that
2108          contain an address must always be in DW_FORM_addr form.
2109          Unfortunately, some compilers happen to be violating this
2110          requirement by encoding addresses using other forms, such
2111          as DW_FORM_data4 for example.  For those broken compilers,
2112          we try to do our best, without any guarantee of success,
2113          to interpret the address correctly.  It would also be nice
2114          to generate a complaint, but that would require us to maintain
2115          a list of legitimate cases where a non-address form is allowed,
2116          as well as update callers to pass in at least the CU's DWARF
2117          version.  This is more overhead than what we're willing to
2118          expand for a pretty rare case.  */
2119       addr = DW_UNSND (attr);
2120     }
2121   else
2122     addr = DW_ADDR (attr);
2123
2124   return addr;
2125 }
2126
2127 /* See declaration.  */
2128
2129 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2130                                         const dwarf2_debug_sections *names)
2131   : objfile (objfile_)
2132 {
2133   if (names == NULL)
2134     names = &dwarf2_elf_names;
2135
2136   bfd *obfd = objfile->obfd;
2137
2138   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2139     locate_sections (obfd, sec, *names);
2140 }
2141
2142 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2143
2144 dwarf2_per_objfile::~dwarf2_per_objfile ()
2145 {
2146   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2147   free_cached_comp_units ();
2148
2149   if (quick_file_names_table)
2150     htab_delete (quick_file_names_table);
2151
2152   if (line_header_hash)
2153     htab_delete (line_header_hash);
2154
2155   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2156     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2157
2158   for (signatured_type *sig_type : all_type_units)
2159     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2160
2161   VEC_free (dwarf2_section_info_def, types);
2162
2163   if (dwo_files != NULL)
2164     free_dwo_files (dwo_files, objfile);
2165
2166   /* Everything else should be on the objfile obstack.  */
2167 }
2168
2169 /* See declaration.  */
2170
2171 void
2172 dwarf2_per_objfile::free_cached_comp_units ()
2173 {
2174   dwarf2_per_cu_data *per_cu = read_in_chain;
2175   dwarf2_per_cu_data **last_chain = &read_in_chain;
2176   while (per_cu != NULL)
2177     {
2178       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2179
2180       delete per_cu->cu;
2181       *last_chain = next_cu;
2182       per_cu = next_cu;
2183     }
2184 }
2185
2186 /* A helper class that calls free_cached_comp_units on
2187    destruction.  */
2188
2189 class free_cached_comp_units
2190 {
2191 public:
2192
2193   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2194     : m_per_objfile (per_objfile)
2195   {
2196   }
2197
2198   ~free_cached_comp_units ()
2199   {
2200     m_per_objfile->free_cached_comp_units ();
2201   }
2202
2203   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2204
2205 private:
2206
2207   dwarf2_per_objfile *m_per_objfile;
2208 };
2209
2210 /* Try to locate the sections we need for DWARF 2 debugging
2211    information and return true if we have enough to do something.
2212    NAMES points to the dwarf2 section names, or is NULL if the standard
2213    ELF names are used.  */
2214
2215 int
2216 dwarf2_has_info (struct objfile *objfile,
2217                  const struct dwarf2_debug_sections *names)
2218 {
2219   if (objfile->flags & OBJF_READNEVER)
2220     return 0;
2221
2222   struct dwarf2_per_objfile *dwarf2_per_objfile
2223     = get_dwarf2_per_objfile (objfile);
2224
2225   if (dwarf2_per_objfile == NULL)
2226     {
2227       /* Initialize per-objfile state.  */
2228       dwarf2_per_objfile
2229         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2230                                                                      names);
2231       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2232     }
2233   return (!dwarf2_per_objfile->info.is_virtual
2234           && dwarf2_per_objfile->info.s.section != NULL
2235           && !dwarf2_per_objfile->abbrev.is_virtual
2236           && dwarf2_per_objfile->abbrev.s.section != NULL);
2237 }
2238
2239 /* Return the containing section of virtual section SECTION.  */
2240
2241 static struct dwarf2_section_info *
2242 get_containing_section (const struct dwarf2_section_info *section)
2243 {
2244   gdb_assert (section->is_virtual);
2245   return section->s.containing_section;
2246 }
2247
2248 /* Return the bfd owner of SECTION.  */
2249
2250 static struct bfd *
2251 get_section_bfd_owner (const struct dwarf2_section_info *section)
2252 {
2253   if (section->is_virtual)
2254     {
2255       section = get_containing_section (section);
2256       gdb_assert (!section->is_virtual);
2257     }
2258   return section->s.section->owner;
2259 }
2260
2261 /* Return the bfd section of SECTION.
2262    Returns NULL if the section is not present.  */
2263
2264 static asection *
2265 get_section_bfd_section (const struct dwarf2_section_info *section)
2266 {
2267   if (section->is_virtual)
2268     {
2269       section = get_containing_section (section);
2270       gdb_assert (!section->is_virtual);
2271     }
2272   return section->s.section;
2273 }
2274
2275 /* Return the name of SECTION.  */
2276
2277 static const char *
2278 get_section_name (const struct dwarf2_section_info *section)
2279 {
2280   asection *sectp = get_section_bfd_section (section);
2281
2282   gdb_assert (sectp != NULL);
2283   return bfd_section_name (get_section_bfd_owner (section), sectp);
2284 }
2285
2286 /* Return the name of the file SECTION is in.  */
2287
2288 static const char *
2289 get_section_file_name (const struct dwarf2_section_info *section)
2290 {
2291   bfd *abfd = get_section_bfd_owner (section);
2292
2293   return bfd_get_filename (abfd);
2294 }
2295
2296 /* Return the id of SECTION.
2297    Returns 0 if SECTION doesn't exist.  */
2298
2299 static int
2300 get_section_id (const struct dwarf2_section_info *section)
2301 {
2302   asection *sectp = get_section_bfd_section (section);
2303
2304   if (sectp == NULL)
2305     return 0;
2306   return sectp->id;
2307 }
2308
2309 /* Return the flags of SECTION.
2310    SECTION (or containing section if this is a virtual section) must exist.  */
2311
2312 static int
2313 get_section_flags (const struct dwarf2_section_info *section)
2314 {
2315   asection *sectp = get_section_bfd_section (section);
2316
2317   gdb_assert (sectp != NULL);
2318   return bfd_get_section_flags (sectp->owner, sectp);
2319 }
2320
2321 /* When loading sections, we look either for uncompressed section or for
2322    compressed section names.  */
2323
2324 static int
2325 section_is_p (const char *section_name,
2326               const struct dwarf2_section_names *names)
2327 {
2328   if (names->normal != NULL
2329       && strcmp (section_name, names->normal) == 0)
2330     return 1;
2331   if (names->compressed != NULL
2332       && strcmp (section_name, names->compressed) == 0)
2333     return 1;
2334   return 0;
2335 }
2336
2337 /* See declaration.  */
2338
2339 void
2340 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2341                                      const dwarf2_debug_sections &names)
2342 {
2343   flagword aflag = bfd_get_section_flags (abfd, sectp);
2344
2345   if ((aflag & SEC_HAS_CONTENTS) == 0)
2346     {
2347     }
2348   else if (section_is_p (sectp->name, &names.info))
2349     {
2350       this->info.s.section = sectp;
2351       this->info.size = bfd_get_section_size (sectp);
2352     }
2353   else if (section_is_p (sectp->name, &names.abbrev))
2354     {
2355       this->abbrev.s.section = sectp;
2356       this->abbrev.size = bfd_get_section_size (sectp);
2357     }
2358   else if (section_is_p (sectp->name, &names.line))
2359     {
2360       this->line.s.section = sectp;
2361       this->line.size = bfd_get_section_size (sectp);
2362     }
2363   else if (section_is_p (sectp->name, &names.loc))
2364     {
2365       this->loc.s.section = sectp;
2366       this->loc.size = bfd_get_section_size (sectp);
2367     }
2368   else if (section_is_p (sectp->name, &names.loclists))
2369     {
2370       this->loclists.s.section = sectp;
2371       this->loclists.size = bfd_get_section_size (sectp);
2372     }
2373   else if (section_is_p (sectp->name, &names.macinfo))
2374     {
2375       this->macinfo.s.section = sectp;
2376       this->macinfo.size = bfd_get_section_size (sectp);
2377     }
2378   else if (section_is_p (sectp->name, &names.macro))
2379     {
2380       this->macro.s.section = sectp;
2381       this->macro.size = bfd_get_section_size (sectp);
2382     }
2383   else if (section_is_p (sectp->name, &names.str))
2384     {
2385       this->str.s.section = sectp;
2386       this->str.size = bfd_get_section_size (sectp);
2387     }
2388   else if (section_is_p (sectp->name, &names.line_str))
2389     {
2390       this->line_str.s.section = sectp;
2391       this->line_str.size = bfd_get_section_size (sectp);
2392     }
2393   else if (section_is_p (sectp->name, &names.addr))
2394     {
2395       this->addr.s.section = sectp;
2396       this->addr.size = bfd_get_section_size (sectp);
2397     }
2398   else if (section_is_p (sectp->name, &names.frame))
2399     {
2400       this->frame.s.section = sectp;
2401       this->frame.size = bfd_get_section_size (sectp);
2402     }
2403   else if (section_is_p (sectp->name, &names.eh_frame))
2404     {
2405       this->eh_frame.s.section = sectp;
2406       this->eh_frame.size = bfd_get_section_size (sectp);
2407     }
2408   else if (section_is_p (sectp->name, &names.ranges))
2409     {
2410       this->ranges.s.section = sectp;
2411       this->ranges.size = bfd_get_section_size (sectp);
2412     }
2413   else if (section_is_p (sectp->name, &names.rnglists))
2414     {
2415       this->rnglists.s.section = sectp;
2416       this->rnglists.size = bfd_get_section_size (sectp);
2417     }
2418   else if (section_is_p (sectp->name, &names.types))
2419     {
2420       struct dwarf2_section_info type_section;
2421
2422       memset (&type_section, 0, sizeof (type_section));
2423       type_section.s.section = sectp;
2424       type_section.size = bfd_get_section_size (sectp);
2425
2426       VEC_safe_push (dwarf2_section_info_def, this->types,
2427                      &type_section);
2428     }
2429   else if (section_is_p (sectp->name, &names.gdb_index))
2430     {
2431       this->gdb_index.s.section = sectp;
2432       this->gdb_index.size = bfd_get_section_size (sectp);
2433     }
2434   else if (section_is_p (sectp->name, &names.debug_names))
2435     {
2436       this->debug_names.s.section = sectp;
2437       this->debug_names.size = bfd_get_section_size (sectp);
2438     }
2439   else if (section_is_p (sectp->name, &names.debug_aranges))
2440     {
2441       this->debug_aranges.s.section = sectp;
2442       this->debug_aranges.size = bfd_get_section_size (sectp);
2443     }
2444
2445   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2446       && bfd_section_vma (abfd, sectp) == 0)
2447     this->has_section_at_zero = true;
2448 }
2449
2450 /* A helper function that decides whether a section is empty,
2451    or not present.  */
2452
2453 static int
2454 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2455 {
2456   if (section->is_virtual)
2457     return section->size == 0;
2458   return section->s.section == NULL || section->size == 0;
2459 }
2460
2461 /* See dwarf2read.h.  */
2462
2463 void
2464 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2465 {
2466   asection *sectp;
2467   bfd *abfd;
2468   gdb_byte *buf, *retbuf;
2469
2470   if (info->readin)
2471     return;
2472   info->buffer = NULL;
2473   info->readin = 1;
2474
2475   if (dwarf2_section_empty_p (info))
2476     return;
2477
2478   sectp = get_section_bfd_section (info);
2479
2480   /* If this is a virtual section we need to read in the real one first.  */
2481   if (info->is_virtual)
2482     {
2483       struct dwarf2_section_info *containing_section =
2484         get_containing_section (info);
2485
2486       gdb_assert (sectp != NULL);
2487       if ((sectp->flags & SEC_RELOC) != 0)
2488         {
2489           error (_("Dwarf Error: DWP format V2 with relocations is not"
2490                    " supported in section %s [in module %s]"),
2491                  get_section_name (info), get_section_file_name (info));
2492         }
2493       dwarf2_read_section (objfile, containing_section);
2494       /* Other code should have already caught virtual sections that don't
2495          fit.  */
2496       gdb_assert (info->virtual_offset + info->size
2497                   <= containing_section->size);
2498       /* If the real section is empty or there was a problem reading the
2499          section we shouldn't get here.  */
2500       gdb_assert (containing_section->buffer != NULL);
2501       info->buffer = containing_section->buffer + info->virtual_offset;
2502       return;
2503     }
2504
2505   /* If the section has relocations, we must read it ourselves.
2506      Otherwise we attach it to the BFD.  */
2507   if ((sectp->flags & SEC_RELOC) == 0)
2508     {
2509       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2510       return;
2511     }
2512
2513   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2514   info->buffer = buf;
2515
2516   /* When debugging .o files, we may need to apply relocations; see
2517      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2518      We never compress sections in .o files, so we only need to
2519      try this when the section is not compressed.  */
2520   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2521   if (retbuf != NULL)
2522     {
2523       info->buffer = retbuf;
2524       return;
2525     }
2526
2527   abfd = get_section_bfd_owner (info);
2528   gdb_assert (abfd != NULL);
2529
2530   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2531       || bfd_bread (buf, info->size, abfd) != info->size)
2532     {
2533       error (_("Dwarf Error: Can't read DWARF data"
2534                " in section %s [in module %s]"),
2535              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2536     }
2537 }
2538
2539 /* A helper function that returns the size of a section in a safe way.
2540    If you are positive that the section has been read before using the
2541    size, then it is safe to refer to the dwarf2_section_info object's
2542    "size" field directly.  In other cases, you must call this
2543    function, because for compressed sections the size field is not set
2544    correctly until the section has been read.  */
2545
2546 static bfd_size_type
2547 dwarf2_section_size (struct objfile *objfile,
2548                      struct dwarf2_section_info *info)
2549 {
2550   if (!info->readin)
2551     dwarf2_read_section (objfile, info);
2552   return info->size;
2553 }
2554
2555 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2556    SECTION_NAME.  */
2557
2558 void
2559 dwarf2_get_section_info (struct objfile *objfile,
2560                          enum dwarf2_section_enum sect,
2561                          asection **sectp, const gdb_byte **bufp,
2562                          bfd_size_type *sizep)
2563 {
2564   struct dwarf2_per_objfile *data
2565     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2566                                                   dwarf2_objfile_data_key);
2567   struct dwarf2_section_info *info;
2568
2569   /* We may see an objfile without any DWARF, in which case we just
2570      return nothing.  */
2571   if (data == NULL)
2572     {
2573       *sectp = NULL;
2574       *bufp = NULL;
2575       *sizep = 0;
2576       return;
2577     }
2578   switch (sect)
2579     {
2580     case DWARF2_DEBUG_FRAME:
2581       info = &data->frame;
2582       break;
2583     case DWARF2_EH_FRAME:
2584       info = &data->eh_frame;
2585       break;
2586     default:
2587       gdb_assert_not_reached ("unexpected section");
2588     }
2589
2590   dwarf2_read_section (objfile, info);
2591
2592   *sectp = get_section_bfd_section (info);
2593   *bufp = info->buffer;
2594   *sizep = info->size;
2595 }
2596
2597 /* A helper function to find the sections for a .dwz file.  */
2598
2599 static void
2600 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2601 {
2602   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2603
2604   /* Note that we only support the standard ELF names, because .dwz
2605      is ELF-only (at the time of writing).  */
2606   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2607     {
2608       dwz_file->abbrev.s.section = sectp;
2609       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2610     }
2611   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2612     {
2613       dwz_file->info.s.section = sectp;
2614       dwz_file->info.size = bfd_get_section_size (sectp);
2615     }
2616   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2617     {
2618       dwz_file->str.s.section = sectp;
2619       dwz_file->str.size = bfd_get_section_size (sectp);
2620     }
2621   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2622     {
2623       dwz_file->line.s.section = sectp;
2624       dwz_file->line.size = bfd_get_section_size (sectp);
2625     }
2626   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2627     {
2628       dwz_file->macro.s.section = sectp;
2629       dwz_file->macro.size = bfd_get_section_size (sectp);
2630     }
2631   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2632     {
2633       dwz_file->gdb_index.s.section = sectp;
2634       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2635     }
2636   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2637     {
2638       dwz_file->debug_names.s.section = sectp;
2639       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2640     }
2641 }
2642
2643 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2644    there is no .gnu_debugaltlink section in the file.  Error if there
2645    is such a section but the file cannot be found.  */
2646
2647 static struct dwz_file *
2648 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2649 {
2650   const char *filename;
2651   bfd_size_type buildid_len_arg;
2652   size_t buildid_len;
2653   bfd_byte *buildid;
2654
2655   if (dwarf2_per_objfile->dwz_file != NULL)
2656     return dwarf2_per_objfile->dwz_file.get ();
2657
2658   bfd_set_error (bfd_error_no_error);
2659   gdb::unique_xmalloc_ptr<char> data
2660     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2661                                   &buildid_len_arg, &buildid));
2662   if (data == NULL)
2663     {
2664       if (bfd_get_error () == bfd_error_no_error)
2665         return NULL;
2666       error (_("could not read '.gnu_debugaltlink' section: %s"),
2667              bfd_errmsg (bfd_get_error ()));
2668     }
2669
2670   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2671
2672   buildid_len = (size_t) buildid_len_arg;
2673
2674   filename = data.get ();
2675
2676   std::string abs_storage;
2677   if (!IS_ABSOLUTE_PATH (filename))
2678     {
2679       gdb::unique_xmalloc_ptr<char> abs
2680         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2681
2682       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2683       filename = abs_storage.c_str ();
2684     }
2685
2686   /* First try the file name given in the section.  If that doesn't
2687      work, try to use the build-id instead.  */
2688   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2689   if (dwz_bfd != NULL)
2690     {
2691       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2692         dwz_bfd.release ();
2693     }
2694
2695   if (dwz_bfd == NULL)
2696     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2697
2698   if (dwz_bfd == NULL)
2699     error (_("could not find '.gnu_debugaltlink' file for %s"),
2700            objfile_name (dwarf2_per_objfile->objfile));
2701
2702   std::unique_ptr<struct dwz_file> result
2703     (new struct dwz_file (std::move (dwz_bfd)));
2704
2705   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2706                          result.get ());
2707
2708   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2709                             result->dwz_bfd.get ());
2710   dwarf2_per_objfile->dwz_file = std::move (result);
2711   return dwarf2_per_objfile->dwz_file.get ();
2712 }
2713 \f
2714 /* DWARF quick_symbols_functions support.  */
2715
2716 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2717    unique line tables, so we maintain a separate table of all .debug_line
2718    derived entries to support the sharing.
2719    All the quick functions need is the list of file names.  We discard the
2720    line_header when we're done and don't need to record it here.  */
2721 struct quick_file_names
2722 {
2723   /* The data used to construct the hash key.  */
2724   struct stmt_list_hash hash;
2725
2726   /* The number of entries in file_names, real_names.  */
2727   unsigned int num_file_names;
2728
2729   /* The file names from the line table, after being run through
2730      file_full_name.  */
2731   const char **file_names;
2732
2733   /* The file names from the line table after being run through
2734      gdb_realpath.  These are computed lazily.  */
2735   const char **real_names;
2736 };
2737
2738 /* When using the index (and thus not using psymtabs), each CU has an
2739    object of this type.  This is used to hold information needed by
2740    the various "quick" methods.  */
2741 struct dwarf2_per_cu_quick_data
2742 {
2743   /* The file table.  This can be NULL if there was no file table
2744      or it's currently not read in.
2745      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2746   struct quick_file_names *file_names;
2747
2748   /* The corresponding symbol table.  This is NULL if symbols for this
2749      CU have not yet been read.  */
2750   struct compunit_symtab *compunit_symtab;
2751
2752   /* A temporary mark bit used when iterating over all CUs in
2753      expand_symtabs_matching.  */
2754   unsigned int mark : 1;
2755
2756   /* True if we've tried to read the file table and found there isn't one.
2757      There will be no point in trying to read it again next time.  */
2758   unsigned int no_file_data : 1;
2759 };
2760
2761 /* Utility hash function for a stmt_list_hash.  */
2762
2763 static hashval_t
2764 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2765 {
2766   hashval_t v = 0;
2767
2768   if (stmt_list_hash->dwo_unit != NULL)
2769     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2770   v += to_underlying (stmt_list_hash->line_sect_off);
2771   return v;
2772 }
2773
2774 /* Utility equality function for a stmt_list_hash.  */
2775
2776 static int
2777 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2778                     const struct stmt_list_hash *rhs)
2779 {
2780   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2781     return 0;
2782   if (lhs->dwo_unit != NULL
2783       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2784     return 0;
2785
2786   return lhs->line_sect_off == rhs->line_sect_off;
2787 }
2788
2789 /* Hash function for a quick_file_names.  */
2790
2791 static hashval_t
2792 hash_file_name_entry (const void *e)
2793 {
2794   const struct quick_file_names *file_data
2795     = (const struct quick_file_names *) e;
2796
2797   return hash_stmt_list_entry (&file_data->hash);
2798 }
2799
2800 /* Equality function for a quick_file_names.  */
2801
2802 static int
2803 eq_file_name_entry (const void *a, const void *b)
2804 {
2805   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2806   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2807
2808   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2809 }
2810
2811 /* Delete function for a quick_file_names.  */
2812
2813 static void
2814 delete_file_name_entry (void *e)
2815 {
2816   struct quick_file_names *file_data = (struct quick_file_names *) e;
2817   int i;
2818
2819   for (i = 0; i < file_data->num_file_names; ++i)
2820     {
2821       xfree ((void*) file_data->file_names[i]);
2822       if (file_data->real_names)
2823         xfree ((void*) file_data->real_names[i]);
2824     }
2825
2826   /* The space for the struct itself lives on objfile_obstack,
2827      so we don't free it here.  */
2828 }
2829
2830 /* Create a quick_file_names hash table.  */
2831
2832 static htab_t
2833 create_quick_file_names_table (unsigned int nr_initial_entries)
2834 {
2835   return htab_create_alloc (nr_initial_entries,
2836                             hash_file_name_entry, eq_file_name_entry,
2837                             delete_file_name_entry, xcalloc, xfree);
2838 }
2839
2840 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2841    have to be created afterwards.  You should call age_cached_comp_units after
2842    processing PER_CU->CU.  dw2_setup must have been already called.  */
2843
2844 static void
2845 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2846 {
2847   if (per_cu->is_debug_types)
2848     load_full_type_unit (per_cu);
2849   else
2850     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2851
2852   if (per_cu->cu == NULL)
2853     return;  /* Dummy CU.  */
2854
2855   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2856 }
2857
2858 /* Read in the symbols for PER_CU.  */
2859
2860 static void
2861 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2862 {
2863   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2864
2865   /* Skip type_unit_groups, reading the type units they contain
2866      is handled elsewhere.  */
2867   if (IS_TYPE_UNIT_GROUP (per_cu))
2868     return;
2869
2870   /* The destructor of dwarf2_queue_guard frees any entries left on
2871      the queue.  After this point we're guaranteed to leave this function
2872      with the dwarf queue empty.  */
2873   dwarf2_queue_guard q_guard;
2874
2875   if (dwarf2_per_objfile->using_index
2876       ? per_cu->v.quick->compunit_symtab == NULL
2877       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2878     {
2879       queue_comp_unit (per_cu, language_minimal);
2880       load_cu (per_cu, skip_partial);
2881
2882       /* If we just loaded a CU from a DWO, and we're working with an index
2883          that may badly handle TUs, load all the TUs in that DWO as well.
2884          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2885       if (!per_cu->is_debug_types
2886           && per_cu->cu != NULL
2887           && per_cu->cu->dwo_unit != NULL
2888           && dwarf2_per_objfile->index_table != NULL
2889           && dwarf2_per_objfile->index_table->version <= 7
2890           /* DWP files aren't supported yet.  */
2891           && get_dwp_file (dwarf2_per_objfile) == NULL)
2892         queue_and_load_all_dwo_tus (per_cu);
2893     }
2894
2895   process_queue (dwarf2_per_objfile);
2896
2897   /* Age the cache, releasing compilation units that have not
2898      been used recently.  */
2899   age_cached_comp_units (dwarf2_per_objfile);
2900 }
2901
2902 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2903    the objfile from which this CU came.  Returns the resulting symbol
2904    table.  */
2905
2906 static struct compunit_symtab *
2907 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2908 {
2909   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2910
2911   gdb_assert (dwarf2_per_objfile->using_index);
2912   if (!per_cu->v.quick->compunit_symtab)
2913     {
2914       free_cached_comp_units freer (dwarf2_per_objfile);
2915       scoped_restore decrementer = increment_reading_symtab ();
2916       dw2_do_instantiate_symtab (per_cu, skip_partial);
2917       process_cu_includes (dwarf2_per_objfile);
2918     }
2919
2920   return per_cu->v.quick->compunit_symtab;
2921 }
2922
2923 /* See declaration.  */
2924
2925 dwarf2_per_cu_data *
2926 dwarf2_per_objfile::get_cutu (int index)
2927 {
2928   if (index >= this->all_comp_units.size ())
2929     {
2930       index -= this->all_comp_units.size ();
2931       gdb_assert (index < this->all_type_units.size ());
2932       return &this->all_type_units[index]->per_cu;
2933     }
2934
2935   return this->all_comp_units[index];
2936 }
2937
2938 /* See declaration.  */
2939
2940 dwarf2_per_cu_data *
2941 dwarf2_per_objfile::get_cu (int index)
2942 {
2943   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2944
2945   return this->all_comp_units[index];
2946 }
2947
2948 /* See declaration.  */
2949
2950 signatured_type *
2951 dwarf2_per_objfile::get_tu (int index)
2952 {
2953   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2954
2955   return this->all_type_units[index];
2956 }
2957
2958 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2959    objfile_obstack, and constructed with the specified field
2960    values.  */
2961
2962 static dwarf2_per_cu_data *
2963 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2964                           struct dwarf2_section_info *section,
2965                           int is_dwz,
2966                           sect_offset sect_off, ULONGEST length)
2967 {
2968   struct objfile *objfile = dwarf2_per_objfile->objfile;
2969   dwarf2_per_cu_data *the_cu
2970     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2971                      struct dwarf2_per_cu_data);
2972   the_cu->sect_off = sect_off;
2973   the_cu->length = length;
2974   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2975   the_cu->section = section;
2976   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2977                                    struct dwarf2_per_cu_quick_data);
2978   the_cu->is_dwz = is_dwz;
2979   return the_cu;
2980 }
2981
2982 /* A helper for create_cus_from_index that handles a given list of
2983    CUs.  */
2984
2985 static void
2986 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2987                             const gdb_byte *cu_list, offset_type n_elements,
2988                             struct dwarf2_section_info *section,
2989                             int is_dwz)
2990 {
2991   for (offset_type i = 0; i < n_elements; i += 2)
2992     {
2993       gdb_static_assert (sizeof (ULONGEST) >= 8);
2994
2995       sect_offset sect_off
2996         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2997       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2998       cu_list += 2 * 8;
2999
3000       dwarf2_per_cu_data *per_cu
3001         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3002                                      sect_off, length);
3003       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3004     }
3005 }
3006
3007 /* Read the CU list from the mapped index, and use it to create all
3008    the CU objects for this objfile.  */
3009
3010 static void
3011 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3012                        const gdb_byte *cu_list, offset_type cu_list_elements,
3013                        const gdb_byte *dwz_list, offset_type dwz_elements)
3014 {
3015   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3016   dwarf2_per_objfile->all_comp_units.reserve
3017     ((cu_list_elements + dwz_elements) / 2);
3018
3019   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3020                               &dwarf2_per_objfile->info, 0);
3021
3022   if (dwz_elements == 0)
3023     return;
3024
3025   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3026   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3027                               &dwz->info, 1);
3028 }
3029
3030 /* Create the signatured type hash table from the index.  */
3031
3032 static void
3033 create_signatured_type_table_from_index
3034   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3035    struct dwarf2_section_info *section,
3036    const gdb_byte *bytes,
3037    offset_type elements)
3038 {
3039   struct objfile *objfile = dwarf2_per_objfile->objfile;
3040
3041   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3042   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3043
3044   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3045
3046   for (offset_type i = 0; i < elements; i += 3)
3047     {
3048       struct signatured_type *sig_type;
3049       ULONGEST signature;
3050       void **slot;
3051       cu_offset type_offset_in_tu;
3052
3053       gdb_static_assert (sizeof (ULONGEST) >= 8);
3054       sect_offset sect_off
3055         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3056       type_offset_in_tu
3057         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3058                                                 BFD_ENDIAN_LITTLE);
3059       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3060       bytes += 3 * 8;
3061
3062       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3063                                  struct signatured_type);
3064       sig_type->signature = signature;
3065       sig_type->type_offset_in_tu = type_offset_in_tu;
3066       sig_type->per_cu.is_debug_types = 1;
3067       sig_type->per_cu.section = section;
3068       sig_type->per_cu.sect_off = sect_off;
3069       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3070       sig_type->per_cu.v.quick
3071         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3072                           struct dwarf2_per_cu_quick_data);
3073
3074       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3075       *slot = sig_type;
3076
3077       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3078     }
3079
3080   dwarf2_per_objfile->signatured_types = sig_types_hash;
3081 }
3082
3083 /* Create the signatured type hash table from .debug_names.  */
3084
3085 static void
3086 create_signatured_type_table_from_debug_names
3087   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3088    const mapped_debug_names &map,
3089    struct dwarf2_section_info *section,
3090    struct dwarf2_section_info *abbrev_section)
3091 {
3092   struct objfile *objfile = dwarf2_per_objfile->objfile;
3093
3094   dwarf2_read_section (objfile, section);
3095   dwarf2_read_section (objfile, abbrev_section);
3096
3097   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3098   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3099
3100   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3101
3102   for (uint32_t i = 0; i < map.tu_count; ++i)
3103     {
3104       struct signatured_type *sig_type;
3105       void **slot;
3106
3107       sect_offset sect_off
3108         = (sect_offset) (extract_unsigned_integer
3109                          (map.tu_table_reordered + i * map.offset_size,
3110                           map.offset_size,
3111                           map.dwarf5_byte_order));
3112
3113       comp_unit_head cu_header;
3114       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3115                                      abbrev_section,
3116                                      section->buffer + to_underlying (sect_off),
3117                                      rcuh_kind::TYPE);
3118
3119       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3120                                  struct signatured_type);
3121       sig_type->signature = cu_header.signature;
3122       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3123       sig_type->per_cu.is_debug_types = 1;
3124       sig_type->per_cu.section = section;
3125       sig_type->per_cu.sect_off = sect_off;
3126       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3127       sig_type->per_cu.v.quick
3128         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3129                           struct dwarf2_per_cu_quick_data);
3130
3131       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3132       *slot = sig_type;
3133
3134       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3135     }
3136
3137   dwarf2_per_objfile->signatured_types = sig_types_hash;
3138 }
3139
3140 /* Read the address map data from the mapped index, and use it to
3141    populate the objfile's psymtabs_addrmap.  */
3142
3143 static void
3144 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3145                            struct mapped_index *index)
3146 {
3147   struct objfile *objfile = dwarf2_per_objfile->objfile;
3148   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3149   const gdb_byte *iter, *end;
3150   struct addrmap *mutable_map;
3151   CORE_ADDR baseaddr;
3152
3153   auto_obstack temp_obstack;
3154
3155   mutable_map = addrmap_create_mutable (&temp_obstack);
3156
3157   iter = index->address_table.data ();
3158   end = iter + index->address_table.size ();
3159
3160   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3161
3162   while (iter < end)
3163     {
3164       ULONGEST hi, lo, cu_index;
3165       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3166       iter += 8;
3167       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3168       iter += 8;
3169       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3170       iter += 4;
3171
3172       if (lo > hi)
3173         {
3174           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3175                      hex_string (lo), hex_string (hi));
3176           continue;
3177         }
3178
3179       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3180         {
3181           complaint (_(".gdb_index address table has invalid CU number %u"),
3182                      (unsigned) cu_index);
3183           continue;
3184         }
3185
3186       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3187       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3188       addrmap_set_empty (mutable_map, lo, hi - 1,
3189                          dwarf2_per_objfile->get_cu (cu_index));
3190     }
3191
3192   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3193                                                     &objfile->objfile_obstack);
3194 }
3195
3196 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3197    populate the objfile's psymtabs_addrmap.  */
3198
3199 static void
3200 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3201                              struct dwarf2_section_info *section)
3202 {
3203   struct objfile *objfile = dwarf2_per_objfile->objfile;
3204   bfd *abfd = objfile->obfd;
3205   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3206   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3207                                        SECT_OFF_TEXT (objfile));
3208
3209   auto_obstack temp_obstack;
3210   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3211
3212   std::unordered_map<sect_offset,
3213                      dwarf2_per_cu_data *,
3214                      gdb::hash_enum<sect_offset>>
3215     debug_info_offset_to_per_cu;
3216   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3217     {
3218       const auto insertpair
3219         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3220       if (!insertpair.second)
3221         {
3222           warning (_("Section .debug_aranges in %s has duplicate "
3223                      "debug_info_offset %s, ignoring .debug_aranges."),
3224                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3225           return;
3226         }
3227     }
3228
3229   dwarf2_read_section (objfile, section);
3230
3231   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3232
3233   const gdb_byte *addr = section->buffer;
3234
3235   while (addr < section->buffer + section->size)
3236     {
3237       const gdb_byte *const entry_addr = addr;
3238       unsigned int bytes_read;
3239
3240       const LONGEST entry_length = read_initial_length (abfd, addr,
3241                                                         &bytes_read);
3242       addr += bytes_read;
3243
3244       const gdb_byte *const entry_end = addr + entry_length;
3245       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3246       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3247       if (addr + entry_length > section->buffer + section->size)
3248         {
3249           warning (_("Section .debug_aranges in %s entry at offset %zu "
3250                      "length %s exceeds section length %s, "
3251                      "ignoring .debug_aranges."),
3252                    objfile_name (objfile), entry_addr - section->buffer,
3253                    plongest (bytes_read + entry_length),
3254                    pulongest (section->size));
3255           return;
3256         }
3257
3258       /* The version number.  */
3259       const uint16_t version = read_2_bytes (abfd, addr);
3260       addr += 2;
3261       if (version != 2)
3262         {
3263           warning (_("Section .debug_aranges in %s entry at offset %zu "
3264                      "has unsupported version %d, ignoring .debug_aranges."),
3265                    objfile_name (objfile), entry_addr - section->buffer,
3266                    version);
3267           return;
3268         }
3269
3270       const uint64_t debug_info_offset
3271         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3272       addr += offset_size;
3273       const auto per_cu_it
3274         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3275       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3276         {
3277           warning (_("Section .debug_aranges in %s entry at offset %zu "
3278                      "debug_info_offset %s does not exists, "
3279                      "ignoring .debug_aranges."),
3280                    objfile_name (objfile), entry_addr - section->buffer,
3281                    pulongest (debug_info_offset));
3282           return;
3283         }
3284       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3285
3286       const uint8_t address_size = *addr++;
3287       if (address_size < 1 || address_size > 8)
3288         {
3289           warning (_("Section .debug_aranges in %s entry at offset %zu "
3290                      "address_size %u is invalid, ignoring .debug_aranges."),
3291                    objfile_name (objfile), entry_addr - section->buffer,
3292                    address_size);
3293           return;
3294         }
3295
3296       const uint8_t segment_selector_size = *addr++;
3297       if (segment_selector_size != 0)
3298         {
3299           warning (_("Section .debug_aranges in %s entry at offset %zu "
3300                      "segment_selector_size %u is not supported, "
3301                      "ignoring .debug_aranges."),
3302                    objfile_name (objfile), entry_addr - section->buffer,
3303                    segment_selector_size);
3304           return;
3305         }
3306
3307       /* Must pad to an alignment boundary that is twice the address
3308          size.  It is undocumented by the DWARF standard but GCC does
3309          use it.  */
3310       for (size_t padding = ((-(addr - section->buffer))
3311                              & (2 * address_size - 1));
3312            padding > 0; padding--)
3313         if (*addr++ != 0)
3314           {
3315             warning (_("Section .debug_aranges in %s entry at offset %zu "
3316                        "padding is not zero, ignoring .debug_aranges."),
3317                      objfile_name (objfile), entry_addr - section->buffer);
3318             return;
3319           }
3320
3321       for (;;)
3322         {
3323           if (addr + 2 * address_size > entry_end)
3324             {
3325               warning (_("Section .debug_aranges in %s entry at offset %zu "
3326                          "address list is not properly terminated, "
3327                          "ignoring .debug_aranges."),
3328                        objfile_name (objfile), entry_addr - section->buffer);
3329               return;
3330             }
3331           ULONGEST start = extract_unsigned_integer (addr, address_size,
3332                                                      dwarf5_byte_order);
3333           addr += address_size;
3334           ULONGEST length = extract_unsigned_integer (addr, address_size,
3335                                                       dwarf5_byte_order);
3336           addr += address_size;
3337           if (start == 0 && length == 0)
3338             break;
3339           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3340             {
3341               /* Symbol was eliminated due to a COMDAT group.  */
3342               continue;
3343             }
3344           ULONGEST end = start + length;
3345           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3346                    - baseaddr);
3347           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3348                  - baseaddr);
3349           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3350         }
3351     }
3352
3353   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3354                                                     &objfile->objfile_obstack);
3355 }
3356
3357 /* Find a slot in the mapped index INDEX for the object named NAME.
3358    If NAME is found, set *VEC_OUT to point to the CU vector in the
3359    constant pool and return true.  If NAME cannot be found, return
3360    false.  */
3361
3362 static bool
3363 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3364                           offset_type **vec_out)
3365 {
3366   offset_type hash;
3367   offset_type slot, step;
3368   int (*cmp) (const char *, const char *);
3369
3370   gdb::unique_xmalloc_ptr<char> without_params;
3371   if (current_language->la_language == language_cplus
3372       || current_language->la_language == language_fortran
3373       || current_language->la_language == language_d)
3374     {
3375       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3376          not contain any.  */
3377
3378       if (strchr (name, '(') != NULL)
3379         {
3380           without_params = cp_remove_params (name);
3381
3382           if (without_params != NULL)
3383             name = without_params.get ();
3384         }
3385     }
3386
3387   /* Index version 4 did not support case insensitive searches.  But the
3388      indices for case insensitive languages are built in lowercase, therefore
3389      simulate our NAME being searched is also lowercased.  */
3390   hash = mapped_index_string_hash ((index->version == 4
3391                                     && case_sensitivity == case_sensitive_off
3392                                     ? 5 : index->version),
3393                                    name);
3394
3395   slot = hash & (index->symbol_table.size () - 1);
3396   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3397   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3398
3399   for (;;)
3400     {
3401       const char *str;
3402
3403       const auto &bucket = index->symbol_table[slot];
3404       if (bucket.name == 0 && bucket.vec == 0)
3405         return false;
3406
3407       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3408       if (!cmp (name, str))
3409         {
3410           *vec_out = (offset_type *) (index->constant_pool
3411                                       + MAYBE_SWAP (bucket.vec));
3412           return true;
3413         }
3414
3415       slot = (slot + step) & (index->symbol_table.size () - 1);
3416     }
3417 }
3418
3419 /* A helper function that reads the .gdb_index from BUFFER and fills
3420    in MAP.  FILENAME is the name of the file containing the data;
3421    it is used for error reporting.  DEPRECATED_OK is true if it is
3422    ok to use deprecated sections.
3423
3424    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3425    out parameters that are filled in with information about the CU and
3426    TU lists in the section.
3427
3428    Returns true if all went well, false otherwise.  */
3429
3430 static bool
3431 read_gdb_index_from_buffer (struct objfile *objfile,
3432                             const char *filename,
3433                             bool deprecated_ok,
3434                             gdb::array_view<const gdb_byte> buffer,
3435                             struct mapped_index *map,
3436                             const gdb_byte **cu_list,
3437                             offset_type *cu_list_elements,
3438                             const gdb_byte **types_list,
3439                             offset_type *types_list_elements)
3440 {
3441   const gdb_byte *addr = &buffer[0];
3442
3443   /* Version check.  */
3444   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3445   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3446      causes the index to behave very poorly for certain requests.  Version 3
3447      contained incomplete addrmap.  So, it seems better to just ignore such
3448      indices.  */
3449   if (version < 4)
3450     {
3451       static int warning_printed = 0;
3452       if (!warning_printed)
3453         {
3454           warning (_("Skipping obsolete .gdb_index section in %s."),
3455                    filename);
3456           warning_printed = 1;
3457         }
3458       return 0;
3459     }
3460   /* Index version 4 uses a different hash function than index version
3461      5 and later.
3462
3463      Versions earlier than 6 did not emit psymbols for inlined
3464      functions.  Using these files will cause GDB not to be able to
3465      set breakpoints on inlined functions by name, so we ignore these
3466      indices unless the user has done
3467      "set use-deprecated-index-sections on".  */
3468   if (version < 6 && !deprecated_ok)
3469     {
3470       static int warning_printed = 0;
3471       if (!warning_printed)
3472         {
3473           warning (_("\
3474 Skipping deprecated .gdb_index section in %s.\n\
3475 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3476 to use the section anyway."),
3477                    filename);
3478           warning_printed = 1;
3479         }
3480       return 0;
3481     }
3482   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3483      of the TU (for symbols coming from TUs),
3484      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3485      Plus gold-generated indices can have duplicate entries for global symbols,
3486      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3487      These are just performance bugs, and we can't distinguish gdb-generated
3488      indices from gold-generated ones, so issue no warning here.  */
3489
3490   /* Indexes with higher version than the one supported by GDB may be no
3491      longer backward compatible.  */
3492   if (version > 8)
3493     return 0;
3494
3495   map->version = version;
3496
3497   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3498
3499   int i = 0;
3500   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3501   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3502                        / 8);
3503   ++i;
3504
3505   *types_list = addr + MAYBE_SWAP (metadata[i]);
3506   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3507                            - MAYBE_SWAP (metadata[i]))
3508                           / 8);
3509   ++i;
3510
3511   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3512   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3513   map->address_table
3514     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3515   ++i;
3516
3517   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3518   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3519   map->symbol_table
3520     = gdb::array_view<mapped_index::symbol_table_slot>
3521        ((mapped_index::symbol_table_slot *) symbol_table,
3522         (mapped_index::symbol_table_slot *) symbol_table_end);
3523
3524   ++i;
3525   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3526
3527   return 1;
3528 }
3529
3530 /* Callback types for dwarf2_read_gdb_index.  */
3531
3532 typedef gdb::function_view
3533     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3534     get_gdb_index_contents_ftype;
3535 typedef gdb::function_view
3536     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3537     get_gdb_index_contents_dwz_ftype;
3538
3539 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3540    elements of all the CUs and return 1.  Otherwise, return 0.  */
3541
3542 static int
3543 dwarf2_read_gdb_index
3544   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3545    get_gdb_index_contents_ftype get_gdb_index_contents,
3546    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3547 {
3548   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3549   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3550   struct dwz_file *dwz;
3551   struct objfile *objfile = dwarf2_per_objfile->objfile;
3552
3553   gdb::array_view<const gdb_byte> main_index_contents
3554     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3555
3556   if (main_index_contents.empty ())
3557     return 0;
3558
3559   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3560   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3561                                    use_deprecated_index_sections,
3562                                    main_index_contents, map.get (), &cu_list,
3563                                    &cu_list_elements, &types_list,
3564                                    &types_list_elements))
3565     return 0;
3566
3567   /* Don't use the index if it's empty.  */
3568   if (map->symbol_table.empty ())
3569     return 0;
3570
3571   /* If there is a .dwz file, read it so we can get its CU list as
3572      well.  */
3573   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3574   if (dwz != NULL)
3575     {
3576       struct mapped_index dwz_map;
3577       const gdb_byte *dwz_types_ignore;
3578       offset_type dwz_types_elements_ignore;
3579
3580       gdb::array_view<const gdb_byte> dwz_index_content
3581         = get_gdb_index_contents_dwz (objfile, dwz);
3582
3583       if (dwz_index_content.empty ())
3584         return 0;
3585
3586       if (!read_gdb_index_from_buffer (objfile,
3587                                        bfd_get_filename (dwz->dwz_bfd), 1,
3588                                        dwz_index_content, &dwz_map,
3589                                        &dwz_list, &dwz_list_elements,
3590                                        &dwz_types_ignore,
3591                                        &dwz_types_elements_ignore))
3592         {
3593           warning (_("could not read '.gdb_index' section from %s; skipping"),
3594                    bfd_get_filename (dwz->dwz_bfd));
3595           return 0;
3596         }
3597     }
3598
3599   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3600                          dwz_list, dwz_list_elements);
3601
3602   if (types_list_elements)
3603     {
3604       struct dwarf2_section_info *section;
3605
3606       /* We can only handle a single .debug_types when we have an
3607          index.  */
3608       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3609         return 0;
3610
3611       section = VEC_index (dwarf2_section_info_def,
3612                            dwarf2_per_objfile->types, 0);
3613
3614       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3615                                                types_list, types_list_elements);
3616     }
3617
3618   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3619
3620   dwarf2_per_objfile->index_table = std::move (map);
3621   dwarf2_per_objfile->using_index = 1;
3622   dwarf2_per_objfile->quick_file_names_table =
3623     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3624
3625   return 1;
3626 }
3627
3628 /* die_reader_func for dw2_get_file_names.  */
3629
3630 static void
3631 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3632                            const gdb_byte *info_ptr,
3633                            struct die_info *comp_unit_die,
3634                            int has_children,
3635                            void *data)
3636 {
3637   struct dwarf2_cu *cu = reader->cu;
3638   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3639   struct dwarf2_per_objfile *dwarf2_per_objfile
3640     = cu->per_cu->dwarf2_per_objfile;
3641   struct objfile *objfile = dwarf2_per_objfile->objfile;
3642   struct dwarf2_per_cu_data *lh_cu;
3643   struct attribute *attr;
3644   int i;
3645   void **slot;
3646   struct quick_file_names *qfn;
3647
3648   gdb_assert (! this_cu->is_debug_types);
3649
3650   /* Our callers never want to match partial units -- instead they
3651      will match the enclosing full CU.  */
3652   if (comp_unit_die->tag == DW_TAG_partial_unit)
3653     {
3654       this_cu->v.quick->no_file_data = 1;
3655       return;
3656     }
3657
3658   lh_cu = this_cu;
3659   slot = NULL;
3660
3661   line_header_up lh;
3662   sect_offset line_offset {};
3663
3664   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3665   if (attr)
3666     {
3667       struct quick_file_names find_entry;
3668
3669       line_offset = (sect_offset) DW_UNSND (attr);
3670
3671       /* We may have already read in this line header (TU line header sharing).
3672          If we have we're done.  */
3673       find_entry.hash.dwo_unit = cu->dwo_unit;
3674       find_entry.hash.line_sect_off = line_offset;
3675       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3676                              &find_entry, INSERT);
3677       if (*slot != NULL)
3678         {
3679           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3680           return;
3681         }
3682
3683       lh = dwarf_decode_line_header (line_offset, cu);
3684     }
3685   if (lh == NULL)
3686     {
3687       lh_cu->v.quick->no_file_data = 1;
3688       return;
3689     }
3690
3691   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3692   qfn->hash.dwo_unit = cu->dwo_unit;
3693   qfn->hash.line_sect_off = line_offset;
3694   gdb_assert (slot != NULL);
3695   *slot = qfn;
3696
3697   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3698
3699   qfn->num_file_names = lh->file_names.size ();
3700   qfn->file_names =
3701     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3702   for (i = 0; i < lh->file_names.size (); ++i)
3703     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3704   qfn->real_names = NULL;
3705
3706   lh_cu->v.quick->file_names = qfn;
3707 }
3708
3709 /* A helper for the "quick" functions which attempts to read the line
3710    table for THIS_CU.  */
3711
3712 static struct quick_file_names *
3713 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3714 {
3715   /* This should never be called for TUs.  */
3716   gdb_assert (! this_cu->is_debug_types);
3717   /* Nor type unit groups.  */
3718   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3719
3720   if (this_cu->v.quick->file_names != NULL)
3721     return this_cu->v.quick->file_names;
3722   /* If we know there is no line data, no point in looking again.  */
3723   if (this_cu->v.quick->no_file_data)
3724     return NULL;
3725
3726   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3727
3728   if (this_cu->v.quick->no_file_data)
3729     return NULL;
3730   return this_cu->v.quick->file_names;
3731 }
3732
3733 /* A helper for the "quick" functions which computes and caches the
3734    real path for a given file name from the line table.  */
3735
3736 static const char *
3737 dw2_get_real_path (struct objfile *objfile,
3738                    struct quick_file_names *qfn, int index)
3739 {
3740   if (qfn->real_names == NULL)
3741     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3742                                       qfn->num_file_names, const char *);
3743
3744   if (qfn->real_names[index] == NULL)
3745     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3746
3747   return qfn->real_names[index];
3748 }
3749
3750 static struct symtab *
3751 dw2_find_last_source_symtab (struct objfile *objfile)
3752 {
3753   struct dwarf2_per_objfile *dwarf2_per_objfile
3754     = get_dwarf2_per_objfile (objfile);
3755   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3756   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3757
3758   if (cust == NULL)
3759     return NULL;
3760
3761   return compunit_primary_filetab (cust);
3762 }
3763
3764 /* Traversal function for dw2_forget_cached_source_info.  */
3765
3766 static int
3767 dw2_free_cached_file_names (void **slot, void *info)
3768 {
3769   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3770
3771   if (file_data->real_names)
3772     {
3773       int i;
3774
3775       for (i = 0; i < file_data->num_file_names; ++i)
3776         {
3777           xfree ((void*) file_data->real_names[i]);
3778           file_data->real_names[i] = NULL;
3779         }
3780     }
3781
3782   return 1;
3783 }
3784
3785 static void
3786 dw2_forget_cached_source_info (struct objfile *objfile)
3787 {
3788   struct dwarf2_per_objfile *dwarf2_per_objfile
3789     = get_dwarf2_per_objfile (objfile);
3790
3791   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3792                           dw2_free_cached_file_names, NULL);
3793 }
3794
3795 /* Helper function for dw2_map_symtabs_matching_filename that expands
3796    the symtabs and calls the iterator.  */
3797
3798 static int
3799 dw2_map_expand_apply (struct objfile *objfile,
3800                       struct dwarf2_per_cu_data *per_cu,
3801                       const char *name, const char *real_path,
3802                       gdb::function_view<bool (symtab *)> callback)
3803 {
3804   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3805
3806   /* Don't visit already-expanded CUs.  */
3807   if (per_cu->v.quick->compunit_symtab)
3808     return 0;
3809
3810   /* This may expand more than one symtab, and we want to iterate over
3811      all of them.  */
3812   dw2_instantiate_symtab (per_cu, false);
3813
3814   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3815                                     last_made, callback);
3816 }
3817
3818 /* Implementation of the map_symtabs_matching_filename method.  */
3819
3820 static bool
3821 dw2_map_symtabs_matching_filename
3822   (struct objfile *objfile, const char *name, const char *real_path,
3823    gdb::function_view<bool (symtab *)> callback)
3824 {
3825   const char *name_basename = lbasename (name);
3826   struct dwarf2_per_objfile *dwarf2_per_objfile
3827     = get_dwarf2_per_objfile (objfile);
3828
3829   /* The rule is CUs specify all the files, including those used by
3830      any TU, so there's no need to scan TUs here.  */
3831
3832   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3833     {
3834       /* We only need to look at symtabs not already expanded.  */
3835       if (per_cu->v.quick->compunit_symtab)
3836         continue;
3837
3838       quick_file_names *file_data = dw2_get_file_names (per_cu);
3839       if (file_data == NULL)
3840         continue;
3841
3842       for (int j = 0; j < file_data->num_file_names; ++j)
3843         {
3844           const char *this_name = file_data->file_names[j];
3845           const char *this_real_name;
3846
3847           if (compare_filenames_for_search (this_name, name))
3848             {
3849               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3850                                         callback))
3851                 return true;
3852               continue;
3853             }
3854
3855           /* Before we invoke realpath, which can get expensive when many
3856              files are involved, do a quick comparison of the basenames.  */
3857           if (! basenames_may_differ
3858               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3859             continue;
3860
3861           this_real_name = dw2_get_real_path (objfile, file_data, j);
3862           if (compare_filenames_for_search (this_real_name, name))
3863             {
3864               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3865                                         callback))
3866                 return true;
3867               continue;
3868             }
3869
3870           if (real_path != NULL)
3871             {
3872               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3873               gdb_assert (IS_ABSOLUTE_PATH (name));
3874               if (this_real_name != NULL
3875                   && FILENAME_CMP (real_path, this_real_name) == 0)
3876                 {
3877                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3878                                             callback))
3879                     return true;
3880                   continue;
3881                 }
3882             }
3883         }
3884     }
3885
3886   return false;
3887 }
3888
3889 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3890
3891 struct dw2_symtab_iterator
3892 {
3893   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3894   struct dwarf2_per_objfile *dwarf2_per_objfile;
3895   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3896   int want_specific_block;
3897   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3898      Unused if !WANT_SPECIFIC_BLOCK.  */
3899   int block_index;
3900   /* The kind of symbol we're looking for.  */
3901   domain_enum domain;
3902   /* The list of CUs from the index entry of the symbol,
3903      or NULL if not found.  */
3904   offset_type *vec;
3905   /* The next element in VEC to look at.  */
3906   int next;
3907   /* The number of elements in VEC, or zero if there is no match.  */
3908   int length;
3909   /* Have we seen a global version of the symbol?
3910      If so we can ignore all further global instances.
3911      This is to work around gold/15646, inefficient gold-generated
3912      indices.  */
3913   int global_seen;
3914 };
3915
3916 /* Initialize the index symtab iterator ITER.
3917    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3918    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3919
3920 static void
3921 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3922                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3923                       int want_specific_block,
3924                       int block_index,
3925                       domain_enum domain,
3926                       const char *name)
3927 {
3928   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3929   iter->want_specific_block = want_specific_block;
3930   iter->block_index = block_index;
3931   iter->domain = domain;
3932   iter->next = 0;
3933   iter->global_seen = 0;
3934
3935   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3936
3937   /* index is NULL if OBJF_READNOW.  */
3938   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3939     iter->length = MAYBE_SWAP (*iter->vec);
3940   else
3941     {
3942       iter->vec = NULL;
3943       iter->length = 0;
3944     }
3945 }
3946
3947 /* Return the next matching CU or NULL if there are no more.  */
3948
3949 static struct dwarf2_per_cu_data *
3950 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3951 {
3952   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3953
3954   for ( ; iter->next < iter->length; ++iter->next)
3955     {
3956       offset_type cu_index_and_attrs =
3957         MAYBE_SWAP (iter->vec[iter->next + 1]);
3958       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3959       int want_static = iter->block_index != GLOBAL_BLOCK;
3960       /* This value is only valid for index versions >= 7.  */
3961       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3962       gdb_index_symbol_kind symbol_kind =
3963         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3964       /* Only check the symbol attributes if they're present.
3965          Indices prior to version 7 don't record them,
3966          and indices >= 7 may elide them for certain symbols
3967          (gold does this).  */
3968       int attrs_valid =
3969         (dwarf2_per_objfile->index_table->version >= 7
3970          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3971
3972       /* Don't crash on bad data.  */
3973       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3974                        + dwarf2_per_objfile->all_type_units.size ()))
3975         {
3976           complaint (_(".gdb_index entry has bad CU index"
3977                        " [in module %s]"),
3978                      objfile_name (dwarf2_per_objfile->objfile));
3979           continue;
3980         }
3981
3982       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3983
3984       /* Skip if already read in.  */
3985       if (per_cu->v.quick->compunit_symtab)
3986         continue;
3987
3988       /* Check static vs global.  */
3989       if (attrs_valid)
3990         {
3991           if (iter->want_specific_block
3992               && want_static != is_static)
3993             continue;
3994           /* Work around gold/15646.  */
3995           if (!is_static && iter->global_seen)
3996             continue;
3997           if (!is_static)
3998             iter->global_seen = 1;
3999         }
4000
4001       /* Only check the symbol's kind if it has one.  */
4002       if (attrs_valid)
4003         {
4004           switch (iter->domain)
4005             {
4006             case VAR_DOMAIN:
4007               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4008                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4009                   /* Some types are also in VAR_DOMAIN.  */
4010                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4011                 continue;
4012               break;
4013             case STRUCT_DOMAIN:
4014               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4015                 continue;
4016               break;
4017             case LABEL_DOMAIN:
4018               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4019                 continue;
4020               break;
4021             default:
4022               break;
4023             }
4024         }
4025
4026       ++iter->next;
4027       return per_cu;
4028     }
4029
4030   return NULL;
4031 }
4032
4033 static struct compunit_symtab *
4034 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4035                    const char *name, domain_enum domain)
4036 {
4037   struct compunit_symtab *stab_best = NULL;
4038   struct dwarf2_per_objfile *dwarf2_per_objfile
4039     = get_dwarf2_per_objfile (objfile);
4040
4041   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4042
4043   struct dw2_symtab_iterator iter;
4044   struct dwarf2_per_cu_data *per_cu;
4045
4046   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4047
4048   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4049     {
4050       struct symbol *sym, *with_opaque = NULL;
4051       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4052       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4053       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4054
4055       sym = block_find_symbol (block, name, domain,
4056                                block_find_non_opaque_type_preferred,
4057                                &with_opaque);
4058
4059       /* Some caution must be observed with overloaded functions
4060          and methods, since the index will not contain any overload
4061          information (but NAME might contain it).  */
4062
4063       if (sym != NULL
4064           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4065         return stab;
4066       if (with_opaque != NULL
4067           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4068         stab_best = stab;
4069
4070       /* Keep looking through other CUs.  */
4071     }
4072
4073   return stab_best;
4074 }
4075
4076 static void
4077 dw2_print_stats (struct objfile *objfile)
4078 {
4079   struct dwarf2_per_objfile *dwarf2_per_objfile
4080     = get_dwarf2_per_objfile (objfile);
4081   int total = (dwarf2_per_objfile->all_comp_units.size ()
4082                + dwarf2_per_objfile->all_type_units.size ());
4083   int count = 0;
4084
4085   for (int i = 0; i < total; ++i)
4086     {
4087       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4088
4089       if (!per_cu->v.quick->compunit_symtab)
4090         ++count;
4091     }
4092   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4093   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4094 }
4095
4096 /* This dumps minimal information about the index.
4097    It is called via "mt print objfiles".
4098    One use is to verify .gdb_index has been loaded by the
4099    gdb.dwarf2/gdb-index.exp testcase.  */
4100
4101 static void
4102 dw2_dump (struct objfile *objfile)
4103 {
4104   struct dwarf2_per_objfile *dwarf2_per_objfile
4105     = get_dwarf2_per_objfile (objfile);
4106
4107   gdb_assert (dwarf2_per_objfile->using_index);
4108   printf_filtered (".gdb_index:");
4109   if (dwarf2_per_objfile->index_table != NULL)
4110     {
4111       printf_filtered (" version %d\n",
4112                        dwarf2_per_objfile->index_table->version);
4113     }
4114   else
4115     printf_filtered (" faked for \"readnow\"\n");
4116   printf_filtered ("\n");
4117 }
4118
4119 static void
4120 dw2_expand_symtabs_for_function (struct objfile *objfile,
4121                                  const char *func_name)
4122 {
4123   struct dwarf2_per_objfile *dwarf2_per_objfile
4124     = get_dwarf2_per_objfile (objfile);
4125
4126   struct dw2_symtab_iterator iter;
4127   struct dwarf2_per_cu_data *per_cu;
4128
4129   /* Note: It doesn't matter what we pass for block_index here.  */
4130   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4131                         func_name);
4132
4133   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4134     dw2_instantiate_symtab (per_cu, false);
4135
4136 }
4137
4138 static void
4139 dw2_expand_all_symtabs (struct objfile *objfile)
4140 {
4141   struct dwarf2_per_objfile *dwarf2_per_objfile
4142     = get_dwarf2_per_objfile (objfile);
4143   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4144                      + dwarf2_per_objfile->all_type_units.size ());
4145
4146   for (int i = 0; i < total_units; ++i)
4147     {
4148       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4149
4150       /* We don't want to directly expand a partial CU, because if we
4151          read it with the wrong language, then assertion failures can
4152          be triggered later on.  See PR symtab/23010.  So, tell
4153          dw2_instantiate_symtab to skip partial CUs -- any important
4154          partial CU will be read via DW_TAG_imported_unit anyway.  */
4155       dw2_instantiate_symtab (per_cu, true);
4156     }
4157 }
4158
4159 static void
4160 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4161                                   const char *fullname)
4162 {
4163   struct dwarf2_per_objfile *dwarf2_per_objfile
4164     = get_dwarf2_per_objfile (objfile);
4165
4166   /* We don't need to consider type units here.
4167      This is only called for examining code, e.g. expand_line_sal.
4168      There can be an order of magnitude (or more) more type units
4169      than comp units, and we avoid them if we can.  */
4170
4171   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4172     {
4173       /* We only need to look at symtabs not already expanded.  */
4174       if (per_cu->v.quick->compunit_symtab)
4175         continue;
4176
4177       quick_file_names *file_data = dw2_get_file_names (per_cu);
4178       if (file_data == NULL)
4179         continue;
4180
4181       for (int j = 0; j < file_data->num_file_names; ++j)
4182         {
4183           const char *this_fullname = file_data->file_names[j];
4184
4185           if (filename_cmp (this_fullname, fullname) == 0)
4186             {
4187               dw2_instantiate_symtab (per_cu, false);
4188               break;
4189             }
4190         }
4191     }
4192 }
4193
4194 static void
4195 dw2_map_matching_symbols (struct objfile *objfile,
4196                           const char * name, domain_enum domain,
4197                           int global,
4198                           int (*callback) (struct block *,
4199                                            struct symbol *, void *),
4200                           void *data, symbol_name_match_type match,
4201                           symbol_compare_ftype *ordered_compare)
4202 {
4203   /* Currently unimplemented; used for Ada.  The function can be called if the
4204      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4205      does not look for non-Ada symbols this function should just return.  */
4206 }
4207
4208 /* Symbol name matcher for .gdb_index names.
4209
4210    Symbol names in .gdb_index have a few particularities:
4211
4212    - There's no indication of which is the language of each symbol.
4213
4214      Since each language has its own symbol name matching algorithm,
4215      and we don't know which language is the right one, we must match
4216      each symbol against all languages.  This would be a potential
4217      performance problem if it were not mitigated by the
4218      mapped_index::name_components lookup table, which significantly
4219      reduces the number of times we need to call into this matcher,
4220      making it a non-issue.
4221
4222    - Symbol names in the index have no overload (parameter)
4223      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4224      appear as "foo" in the index, for example.
4225
4226      This means that the lookup names passed to the symbol name
4227      matcher functions must have no parameter information either
4228      because (e.g.) symbol search name "foo" does not match
4229      lookup-name "foo(int)" [while swapping search name for lookup
4230      name would match].
4231 */
4232 class gdb_index_symbol_name_matcher
4233 {
4234 public:
4235   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4236   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4237
4238   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4239      Returns true if any matcher matches.  */
4240   bool matches (const char *symbol_name);
4241
4242 private:
4243   /* A reference to the lookup name we're matching against.  */
4244   const lookup_name_info &m_lookup_name;
4245
4246   /* A vector holding all the different symbol name matchers, for all
4247      languages.  */
4248   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4249 };
4250
4251 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4252   (const lookup_name_info &lookup_name)
4253     : m_lookup_name (lookup_name)
4254 {
4255   /* Prepare the vector of comparison functions upfront, to avoid
4256      doing the same work for each symbol.  Care is taken to avoid
4257      matching with the same matcher more than once if/when multiple
4258      languages use the same matcher function.  */
4259   auto &matchers = m_symbol_name_matcher_funcs;
4260   matchers.reserve (nr_languages);
4261
4262   matchers.push_back (default_symbol_name_matcher);
4263
4264   for (int i = 0; i < nr_languages; i++)
4265     {
4266       const language_defn *lang = language_def ((enum language) i);
4267       symbol_name_matcher_ftype *name_matcher
4268         = get_symbol_name_matcher (lang, m_lookup_name);
4269
4270       /* Don't insert the same comparison routine more than once.
4271          Note that we do this linear walk instead of a seemingly
4272          cheaper sorted insert, or use a std::set or something like
4273          that, because relative order of function addresses is not
4274          stable.  This is not a problem in practice because the number
4275          of supported languages is low, and the cost here is tiny
4276          compared to the number of searches we'll do afterwards using
4277          this object.  */
4278       if (name_matcher != default_symbol_name_matcher
4279           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4280               == matchers.end ()))
4281         matchers.push_back (name_matcher);
4282     }
4283 }
4284
4285 bool
4286 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4287 {
4288   for (auto matches_name : m_symbol_name_matcher_funcs)
4289     if (matches_name (symbol_name, m_lookup_name, NULL))
4290       return true;
4291
4292   return false;
4293 }
4294
4295 /* Starting from a search name, return the string that finds the upper
4296    bound of all strings that start with SEARCH_NAME in a sorted name
4297    list.  Returns the empty string to indicate that the upper bound is
4298    the end of the list.  */
4299
4300 static std::string
4301 make_sort_after_prefix_name (const char *search_name)
4302 {
4303   /* When looking to complete "func", we find the upper bound of all
4304      symbols that start with "func" by looking for where we'd insert
4305      the closest string that would follow "func" in lexicographical
4306      order.  Usually, that's "func"-with-last-character-incremented,
4307      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4308      will be UTF-8 multi-byte sequences, but we can't be certain.
4309      Especially mind the 0xff character, which is a valid character in
4310      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4311      rule out compilers allowing it in identifiers.  Note that
4312      conveniently, strcmp/strcasecmp are specified to compare
4313      characters interpreted as unsigned char.  So what we do is treat
4314      the whole string as a base 256 number composed of a sequence of
4315      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4316      to 0, and carries 1 to the following more-significant position.
4317      If the very first character in SEARCH_NAME ends up incremented
4318      and carries/overflows, then the upper bound is the end of the
4319      list.  The string after the empty string is also the empty
4320      string.
4321
4322      Some examples of this operation:
4323
4324        SEARCH_NAME  => "+1" RESULT
4325
4326        "abc"              => "abd"
4327        "ab\xff"           => "ac"
4328        "\xff" "a" "\xff"  => "\xff" "b"
4329        "\xff"             => ""
4330        "\xff\xff"         => ""
4331        ""                 => ""
4332
4333      Then, with these symbols for example:
4334
4335       func
4336       func1
4337       fund
4338
4339      completing "func" looks for symbols between "func" and
4340      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4341      which finds "func" and "func1", but not "fund".
4342
4343      And with:
4344
4345       funcÿ     (Latin1 'ÿ' [0xff])
4346       funcÿ1
4347       fund
4348
4349      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4350      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4351
4352      And with:
4353
4354       ÿÿ        (Latin1 'ÿ' [0xff])
4355       ÿÿ1
4356
4357      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4358      the end of the list.
4359   */
4360   std::string after = search_name;
4361   while (!after.empty () && (unsigned char) after.back () == 0xff)
4362     after.pop_back ();
4363   if (!after.empty ())
4364     after.back () = (unsigned char) after.back () + 1;
4365   return after;
4366 }
4367
4368 /* See declaration.  */
4369
4370 std::pair<std::vector<name_component>::const_iterator,
4371           std::vector<name_component>::const_iterator>
4372 mapped_index_base::find_name_components_bounds
4373   (const lookup_name_info &lookup_name_without_params) const
4374 {
4375   auto *name_cmp
4376     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4377
4378   const char *cplus
4379     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4380
4381   /* Comparison function object for lower_bound that matches against a
4382      given symbol name.  */
4383   auto lookup_compare_lower = [&] (const name_component &elem,
4384                                    const char *name)
4385     {
4386       const char *elem_qualified = this->symbol_name_at (elem.idx);
4387       const char *elem_name = elem_qualified + elem.name_offset;
4388       return name_cmp (elem_name, name) < 0;
4389     };
4390
4391   /* Comparison function object for upper_bound that matches against a
4392      given symbol name.  */
4393   auto lookup_compare_upper = [&] (const char *name,
4394                                    const name_component &elem)
4395     {
4396       const char *elem_qualified = this->symbol_name_at (elem.idx);
4397       const char *elem_name = elem_qualified + elem.name_offset;
4398       return name_cmp (name, elem_name) < 0;
4399     };
4400
4401   auto begin = this->name_components.begin ();
4402   auto end = this->name_components.end ();
4403
4404   /* Find the lower bound.  */
4405   auto lower = [&] ()
4406     {
4407       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4408         return begin;
4409       else
4410         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4411     } ();
4412
4413   /* Find the upper bound.  */
4414   auto upper = [&] ()
4415     {
4416       if (lookup_name_without_params.completion_mode ())
4417         {
4418           /* In completion mode, we want UPPER to point past all
4419              symbols names that have the same prefix.  I.e., with
4420              these symbols, and completing "func":
4421
4422               function        << lower bound
4423               function1
4424               other_function  << upper bound
4425
4426              We find the upper bound by looking for the insertion
4427              point of "func"-with-last-character-incremented,
4428              i.e. "fund".  */
4429           std::string after = make_sort_after_prefix_name (cplus);
4430           if (after.empty ())
4431             return end;
4432           return std::lower_bound (lower, end, after.c_str (),
4433                                    lookup_compare_lower);
4434         }
4435       else
4436         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4437     } ();
4438
4439   return {lower, upper};
4440 }
4441
4442 /* See declaration.  */
4443
4444 void
4445 mapped_index_base::build_name_components ()
4446 {
4447   if (!this->name_components.empty ())
4448     return;
4449
4450   this->name_components_casing = case_sensitivity;
4451   auto *name_cmp
4452     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4453
4454   /* The code below only knows how to break apart components of C++
4455      symbol names (and other languages that use '::' as
4456      namespace/module separator).  If we add support for wild matching
4457      to some language that uses some other operator (E.g., Ada, Go and
4458      D use '.'), then we'll need to try splitting the symbol name
4459      according to that language too.  Note that Ada does support wild
4460      matching, but doesn't currently support .gdb_index.  */
4461   auto count = this->symbol_name_count ();
4462   for (offset_type idx = 0; idx < count; idx++)
4463     {
4464       if (this->symbol_name_slot_invalid (idx))
4465         continue;
4466
4467       const char *name = this->symbol_name_at (idx);
4468
4469       /* Add each name component to the name component table.  */
4470       unsigned int previous_len = 0;
4471       for (unsigned int current_len = cp_find_first_component (name);
4472            name[current_len] != '\0';
4473            current_len += cp_find_first_component (name + current_len))
4474         {
4475           gdb_assert (name[current_len] == ':');
4476           this->name_components.push_back ({previous_len, idx});
4477           /* Skip the '::'.  */
4478           current_len += 2;
4479           previous_len = current_len;
4480         }
4481       this->name_components.push_back ({previous_len, idx});
4482     }
4483
4484   /* Sort name_components elements by name.  */
4485   auto name_comp_compare = [&] (const name_component &left,
4486                                 const name_component &right)
4487     {
4488       const char *left_qualified = this->symbol_name_at (left.idx);
4489       const char *right_qualified = this->symbol_name_at (right.idx);
4490
4491       const char *left_name = left_qualified + left.name_offset;
4492       const char *right_name = right_qualified + right.name_offset;
4493
4494       return name_cmp (left_name, right_name) < 0;
4495     };
4496
4497   std::sort (this->name_components.begin (),
4498              this->name_components.end (),
4499              name_comp_compare);
4500 }
4501
4502 /* Helper for dw2_expand_symtabs_matching that works with a
4503    mapped_index_base instead of the containing objfile.  This is split
4504    to a separate function in order to be able to unit test the
4505    name_components matching using a mock mapped_index_base.  For each
4506    symbol name that matches, calls MATCH_CALLBACK, passing it the
4507    symbol's index in the mapped_index_base symbol table.  */
4508
4509 static void
4510 dw2_expand_symtabs_matching_symbol
4511   (mapped_index_base &index,
4512    const lookup_name_info &lookup_name_in,
4513    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4514    enum search_domain kind,
4515    gdb::function_view<void (offset_type)> match_callback)
4516 {
4517   lookup_name_info lookup_name_without_params
4518     = lookup_name_in.make_ignore_params ();
4519   gdb_index_symbol_name_matcher lookup_name_matcher
4520     (lookup_name_without_params);
4521
4522   /* Build the symbol name component sorted vector, if we haven't
4523      yet.  */
4524   index.build_name_components ();
4525
4526   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4527
4528   /* Now for each symbol name in range, check to see if we have a name
4529      match, and if so, call the MATCH_CALLBACK callback.  */
4530
4531   /* The same symbol may appear more than once in the range though.
4532      E.g., if we're looking for symbols that complete "w", and we have
4533      a symbol named "w1::w2", we'll find the two name components for
4534      that same symbol in the range.  To be sure we only call the
4535      callback once per symbol, we first collect the symbol name
4536      indexes that matched in a temporary vector and ignore
4537      duplicates.  */
4538   std::vector<offset_type> matches;
4539   matches.reserve (std::distance (bounds.first, bounds.second));
4540
4541   for (; bounds.first != bounds.second; ++bounds.first)
4542     {
4543       const char *qualified = index.symbol_name_at (bounds.first->idx);
4544
4545       if (!lookup_name_matcher.matches (qualified)
4546           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4547         continue;
4548
4549       matches.push_back (bounds.first->idx);
4550     }
4551
4552   std::sort (matches.begin (), matches.end ());
4553
4554   /* Finally call the callback, once per match.  */
4555   ULONGEST prev = -1;
4556   for (offset_type idx : matches)
4557     {
4558       if (prev != idx)
4559         {
4560           match_callback (idx);
4561           prev = idx;
4562         }
4563     }
4564
4565   /* Above we use a type wider than idx's for 'prev', since 0 and
4566      (offset_type)-1 are both possible values.  */
4567   static_assert (sizeof (prev) > sizeof (offset_type), "");
4568 }
4569
4570 #if GDB_SELF_TEST
4571
4572 namespace selftests { namespace dw2_expand_symtabs_matching {
4573
4574 /* A mock .gdb_index/.debug_names-like name index table, enough to
4575    exercise dw2_expand_symtabs_matching_symbol, which works with the
4576    mapped_index_base interface.  Builds an index from the symbol list
4577    passed as parameter to the constructor.  */
4578 class mock_mapped_index : public mapped_index_base
4579 {
4580 public:
4581   mock_mapped_index (gdb::array_view<const char *> symbols)
4582     : m_symbol_table (symbols)
4583   {}
4584
4585   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4586
4587   /* Return the number of names in the symbol table.  */
4588   size_t symbol_name_count () const override
4589   {
4590     return m_symbol_table.size ();
4591   }
4592
4593   /* Get the name of the symbol at IDX in the symbol table.  */
4594   const char *symbol_name_at (offset_type idx) const override
4595   {
4596     return m_symbol_table[idx];
4597   }
4598
4599 private:
4600   gdb::array_view<const char *> m_symbol_table;
4601 };
4602
4603 /* Convenience function that converts a NULL pointer to a "<null>"
4604    string, to pass to print routines.  */
4605
4606 static const char *
4607 string_or_null (const char *str)
4608 {
4609   return str != NULL ? str : "<null>";
4610 }
4611
4612 /* Check if a lookup_name_info built from
4613    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4614    index.  EXPECTED_LIST is the list of expected matches, in expected
4615    matching order.  If no match expected, then an empty list is
4616    specified.  Returns true on success.  On failure prints a warning
4617    indicating the file:line that failed, and returns false.  */
4618
4619 static bool
4620 check_match (const char *file, int line,
4621              mock_mapped_index &mock_index,
4622              const char *name, symbol_name_match_type match_type,
4623              bool completion_mode,
4624              std::initializer_list<const char *> expected_list)
4625 {
4626   lookup_name_info lookup_name (name, match_type, completion_mode);
4627
4628   bool matched = true;
4629
4630   auto mismatch = [&] (const char *expected_str,
4631                        const char *got)
4632   {
4633     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4634                "expected=\"%s\", got=\"%s\"\n"),
4635              file, line,
4636              (match_type == symbol_name_match_type::FULL
4637               ? "FULL" : "WILD"),
4638              name, string_or_null (expected_str), string_or_null (got));
4639     matched = false;
4640   };
4641
4642   auto expected_it = expected_list.begin ();
4643   auto expected_end = expected_list.end ();
4644
4645   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4646                                       NULL, ALL_DOMAIN,
4647                                       [&] (offset_type idx)
4648   {
4649     const char *matched_name = mock_index.symbol_name_at (idx);
4650     const char *expected_str
4651       = expected_it == expected_end ? NULL : *expected_it++;
4652
4653     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4654       mismatch (expected_str, matched_name);
4655   });
4656
4657   const char *expected_str
4658   = expected_it == expected_end ? NULL : *expected_it++;
4659   if (expected_str != NULL)
4660     mismatch (expected_str, NULL);
4661
4662   return matched;
4663 }
4664
4665 /* The symbols added to the mock mapped_index for testing (in
4666    canonical form).  */
4667 static const char *test_symbols[] = {
4668   "function",
4669   "std::bar",
4670   "std::zfunction",
4671   "std::zfunction2",
4672   "w1::w2",
4673   "ns::foo<char*>",
4674   "ns::foo<int>",
4675   "ns::foo<long>",
4676   "ns2::tmpl<int>::foo2",
4677   "(anonymous namespace)::A::B::C",
4678
4679   /* These are used to check that the increment-last-char in the
4680      matching algorithm for completion doesn't match "t1_fund" when
4681      completing "t1_func".  */
4682   "t1_func",
4683   "t1_func1",
4684   "t1_fund",
4685   "t1_fund1",
4686
4687   /* A UTF-8 name with multi-byte sequences to make sure that
4688      cp-name-parser understands this as a single identifier ("função"
4689      is "function" in PT).  */
4690   u8"u8função",
4691
4692   /* \377 (0xff) is Latin1 'ÿ'.  */
4693   "yfunc\377",
4694
4695   /* \377 (0xff) is Latin1 'ÿ'.  */
4696   "\377",
4697   "\377\377123",
4698
4699   /* A name with all sorts of complications.  Starts with "z" to make
4700      it easier for the completion tests below.  */
4701 #define Z_SYM_NAME \
4702   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4703     "::tuple<(anonymous namespace)::ui*, " \
4704     "std::default_delete<(anonymous namespace)::ui>, void>"
4705
4706   Z_SYM_NAME
4707 };
4708
4709 /* Returns true if the mapped_index_base::find_name_component_bounds
4710    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4711    in completion mode.  */
4712
4713 static bool
4714 check_find_bounds_finds (mapped_index_base &index,
4715                          const char *search_name,
4716                          gdb::array_view<const char *> expected_syms)
4717 {
4718   lookup_name_info lookup_name (search_name,
4719                                 symbol_name_match_type::FULL, true);
4720
4721   auto bounds = index.find_name_components_bounds (lookup_name);
4722
4723   size_t distance = std::distance (bounds.first, bounds.second);
4724   if (distance != expected_syms.size ())
4725     return false;
4726
4727   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4728     {
4729       auto nc_elem = bounds.first + exp_elem;
4730       const char *qualified = index.symbol_name_at (nc_elem->idx);
4731       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4732         return false;
4733     }
4734
4735   return true;
4736 }
4737
4738 /* Test the lower-level mapped_index::find_name_component_bounds
4739    method.  */
4740
4741 static void
4742 test_mapped_index_find_name_component_bounds ()
4743 {
4744   mock_mapped_index mock_index (test_symbols);
4745
4746   mock_index.build_name_components ();
4747
4748   /* Test the lower-level mapped_index::find_name_component_bounds
4749      method in completion mode.  */
4750   {
4751     static const char *expected_syms[] = {
4752       "t1_func",
4753       "t1_func1",
4754     };
4755
4756     SELF_CHECK (check_find_bounds_finds (mock_index,
4757                                          "t1_func", expected_syms));
4758   }
4759
4760   /* Check that the increment-last-char in the name matching algorithm
4761      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4762   {
4763     static const char *expected_syms1[] = {
4764       "\377",
4765       "\377\377123",
4766     };
4767     SELF_CHECK (check_find_bounds_finds (mock_index,
4768                                          "\377", expected_syms1));
4769
4770     static const char *expected_syms2[] = {
4771       "\377\377123",
4772     };
4773     SELF_CHECK (check_find_bounds_finds (mock_index,
4774                                          "\377\377", expected_syms2));
4775   }
4776 }
4777
4778 /* Test dw2_expand_symtabs_matching_symbol.  */
4779
4780 static void
4781 test_dw2_expand_symtabs_matching_symbol ()
4782 {
4783   mock_mapped_index mock_index (test_symbols);
4784
4785   /* We let all tests run until the end even if some fails, for debug
4786      convenience.  */
4787   bool any_mismatch = false;
4788
4789   /* Create the expected symbols list (an initializer_list).  Needed
4790      because lists have commas, and we need to pass them to CHECK,
4791      which is a macro.  */
4792 #define EXPECT(...) { __VA_ARGS__ }
4793
4794   /* Wrapper for check_match that passes down the current
4795      __FILE__/__LINE__.  */
4796 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4797   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4798                                 mock_index,                             \
4799                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4800                                 EXPECTED_LIST)
4801
4802   /* Identity checks.  */
4803   for (const char *sym : test_symbols)
4804     {
4805       /* Should be able to match all existing symbols.  */
4806       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4807                    EXPECT (sym));
4808
4809       /* Should be able to match all existing symbols with
4810          parameters.  */
4811       std::string with_params = std::string (sym) + "(int)";
4812       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4813                    EXPECT (sym));
4814
4815       /* Should be able to match all existing symbols with
4816          parameters and qualifiers.  */
4817       with_params = std::string (sym) + " ( int ) const";
4818       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4819                    EXPECT (sym));
4820
4821       /* This should really find sym, but cp-name-parser.y doesn't
4822          know about lvalue/rvalue qualifiers yet.  */
4823       with_params = std::string (sym) + " ( int ) &&";
4824       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4825                    {});
4826     }
4827
4828   /* Check that the name matching algorithm for completion doesn't get
4829      confused with Latin1 'ÿ' / 0xff.  */
4830   {
4831     static const char str[] = "\377";
4832     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4833                  EXPECT ("\377", "\377\377123"));
4834   }
4835
4836   /* Check that the increment-last-char in the matching algorithm for
4837      completion doesn't match "t1_fund" when completing "t1_func".  */
4838   {
4839     static const char str[] = "t1_func";
4840     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4841                  EXPECT ("t1_func", "t1_func1"));
4842   }
4843
4844   /* Check that completion mode works at each prefix of the expected
4845      symbol name.  */
4846   {
4847     static const char str[] = "function(int)";
4848     size_t len = strlen (str);
4849     std::string lookup;
4850
4851     for (size_t i = 1; i < len; i++)
4852       {
4853         lookup.assign (str, i);
4854         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4855                      EXPECT ("function"));
4856       }
4857   }
4858
4859   /* While "w" is a prefix of both components, the match function
4860      should still only be called once.  */
4861   {
4862     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4863                  EXPECT ("w1::w2"));
4864     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4865                  EXPECT ("w1::w2"));
4866   }
4867
4868   /* Same, with a "complicated" symbol.  */
4869   {
4870     static const char str[] = Z_SYM_NAME;
4871     size_t len = strlen (str);
4872     std::string lookup;
4873
4874     for (size_t i = 1; i < len; i++)
4875       {
4876         lookup.assign (str, i);
4877         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4878                      EXPECT (Z_SYM_NAME));
4879       }
4880   }
4881
4882   /* In FULL mode, an incomplete symbol doesn't match.  */
4883   {
4884     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4885                  {});
4886   }
4887
4888   /* A complete symbol with parameters matches any overload, since the
4889      index has no overload info.  */
4890   {
4891     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4892                  EXPECT ("std::zfunction", "std::zfunction2"));
4893     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4894                  EXPECT ("std::zfunction", "std::zfunction2"));
4895     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4896                  EXPECT ("std::zfunction", "std::zfunction2"));
4897   }
4898
4899   /* Check that whitespace is ignored appropriately.  A symbol with a
4900      template argument list. */
4901   {
4902     static const char expected[] = "ns::foo<int>";
4903     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4904                  EXPECT (expected));
4905     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4906                  EXPECT (expected));
4907   }
4908
4909   /* Check that whitespace is ignored appropriately.  A symbol with a
4910      template argument list that includes a pointer.  */
4911   {
4912     static const char expected[] = "ns::foo<char*>";
4913     /* Try both completion and non-completion modes.  */
4914     static const bool completion_mode[2] = {false, true};
4915     for (size_t i = 0; i < 2; i++)
4916       {
4917         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4918                      completion_mode[i], EXPECT (expected));
4919         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4920                      completion_mode[i], EXPECT (expected));
4921
4922         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4923                      completion_mode[i], EXPECT (expected));
4924         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4925                      completion_mode[i], EXPECT (expected));
4926       }
4927   }
4928
4929   {
4930     /* Check method qualifiers are ignored.  */
4931     static const char expected[] = "ns::foo<char*>";
4932     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4933                  symbol_name_match_type::FULL, true, EXPECT (expected));
4934     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4935                  symbol_name_match_type::FULL, true, EXPECT (expected));
4936     CHECK_MATCH ("foo < char * >  ( int ) const",
4937                  symbol_name_match_type::WILD, true, EXPECT (expected));
4938     CHECK_MATCH ("foo < char * >  ( int ) &&",
4939                  symbol_name_match_type::WILD, true, EXPECT (expected));
4940   }
4941
4942   /* Test lookup names that don't match anything.  */
4943   {
4944     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4945                  {});
4946
4947     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4948                  {});
4949   }
4950
4951   /* Some wild matching tests, exercising "(anonymous namespace)",
4952      which should not be confused with a parameter list.  */
4953   {
4954     static const char *syms[] = {
4955       "A::B::C",
4956       "B::C",
4957       "C",
4958       "A :: B :: C ( int )",
4959       "B :: C ( int )",
4960       "C ( int )",
4961     };
4962
4963     for (const char *s : syms)
4964       {
4965         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4966                      EXPECT ("(anonymous namespace)::A::B::C"));
4967       }
4968   }
4969
4970   {
4971     static const char expected[] = "ns2::tmpl<int>::foo2";
4972     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4973                  EXPECT (expected));
4974     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4975                  EXPECT (expected));
4976   }
4977
4978   SELF_CHECK (!any_mismatch);
4979
4980 #undef EXPECT
4981 #undef CHECK_MATCH
4982 }
4983
4984 static void
4985 run_test ()
4986 {
4987   test_mapped_index_find_name_component_bounds ();
4988   test_dw2_expand_symtabs_matching_symbol ();
4989 }
4990
4991 }} // namespace selftests::dw2_expand_symtabs_matching
4992
4993 #endif /* GDB_SELF_TEST */
4994
4995 /* If FILE_MATCHER is NULL or if PER_CU has
4996    dwarf2_per_cu_quick_data::MARK set (see
4997    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4998    EXPANSION_NOTIFY on it.  */
4999
5000 static void
5001 dw2_expand_symtabs_matching_one
5002   (struct dwarf2_per_cu_data *per_cu,
5003    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5004    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5005 {
5006   if (file_matcher == NULL || per_cu->v.quick->mark)
5007     {
5008       bool symtab_was_null
5009         = (per_cu->v.quick->compunit_symtab == NULL);
5010
5011       dw2_instantiate_symtab (per_cu, false);
5012
5013       if (expansion_notify != NULL
5014           && symtab_was_null
5015           && per_cu->v.quick->compunit_symtab != NULL)
5016         expansion_notify (per_cu->v.quick->compunit_symtab);
5017     }
5018 }
5019
5020 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5021    matched, to expand corresponding CUs that were marked.  IDX is the
5022    index of the symbol name that matched.  */
5023
5024 static void
5025 dw2_expand_marked_cus
5026   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5027    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5028    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5029    search_domain kind)
5030 {
5031   offset_type *vec, vec_len, vec_idx;
5032   bool global_seen = false;
5033   mapped_index &index = *dwarf2_per_objfile->index_table;
5034
5035   vec = (offset_type *) (index.constant_pool
5036                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5037   vec_len = MAYBE_SWAP (vec[0]);
5038   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5039     {
5040       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5041       /* This value is only valid for index versions >= 7.  */
5042       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5043       gdb_index_symbol_kind symbol_kind =
5044         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5045       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5046       /* Only check the symbol attributes if they're present.
5047          Indices prior to version 7 don't record them,
5048          and indices >= 7 may elide them for certain symbols
5049          (gold does this).  */
5050       int attrs_valid =
5051         (index.version >= 7
5052          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5053
5054       /* Work around gold/15646.  */
5055       if (attrs_valid)
5056         {
5057           if (!is_static && global_seen)
5058             continue;
5059           if (!is_static)
5060             global_seen = true;
5061         }
5062
5063       /* Only check the symbol's kind if it has one.  */
5064       if (attrs_valid)
5065         {
5066           switch (kind)
5067             {
5068             case VARIABLES_DOMAIN:
5069               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5070                 continue;
5071               break;
5072             case FUNCTIONS_DOMAIN:
5073               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5074                 continue;
5075               break;
5076             case TYPES_DOMAIN:
5077               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5078                 continue;
5079               break;
5080             default:
5081               break;
5082             }
5083         }
5084
5085       /* Don't crash on bad data.  */
5086       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5087                        + dwarf2_per_objfile->all_type_units.size ()))
5088         {
5089           complaint (_(".gdb_index entry has bad CU index"
5090                        " [in module %s]"),
5091                        objfile_name (dwarf2_per_objfile->objfile));
5092           continue;
5093         }
5094
5095       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5096       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5097                                        expansion_notify);
5098     }
5099 }
5100
5101 /* If FILE_MATCHER is non-NULL, set all the
5102    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5103    that match FILE_MATCHER.  */
5104
5105 static void
5106 dw_expand_symtabs_matching_file_matcher
5107   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5108    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5109 {
5110   if (file_matcher == NULL)
5111     return;
5112
5113   objfile *const objfile = dwarf2_per_objfile->objfile;
5114
5115   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5116                                             htab_eq_pointer,
5117                                             NULL, xcalloc, xfree));
5118   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5119                                                 htab_eq_pointer,
5120                                                 NULL, xcalloc, xfree));
5121
5122   /* The rule is CUs specify all the files, including those used by
5123      any TU, so there's no need to scan TUs here.  */
5124
5125   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5126     {
5127       QUIT;
5128
5129       per_cu->v.quick->mark = 0;
5130
5131       /* We only need to look at symtabs not already expanded.  */
5132       if (per_cu->v.quick->compunit_symtab)
5133         continue;
5134
5135       quick_file_names *file_data = dw2_get_file_names (per_cu);
5136       if (file_data == NULL)
5137         continue;
5138
5139       if (htab_find (visited_not_found.get (), file_data) != NULL)
5140         continue;
5141       else if (htab_find (visited_found.get (), file_data) != NULL)
5142         {
5143           per_cu->v.quick->mark = 1;
5144           continue;
5145         }
5146
5147       for (int j = 0; j < file_data->num_file_names; ++j)
5148         {
5149           const char *this_real_name;
5150
5151           if (file_matcher (file_data->file_names[j], false))
5152             {
5153               per_cu->v.quick->mark = 1;
5154               break;
5155             }
5156
5157           /* Before we invoke realpath, which can get expensive when many
5158              files are involved, do a quick comparison of the basenames.  */
5159           if (!basenames_may_differ
5160               && !file_matcher (lbasename (file_data->file_names[j]),
5161                                 true))
5162             continue;
5163
5164           this_real_name = dw2_get_real_path (objfile, file_data, j);
5165           if (file_matcher (this_real_name, false))
5166             {
5167               per_cu->v.quick->mark = 1;
5168               break;
5169             }
5170         }
5171
5172       void **slot = htab_find_slot (per_cu->v.quick->mark
5173                                     ? visited_found.get ()
5174                                     : visited_not_found.get (),
5175                                     file_data, INSERT);
5176       *slot = file_data;
5177     }
5178 }
5179
5180 static void
5181 dw2_expand_symtabs_matching
5182   (struct objfile *objfile,
5183    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5184    const lookup_name_info &lookup_name,
5185    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5186    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5187    enum search_domain kind)
5188 {
5189   struct dwarf2_per_objfile *dwarf2_per_objfile
5190     = get_dwarf2_per_objfile (objfile);
5191
5192   /* index_table is NULL if OBJF_READNOW.  */
5193   if (!dwarf2_per_objfile->index_table)
5194     return;
5195
5196   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5197
5198   mapped_index &index = *dwarf2_per_objfile->index_table;
5199
5200   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5201                                       symbol_matcher,
5202                                       kind, [&] (offset_type idx)
5203     {
5204       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5205                              expansion_notify, kind);
5206     });
5207 }
5208
5209 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5210    symtab.  */
5211
5212 static struct compunit_symtab *
5213 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5214                                           CORE_ADDR pc)
5215 {
5216   int i;
5217
5218   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5219       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5220     return cust;
5221
5222   if (cust->includes == NULL)
5223     return NULL;
5224
5225   for (i = 0; cust->includes[i]; ++i)
5226     {
5227       struct compunit_symtab *s = cust->includes[i];
5228
5229       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5230       if (s != NULL)
5231         return s;
5232     }
5233
5234   return NULL;
5235 }
5236
5237 static struct compunit_symtab *
5238 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5239                                   struct bound_minimal_symbol msymbol,
5240                                   CORE_ADDR pc,
5241                                   struct obj_section *section,
5242                                   int warn_if_readin)
5243 {
5244   struct dwarf2_per_cu_data *data;
5245   struct compunit_symtab *result;
5246
5247   if (!objfile->psymtabs_addrmap)
5248     return NULL;
5249
5250   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5251                                  SECT_OFF_TEXT (objfile));
5252   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5253                                                      pc - baseaddr);
5254   if (!data)
5255     return NULL;
5256
5257   if (warn_if_readin && data->v.quick->compunit_symtab)
5258     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5259              paddress (get_objfile_arch (objfile), pc));
5260
5261   result
5262     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5263                                                                         false),
5264                                                 pc);
5265   gdb_assert (result != NULL);
5266   return result;
5267 }
5268
5269 static void
5270 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5271                           void *data, int need_fullname)
5272 {
5273   struct dwarf2_per_objfile *dwarf2_per_objfile
5274     = get_dwarf2_per_objfile (objfile);
5275
5276   if (!dwarf2_per_objfile->filenames_cache)
5277     {
5278       dwarf2_per_objfile->filenames_cache.emplace ();
5279
5280       htab_up visited (htab_create_alloc (10,
5281                                           htab_hash_pointer, htab_eq_pointer,
5282                                           NULL, xcalloc, xfree));
5283
5284       /* The rule is CUs specify all the files, including those used
5285          by any TU, so there's no need to scan TUs here.  We can
5286          ignore file names coming from already-expanded CUs.  */
5287
5288       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5289         {
5290           if (per_cu->v.quick->compunit_symtab)
5291             {
5292               void **slot = htab_find_slot (visited.get (),
5293                                             per_cu->v.quick->file_names,
5294                                             INSERT);
5295
5296               *slot = per_cu->v.quick->file_names;
5297             }
5298         }
5299
5300       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5301         {
5302           /* We only need to look at symtabs not already expanded.  */
5303           if (per_cu->v.quick->compunit_symtab)
5304             continue;
5305
5306           quick_file_names *file_data = dw2_get_file_names (per_cu);
5307           if (file_data == NULL)
5308             continue;
5309
5310           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5311           if (*slot)
5312             {
5313               /* Already visited.  */
5314               continue;
5315             }
5316           *slot = file_data;
5317
5318           for (int j = 0; j < file_data->num_file_names; ++j)
5319             {
5320               const char *filename = file_data->file_names[j];
5321               dwarf2_per_objfile->filenames_cache->seen (filename);
5322             }
5323         }
5324     }
5325
5326   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5327     {
5328       gdb::unique_xmalloc_ptr<char> this_real_name;
5329
5330       if (need_fullname)
5331         this_real_name = gdb_realpath (filename);
5332       (*fun) (filename, this_real_name.get (), data);
5333     });
5334 }
5335
5336 static int
5337 dw2_has_symbols (struct objfile *objfile)
5338 {
5339   return 1;
5340 }
5341
5342 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5343 {
5344   dw2_has_symbols,
5345   dw2_find_last_source_symtab,
5346   dw2_forget_cached_source_info,
5347   dw2_map_symtabs_matching_filename,
5348   dw2_lookup_symbol,
5349   dw2_print_stats,
5350   dw2_dump,
5351   dw2_expand_symtabs_for_function,
5352   dw2_expand_all_symtabs,
5353   dw2_expand_symtabs_with_fullname,
5354   dw2_map_matching_symbols,
5355   dw2_expand_symtabs_matching,
5356   dw2_find_pc_sect_compunit_symtab,
5357   NULL,
5358   dw2_map_symbol_filenames
5359 };
5360
5361 /* DWARF-5 debug_names reader.  */
5362
5363 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5364 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5365
5366 /* A helper function that reads the .debug_names section in SECTION
5367    and fills in MAP.  FILENAME is the name of the file containing the
5368    section; it is used for error reporting.
5369
5370    Returns true if all went well, false otherwise.  */
5371
5372 static bool
5373 read_debug_names_from_section (struct objfile *objfile,
5374                                const char *filename,
5375                                struct dwarf2_section_info *section,
5376                                mapped_debug_names &map)
5377 {
5378   if (dwarf2_section_empty_p (section))
5379     return false;
5380
5381   /* Older elfutils strip versions could keep the section in the main
5382      executable while splitting it for the separate debug info file.  */
5383   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5384     return false;
5385
5386   dwarf2_read_section (objfile, section);
5387
5388   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5389
5390   const gdb_byte *addr = section->buffer;
5391
5392   bfd *const abfd = get_section_bfd_owner (section);
5393
5394   unsigned int bytes_read;
5395   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5396   addr += bytes_read;
5397
5398   map.dwarf5_is_dwarf64 = bytes_read != 4;
5399   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5400   if (bytes_read + length != section->size)
5401     {
5402       /* There may be multiple per-CU indices.  */
5403       warning (_("Section .debug_names in %s length %s does not match "
5404                  "section length %s, ignoring .debug_names."),
5405                filename, plongest (bytes_read + length),
5406                pulongest (section->size));
5407       return false;
5408     }
5409
5410   /* The version number.  */
5411   uint16_t version = read_2_bytes (abfd, addr);
5412   addr += 2;
5413   if (version != 5)
5414     {
5415       warning (_("Section .debug_names in %s has unsupported version %d, "
5416                  "ignoring .debug_names."),
5417                filename, version);
5418       return false;
5419     }
5420
5421   /* Padding.  */
5422   uint16_t padding = read_2_bytes (abfd, addr);
5423   addr += 2;
5424   if (padding != 0)
5425     {
5426       warning (_("Section .debug_names in %s has unsupported padding %d, "
5427                  "ignoring .debug_names."),
5428                filename, padding);
5429       return false;
5430     }
5431
5432   /* comp_unit_count - The number of CUs in the CU list.  */
5433   map.cu_count = read_4_bytes (abfd, addr);
5434   addr += 4;
5435
5436   /* local_type_unit_count - The number of TUs in the local TU
5437      list.  */
5438   map.tu_count = read_4_bytes (abfd, addr);
5439   addr += 4;
5440
5441   /* foreign_type_unit_count - The number of TUs in the foreign TU
5442      list.  */
5443   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5444   addr += 4;
5445   if (foreign_tu_count != 0)
5446     {
5447       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5448                  "ignoring .debug_names."),
5449                filename, static_cast<unsigned long> (foreign_tu_count));
5450       return false;
5451     }
5452
5453   /* bucket_count - The number of hash buckets in the hash lookup
5454      table.  */
5455   map.bucket_count = read_4_bytes (abfd, addr);
5456   addr += 4;
5457
5458   /* name_count - The number of unique names in the index.  */
5459   map.name_count = read_4_bytes (abfd, addr);
5460   addr += 4;
5461
5462   /* abbrev_table_size - The size in bytes of the abbreviations
5463      table.  */
5464   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5465   addr += 4;
5466
5467   /* augmentation_string_size - The size in bytes of the augmentation
5468      string.  This value is rounded up to a multiple of 4.  */
5469   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5470   addr += 4;
5471   map.augmentation_is_gdb = ((augmentation_string_size
5472                               == sizeof (dwarf5_augmentation))
5473                              && memcmp (addr, dwarf5_augmentation,
5474                                         sizeof (dwarf5_augmentation)) == 0);
5475   augmentation_string_size += (-augmentation_string_size) & 3;
5476   addr += augmentation_string_size;
5477
5478   /* List of CUs */
5479   map.cu_table_reordered = addr;
5480   addr += map.cu_count * map.offset_size;
5481
5482   /* List of Local TUs */
5483   map.tu_table_reordered = addr;
5484   addr += map.tu_count * map.offset_size;
5485
5486   /* Hash Lookup Table */
5487   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5488   addr += map.bucket_count * 4;
5489   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5490   addr += map.name_count * 4;
5491
5492   /* Name Table */
5493   map.name_table_string_offs_reordered = addr;
5494   addr += map.name_count * map.offset_size;
5495   map.name_table_entry_offs_reordered = addr;
5496   addr += map.name_count * map.offset_size;
5497
5498   const gdb_byte *abbrev_table_start = addr;
5499   for (;;)
5500     {
5501       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5502       addr += bytes_read;
5503       if (index_num == 0)
5504         break;
5505
5506       const auto insertpair
5507         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5508       if (!insertpair.second)
5509         {
5510           warning (_("Section .debug_names in %s has duplicate index %s, "
5511                      "ignoring .debug_names."),
5512                    filename, pulongest (index_num));
5513           return false;
5514         }
5515       mapped_debug_names::index_val &indexval = insertpair.first->second;
5516       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5517       addr += bytes_read;
5518
5519       for (;;)
5520         {
5521           mapped_debug_names::index_val::attr attr;
5522           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5523           addr += bytes_read;
5524           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5525           addr += bytes_read;
5526           if (attr.form == DW_FORM_implicit_const)
5527             {
5528               attr.implicit_const = read_signed_leb128 (abfd, addr,
5529                                                         &bytes_read);
5530               addr += bytes_read;
5531             }
5532           if (attr.dw_idx == 0 && attr.form == 0)
5533             break;
5534           indexval.attr_vec.push_back (std::move (attr));
5535         }
5536     }
5537   if (addr != abbrev_table_start + abbrev_table_size)
5538     {
5539       warning (_("Section .debug_names in %s has abbreviation_table "
5540                  "of size %zu vs. written as %u, ignoring .debug_names."),
5541                filename, addr - abbrev_table_start, abbrev_table_size);
5542       return false;
5543     }
5544   map.entry_pool = addr;
5545
5546   return true;
5547 }
5548
5549 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5550    list.  */
5551
5552 static void
5553 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5554                                   const mapped_debug_names &map,
5555                                   dwarf2_section_info &section,
5556                                   bool is_dwz)
5557 {
5558   sect_offset sect_off_prev;
5559   for (uint32_t i = 0; i <= map.cu_count; ++i)
5560     {
5561       sect_offset sect_off_next;
5562       if (i < map.cu_count)
5563         {
5564           sect_off_next
5565             = (sect_offset) (extract_unsigned_integer
5566                              (map.cu_table_reordered + i * map.offset_size,
5567                               map.offset_size,
5568                               map.dwarf5_byte_order));
5569         }
5570       else
5571         sect_off_next = (sect_offset) section.size;
5572       if (i >= 1)
5573         {
5574           const ULONGEST length = sect_off_next - sect_off_prev;
5575           dwarf2_per_cu_data *per_cu
5576             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5577                                          sect_off_prev, length);
5578           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5579         }
5580       sect_off_prev = sect_off_next;
5581     }
5582 }
5583
5584 /* Read the CU list from the mapped index, and use it to create all
5585    the CU objects for this dwarf2_per_objfile.  */
5586
5587 static void
5588 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5589                              const mapped_debug_names &map,
5590                              const mapped_debug_names &dwz_map)
5591 {
5592   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5593   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5594
5595   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5596                                     dwarf2_per_objfile->info,
5597                                     false /* is_dwz */);
5598
5599   if (dwz_map.cu_count == 0)
5600     return;
5601
5602   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5603   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5604                                     true /* is_dwz */);
5605 }
5606
5607 /* Read .debug_names.  If everything went ok, initialize the "quick"
5608    elements of all the CUs and return true.  Otherwise, return false.  */
5609
5610 static bool
5611 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5612 {
5613   std::unique_ptr<mapped_debug_names> map
5614     (new mapped_debug_names (dwarf2_per_objfile));
5615   mapped_debug_names dwz_map (dwarf2_per_objfile);
5616   struct objfile *objfile = dwarf2_per_objfile->objfile;
5617
5618   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5619                                       &dwarf2_per_objfile->debug_names,
5620                                       *map))
5621     return false;
5622
5623   /* Don't use the index if it's empty.  */
5624   if (map->name_count == 0)
5625     return false;
5626
5627   /* If there is a .dwz file, read it so we can get its CU list as
5628      well.  */
5629   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5630   if (dwz != NULL)
5631     {
5632       if (!read_debug_names_from_section (objfile,
5633                                           bfd_get_filename (dwz->dwz_bfd),
5634                                           &dwz->debug_names, dwz_map))
5635         {
5636           warning (_("could not read '.debug_names' section from %s; skipping"),
5637                    bfd_get_filename (dwz->dwz_bfd));
5638           return false;
5639         }
5640     }
5641
5642   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5643
5644   if (map->tu_count != 0)
5645     {
5646       /* We can only handle a single .debug_types when we have an
5647          index.  */
5648       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5649         return false;
5650
5651       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5652                                                 dwarf2_per_objfile->types, 0);
5653
5654       create_signatured_type_table_from_debug_names
5655         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5656     }
5657
5658   create_addrmap_from_aranges (dwarf2_per_objfile,
5659                                &dwarf2_per_objfile->debug_aranges);
5660
5661   dwarf2_per_objfile->debug_names_table = std::move (map);
5662   dwarf2_per_objfile->using_index = 1;
5663   dwarf2_per_objfile->quick_file_names_table =
5664     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5665
5666   return true;
5667 }
5668
5669 /* Type used to manage iterating over all CUs looking for a symbol for
5670    .debug_names.  */
5671
5672 class dw2_debug_names_iterator
5673 {
5674 public:
5675   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5676      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5677   dw2_debug_names_iterator (const mapped_debug_names &map,
5678                             bool want_specific_block,
5679                             block_enum block_index, domain_enum domain,
5680                             const char *name)
5681     : m_map (map), m_want_specific_block (want_specific_block),
5682       m_block_index (block_index), m_domain (domain),
5683       m_addr (find_vec_in_debug_names (map, name))
5684   {}
5685
5686   dw2_debug_names_iterator (const mapped_debug_names &map,
5687                             search_domain search, uint32_t namei)
5688     : m_map (map),
5689       m_search (search),
5690       m_addr (find_vec_in_debug_names (map, namei))
5691   {}
5692
5693   /* Return the next matching CU or NULL if there are no more.  */
5694   dwarf2_per_cu_data *next ();
5695
5696 private:
5697   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5698                                                   const char *name);
5699   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5700                                                   uint32_t namei);
5701
5702   /* The internalized form of .debug_names.  */
5703   const mapped_debug_names &m_map;
5704
5705   /* If true, only look for symbols that match BLOCK_INDEX.  */
5706   const bool m_want_specific_block = false;
5707
5708   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5709      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5710      value.  */
5711   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5712
5713   /* The kind of symbol we're looking for.  */
5714   const domain_enum m_domain = UNDEF_DOMAIN;
5715   const search_domain m_search = ALL_DOMAIN;
5716
5717   /* The list of CUs from the index entry of the symbol, or NULL if
5718      not found.  */
5719   const gdb_byte *m_addr;
5720 };
5721
5722 const char *
5723 mapped_debug_names::namei_to_name (uint32_t namei) const
5724 {
5725   const ULONGEST namei_string_offs
5726     = extract_unsigned_integer ((name_table_string_offs_reordered
5727                                  + namei * offset_size),
5728                                 offset_size,
5729                                 dwarf5_byte_order);
5730   return read_indirect_string_at_offset
5731     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5732 }
5733
5734 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5735    found, return pointer to its pool data.  If NAME cannot be found,
5736    return NULL.  */
5737
5738 const gdb_byte *
5739 dw2_debug_names_iterator::find_vec_in_debug_names
5740   (const mapped_debug_names &map, const char *name)
5741 {
5742   int (*cmp) (const char *, const char *);
5743
5744   if (current_language->la_language == language_cplus
5745       || current_language->la_language == language_fortran
5746       || current_language->la_language == language_d)
5747     {
5748       /* NAME is already canonical.  Drop any qualifiers as
5749          .debug_names does not contain any.  */
5750
5751       if (strchr (name, '(') != NULL)
5752         {
5753           gdb::unique_xmalloc_ptr<char> without_params
5754             = cp_remove_params (name);
5755
5756           if (without_params != NULL)
5757             {
5758               name = without_params.get();
5759             }
5760         }
5761     }
5762
5763   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5764
5765   const uint32_t full_hash = dwarf5_djb_hash (name);
5766   uint32_t namei
5767     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5768                                 (map.bucket_table_reordered
5769                                  + (full_hash % map.bucket_count)), 4,
5770                                 map.dwarf5_byte_order);
5771   if (namei == 0)
5772     return NULL;
5773   --namei;
5774   if (namei >= map.name_count)
5775     {
5776       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5777                    "[in module %s]"),
5778                  namei, map.name_count,
5779                  objfile_name (map.dwarf2_per_objfile->objfile));
5780       return NULL;
5781     }
5782
5783   for (;;)
5784     {
5785       const uint32_t namei_full_hash
5786         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5787                                     (map.hash_table_reordered + namei), 4,
5788                                     map.dwarf5_byte_order);
5789       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5790         return NULL;
5791
5792       if (full_hash == namei_full_hash)
5793         {
5794           const char *const namei_string = map.namei_to_name (namei);
5795
5796 #if 0 /* An expensive sanity check.  */
5797           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5798             {
5799               complaint (_("Wrong .debug_names hash for string at index %u "
5800                            "[in module %s]"),
5801                          namei, objfile_name (dwarf2_per_objfile->objfile));
5802               return NULL;
5803             }
5804 #endif
5805
5806           if (cmp (namei_string, name) == 0)
5807             {
5808               const ULONGEST namei_entry_offs
5809                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5810                                              + namei * map.offset_size),
5811                                             map.offset_size, map.dwarf5_byte_order);
5812               return map.entry_pool + namei_entry_offs;
5813             }
5814         }
5815
5816       ++namei;
5817       if (namei >= map.name_count)
5818         return NULL;
5819     }
5820 }
5821
5822 const gdb_byte *
5823 dw2_debug_names_iterator::find_vec_in_debug_names
5824   (const mapped_debug_names &map, uint32_t namei)
5825 {
5826   if (namei >= map.name_count)
5827     {
5828       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5829                    "[in module %s]"),
5830                  namei, map.name_count,
5831                  objfile_name (map.dwarf2_per_objfile->objfile));
5832       return NULL;
5833     }
5834
5835   const ULONGEST namei_entry_offs
5836     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5837                                  + namei * map.offset_size),
5838                                 map.offset_size, map.dwarf5_byte_order);
5839   return map.entry_pool + namei_entry_offs;
5840 }
5841
5842 /* See dw2_debug_names_iterator.  */
5843
5844 dwarf2_per_cu_data *
5845 dw2_debug_names_iterator::next ()
5846 {
5847   if (m_addr == NULL)
5848     return NULL;
5849
5850   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5851   struct objfile *objfile = dwarf2_per_objfile->objfile;
5852   bfd *const abfd = objfile->obfd;
5853
5854  again:
5855
5856   unsigned int bytes_read;
5857   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5858   m_addr += bytes_read;
5859   if (abbrev == 0)
5860     return NULL;
5861
5862   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5863   if (indexval_it == m_map.abbrev_map.cend ())
5864     {
5865       complaint (_("Wrong .debug_names undefined abbrev code %s "
5866                    "[in module %s]"),
5867                  pulongest (abbrev), objfile_name (objfile));
5868       return NULL;
5869     }
5870   const mapped_debug_names::index_val &indexval = indexval_it->second;
5871   bool have_is_static = false;
5872   bool is_static;
5873   dwarf2_per_cu_data *per_cu = NULL;
5874   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5875     {
5876       ULONGEST ull;
5877       switch (attr.form)
5878         {
5879         case DW_FORM_implicit_const:
5880           ull = attr.implicit_const;
5881           break;
5882         case DW_FORM_flag_present:
5883           ull = 1;
5884           break;
5885         case DW_FORM_udata:
5886           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5887           m_addr += bytes_read;
5888           break;
5889         default:
5890           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5891                      dwarf_form_name (attr.form),
5892                      objfile_name (objfile));
5893           return NULL;
5894         }
5895       switch (attr.dw_idx)
5896         {
5897         case DW_IDX_compile_unit:
5898           /* Don't crash on bad data.  */
5899           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5900             {
5901               complaint (_(".debug_names entry has bad CU index %s"
5902                            " [in module %s]"),
5903                          pulongest (ull),
5904                          objfile_name (dwarf2_per_objfile->objfile));
5905               continue;
5906             }
5907           per_cu = dwarf2_per_objfile->get_cutu (ull);
5908           break;
5909         case DW_IDX_type_unit:
5910           /* Don't crash on bad data.  */
5911           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5912             {
5913               complaint (_(".debug_names entry has bad TU index %s"
5914                            " [in module %s]"),
5915                          pulongest (ull),
5916                          objfile_name (dwarf2_per_objfile->objfile));
5917               continue;
5918             }
5919           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5920           break;
5921         case DW_IDX_GNU_internal:
5922           if (!m_map.augmentation_is_gdb)
5923             break;
5924           have_is_static = true;
5925           is_static = true;
5926           break;
5927         case DW_IDX_GNU_external:
5928           if (!m_map.augmentation_is_gdb)
5929             break;
5930           have_is_static = true;
5931           is_static = false;
5932           break;
5933         }
5934     }
5935
5936   /* Skip if already read in.  */
5937   if (per_cu->v.quick->compunit_symtab)
5938     goto again;
5939
5940   /* Check static vs global.  */
5941   if (have_is_static)
5942     {
5943       const bool want_static = m_block_index != GLOBAL_BLOCK;
5944       if (m_want_specific_block && want_static != is_static)
5945         goto again;
5946     }
5947
5948   /* Match dw2_symtab_iter_next, symbol_kind
5949      and debug_names::psymbol_tag.  */
5950   switch (m_domain)
5951     {
5952     case VAR_DOMAIN:
5953       switch (indexval.dwarf_tag)
5954         {
5955         case DW_TAG_variable:
5956         case DW_TAG_subprogram:
5957         /* Some types are also in VAR_DOMAIN.  */
5958         case DW_TAG_typedef:
5959         case DW_TAG_structure_type:
5960           break;
5961         default:
5962           goto again;
5963         }
5964       break;
5965     case STRUCT_DOMAIN:
5966       switch (indexval.dwarf_tag)
5967         {
5968         case DW_TAG_typedef:
5969         case DW_TAG_structure_type:
5970           break;
5971         default:
5972           goto again;
5973         }
5974       break;
5975     case LABEL_DOMAIN:
5976       switch (indexval.dwarf_tag)
5977         {
5978         case 0:
5979         case DW_TAG_variable:
5980           break;
5981         default:
5982           goto again;
5983         }
5984       break;
5985     default:
5986       break;
5987     }
5988
5989   /* Match dw2_expand_symtabs_matching, symbol_kind and
5990      debug_names::psymbol_tag.  */
5991   switch (m_search)
5992     {
5993     case VARIABLES_DOMAIN:
5994       switch (indexval.dwarf_tag)
5995         {
5996         case DW_TAG_variable:
5997           break;
5998         default:
5999           goto again;
6000         }
6001       break;
6002     case FUNCTIONS_DOMAIN:
6003       switch (indexval.dwarf_tag)
6004         {
6005         case DW_TAG_subprogram:
6006           break;
6007         default:
6008           goto again;
6009         }
6010       break;
6011     case TYPES_DOMAIN:
6012       switch (indexval.dwarf_tag)
6013         {
6014         case DW_TAG_typedef:
6015         case DW_TAG_structure_type:
6016           break;
6017         default:
6018           goto again;
6019         }
6020       break;
6021     default:
6022       break;
6023     }
6024
6025   return per_cu;
6026 }
6027
6028 static struct compunit_symtab *
6029 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6030                                const char *name, domain_enum domain)
6031 {
6032   const block_enum block_index = static_cast<block_enum> (block_index_int);
6033   struct dwarf2_per_objfile *dwarf2_per_objfile
6034     = get_dwarf2_per_objfile (objfile);
6035
6036   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6037   if (!mapp)
6038     {
6039       /* index is NULL if OBJF_READNOW.  */
6040       return NULL;
6041     }
6042   const auto &map = *mapp;
6043
6044   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6045                                  block_index, domain, name);
6046
6047   struct compunit_symtab *stab_best = NULL;
6048   struct dwarf2_per_cu_data *per_cu;
6049   while ((per_cu = iter.next ()) != NULL)
6050     {
6051       struct symbol *sym, *with_opaque = NULL;
6052       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6053       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6054       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6055
6056       sym = block_find_symbol (block, name, domain,
6057                                block_find_non_opaque_type_preferred,
6058                                &with_opaque);
6059
6060       /* Some caution must be observed with overloaded functions and
6061          methods, since the index will not contain any overload
6062          information (but NAME might contain it).  */
6063
6064       if (sym != NULL
6065           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6066         return stab;
6067       if (with_opaque != NULL
6068           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6069         stab_best = stab;
6070
6071       /* Keep looking through other CUs.  */
6072     }
6073
6074   return stab_best;
6075 }
6076
6077 /* This dumps minimal information about .debug_names.  It is called
6078    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6079    uses this to verify that .debug_names has been loaded.  */
6080
6081 static void
6082 dw2_debug_names_dump (struct objfile *objfile)
6083 {
6084   struct dwarf2_per_objfile *dwarf2_per_objfile
6085     = get_dwarf2_per_objfile (objfile);
6086
6087   gdb_assert (dwarf2_per_objfile->using_index);
6088   printf_filtered (".debug_names:");
6089   if (dwarf2_per_objfile->debug_names_table)
6090     printf_filtered (" exists\n");
6091   else
6092     printf_filtered (" faked for \"readnow\"\n");
6093   printf_filtered ("\n");
6094 }
6095
6096 static void
6097 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6098                                              const char *func_name)
6099 {
6100   struct dwarf2_per_objfile *dwarf2_per_objfile
6101     = get_dwarf2_per_objfile (objfile);
6102
6103   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6104   if (dwarf2_per_objfile->debug_names_table)
6105     {
6106       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6107
6108       /* Note: It doesn't matter what we pass for block_index here.  */
6109       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6110                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6111
6112       struct dwarf2_per_cu_data *per_cu;
6113       while ((per_cu = iter.next ()) != NULL)
6114         dw2_instantiate_symtab (per_cu, false);
6115     }
6116 }
6117
6118 static void
6119 dw2_debug_names_expand_symtabs_matching
6120   (struct objfile *objfile,
6121    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6122    const lookup_name_info &lookup_name,
6123    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6124    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6125    enum search_domain kind)
6126 {
6127   struct dwarf2_per_objfile *dwarf2_per_objfile
6128     = get_dwarf2_per_objfile (objfile);
6129
6130   /* debug_names_table is NULL if OBJF_READNOW.  */
6131   if (!dwarf2_per_objfile->debug_names_table)
6132     return;
6133
6134   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6135
6136   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6137
6138   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6139                                       symbol_matcher,
6140                                       kind, [&] (offset_type namei)
6141     {
6142       /* The name was matched, now expand corresponding CUs that were
6143          marked.  */
6144       dw2_debug_names_iterator iter (map, kind, namei);
6145
6146       struct dwarf2_per_cu_data *per_cu;
6147       while ((per_cu = iter.next ()) != NULL)
6148         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6149                                          expansion_notify);
6150     });
6151 }
6152
6153 const struct quick_symbol_functions dwarf2_debug_names_functions =
6154 {
6155   dw2_has_symbols,
6156   dw2_find_last_source_symtab,
6157   dw2_forget_cached_source_info,
6158   dw2_map_symtabs_matching_filename,
6159   dw2_debug_names_lookup_symbol,
6160   dw2_print_stats,
6161   dw2_debug_names_dump,
6162   dw2_debug_names_expand_symtabs_for_function,
6163   dw2_expand_all_symtabs,
6164   dw2_expand_symtabs_with_fullname,
6165   dw2_map_matching_symbols,
6166   dw2_debug_names_expand_symtabs_matching,
6167   dw2_find_pc_sect_compunit_symtab,
6168   NULL,
6169   dw2_map_symbol_filenames
6170 };
6171
6172 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6173    to either a dwarf2_per_objfile or dwz_file object.  */
6174
6175 template <typename T>
6176 static gdb::array_view<const gdb_byte>
6177 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6178 {
6179   dwarf2_section_info *section = &section_owner->gdb_index;
6180
6181   if (dwarf2_section_empty_p (section))
6182     return {};
6183
6184   /* Older elfutils strip versions could keep the section in the main
6185      executable while splitting it for the separate debug info file.  */
6186   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6187     return {};
6188
6189   dwarf2_read_section (obj, section);
6190
6191   return {section->buffer, section->size};
6192 }
6193
6194 /* Lookup the index cache for the contents of the index associated to
6195    DWARF2_OBJ.  */
6196
6197 static gdb::array_view<const gdb_byte>
6198 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6199 {
6200   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6201   if (build_id == nullptr)
6202     return {};
6203
6204   return global_index_cache.lookup_gdb_index (build_id,
6205                                               &dwarf2_obj->index_cache_res);
6206 }
6207
6208 /* Same as the above, but for DWZ.  */
6209
6210 static gdb::array_view<const gdb_byte>
6211 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6212 {
6213   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6214   if (build_id == nullptr)
6215     return {};
6216
6217   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6218 }
6219
6220 /* See symfile.h.  */
6221
6222 bool
6223 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6224 {
6225   struct dwarf2_per_objfile *dwarf2_per_objfile
6226     = get_dwarf2_per_objfile (objfile);
6227
6228   /* If we're about to read full symbols, don't bother with the
6229      indices.  In this case we also don't care if some other debug
6230      format is making psymtabs, because they are all about to be
6231      expanded anyway.  */
6232   if ((objfile->flags & OBJF_READNOW))
6233     {
6234       dwarf2_per_objfile->using_index = 1;
6235       create_all_comp_units (dwarf2_per_objfile);
6236       create_all_type_units (dwarf2_per_objfile);
6237       dwarf2_per_objfile->quick_file_names_table
6238         = create_quick_file_names_table
6239             (dwarf2_per_objfile->all_comp_units.size ());
6240
6241       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6242                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6243         {
6244           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6245
6246           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6247                                             struct dwarf2_per_cu_quick_data);
6248         }
6249
6250       /* Return 1 so that gdb sees the "quick" functions.  However,
6251          these functions will be no-ops because we will have expanded
6252          all symtabs.  */
6253       *index_kind = dw_index_kind::GDB_INDEX;
6254       return true;
6255     }
6256
6257   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6258     {
6259       *index_kind = dw_index_kind::DEBUG_NAMES;
6260       return true;
6261     }
6262
6263   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6264                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6265                              get_gdb_index_contents_from_section<dwz_file>))
6266     {
6267       *index_kind = dw_index_kind::GDB_INDEX;
6268       return true;
6269     }
6270
6271   /* ... otherwise, try to find the index in the index cache.  */
6272   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6273                              get_gdb_index_contents_from_cache,
6274                              get_gdb_index_contents_from_cache_dwz))
6275     {
6276       global_index_cache.hit ();
6277       *index_kind = dw_index_kind::GDB_INDEX;
6278       return true;
6279     }
6280
6281   global_index_cache.miss ();
6282   return false;
6283 }
6284
6285 \f
6286
6287 /* Build a partial symbol table.  */
6288
6289 void
6290 dwarf2_build_psymtabs (struct objfile *objfile)
6291 {
6292   struct dwarf2_per_objfile *dwarf2_per_objfile
6293     = get_dwarf2_per_objfile (objfile);
6294
6295   if (objfile->global_psymbols.capacity () == 0
6296       && objfile->static_psymbols.capacity () == 0)
6297     init_psymbol_list (objfile, 1024);
6298
6299   TRY
6300     {
6301       /* This isn't really ideal: all the data we allocate on the
6302          objfile's obstack is still uselessly kept around.  However,
6303          freeing it seems unsafe.  */
6304       psymtab_discarder psymtabs (objfile);
6305       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6306       psymtabs.keep ();
6307
6308       /* (maybe) store an index in the cache.  */
6309       global_index_cache.store (dwarf2_per_objfile);
6310     }
6311   CATCH (except, RETURN_MASK_ERROR)
6312     {
6313       exception_print (gdb_stderr, except);
6314     }
6315   END_CATCH
6316 }
6317
6318 /* Return the total length of the CU described by HEADER.  */
6319
6320 static unsigned int
6321 get_cu_length (const struct comp_unit_head *header)
6322 {
6323   return header->initial_length_size + header->length;
6324 }
6325
6326 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6327
6328 static inline bool
6329 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6330 {
6331   sect_offset bottom = cu_header->sect_off;
6332   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6333
6334   return sect_off >= bottom && sect_off < top;
6335 }
6336
6337 /* Find the base address of the compilation unit for range lists and
6338    location lists.  It will normally be specified by DW_AT_low_pc.
6339    In DWARF-3 draft 4, the base address could be overridden by
6340    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6341    compilation units with discontinuous ranges.  */
6342
6343 static void
6344 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6345 {
6346   struct attribute *attr;
6347
6348   cu->base_known = 0;
6349   cu->base_address = 0;
6350
6351   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6352   if (attr)
6353     {
6354       cu->base_address = attr_value_as_address (attr);
6355       cu->base_known = 1;
6356     }
6357   else
6358     {
6359       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6360       if (attr)
6361         {
6362           cu->base_address = attr_value_as_address (attr);
6363           cu->base_known = 1;
6364         }
6365     }
6366 }
6367
6368 /* Read in the comp unit header information from the debug_info at info_ptr.
6369    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6370    NOTE: This leaves members offset, first_die_offset to be filled in
6371    by the caller.  */
6372
6373 static const gdb_byte *
6374 read_comp_unit_head (struct comp_unit_head *cu_header,
6375                      const gdb_byte *info_ptr,
6376                      struct dwarf2_section_info *section,
6377                      rcuh_kind section_kind)
6378 {
6379   int signed_addr;
6380   unsigned int bytes_read;
6381   const char *filename = get_section_file_name (section);
6382   bfd *abfd = get_section_bfd_owner (section);
6383
6384   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6385   cu_header->initial_length_size = bytes_read;
6386   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6387   info_ptr += bytes_read;
6388   cu_header->version = read_2_bytes (abfd, info_ptr);
6389   if (cu_header->version < 2 || cu_header->version > 5)
6390     error (_("Dwarf Error: wrong version in compilation unit header "
6391            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6392            cu_header->version, filename);
6393   info_ptr += 2;
6394   if (cu_header->version < 5)
6395     switch (section_kind)
6396       {
6397       case rcuh_kind::COMPILE:
6398         cu_header->unit_type = DW_UT_compile;
6399         break;
6400       case rcuh_kind::TYPE:
6401         cu_header->unit_type = DW_UT_type;
6402         break;
6403       default:
6404         internal_error (__FILE__, __LINE__,
6405                         _("read_comp_unit_head: invalid section_kind"));
6406       }
6407   else
6408     {
6409       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6410                                                  (read_1_byte (abfd, info_ptr));
6411       info_ptr += 1;
6412       switch (cu_header->unit_type)
6413         {
6414         case DW_UT_compile:
6415           if (section_kind != rcuh_kind::COMPILE)
6416             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6417                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6418                    filename);
6419           break;
6420         case DW_UT_type:
6421           section_kind = rcuh_kind::TYPE;
6422           break;
6423         default:
6424           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6425                  "(is %d, should be %d or %d) [in module %s]"),
6426                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6427         }
6428
6429       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6430       info_ptr += 1;
6431     }
6432   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6433                                                           cu_header,
6434                                                           &bytes_read);
6435   info_ptr += bytes_read;
6436   if (cu_header->version < 5)
6437     {
6438       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6439       info_ptr += 1;
6440     }
6441   signed_addr = bfd_get_sign_extend_vma (abfd);
6442   if (signed_addr < 0)
6443     internal_error (__FILE__, __LINE__,
6444                     _("read_comp_unit_head: dwarf from non elf file"));
6445   cu_header->signed_addr_p = signed_addr;
6446
6447   if (section_kind == rcuh_kind::TYPE)
6448     {
6449       LONGEST type_offset;
6450
6451       cu_header->signature = read_8_bytes (abfd, info_ptr);
6452       info_ptr += 8;
6453
6454       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6455       info_ptr += bytes_read;
6456       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6457       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6458         error (_("Dwarf Error: Too big type_offset in compilation unit "
6459                "header (is %s) [in module %s]"), plongest (type_offset),
6460                filename);
6461     }
6462
6463   return info_ptr;
6464 }
6465
6466 /* Helper function that returns the proper abbrev section for
6467    THIS_CU.  */
6468
6469 static struct dwarf2_section_info *
6470 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6471 {
6472   struct dwarf2_section_info *abbrev;
6473   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6474
6475   if (this_cu->is_dwz)
6476     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6477   else
6478     abbrev = &dwarf2_per_objfile->abbrev;
6479
6480   return abbrev;
6481 }
6482
6483 /* Subroutine of read_and_check_comp_unit_head and
6484    read_and_check_type_unit_head to simplify them.
6485    Perform various error checking on the header.  */
6486
6487 static void
6488 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6489                             struct comp_unit_head *header,
6490                             struct dwarf2_section_info *section,
6491                             struct dwarf2_section_info *abbrev_section)
6492 {
6493   const char *filename = get_section_file_name (section);
6494
6495   if (to_underlying (header->abbrev_sect_off)
6496       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6497     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6498            "(offset %s + 6) [in module %s]"),
6499            sect_offset_str (header->abbrev_sect_off),
6500            sect_offset_str (header->sect_off),
6501            filename);
6502
6503   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6504      avoid potential 32-bit overflow.  */
6505   if (((ULONGEST) header->sect_off + get_cu_length (header))
6506       > section->size)
6507     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6508            "(offset %s + 0) [in module %s]"),
6509            header->length, sect_offset_str (header->sect_off),
6510            filename);
6511 }
6512
6513 /* Read in a CU/TU header and perform some basic error checking.
6514    The contents of the header are stored in HEADER.
6515    The result is a pointer to the start of the first DIE.  */
6516
6517 static const gdb_byte *
6518 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6519                                struct comp_unit_head *header,
6520                                struct dwarf2_section_info *section,
6521                                struct dwarf2_section_info *abbrev_section,
6522                                const gdb_byte *info_ptr,
6523                                rcuh_kind section_kind)
6524 {
6525   const gdb_byte *beg_of_comp_unit = info_ptr;
6526
6527   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6528
6529   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6530
6531   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6532
6533   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6534                               abbrev_section);
6535
6536   return info_ptr;
6537 }
6538
6539 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6540
6541 static sect_offset
6542 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6543                     struct dwarf2_section_info *section,
6544                     sect_offset sect_off)
6545 {
6546   bfd *abfd = get_section_bfd_owner (section);
6547   const gdb_byte *info_ptr;
6548   unsigned int initial_length_size, offset_size;
6549   uint16_t version;
6550
6551   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6552   info_ptr = section->buffer + to_underlying (sect_off);
6553   read_initial_length (abfd, info_ptr, &initial_length_size);
6554   offset_size = initial_length_size == 4 ? 4 : 8;
6555   info_ptr += initial_length_size;
6556
6557   version = read_2_bytes (abfd, info_ptr);
6558   info_ptr += 2;
6559   if (version >= 5)
6560     {
6561       /* Skip unit type and address size.  */
6562       info_ptr += 2;
6563     }
6564
6565   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6566 }
6567
6568 /* Allocate a new partial symtab for file named NAME and mark this new
6569    partial symtab as being an include of PST.  */
6570
6571 static void
6572 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6573                                struct objfile *objfile)
6574 {
6575   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6576
6577   if (!IS_ABSOLUTE_PATH (subpst->filename))
6578     {
6579       /* It shares objfile->objfile_obstack.  */
6580       subpst->dirname = pst->dirname;
6581     }
6582
6583   subpst->dependencies
6584     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6585   subpst->dependencies[0] = pst;
6586   subpst->number_of_dependencies = 1;
6587
6588   subpst->globals_offset = 0;
6589   subpst->n_global_syms = 0;
6590   subpst->statics_offset = 0;
6591   subpst->n_static_syms = 0;
6592   subpst->compunit_symtab = NULL;
6593   subpst->read_symtab = pst->read_symtab;
6594   subpst->readin = 0;
6595
6596   /* No private part is necessary for include psymtabs.  This property
6597      can be used to differentiate between such include psymtabs and
6598      the regular ones.  */
6599   subpst->read_symtab_private = NULL;
6600 }
6601
6602 /* Read the Line Number Program data and extract the list of files
6603    included by the source file represented by PST.  Build an include
6604    partial symtab for each of these included files.  */
6605
6606 static void
6607 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6608                                struct die_info *die,
6609                                struct partial_symtab *pst)
6610 {
6611   line_header_up lh;
6612   struct attribute *attr;
6613
6614   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6615   if (attr)
6616     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6617   if (lh == NULL)
6618     return;  /* No linetable, so no includes.  */
6619
6620   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6621      that we pass in the raw text_low here; that is ok because we're
6622      only decoding the line table to make include partial symtabs, and
6623      so the addresses aren't really used.  */
6624   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6625                       pst->raw_text_low (), 1);
6626 }
6627
6628 static hashval_t
6629 hash_signatured_type (const void *item)
6630 {
6631   const struct signatured_type *sig_type
6632     = (const struct signatured_type *) item;
6633
6634   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6635   return sig_type->signature;
6636 }
6637
6638 static int
6639 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6640 {
6641   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6642   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6643
6644   return lhs->signature == rhs->signature;
6645 }
6646
6647 /* Allocate a hash table for signatured types.  */
6648
6649 static htab_t
6650 allocate_signatured_type_table (struct objfile *objfile)
6651 {
6652   return htab_create_alloc_ex (41,
6653                                hash_signatured_type,
6654                                eq_signatured_type,
6655                                NULL,
6656                                &objfile->objfile_obstack,
6657                                hashtab_obstack_allocate,
6658                                dummy_obstack_deallocate);
6659 }
6660
6661 /* A helper function to add a signatured type CU to a table.  */
6662
6663 static int
6664 add_signatured_type_cu_to_table (void **slot, void *datum)
6665 {
6666   struct signatured_type *sigt = (struct signatured_type *) *slot;
6667   std::vector<signatured_type *> *all_type_units
6668     = (std::vector<signatured_type *> *) datum;
6669
6670   all_type_units->push_back (sigt);
6671
6672   return 1;
6673 }
6674
6675 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6676    and fill them into TYPES_HTAB.  It will process only type units,
6677    therefore DW_UT_type.  */
6678
6679 static void
6680 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6681                               struct dwo_file *dwo_file,
6682                               dwarf2_section_info *section, htab_t &types_htab,
6683                               rcuh_kind section_kind)
6684 {
6685   struct objfile *objfile = dwarf2_per_objfile->objfile;
6686   struct dwarf2_section_info *abbrev_section;
6687   bfd *abfd;
6688   const gdb_byte *info_ptr, *end_ptr;
6689
6690   abbrev_section = (dwo_file != NULL
6691                     ? &dwo_file->sections.abbrev
6692                     : &dwarf2_per_objfile->abbrev);
6693
6694   if (dwarf_read_debug)
6695     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6696                         get_section_name (section),
6697                         get_section_file_name (abbrev_section));
6698
6699   dwarf2_read_section (objfile, section);
6700   info_ptr = section->buffer;
6701
6702   if (info_ptr == NULL)
6703     return;
6704
6705   /* We can't set abfd until now because the section may be empty or
6706      not present, in which case the bfd is unknown.  */
6707   abfd = get_section_bfd_owner (section);
6708
6709   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6710      because we don't need to read any dies: the signature is in the
6711      header.  */
6712
6713   end_ptr = info_ptr + section->size;
6714   while (info_ptr < end_ptr)
6715     {
6716       struct signatured_type *sig_type;
6717       struct dwo_unit *dwo_tu;
6718       void **slot;
6719       const gdb_byte *ptr = info_ptr;
6720       struct comp_unit_head header;
6721       unsigned int length;
6722
6723       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6724
6725       /* Initialize it due to a false compiler warning.  */
6726       header.signature = -1;
6727       header.type_cu_offset_in_tu = (cu_offset) -1;
6728
6729       /* We need to read the type's signature in order to build the hash
6730          table, but we don't need anything else just yet.  */
6731
6732       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6733                                            abbrev_section, ptr, section_kind);
6734
6735       length = get_cu_length (&header);
6736
6737       /* Skip dummy type units.  */
6738       if (ptr >= info_ptr + length
6739           || peek_abbrev_code (abfd, ptr) == 0
6740           || header.unit_type != DW_UT_type)
6741         {
6742           info_ptr += length;
6743           continue;
6744         }
6745
6746       if (types_htab == NULL)
6747         {
6748           if (dwo_file)
6749             types_htab = allocate_dwo_unit_table (objfile);
6750           else
6751             types_htab = allocate_signatured_type_table (objfile);
6752         }
6753
6754       if (dwo_file)
6755         {
6756           sig_type = NULL;
6757           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6758                                    struct dwo_unit);
6759           dwo_tu->dwo_file = dwo_file;
6760           dwo_tu->signature = header.signature;
6761           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6762           dwo_tu->section = section;
6763           dwo_tu->sect_off = sect_off;
6764           dwo_tu->length = length;
6765         }
6766       else
6767         {
6768           /* N.B.: type_offset is not usable if this type uses a DWO file.
6769              The real type_offset is in the DWO file.  */
6770           dwo_tu = NULL;
6771           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6772                                      struct signatured_type);
6773           sig_type->signature = header.signature;
6774           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6775           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6776           sig_type->per_cu.is_debug_types = 1;
6777           sig_type->per_cu.section = section;
6778           sig_type->per_cu.sect_off = sect_off;
6779           sig_type->per_cu.length = length;
6780         }
6781
6782       slot = htab_find_slot (types_htab,
6783                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6784                              INSERT);
6785       gdb_assert (slot != NULL);
6786       if (*slot != NULL)
6787         {
6788           sect_offset dup_sect_off;
6789
6790           if (dwo_file)
6791             {
6792               const struct dwo_unit *dup_tu
6793                 = (const struct dwo_unit *) *slot;
6794
6795               dup_sect_off = dup_tu->sect_off;
6796             }
6797           else
6798             {
6799               const struct signatured_type *dup_tu
6800                 = (const struct signatured_type *) *slot;
6801
6802               dup_sect_off = dup_tu->per_cu.sect_off;
6803             }
6804
6805           complaint (_("debug type entry at offset %s is duplicate to"
6806                        " the entry at offset %s, signature %s"),
6807                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6808                      hex_string (header.signature));
6809         }
6810       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6811
6812       if (dwarf_read_debug > 1)
6813         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6814                             sect_offset_str (sect_off),
6815                             hex_string (header.signature));
6816
6817       info_ptr += length;
6818     }
6819 }
6820
6821 /* Create the hash table of all entries in the .debug_types
6822    (or .debug_types.dwo) section(s).
6823    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6824    otherwise it is NULL.
6825
6826    The result is a pointer to the hash table or NULL if there are no types.
6827
6828    Note: This function processes DWO files only, not DWP files.  */
6829
6830 static void
6831 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6832                                struct dwo_file *dwo_file,
6833                                VEC (dwarf2_section_info_def) *types,
6834                                htab_t &types_htab)
6835 {
6836   int ix;
6837   struct dwarf2_section_info *section;
6838
6839   if (VEC_empty (dwarf2_section_info_def, types))
6840     return;
6841
6842   for (ix = 0;
6843        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6844        ++ix)
6845     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6846                                   types_htab, rcuh_kind::TYPE);
6847 }
6848
6849 /* Create the hash table of all entries in the .debug_types section,
6850    and initialize all_type_units.
6851    The result is zero if there is an error (e.g. missing .debug_types section),
6852    otherwise non-zero.  */
6853
6854 static int
6855 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6856 {
6857   htab_t types_htab = NULL;
6858
6859   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6860                                 &dwarf2_per_objfile->info, types_htab,
6861                                 rcuh_kind::COMPILE);
6862   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6863                                  dwarf2_per_objfile->types, types_htab);
6864   if (types_htab == NULL)
6865     {
6866       dwarf2_per_objfile->signatured_types = NULL;
6867       return 0;
6868     }
6869
6870   dwarf2_per_objfile->signatured_types = types_htab;
6871
6872   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6873   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6874
6875   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6876                           &dwarf2_per_objfile->all_type_units);
6877
6878   return 1;
6879 }
6880
6881 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6882    If SLOT is non-NULL, it is the entry to use in the hash table.
6883    Otherwise we find one.  */
6884
6885 static struct signatured_type *
6886 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6887                void **slot)
6888 {
6889   struct objfile *objfile = dwarf2_per_objfile->objfile;
6890
6891   if (dwarf2_per_objfile->all_type_units.size ()
6892       == dwarf2_per_objfile->all_type_units.capacity ())
6893     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6894
6895   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6896                                               struct signatured_type);
6897
6898   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6899   sig_type->signature = sig;
6900   sig_type->per_cu.is_debug_types = 1;
6901   if (dwarf2_per_objfile->using_index)
6902     {
6903       sig_type->per_cu.v.quick =
6904         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6905                         struct dwarf2_per_cu_quick_data);
6906     }
6907
6908   if (slot == NULL)
6909     {
6910       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6911                              sig_type, INSERT);
6912     }
6913   gdb_assert (*slot == NULL);
6914   *slot = sig_type;
6915   /* The rest of sig_type must be filled in by the caller.  */
6916   return sig_type;
6917 }
6918
6919 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6920    Fill in SIG_ENTRY with DWO_ENTRY.  */
6921
6922 static void
6923 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6924                                   struct signatured_type *sig_entry,
6925                                   struct dwo_unit *dwo_entry)
6926 {
6927   /* Make sure we're not clobbering something we don't expect to.  */
6928   gdb_assert (! sig_entry->per_cu.queued);
6929   gdb_assert (sig_entry->per_cu.cu == NULL);
6930   if (dwarf2_per_objfile->using_index)
6931     {
6932       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6933       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6934     }
6935   else
6936       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6937   gdb_assert (sig_entry->signature == dwo_entry->signature);
6938   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6939   gdb_assert (sig_entry->type_unit_group == NULL);
6940   gdb_assert (sig_entry->dwo_unit == NULL);
6941
6942   sig_entry->per_cu.section = dwo_entry->section;
6943   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6944   sig_entry->per_cu.length = dwo_entry->length;
6945   sig_entry->per_cu.reading_dwo_directly = 1;
6946   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6947   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6948   sig_entry->dwo_unit = dwo_entry;
6949 }
6950
6951 /* Subroutine of lookup_signatured_type.
6952    If we haven't read the TU yet, create the signatured_type data structure
6953    for a TU to be read in directly from a DWO file, bypassing the stub.
6954    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6955    using .gdb_index, then when reading a CU we want to stay in the DWO file
6956    containing that CU.  Otherwise we could end up reading several other DWO
6957    files (due to comdat folding) to process the transitive closure of all the
6958    mentioned TUs, and that can be slow.  The current DWO file will have every
6959    type signature that it needs.
6960    We only do this for .gdb_index because in the psymtab case we already have
6961    to read all the DWOs to build the type unit groups.  */
6962
6963 static struct signatured_type *
6964 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6965 {
6966   struct dwarf2_per_objfile *dwarf2_per_objfile
6967     = cu->per_cu->dwarf2_per_objfile;
6968   struct objfile *objfile = dwarf2_per_objfile->objfile;
6969   struct dwo_file *dwo_file;
6970   struct dwo_unit find_dwo_entry, *dwo_entry;
6971   struct signatured_type find_sig_entry, *sig_entry;
6972   void **slot;
6973
6974   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6975
6976   /* If TU skeletons have been removed then we may not have read in any
6977      TUs yet.  */
6978   if (dwarf2_per_objfile->signatured_types == NULL)
6979     {
6980       dwarf2_per_objfile->signatured_types
6981         = allocate_signatured_type_table (objfile);
6982     }
6983
6984   /* We only ever need to read in one copy of a signatured type.
6985      Use the global signatured_types array to do our own comdat-folding
6986      of types.  If this is the first time we're reading this TU, and
6987      the TU has an entry in .gdb_index, replace the recorded data from
6988      .gdb_index with this TU.  */
6989
6990   find_sig_entry.signature = sig;
6991   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6992                          &find_sig_entry, INSERT);
6993   sig_entry = (struct signatured_type *) *slot;
6994
6995   /* We can get here with the TU already read, *or* in the process of being
6996      read.  Don't reassign the global entry to point to this DWO if that's
6997      the case.  Also note that if the TU is already being read, it may not
6998      have come from a DWO, the program may be a mix of Fission-compiled
6999      code and non-Fission-compiled code.  */
7000
7001   /* Have we already tried to read this TU?
7002      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7003      needn't exist in the global table yet).  */
7004   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7005     return sig_entry;
7006
7007   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7008      dwo_unit of the TU itself.  */
7009   dwo_file = cu->dwo_unit->dwo_file;
7010
7011   /* Ok, this is the first time we're reading this TU.  */
7012   if (dwo_file->tus == NULL)
7013     return NULL;
7014   find_dwo_entry.signature = sig;
7015   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7016   if (dwo_entry == NULL)
7017     return NULL;
7018
7019   /* If the global table doesn't have an entry for this TU, add one.  */
7020   if (sig_entry == NULL)
7021     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7022
7023   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7024   sig_entry->per_cu.tu_read = 1;
7025   return sig_entry;
7026 }
7027
7028 /* Subroutine of lookup_signatured_type.
7029    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7030    then try the DWP file.  If the TU stub (skeleton) has been removed then
7031    it won't be in .gdb_index.  */
7032
7033 static struct signatured_type *
7034 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7035 {
7036   struct dwarf2_per_objfile *dwarf2_per_objfile
7037     = cu->per_cu->dwarf2_per_objfile;
7038   struct objfile *objfile = dwarf2_per_objfile->objfile;
7039   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7040   struct dwo_unit *dwo_entry;
7041   struct signatured_type find_sig_entry, *sig_entry;
7042   void **slot;
7043
7044   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7045   gdb_assert (dwp_file != NULL);
7046
7047   /* If TU skeletons have been removed then we may not have read in any
7048      TUs yet.  */
7049   if (dwarf2_per_objfile->signatured_types == NULL)
7050     {
7051       dwarf2_per_objfile->signatured_types
7052         = allocate_signatured_type_table (objfile);
7053     }
7054
7055   find_sig_entry.signature = sig;
7056   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7057                          &find_sig_entry, INSERT);
7058   sig_entry = (struct signatured_type *) *slot;
7059
7060   /* Have we already tried to read this TU?
7061      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7062      needn't exist in the global table yet).  */
7063   if (sig_entry != NULL)
7064     return sig_entry;
7065
7066   if (dwp_file->tus == NULL)
7067     return NULL;
7068   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7069                                       sig, 1 /* is_debug_types */);
7070   if (dwo_entry == NULL)
7071     return NULL;
7072
7073   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7074   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7075
7076   return sig_entry;
7077 }
7078
7079 /* Lookup a signature based type for DW_FORM_ref_sig8.
7080    Returns NULL if signature SIG is not present in the table.
7081    It is up to the caller to complain about this.  */
7082
7083 static struct signatured_type *
7084 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7085 {
7086   struct dwarf2_per_objfile *dwarf2_per_objfile
7087     = cu->per_cu->dwarf2_per_objfile;
7088
7089   if (cu->dwo_unit
7090       && dwarf2_per_objfile->using_index)
7091     {
7092       /* We're in a DWO/DWP file, and we're using .gdb_index.
7093          These cases require special processing.  */
7094       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7095         return lookup_dwo_signatured_type (cu, sig);
7096       else
7097         return lookup_dwp_signatured_type (cu, sig);
7098     }
7099   else
7100     {
7101       struct signatured_type find_entry, *entry;
7102
7103       if (dwarf2_per_objfile->signatured_types == NULL)
7104         return NULL;
7105       find_entry.signature = sig;
7106       entry = ((struct signatured_type *)
7107                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7108       return entry;
7109     }
7110 }
7111 \f
7112 /* Low level DIE reading support.  */
7113
7114 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7115
7116 static void
7117 init_cu_die_reader (struct die_reader_specs *reader,
7118                     struct dwarf2_cu *cu,
7119                     struct dwarf2_section_info *section,
7120                     struct dwo_file *dwo_file,
7121                     struct abbrev_table *abbrev_table)
7122 {
7123   gdb_assert (section->readin && section->buffer != NULL);
7124   reader->abfd = get_section_bfd_owner (section);
7125   reader->cu = cu;
7126   reader->dwo_file = dwo_file;
7127   reader->die_section = section;
7128   reader->buffer = section->buffer;
7129   reader->buffer_end = section->buffer + section->size;
7130   reader->comp_dir = NULL;
7131   reader->abbrev_table = abbrev_table;
7132 }
7133
7134 /* Subroutine of init_cutu_and_read_dies to simplify it.
7135    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7136    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7137    already.
7138
7139    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7140    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7141    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7142    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7143    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7144    STUB_COMP_DIR may be non-NULL.
7145    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7146    are filled in with the info of the DIE from the DWO file.
7147    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7148    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7149    kept around for at least as long as *RESULT_READER.
7150
7151    The result is non-zero if a valid (non-dummy) DIE was found.  */
7152
7153 static int
7154 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7155                         struct dwo_unit *dwo_unit,
7156                         struct die_info *stub_comp_unit_die,
7157                         const char *stub_comp_dir,
7158                         struct die_reader_specs *result_reader,
7159                         const gdb_byte **result_info_ptr,
7160                         struct die_info **result_comp_unit_die,
7161                         int *result_has_children,
7162                         abbrev_table_up *result_dwo_abbrev_table)
7163 {
7164   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7165   struct objfile *objfile = dwarf2_per_objfile->objfile;
7166   struct dwarf2_cu *cu = this_cu->cu;
7167   bfd *abfd;
7168   const gdb_byte *begin_info_ptr, *info_ptr;
7169   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7170   int i,num_extra_attrs;
7171   struct dwarf2_section_info *dwo_abbrev_section;
7172   struct attribute *attr;
7173   struct die_info *comp_unit_die;
7174
7175   /* At most one of these may be provided.  */
7176   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7177
7178   /* These attributes aren't processed until later:
7179      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7180      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7181      referenced later.  However, these attributes are found in the stub
7182      which we won't have later.  In order to not impose this complication
7183      on the rest of the code, we read them here and copy them to the
7184      DWO CU/TU die.  */
7185
7186   stmt_list = NULL;
7187   low_pc = NULL;
7188   high_pc = NULL;
7189   ranges = NULL;
7190   comp_dir = NULL;
7191
7192   if (stub_comp_unit_die != NULL)
7193     {
7194       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7195          DWO file.  */
7196       if (! this_cu->is_debug_types)
7197         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7198       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7199       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7200       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7201       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7202
7203       /* There should be a DW_AT_addr_base attribute here (if needed).
7204          We need the value before we can process DW_FORM_GNU_addr_index.  */
7205       cu->addr_base = 0;
7206       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7207       if (attr)
7208         cu->addr_base = DW_UNSND (attr);
7209
7210       /* There should be a DW_AT_ranges_base attribute here (if needed).
7211          We need the value before we can process DW_AT_ranges.  */
7212       cu->ranges_base = 0;
7213       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7214       if (attr)
7215         cu->ranges_base = DW_UNSND (attr);
7216     }
7217   else if (stub_comp_dir != NULL)
7218     {
7219       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7220       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7221       comp_dir->name = DW_AT_comp_dir;
7222       comp_dir->form = DW_FORM_string;
7223       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7224       DW_STRING (comp_dir) = stub_comp_dir;
7225     }
7226
7227   /* Set up for reading the DWO CU/TU.  */
7228   cu->dwo_unit = dwo_unit;
7229   dwarf2_section_info *section = dwo_unit->section;
7230   dwarf2_read_section (objfile, section);
7231   abfd = get_section_bfd_owner (section);
7232   begin_info_ptr = info_ptr = (section->buffer
7233                                + to_underlying (dwo_unit->sect_off));
7234   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7235
7236   if (this_cu->is_debug_types)
7237     {
7238       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7239
7240       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7241                                                 &cu->header, section,
7242                                                 dwo_abbrev_section,
7243                                                 info_ptr, rcuh_kind::TYPE);
7244       /* This is not an assert because it can be caused by bad debug info.  */
7245       if (sig_type->signature != cu->header.signature)
7246         {
7247           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7248                    " TU at offset %s [in module %s]"),
7249                  hex_string (sig_type->signature),
7250                  hex_string (cu->header.signature),
7251                  sect_offset_str (dwo_unit->sect_off),
7252                  bfd_get_filename (abfd));
7253         }
7254       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7255       /* For DWOs coming from DWP files, we don't know the CU length
7256          nor the type's offset in the TU until now.  */
7257       dwo_unit->length = get_cu_length (&cu->header);
7258       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7259
7260       /* Establish the type offset that can be used to lookup the type.
7261          For DWO files, we don't know it until now.  */
7262       sig_type->type_offset_in_section
7263         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7264     }
7265   else
7266     {
7267       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7268                                                 &cu->header, section,
7269                                                 dwo_abbrev_section,
7270                                                 info_ptr, rcuh_kind::COMPILE);
7271       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7272       /* For DWOs coming from DWP files, we don't know the CU length
7273          until now.  */
7274       dwo_unit->length = get_cu_length (&cu->header);
7275     }
7276
7277   *result_dwo_abbrev_table
7278     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7279                                cu->header.abbrev_sect_off);
7280   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7281                       result_dwo_abbrev_table->get ());
7282
7283   /* Read in the die, but leave space to copy over the attributes
7284      from the stub.  This has the benefit of simplifying the rest of
7285      the code - all the work to maintain the illusion of a single
7286      DW_TAG_{compile,type}_unit DIE is done here.  */
7287   num_extra_attrs = ((stmt_list != NULL)
7288                      + (low_pc != NULL)
7289                      + (high_pc != NULL)
7290                      + (ranges != NULL)
7291                      + (comp_dir != NULL));
7292   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7293                               result_has_children, num_extra_attrs);
7294
7295   /* Copy over the attributes from the stub to the DIE we just read in.  */
7296   comp_unit_die = *result_comp_unit_die;
7297   i = comp_unit_die->num_attrs;
7298   if (stmt_list != NULL)
7299     comp_unit_die->attrs[i++] = *stmt_list;
7300   if (low_pc != NULL)
7301     comp_unit_die->attrs[i++] = *low_pc;
7302   if (high_pc != NULL)
7303     comp_unit_die->attrs[i++] = *high_pc;
7304   if (ranges != NULL)
7305     comp_unit_die->attrs[i++] = *ranges;
7306   if (comp_dir != NULL)
7307     comp_unit_die->attrs[i++] = *comp_dir;
7308   comp_unit_die->num_attrs += num_extra_attrs;
7309
7310   if (dwarf_die_debug)
7311     {
7312       fprintf_unfiltered (gdb_stdlog,
7313                           "Read die from %s@0x%x of %s:\n",
7314                           get_section_name (section),
7315                           (unsigned) (begin_info_ptr - section->buffer),
7316                           bfd_get_filename (abfd));
7317       dump_die (comp_unit_die, dwarf_die_debug);
7318     }
7319
7320   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7321      TUs by skipping the stub and going directly to the entry in the DWO file.
7322      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7323      to get it via circuitous means.  Blech.  */
7324   if (comp_dir != NULL)
7325     result_reader->comp_dir = DW_STRING (comp_dir);
7326
7327   /* Skip dummy compilation units.  */
7328   if (info_ptr >= begin_info_ptr + dwo_unit->length
7329       || peek_abbrev_code (abfd, info_ptr) == 0)
7330     return 0;
7331
7332   *result_info_ptr = info_ptr;
7333   return 1;
7334 }
7335
7336 /* Subroutine of init_cutu_and_read_dies to simplify it.
7337    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7338    Returns NULL if the specified DWO unit cannot be found.  */
7339
7340 static struct dwo_unit *
7341 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7342                  struct die_info *comp_unit_die)
7343 {
7344   struct dwarf2_cu *cu = this_cu->cu;
7345   ULONGEST signature;
7346   struct dwo_unit *dwo_unit;
7347   const char *comp_dir, *dwo_name;
7348
7349   gdb_assert (cu != NULL);
7350
7351   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7352   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7353   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7354
7355   if (this_cu->is_debug_types)
7356     {
7357       struct signatured_type *sig_type;
7358
7359       /* Since this_cu is the first member of struct signatured_type,
7360          we can go from a pointer to one to a pointer to the other.  */
7361       sig_type = (struct signatured_type *) this_cu;
7362       signature = sig_type->signature;
7363       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7364     }
7365   else
7366     {
7367       struct attribute *attr;
7368
7369       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7370       if (! attr)
7371         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7372                  " [in module %s]"),
7373                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7374       signature = DW_UNSND (attr);
7375       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7376                                        signature);
7377     }
7378
7379   return dwo_unit;
7380 }
7381
7382 /* Subroutine of init_cutu_and_read_dies to simplify it.
7383    See it for a description of the parameters.
7384    Read a TU directly from a DWO file, bypassing the stub.  */
7385
7386 static void
7387 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7388                            int use_existing_cu, int keep,
7389                            die_reader_func_ftype *die_reader_func,
7390                            void *data)
7391 {
7392   std::unique_ptr<dwarf2_cu> new_cu;
7393   struct signatured_type *sig_type;
7394   struct die_reader_specs reader;
7395   const gdb_byte *info_ptr;
7396   struct die_info *comp_unit_die;
7397   int has_children;
7398   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7399
7400   /* Verify we can do the following downcast, and that we have the
7401      data we need.  */
7402   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7403   sig_type = (struct signatured_type *) this_cu;
7404   gdb_assert (sig_type->dwo_unit != NULL);
7405
7406   if (use_existing_cu && this_cu->cu != NULL)
7407     {
7408       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7409       /* There's no need to do the rereading_dwo_cu handling that
7410          init_cutu_and_read_dies does since we don't read the stub.  */
7411     }
7412   else
7413     {
7414       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7415       gdb_assert (this_cu->cu == NULL);
7416       new_cu.reset (new dwarf2_cu (this_cu));
7417     }
7418
7419   /* A future optimization, if needed, would be to use an existing
7420      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7421      could share abbrev tables.  */
7422
7423   /* The abbreviation table used by READER, this must live at least as long as
7424      READER.  */
7425   abbrev_table_up dwo_abbrev_table;
7426
7427   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7428                               NULL /* stub_comp_unit_die */,
7429                               sig_type->dwo_unit->dwo_file->comp_dir,
7430                               &reader, &info_ptr,
7431                               &comp_unit_die, &has_children,
7432                               &dwo_abbrev_table) == 0)
7433     {
7434       /* Dummy die.  */
7435       return;
7436     }
7437
7438   /* All the "real" work is done here.  */
7439   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7440
7441   /* This duplicates the code in init_cutu_and_read_dies,
7442      but the alternative is making the latter more complex.
7443      This function is only for the special case of using DWO files directly:
7444      no point in overly complicating the general case just to handle this.  */
7445   if (new_cu != NULL && keep)
7446     {
7447       /* Link this CU into read_in_chain.  */
7448       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7449       dwarf2_per_objfile->read_in_chain = this_cu;
7450       /* The chain owns it now.  */
7451       new_cu.release ();
7452     }
7453 }
7454
7455 /* Initialize a CU (or TU) and read its DIEs.
7456    If the CU defers to a DWO file, read the DWO file as well.
7457
7458    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7459    Otherwise the table specified in the comp unit header is read in and used.
7460    This is an optimization for when we already have the abbrev table.
7461
7462    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7463    Otherwise, a new CU is allocated with xmalloc.
7464
7465    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7466    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7467
7468    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7469    linker) then DIE_READER_FUNC will not get called.  */
7470
7471 static void
7472 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7473                          struct abbrev_table *abbrev_table,
7474                          int use_existing_cu, int keep,
7475                          bool skip_partial,
7476                          die_reader_func_ftype *die_reader_func,
7477                          void *data)
7478 {
7479   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7480   struct objfile *objfile = dwarf2_per_objfile->objfile;
7481   struct dwarf2_section_info *section = this_cu->section;
7482   bfd *abfd = get_section_bfd_owner (section);
7483   struct dwarf2_cu *cu;
7484   const gdb_byte *begin_info_ptr, *info_ptr;
7485   struct die_reader_specs reader;
7486   struct die_info *comp_unit_die;
7487   int has_children;
7488   struct attribute *attr;
7489   struct signatured_type *sig_type = NULL;
7490   struct dwarf2_section_info *abbrev_section;
7491   /* Non-zero if CU currently points to a DWO file and we need to
7492      reread it.  When this happens we need to reread the skeleton die
7493      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7494   int rereading_dwo_cu = 0;
7495
7496   if (dwarf_die_debug)
7497     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7498                         this_cu->is_debug_types ? "type" : "comp",
7499                         sect_offset_str (this_cu->sect_off));
7500
7501   if (use_existing_cu)
7502     gdb_assert (keep);
7503
7504   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7505      file (instead of going through the stub), short-circuit all of this.  */
7506   if (this_cu->reading_dwo_directly)
7507     {
7508       /* Narrow down the scope of possibilities to have to understand.  */
7509       gdb_assert (this_cu->is_debug_types);
7510       gdb_assert (abbrev_table == NULL);
7511       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7512                                  die_reader_func, data);
7513       return;
7514     }
7515
7516   /* This is cheap if the section is already read in.  */
7517   dwarf2_read_section (objfile, section);
7518
7519   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7520
7521   abbrev_section = get_abbrev_section_for_cu (this_cu);
7522
7523   std::unique_ptr<dwarf2_cu> new_cu;
7524   if (use_existing_cu && this_cu->cu != NULL)
7525     {
7526       cu = this_cu->cu;
7527       /* If this CU is from a DWO file we need to start over, we need to
7528          refetch the attributes from the skeleton CU.
7529          This could be optimized by retrieving those attributes from when we
7530          were here the first time: the previous comp_unit_die was stored in
7531          comp_unit_obstack.  But there's no data yet that we need this
7532          optimization.  */
7533       if (cu->dwo_unit != NULL)
7534         rereading_dwo_cu = 1;
7535     }
7536   else
7537     {
7538       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7539       gdb_assert (this_cu->cu == NULL);
7540       new_cu.reset (new dwarf2_cu (this_cu));
7541       cu = new_cu.get ();
7542     }
7543
7544   /* Get the header.  */
7545   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7546     {
7547       /* We already have the header, there's no need to read it in again.  */
7548       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7549     }
7550   else
7551     {
7552       if (this_cu->is_debug_types)
7553         {
7554           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7555                                                     &cu->header, section,
7556                                                     abbrev_section, info_ptr,
7557                                                     rcuh_kind::TYPE);
7558
7559           /* Since per_cu is the first member of struct signatured_type,
7560              we can go from a pointer to one to a pointer to the other.  */
7561           sig_type = (struct signatured_type *) this_cu;
7562           gdb_assert (sig_type->signature == cu->header.signature);
7563           gdb_assert (sig_type->type_offset_in_tu
7564                       == cu->header.type_cu_offset_in_tu);
7565           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7566
7567           /* LENGTH has not been set yet for type units if we're
7568              using .gdb_index.  */
7569           this_cu->length = get_cu_length (&cu->header);
7570
7571           /* Establish the type offset that can be used to lookup the type.  */
7572           sig_type->type_offset_in_section =
7573             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7574
7575           this_cu->dwarf_version = cu->header.version;
7576         }
7577       else
7578         {
7579           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7580                                                     &cu->header, section,
7581                                                     abbrev_section,
7582                                                     info_ptr,
7583                                                     rcuh_kind::COMPILE);
7584
7585           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7586           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7587           this_cu->dwarf_version = cu->header.version;
7588         }
7589     }
7590
7591   /* Skip dummy compilation units.  */
7592   if (info_ptr >= begin_info_ptr + this_cu->length
7593       || peek_abbrev_code (abfd, info_ptr) == 0)
7594     return;
7595
7596   /* If we don't have them yet, read the abbrevs for this compilation unit.
7597      And if we need to read them now, make sure they're freed when we're
7598      done (own the table through ABBREV_TABLE_HOLDER).  */
7599   abbrev_table_up abbrev_table_holder;
7600   if (abbrev_table != NULL)
7601     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7602   else
7603     {
7604       abbrev_table_holder
7605         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7606                                    cu->header.abbrev_sect_off);
7607       abbrev_table = abbrev_table_holder.get ();
7608     }
7609
7610   /* Read the top level CU/TU die.  */
7611   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7612   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7613
7614   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7615     return;
7616
7617   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7618      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7619      table from the DWO file and pass the ownership over to us.  It will be
7620      referenced from READER, so we must make sure to free it after we're done
7621      with READER.
7622
7623      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7624      DWO CU, that this test will fail (the attribute will not be present).  */
7625   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7626   abbrev_table_up dwo_abbrev_table;
7627   if (attr)
7628     {
7629       struct dwo_unit *dwo_unit;
7630       struct die_info *dwo_comp_unit_die;
7631
7632       if (has_children)
7633         {
7634           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7635                        " has children (offset %s) [in module %s]"),
7636                      sect_offset_str (this_cu->sect_off),
7637                      bfd_get_filename (abfd));
7638         }
7639       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7640       if (dwo_unit != NULL)
7641         {
7642           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7643                                       comp_unit_die, NULL,
7644                                       &reader, &info_ptr,
7645                                       &dwo_comp_unit_die, &has_children,
7646                                       &dwo_abbrev_table) == 0)
7647             {
7648               /* Dummy die.  */
7649               return;
7650             }
7651           comp_unit_die = dwo_comp_unit_die;
7652         }
7653       else
7654         {
7655           /* Yikes, we couldn't find the rest of the DIE, we only have
7656              the stub.  A complaint has already been logged.  There's
7657              not much more we can do except pass on the stub DIE to
7658              die_reader_func.  We don't want to throw an error on bad
7659              debug info.  */
7660         }
7661     }
7662
7663   /* All of the above is setup for this call.  Yikes.  */
7664   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7665
7666   /* Done, clean up.  */
7667   if (new_cu != NULL && keep)
7668     {
7669       /* Link this CU into read_in_chain.  */
7670       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7671       dwarf2_per_objfile->read_in_chain = this_cu;
7672       /* The chain owns it now.  */
7673       new_cu.release ();
7674     }
7675 }
7676
7677 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7678    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7679    to have already done the lookup to find the DWO file).
7680
7681    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7682    THIS_CU->is_debug_types, but nothing else.
7683
7684    We fill in THIS_CU->length.
7685
7686    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7687    linker) then DIE_READER_FUNC will not get called.
7688
7689    THIS_CU->cu is always freed when done.
7690    This is done in order to not leave THIS_CU->cu in a state where we have
7691    to care whether it refers to the "main" CU or the DWO CU.  */
7692
7693 static void
7694 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7695                                    struct dwo_file *dwo_file,
7696                                    die_reader_func_ftype *die_reader_func,
7697                                    void *data)
7698 {
7699   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7700   struct objfile *objfile = dwarf2_per_objfile->objfile;
7701   struct dwarf2_section_info *section = this_cu->section;
7702   bfd *abfd = get_section_bfd_owner (section);
7703   struct dwarf2_section_info *abbrev_section;
7704   const gdb_byte *begin_info_ptr, *info_ptr;
7705   struct die_reader_specs reader;
7706   struct die_info *comp_unit_die;
7707   int has_children;
7708
7709   if (dwarf_die_debug)
7710     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7711                         this_cu->is_debug_types ? "type" : "comp",
7712                         sect_offset_str (this_cu->sect_off));
7713
7714   gdb_assert (this_cu->cu == NULL);
7715
7716   abbrev_section = (dwo_file != NULL
7717                     ? &dwo_file->sections.abbrev
7718                     : get_abbrev_section_for_cu (this_cu));
7719
7720   /* This is cheap if the section is already read in.  */
7721   dwarf2_read_section (objfile, section);
7722
7723   struct dwarf2_cu cu (this_cu);
7724
7725   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7726   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7727                                             &cu.header, section,
7728                                             abbrev_section, info_ptr,
7729                                             (this_cu->is_debug_types
7730                                              ? rcuh_kind::TYPE
7731                                              : rcuh_kind::COMPILE));
7732
7733   this_cu->length = get_cu_length (&cu.header);
7734
7735   /* Skip dummy compilation units.  */
7736   if (info_ptr >= begin_info_ptr + this_cu->length
7737       || peek_abbrev_code (abfd, info_ptr) == 0)
7738     return;
7739
7740   abbrev_table_up abbrev_table
7741     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7742                                cu.header.abbrev_sect_off);
7743
7744   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7745   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7746
7747   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7748 }
7749
7750 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7751    does not lookup the specified DWO file.
7752    This cannot be used to read DWO files.
7753
7754    THIS_CU->cu is always freed when done.
7755    This is done in order to not leave THIS_CU->cu in a state where we have
7756    to care whether it refers to the "main" CU or the DWO CU.
7757    We can revisit this if the data shows there's a performance issue.  */
7758
7759 static void
7760 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7761                                 die_reader_func_ftype *die_reader_func,
7762                                 void *data)
7763 {
7764   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7765 }
7766 \f
7767 /* Type Unit Groups.
7768
7769    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7770    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7771    so that all types coming from the same compilation (.o file) are grouped
7772    together.  A future step could be to put the types in the same symtab as
7773    the CU the types ultimately came from.  */
7774
7775 static hashval_t
7776 hash_type_unit_group (const void *item)
7777 {
7778   const struct type_unit_group *tu_group
7779     = (const struct type_unit_group *) item;
7780
7781   return hash_stmt_list_entry (&tu_group->hash);
7782 }
7783
7784 static int
7785 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7786 {
7787   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7788   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7789
7790   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7791 }
7792
7793 /* Allocate a hash table for type unit groups.  */
7794
7795 static htab_t
7796 allocate_type_unit_groups_table (struct objfile *objfile)
7797 {
7798   return htab_create_alloc_ex (3,
7799                                hash_type_unit_group,
7800                                eq_type_unit_group,
7801                                NULL,
7802                                &objfile->objfile_obstack,
7803                                hashtab_obstack_allocate,
7804                                dummy_obstack_deallocate);
7805 }
7806
7807 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7808    partial symtabs.  We combine several TUs per psymtab to not let the size
7809    of any one psymtab grow too big.  */
7810 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7811 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7812
7813 /* Helper routine for get_type_unit_group.
7814    Create the type_unit_group object used to hold one or more TUs.  */
7815
7816 static struct type_unit_group *
7817 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7818 {
7819   struct dwarf2_per_objfile *dwarf2_per_objfile
7820     = cu->per_cu->dwarf2_per_objfile;
7821   struct objfile *objfile = dwarf2_per_objfile->objfile;
7822   struct dwarf2_per_cu_data *per_cu;
7823   struct type_unit_group *tu_group;
7824
7825   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7826                              struct type_unit_group);
7827   per_cu = &tu_group->per_cu;
7828   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7829
7830   if (dwarf2_per_objfile->using_index)
7831     {
7832       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7833                                         struct dwarf2_per_cu_quick_data);
7834     }
7835   else
7836     {
7837       unsigned int line_offset = to_underlying (line_offset_struct);
7838       struct partial_symtab *pst;
7839       std::string name;
7840
7841       /* Give the symtab a useful name for debug purposes.  */
7842       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7843         name = string_printf ("<type_units_%d>",
7844                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7845       else
7846         name = string_printf ("<type_units_at_0x%x>", line_offset);
7847
7848       pst = create_partial_symtab (per_cu, name.c_str ());
7849       pst->anonymous = 1;
7850     }
7851
7852   tu_group->hash.dwo_unit = cu->dwo_unit;
7853   tu_group->hash.line_sect_off = line_offset_struct;
7854
7855   return tu_group;
7856 }
7857
7858 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7859    STMT_LIST is a DW_AT_stmt_list attribute.  */
7860
7861 static struct type_unit_group *
7862 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7863 {
7864   struct dwarf2_per_objfile *dwarf2_per_objfile
7865     = cu->per_cu->dwarf2_per_objfile;
7866   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7867   struct type_unit_group *tu_group;
7868   void **slot;
7869   unsigned int line_offset;
7870   struct type_unit_group type_unit_group_for_lookup;
7871
7872   if (dwarf2_per_objfile->type_unit_groups == NULL)
7873     {
7874       dwarf2_per_objfile->type_unit_groups =
7875         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7876     }
7877
7878   /* Do we need to create a new group, or can we use an existing one?  */
7879
7880   if (stmt_list)
7881     {
7882       line_offset = DW_UNSND (stmt_list);
7883       ++tu_stats->nr_symtab_sharers;
7884     }
7885   else
7886     {
7887       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7888          We can do various things here like create one group per TU or
7889          spread them over multiple groups to split up the expansion work.
7890          To avoid worst case scenarios (too many groups or too large groups)
7891          we, umm, group them in bunches.  */
7892       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7893                      | (tu_stats->nr_stmt_less_type_units
7894                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7895       ++tu_stats->nr_stmt_less_type_units;
7896     }
7897
7898   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7899   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7900   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7901                          &type_unit_group_for_lookup, INSERT);
7902   if (*slot != NULL)
7903     {
7904       tu_group = (struct type_unit_group *) *slot;
7905       gdb_assert (tu_group != NULL);
7906     }
7907   else
7908     {
7909       sect_offset line_offset_struct = (sect_offset) line_offset;
7910       tu_group = create_type_unit_group (cu, line_offset_struct);
7911       *slot = tu_group;
7912       ++tu_stats->nr_symtabs;
7913     }
7914
7915   return tu_group;
7916 }
7917 \f
7918 /* Partial symbol tables.  */
7919
7920 /* Create a psymtab named NAME and assign it to PER_CU.
7921
7922    The caller must fill in the following details:
7923    dirname, textlow, texthigh.  */
7924
7925 static struct partial_symtab *
7926 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7927 {
7928   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7929   struct partial_symtab *pst;
7930
7931   pst = start_psymtab_common (objfile, name, 0,
7932                               objfile->global_psymbols,
7933                               objfile->static_psymbols);
7934
7935   pst->psymtabs_addrmap_supported = 1;
7936
7937   /* This is the glue that links PST into GDB's symbol API.  */
7938   pst->read_symtab_private = per_cu;
7939   pst->read_symtab = dwarf2_read_symtab;
7940   per_cu->v.psymtab = pst;
7941
7942   return pst;
7943 }
7944
7945 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7946    type.  */
7947
7948 struct process_psymtab_comp_unit_data
7949 {
7950   /* True if we are reading a DW_TAG_partial_unit.  */
7951
7952   int want_partial_unit;
7953
7954   /* The "pretend" language that is used if the CU doesn't declare a
7955      language.  */
7956
7957   enum language pretend_language;
7958 };
7959
7960 /* die_reader_func for process_psymtab_comp_unit.  */
7961
7962 static void
7963 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7964                                   const gdb_byte *info_ptr,
7965                                   struct die_info *comp_unit_die,
7966                                   int has_children,
7967                                   void *data)
7968 {
7969   struct dwarf2_cu *cu = reader->cu;
7970   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7971   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7972   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7973   CORE_ADDR baseaddr;
7974   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7975   struct partial_symtab *pst;
7976   enum pc_bounds_kind cu_bounds_kind;
7977   const char *filename;
7978   struct process_psymtab_comp_unit_data *info
7979     = (struct process_psymtab_comp_unit_data *) data;
7980
7981   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7982     return;
7983
7984   gdb_assert (! per_cu->is_debug_types);
7985
7986   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7987
7988   /* Allocate a new partial symbol table structure.  */
7989   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7990   if (filename == NULL)
7991     filename = "";
7992
7993   pst = create_partial_symtab (per_cu, filename);
7994
7995   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7996   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7997
7998   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7999
8000   dwarf2_find_base_address (comp_unit_die, cu);
8001
8002   /* Possibly set the default values of LOWPC and HIGHPC from
8003      `DW_AT_ranges'.  */
8004   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8005                                          &best_highpc, cu, pst);
8006   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8007     {
8008       CORE_ADDR low
8009         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8010            - baseaddr);
8011       CORE_ADDR high
8012         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8013            - baseaddr - 1);
8014       /* Store the contiguous range if it is not empty; it can be
8015          empty for CUs with no code.  */
8016       addrmap_set_empty (objfile->psymtabs_addrmap, low, high, pst);
8017     }
8018
8019   /* Check if comp unit has_children.
8020      If so, read the rest of the partial symbols from this comp unit.
8021      If not, there's no more debug_info for this comp unit.  */
8022   if (has_children)
8023     {
8024       struct partial_die_info *first_die;
8025       CORE_ADDR lowpc, highpc;
8026
8027       lowpc = ((CORE_ADDR) -1);
8028       highpc = ((CORE_ADDR) 0);
8029
8030       first_die = load_partial_dies (reader, info_ptr, 1);
8031
8032       scan_partial_symbols (first_die, &lowpc, &highpc,
8033                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8034
8035       /* If we didn't find a lowpc, set it to highpc to avoid
8036          complaints from `maint check'.  */
8037       if (lowpc == ((CORE_ADDR) -1))
8038         lowpc = highpc;
8039
8040       /* If the compilation unit didn't have an explicit address range,
8041          then use the information extracted from its child dies.  */
8042       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8043         {
8044           best_lowpc = lowpc;
8045           best_highpc = highpc;
8046         }
8047     }
8048   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8049                                                  best_lowpc + baseaddr)
8050                      - baseaddr);
8051   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8052                                                   best_highpc + baseaddr)
8053                       - baseaddr);
8054
8055   end_psymtab_common (objfile, pst);
8056
8057   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8058     {
8059       int i;
8060       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8061       struct dwarf2_per_cu_data *iter;
8062
8063       /* Fill in 'dependencies' here; we fill in 'users' in a
8064          post-pass.  */
8065       pst->number_of_dependencies = len;
8066       pst->dependencies =
8067         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8068       for (i = 0;
8069            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8070                         i, iter);
8071            ++i)
8072         pst->dependencies[i] = iter->v.psymtab;
8073
8074       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8075     }
8076
8077   /* Get the list of files included in the current compilation unit,
8078      and build a psymtab for each of them.  */
8079   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8080
8081   if (dwarf_read_debug)
8082     fprintf_unfiltered (gdb_stdlog,
8083                         "Psymtab for %s unit @%s: %s - %s"
8084                         ", %d global, %d static syms\n",
8085                         per_cu->is_debug_types ? "type" : "comp",
8086                         sect_offset_str (per_cu->sect_off),
8087                         paddress (gdbarch, pst->text_low (objfile)),
8088                         paddress (gdbarch, pst->text_high (objfile)),
8089                         pst->n_global_syms, pst->n_static_syms);
8090 }
8091
8092 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8093    Process compilation unit THIS_CU for a psymtab.  */
8094
8095 static void
8096 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8097                            int want_partial_unit,
8098                            enum language pretend_language)
8099 {
8100   /* If this compilation unit was already read in, free the
8101      cached copy in order to read it in again.  This is
8102      necessary because we skipped some symbols when we first
8103      read in the compilation unit (see load_partial_dies).
8104      This problem could be avoided, but the benefit is unclear.  */
8105   if (this_cu->cu != NULL)
8106     free_one_cached_comp_unit (this_cu);
8107
8108   if (this_cu->is_debug_types)
8109     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8110                              build_type_psymtabs_reader, NULL);
8111   else
8112     {
8113       process_psymtab_comp_unit_data info;
8114       info.want_partial_unit = want_partial_unit;
8115       info.pretend_language = pretend_language;
8116       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8117                                process_psymtab_comp_unit_reader, &info);
8118     }
8119
8120   /* Age out any secondary CUs.  */
8121   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8122 }
8123
8124 /* Reader function for build_type_psymtabs.  */
8125
8126 static void
8127 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8128                             const gdb_byte *info_ptr,
8129                             struct die_info *type_unit_die,
8130                             int has_children,
8131                             void *data)
8132 {
8133   struct dwarf2_per_objfile *dwarf2_per_objfile
8134     = reader->cu->per_cu->dwarf2_per_objfile;
8135   struct objfile *objfile = dwarf2_per_objfile->objfile;
8136   struct dwarf2_cu *cu = reader->cu;
8137   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8138   struct signatured_type *sig_type;
8139   struct type_unit_group *tu_group;
8140   struct attribute *attr;
8141   struct partial_die_info *first_die;
8142   CORE_ADDR lowpc, highpc;
8143   struct partial_symtab *pst;
8144
8145   gdb_assert (data == NULL);
8146   gdb_assert (per_cu->is_debug_types);
8147   sig_type = (struct signatured_type *) per_cu;
8148
8149   if (! has_children)
8150     return;
8151
8152   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8153   tu_group = get_type_unit_group (cu, attr);
8154
8155   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8156
8157   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8158   pst = create_partial_symtab (per_cu, "");
8159   pst->anonymous = 1;
8160
8161   first_die = load_partial_dies (reader, info_ptr, 1);
8162
8163   lowpc = (CORE_ADDR) -1;
8164   highpc = (CORE_ADDR) 0;
8165   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8166
8167   end_psymtab_common (objfile, pst);
8168 }
8169
8170 /* Struct used to sort TUs by their abbreviation table offset.  */
8171
8172 struct tu_abbrev_offset
8173 {
8174   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8175   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8176   {}
8177
8178   signatured_type *sig_type;
8179   sect_offset abbrev_offset;
8180 };
8181
8182 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8183
8184 static bool
8185 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8186                           const struct tu_abbrev_offset &b)
8187 {
8188   return a.abbrev_offset < b.abbrev_offset;
8189 }
8190
8191 /* Efficiently read all the type units.
8192    This does the bulk of the work for build_type_psymtabs.
8193
8194    The efficiency is because we sort TUs by the abbrev table they use and
8195    only read each abbrev table once.  In one program there are 200K TUs
8196    sharing 8K abbrev tables.
8197
8198    The main purpose of this function is to support building the
8199    dwarf2_per_objfile->type_unit_groups table.
8200    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8201    can collapse the search space by grouping them by stmt_list.
8202    The savings can be significant, in the same program from above the 200K TUs
8203    share 8K stmt_list tables.
8204
8205    FUNC is expected to call get_type_unit_group, which will create the
8206    struct type_unit_group if necessary and add it to
8207    dwarf2_per_objfile->type_unit_groups.  */
8208
8209 static void
8210 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8211 {
8212   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8213   abbrev_table_up abbrev_table;
8214   sect_offset abbrev_offset;
8215
8216   /* It's up to the caller to not call us multiple times.  */
8217   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8218
8219   if (dwarf2_per_objfile->all_type_units.empty ())
8220     return;
8221
8222   /* TUs typically share abbrev tables, and there can be way more TUs than
8223      abbrev tables.  Sort by abbrev table to reduce the number of times we
8224      read each abbrev table in.
8225      Alternatives are to punt or to maintain a cache of abbrev tables.
8226      This is simpler and efficient enough for now.
8227
8228      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8229      symtab to use).  Typically TUs with the same abbrev offset have the same
8230      stmt_list value too so in practice this should work well.
8231
8232      The basic algorithm here is:
8233
8234       sort TUs by abbrev table
8235       for each TU with same abbrev table:
8236         read abbrev table if first user
8237         read TU top level DIE
8238           [IWBN if DWO skeletons had DW_AT_stmt_list]
8239         call FUNC  */
8240
8241   if (dwarf_read_debug)
8242     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8243
8244   /* Sort in a separate table to maintain the order of all_type_units
8245      for .gdb_index: TU indices directly index all_type_units.  */
8246   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8247   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8248
8249   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8250     sorted_by_abbrev.emplace_back
8251       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8252                                      sig_type->per_cu.section,
8253                                      sig_type->per_cu.sect_off));
8254
8255   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8256              sort_tu_by_abbrev_offset);
8257
8258   abbrev_offset = (sect_offset) ~(unsigned) 0;
8259
8260   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8261     {
8262       /* Switch to the next abbrev table if necessary.  */
8263       if (abbrev_table == NULL
8264           || tu.abbrev_offset != abbrev_offset)
8265         {
8266           abbrev_offset = tu.abbrev_offset;
8267           abbrev_table =
8268             abbrev_table_read_table (dwarf2_per_objfile,
8269                                      &dwarf2_per_objfile->abbrev,
8270                                      abbrev_offset);
8271           ++tu_stats->nr_uniq_abbrev_tables;
8272         }
8273
8274       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8275                                0, 0, false, build_type_psymtabs_reader, NULL);
8276     }
8277 }
8278
8279 /* Print collected type unit statistics.  */
8280
8281 static void
8282 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8283 {
8284   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8285
8286   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8287   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8288                       dwarf2_per_objfile->all_type_units.size ());
8289   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8290                       tu_stats->nr_uniq_abbrev_tables);
8291   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8292                       tu_stats->nr_symtabs);
8293   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8294                       tu_stats->nr_symtab_sharers);
8295   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8296                       tu_stats->nr_stmt_less_type_units);
8297   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8298                       tu_stats->nr_all_type_units_reallocs);
8299 }
8300
8301 /* Traversal function for build_type_psymtabs.  */
8302
8303 static int
8304 build_type_psymtab_dependencies (void **slot, void *info)
8305 {
8306   struct dwarf2_per_objfile *dwarf2_per_objfile
8307     = (struct dwarf2_per_objfile *) info;
8308   struct objfile *objfile = dwarf2_per_objfile->objfile;
8309   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8310   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8311   struct partial_symtab *pst = per_cu->v.psymtab;
8312   int len = VEC_length (sig_type_ptr, tu_group->tus);
8313   struct signatured_type *iter;
8314   int i;
8315
8316   gdb_assert (len > 0);
8317   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8318
8319   pst->number_of_dependencies = len;
8320   pst->dependencies =
8321     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8322   for (i = 0;
8323        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8324        ++i)
8325     {
8326       gdb_assert (iter->per_cu.is_debug_types);
8327       pst->dependencies[i] = iter->per_cu.v.psymtab;
8328       iter->type_unit_group = tu_group;
8329     }
8330
8331   VEC_free (sig_type_ptr, tu_group->tus);
8332
8333   return 1;
8334 }
8335
8336 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8337    Build partial symbol tables for the .debug_types comp-units.  */
8338
8339 static void
8340 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8341 {
8342   if (! create_all_type_units (dwarf2_per_objfile))
8343     return;
8344
8345   build_type_psymtabs_1 (dwarf2_per_objfile);
8346 }
8347
8348 /* Traversal function for process_skeletonless_type_unit.
8349    Read a TU in a DWO file and build partial symbols for it.  */
8350
8351 static int
8352 process_skeletonless_type_unit (void **slot, void *info)
8353 {
8354   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8355   struct dwarf2_per_objfile *dwarf2_per_objfile
8356     = (struct dwarf2_per_objfile *) info;
8357   struct signatured_type find_entry, *entry;
8358
8359   /* If this TU doesn't exist in the global table, add it and read it in.  */
8360
8361   if (dwarf2_per_objfile->signatured_types == NULL)
8362     {
8363       dwarf2_per_objfile->signatured_types
8364         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8365     }
8366
8367   find_entry.signature = dwo_unit->signature;
8368   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8369                          INSERT);
8370   /* If we've already seen this type there's nothing to do.  What's happening
8371      is we're doing our own version of comdat-folding here.  */
8372   if (*slot != NULL)
8373     return 1;
8374
8375   /* This does the job that create_all_type_units would have done for
8376      this TU.  */
8377   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8378   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8379   *slot = entry;
8380
8381   /* This does the job that build_type_psymtabs_1 would have done.  */
8382   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8383                            build_type_psymtabs_reader, NULL);
8384
8385   return 1;
8386 }
8387
8388 /* Traversal function for process_skeletonless_type_units.  */
8389
8390 static int
8391 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8392 {
8393   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8394
8395   if (dwo_file->tus != NULL)
8396     {
8397       htab_traverse_noresize (dwo_file->tus,
8398                               process_skeletonless_type_unit, info);
8399     }
8400
8401   return 1;
8402 }
8403
8404 /* Scan all TUs of DWO files, verifying we've processed them.
8405    This is needed in case a TU was emitted without its skeleton.
8406    Note: This can't be done until we know what all the DWO files are.  */
8407
8408 static void
8409 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8410 {
8411   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8412   if (get_dwp_file (dwarf2_per_objfile) == NULL
8413       && dwarf2_per_objfile->dwo_files != NULL)
8414     {
8415       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8416                               process_dwo_file_for_skeletonless_type_units,
8417                               dwarf2_per_objfile);
8418     }
8419 }
8420
8421 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8422
8423 static void
8424 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8425 {
8426   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8427     {
8428       struct partial_symtab *pst = per_cu->v.psymtab;
8429
8430       if (pst == NULL)
8431         continue;
8432
8433       for (int j = 0; j < pst->number_of_dependencies; ++j)
8434         {
8435           /* Set the 'user' field only if it is not already set.  */
8436           if (pst->dependencies[j]->user == NULL)
8437             pst->dependencies[j]->user = pst;
8438         }
8439     }
8440 }
8441
8442 /* Build the partial symbol table by doing a quick pass through the
8443    .debug_info and .debug_abbrev sections.  */
8444
8445 static void
8446 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8447 {
8448   struct objfile *objfile = dwarf2_per_objfile->objfile;
8449
8450   if (dwarf_read_debug)
8451     {
8452       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8453                           objfile_name (objfile));
8454     }
8455
8456   dwarf2_per_objfile->reading_partial_symbols = 1;
8457
8458   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8459
8460   /* Any cached compilation units will be linked by the per-objfile
8461      read_in_chain.  Make sure to free them when we're done.  */
8462   free_cached_comp_units freer (dwarf2_per_objfile);
8463
8464   build_type_psymtabs (dwarf2_per_objfile);
8465
8466   create_all_comp_units (dwarf2_per_objfile);
8467
8468   /* Create a temporary address map on a temporary obstack.  We later
8469      copy this to the final obstack.  */
8470   auto_obstack temp_obstack;
8471
8472   scoped_restore save_psymtabs_addrmap
8473     = make_scoped_restore (&objfile->psymtabs_addrmap,
8474                            addrmap_create_mutable (&temp_obstack));
8475
8476   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8477     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8478
8479   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8480   process_skeletonless_type_units (dwarf2_per_objfile);
8481
8482   /* Now that all TUs have been processed we can fill in the dependencies.  */
8483   if (dwarf2_per_objfile->type_unit_groups != NULL)
8484     {
8485       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8486                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8487     }
8488
8489   if (dwarf_read_debug)
8490     print_tu_stats (dwarf2_per_objfile);
8491
8492   set_partial_user (dwarf2_per_objfile);
8493
8494   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8495                                                     &objfile->objfile_obstack);
8496   /* At this point we want to keep the address map.  */
8497   save_psymtabs_addrmap.release ();
8498
8499   if (dwarf_read_debug)
8500     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8501                         objfile_name (objfile));
8502 }
8503
8504 /* die_reader_func for load_partial_comp_unit.  */
8505
8506 static void
8507 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8508                                const gdb_byte *info_ptr,
8509                                struct die_info *comp_unit_die,
8510                                int has_children,
8511                                void *data)
8512 {
8513   struct dwarf2_cu *cu = reader->cu;
8514
8515   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8516
8517   /* Check if comp unit has_children.
8518      If so, read the rest of the partial symbols from this comp unit.
8519      If not, there's no more debug_info for this comp unit.  */
8520   if (has_children)
8521     load_partial_dies (reader, info_ptr, 0);
8522 }
8523
8524 /* Load the partial DIEs for a secondary CU into memory.
8525    This is also used when rereading a primary CU with load_all_dies.  */
8526
8527 static void
8528 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8529 {
8530   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8531                            load_partial_comp_unit_reader, NULL);
8532 }
8533
8534 static void
8535 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8536                               struct dwarf2_section_info *section,
8537                               struct dwarf2_section_info *abbrev_section,
8538                               unsigned int is_dwz)
8539 {
8540   const gdb_byte *info_ptr;
8541   struct objfile *objfile = dwarf2_per_objfile->objfile;
8542
8543   if (dwarf_read_debug)
8544     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8545                         get_section_name (section),
8546                         get_section_file_name (section));
8547
8548   dwarf2_read_section (objfile, section);
8549
8550   info_ptr = section->buffer;
8551
8552   while (info_ptr < section->buffer + section->size)
8553     {
8554       struct dwarf2_per_cu_data *this_cu;
8555
8556       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8557
8558       comp_unit_head cu_header;
8559       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8560                                      abbrev_section, info_ptr,
8561                                      rcuh_kind::COMPILE);
8562
8563       /* Save the compilation unit for later lookup.  */
8564       if (cu_header.unit_type != DW_UT_type)
8565         {
8566           this_cu = XOBNEW (&objfile->objfile_obstack,
8567                             struct dwarf2_per_cu_data);
8568           memset (this_cu, 0, sizeof (*this_cu));
8569         }
8570       else
8571         {
8572           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8573                                   struct signatured_type);
8574           memset (sig_type, 0, sizeof (*sig_type));
8575           sig_type->signature = cu_header.signature;
8576           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8577           this_cu = &sig_type->per_cu;
8578         }
8579       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8580       this_cu->sect_off = sect_off;
8581       this_cu->length = cu_header.length + cu_header.initial_length_size;
8582       this_cu->is_dwz = is_dwz;
8583       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8584       this_cu->section = section;
8585
8586       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8587
8588       info_ptr = info_ptr + this_cu->length;
8589     }
8590 }
8591
8592 /* Create a list of all compilation units in OBJFILE.
8593    This is only done for -readnow and building partial symtabs.  */
8594
8595 static void
8596 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8597 {
8598   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8599   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8600                                 &dwarf2_per_objfile->abbrev, 0);
8601
8602   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8603   if (dwz != NULL)
8604     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8605                                   1);
8606 }
8607
8608 /* Process all loaded DIEs for compilation unit CU, starting at
8609    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8610    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8611    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8612    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8613
8614 static void
8615 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8616                       CORE_ADDR *highpc, int set_addrmap,
8617                       struct dwarf2_cu *cu)
8618 {
8619   struct partial_die_info *pdi;
8620
8621   /* Now, march along the PDI's, descending into ones which have
8622      interesting children but skipping the children of the other ones,
8623      until we reach the end of the compilation unit.  */
8624
8625   pdi = first_die;
8626
8627   while (pdi != NULL)
8628     {
8629       pdi->fixup (cu);
8630
8631       /* Anonymous namespaces or modules have no name but have interesting
8632          children, so we need to look at them.  Ditto for anonymous
8633          enums.  */
8634
8635       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8636           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8637           || pdi->tag == DW_TAG_imported_unit
8638           || pdi->tag == DW_TAG_inlined_subroutine)
8639         {
8640           switch (pdi->tag)
8641             {
8642             case DW_TAG_subprogram:
8643             case DW_TAG_inlined_subroutine:
8644               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8645               break;
8646             case DW_TAG_constant:
8647             case DW_TAG_variable:
8648             case DW_TAG_typedef:
8649             case DW_TAG_union_type:
8650               if (!pdi->is_declaration)
8651                 {
8652                   add_partial_symbol (pdi, cu);
8653                 }
8654               break;
8655             case DW_TAG_class_type:
8656             case DW_TAG_interface_type:
8657             case DW_TAG_structure_type:
8658               if (!pdi->is_declaration)
8659                 {
8660                   add_partial_symbol (pdi, cu);
8661                 }
8662               if ((cu->language == language_rust
8663                    || cu->language == language_cplus) && pdi->has_children)
8664                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8665                                       set_addrmap, cu);
8666               break;
8667             case DW_TAG_enumeration_type:
8668               if (!pdi->is_declaration)
8669                 add_partial_enumeration (pdi, cu);
8670               break;
8671             case DW_TAG_base_type:
8672             case DW_TAG_subrange_type:
8673               /* File scope base type definitions are added to the partial
8674                  symbol table.  */
8675               add_partial_symbol (pdi, cu);
8676               break;
8677             case DW_TAG_namespace:
8678               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8679               break;
8680             case DW_TAG_module:
8681               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8682               break;
8683             case DW_TAG_imported_unit:
8684               {
8685                 struct dwarf2_per_cu_data *per_cu;
8686
8687                 /* For now we don't handle imported units in type units.  */
8688                 if (cu->per_cu->is_debug_types)
8689                   {
8690                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8691                              " supported in type units [in module %s]"),
8692                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8693                   }
8694
8695                 per_cu = dwarf2_find_containing_comp_unit
8696                            (pdi->d.sect_off, pdi->is_dwz,
8697                             cu->per_cu->dwarf2_per_objfile);
8698
8699                 /* Go read the partial unit, if needed.  */
8700                 if (per_cu->v.psymtab == NULL)
8701                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8702
8703                 VEC_safe_push (dwarf2_per_cu_ptr,
8704                                cu->per_cu->imported_symtabs, per_cu);
8705               }
8706               break;
8707             case DW_TAG_imported_declaration:
8708               add_partial_symbol (pdi, cu);
8709               break;
8710             default:
8711               break;
8712             }
8713         }
8714
8715       /* If the die has a sibling, skip to the sibling.  */
8716
8717       pdi = pdi->die_sibling;
8718     }
8719 }
8720
8721 /* Functions used to compute the fully scoped name of a partial DIE.
8722
8723    Normally, this is simple.  For C++, the parent DIE's fully scoped
8724    name is concatenated with "::" and the partial DIE's name.
8725    Enumerators are an exception; they use the scope of their parent
8726    enumeration type, i.e. the name of the enumeration type is not
8727    prepended to the enumerator.
8728
8729    There are two complexities.  One is DW_AT_specification; in this
8730    case "parent" means the parent of the target of the specification,
8731    instead of the direct parent of the DIE.  The other is compilers
8732    which do not emit DW_TAG_namespace; in this case we try to guess
8733    the fully qualified name of structure types from their members'
8734    linkage names.  This must be done using the DIE's children rather
8735    than the children of any DW_AT_specification target.  We only need
8736    to do this for structures at the top level, i.e. if the target of
8737    any DW_AT_specification (if any; otherwise the DIE itself) does not
8738    have a parent.  */
8739
8740 /* Compute the scope prefix associated with PDI's parent, in
8741    compilation unit CU.  The result will be allocated on CU's
8742    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8743    field.  NULL is returned if no prefix is necessary.  */
8744 static const char *
8745 partial_die_parent_scope (struct partial_die_info *pdi,
8746                           struct dwarf2_cu *cu)
8747 {
8748   const char *grandparent_scope;
8749   struct partial_die_info *parent, *real_pdi;
8750
8751   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8752      then this means the parent of the specification DIE.  */
8753
8754   real_pdi = pdi;
8755   while (real_pdi->has_specification)
8756     real_pdi = find_partial_die (real_pdi->spec_offset,
8757                                  real_pdi->spec_is_dwz, cu);
8758
8759   parent = real_pdi->die_parent;
8760   if (parent == NULL)
8761     return NULL;
8762
8763   if (parent->scope_set)
8764     return parent->scope;
8765
8766   parent->fixup (cu);
8767
8768   grandparent_scope = partial_die_parent_scope (parent, cu);
8769
8770   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8771      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8772      Work around this problem here.  */
8773   if (cu->language == language_cplus
8774       && parent->tag == DW_TAG_namespace
8775       && strcmp (parent->name, "::") == 0
8776       && grandparent_scope == NULL)
8777     {
8778       parent->scope = NULL;
8779       parent->scope_set = 1;
8780       return NULL;
8781     }
8782
8783   if (pdi->tag == DW_TAG_enumerator)
8784     /* Enumerators should not get the name of the enumeration as a prefix.  */
8785     parent->scope = grandparent_scope;
8786   else if (parent->tag == DW_TAG_namespace
8787       || parent->tag == DW_TAG_module
8788       || parent->tag == DW_TAG_structure_type
8789       || parent->tag == DW_TAG_class_type
8790       || parent->tag == DW_TAG_interface_type
8791       || parent->tag == DW_TAG_union_type
8792       || parent->tag == DW_TAG_enumeration_type)
8793     {
8794       if (grandparent_scope == NULL)
8795         parent->scope = parent->name;
8796       else
8797         parent->scope = typename_concat (&cu->comp_unit_obstack,
8798                                          grandparent_scope,
8799                                          parent->name, 0, cu);
8800     }
8801   else
8802     {
8803       /* FIXME drow/2004-04-01: What should we be doing with
8804          function-local names?  For partial symbols, we should probably be
8805          ignoring them.  */
8806       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8807                  parent->tag, sect_offset_str (pdi->sect_off));
8808       parent->scope = grandparent_scope;
8809     }
8810
8811   parent->scope_set = 1;
8812   return parent->scope;
8813 }
8814
8815 /* Return the fully scoped name associated with PDI, from compilation unit
8816    CU.  The result will be allocated with malloc.  */
8817
8818 static char *
8819 partial_die_full_name (struct partial_die_info *pdi,
8820                        struct dwarf2_cu *cu)
8821 {
8822   const char *parent_scope;
8823
8824   /* If this is a template instantiation, we can not work out the
8825      template arguments from partial DIEs.  So, unfortunately, we have
8826      to go through the full DIEs.  At least any work we do building
8827      types here will be reused if full symbols are loaded later.  */
8828   if (pdi->has_template_arguments)
8829     {
8830       pdi->fixup (cu);
8831
8832       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8833         {
8834           struct die_info *die;
8835           struct attribute attr;
8836           struct dwarf2_cu *ref_cu = cu;
8837
8838           /* DW_FORM_ref_addr is using section offset.  */
8839           attr.name = (enum dwarf_attribute) 0;
8840           attr.form = DW_FORM_ref_addr;
8841           attr.u.unsnd = to_underlying (pdi->sect_off);
8842           die = follow_die_ref (NULL, &attr, &ref_cu);
8843
8844           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8845         }
8846     }
8847
8848   parent_scope = partial_die_parent_scope (pdi, cu);
8849   if (parent_scope == NULL)
8850     return NULL;
8851   else
8852     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8853 }
8854
8855 static void
8856 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8857 {
8858   struct dwarf2_per_objfile *dwarf2_per_objfile
8859     = cu->per_cu->dwarf2_per_objfile;
8860   struct objfile *objfile = dwarf2_per_objfile->objfile;
8861   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8862   CORE_ADDR addr = 0;
8863   const char *actual_name = NULL;
8864   CORE_ADDR baseaddr;
8865   char *built_actual_name;
8866
8867   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8868
8869   built_actual_name = partial_die_full_name (pdi, cu);
8870   if (built_actual_name != NULL)
8871     actual_name = built_actual_name;
8872
8873   if (actual_name == NULL)
8874     actual_name = pdi->name;
8875
8876   switch (pdi->tag)
8877     {
8878     case DW_TAG_inlined_subroutine:
8879     case DW_TAG_subprogram:
8880       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8881               - baseaddr);
8882       if (pdi->is_external || cu->language == language_ada)
8883         {
8884           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8885              of the global scope.  But in Ada, we want to be able to access
8886              nested procedures globally.  So all Ada subprograms are stored
8887              in the global scope.  */
8888           add_psymbol_to_list (actual_name, strlen (actual_name),
8889                                built_actual_name != NULL,
8890                                VAR_DOMAIN, LOC_BLOCK,
8891                                SECT_OFF_TEXT (objfile),
8892                                &objfile->global_psymbols,
8893                                addr,
8894                                cu->language, objfile);
8895         }
8896       else
8897         {
8898           add_psymbol_to_list (actual_name, strlen (actual_name),
8899                                built_actual_name != NULL,
8900                                VAR_DOMAIN, LOC_BLOCK,
8901                                SECT_OFF_TEXT (objfile),
8902                                &objfile->static_psymbols,
8903                                addr, cu->language, objfile);
8904         }
8905
8906       if (pdi->main_subprogram && actual_name != NULL)
8907         set_objfile_main_name (objfile, actual_name, cu->language);
8908       break;
8909     case DW_TAG_constant:
8910       {
8911         std::vector<partial_symbol *> *list;
8912
8913         if (pdi->is_external)
8914           list = &objfile->global_psymbols;
8915         else
8916           list = &objfile->static_psymbols;
8917         add_psymbol_to_list (actual_name, strlen (actual_name),
8918                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8919                              -1, list, 0, cu->language, objfile);
8920       }
8921       break;
8922     case DW_TAG_variable:
8923       if (pdi->d.locdesc)
8924         addr = decode_locdesc (pdi->d.locdesc, cu);
8925
8926       if (pdi->d.locdesc
8927           && addr == 0
8928           && !dwarf2_per_objfile->has_section_at_zero)
8929         {
8930           /* A global or static variable may also have been stripped
8931              out by the linker if unused, in which case its address
8932              will be nullified; do not add such variables into partial
8933              symbol table then.  */
8934         }
8935       else if (pdi->is_external)
8936         {
8937           /* Global Variable.
8938              Don't enter into the minimal symbol tables as there is
8939              a minimal symbol table entry from the ELF symbols already.
8940              Enter into partial symbol table if it has a location
8941              descriptor or a type.
8942              If the location descriptor is missing, new_symbol will create
8943              a LOC_UNRESOLVED symbol, the address of the variable will then
8944              be determined from the minimal symbol table whenever the variable
8945              is referenced.
8946              The address for the partial symbol table entry is not
8947              used by GDB, but it comes in handy for debugging partial symbol
8948              table building.  */
8949
8950           if (pdi->d.locdesc || pdi->has_type)
8951             add_psymbol_to_list (actual_name, strlen (actual_name),
8952                                  built_actual_name != NULL,
8953                                  VAR_DOMAIN, LOC_STATIC,
8954                                  SECT_OFF_TEXT (objfile),
8955                                  &objfile->global_psymbols,
8956                                  addr, cu->language, objfile);
8957         }
8958       else
8959         {
8960           int has_loc = pdi->d.locdesc != NULL;
8961
8962           /* Static Variable.  Skip symbols whose value we cannot know (those
8963              without location descriptors or constant values).  */
8964           if (!has_loc && !pdi->has_const_value)
8965             {
8966               xfree (built_actual_name);
8967               return;
8968             }
8969
8970           add_psymbol_to_list (actual_name, strlen (actual_name),
8971                                built_actual_name != NULL,
8972                                VAR_DOMAIN, LOC_STATIC,
8973                                SECT_OFF_TEXT (objfile),
8974                                &objfile->static_psymbols,
8975                                has_loc ? addr : 0,
8976                                cu->language, objfile);
8977         }
8978       break;
8979     case DW_TAG_typedef:
8980     case DW_TAG_base_type:
8981     case DW_TAG_subrange_type:
8982       add_psymbol_to_list (actual_name, strlen (actual_name),
8983                            built_actual_name != NULL,
8984                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8985                            &objfile->static_psymbols,
8986                            0, cu->language, objfile);
8987       break;
8988     case DW_TAG_imported_declaration:
8989     case DW_TAG_namespace:
8990       add_psymbol_to_list (actual_name, strlen (actual_name),
8991                            built_actual_name != NULL,
8992                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8993                            &objfile->global_psymbols,
8994                            0, cu->language, objfile);
8995       break;
8996     case DW_TAG_module:
8997       add_psymbol_to_list (actual_name, strlen (actual_name),
8998                            built_actual_name != NULL,
8999                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9000                            &objfile->global_psymbols,
9001                            0, cu->language, objfile);
9002       break;
9003     case DW_TAG_class_type:
9004     case DW_TAG_interface_type:
9005     case DW_TAG_structure_type:
9006     case DW_TAG_union_type:
9007     case DW_TAG_enumeration_type:
9008       /* Skip external references.  The DWARF standard says in the section
9009          about "Structure, Union, and Class Type Entries": "An incomplete
9010          structure, union or class type is represented by a structure,
9011          union or class entry that does not have a byte size attribute
9012          and that has a DW_AT_declaration attribute."  */
9013       if (!pdi->has_byte_size && pdi->is_declaration)
9014         {
9015           xfree (built_actual_name);
9016           return;
9017         }
9018
9019       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9020          static vs. global.  */
9021       add_psymbol_to_list (actual_name, strlen (actual_name),
9022                            built_actual_name != NULL,
9023                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9024                            cu->language == language_cplus
9025                            ? &objfile->global_psymbols
9026                            : &objfile->static_psymbols,
9027                            0, cu->language, objfile);
9028
9029       break;
9030     case DW_TAG_enumerator:
9031       add_psymbol_to_list (actual_name, strlen (actual_name),
9032                            built_actual_name != NULL,
9033                            VAR_DOMAIN, LOC_CONST, -1,
9034                            cu->language == language_cplus
9035                            ? &objfile->global_psymbols
9036                            : &objfile->static_psymbols,
9037                            0, cu->language, objfile);
9038       break;
9039     default:
9040       break;
9041     }
9042
9043   xfree (built_actual_name);
9044 }
9045
9046 /* Read a partial die corresponding to a namespace; also, add a symbol
9047    corresponding to that namespace to the symbol table.  NAMESPACE is
9048    the name of the enclosing namespace.  */
9049
9050 static void
9051 add_partial_namespace (struct partial_die_info *pdi,
9052                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9053                        int set_addrmap, struct dwarf2_cu *cu)
9054 {
9055   /* Add a symbol for the namespace.  */
9056
9057   add_partial_symbol (pdi, cu);
9058
9059   /* Now scan partial symbols in that namespace.  */
9060
9061   if (pdi->has_children)
9062     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9063 }
9064
9065 /* Read a partial die corresponding to a Fortran module.  */
9066
9067 static void
9068 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9069                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9070 {
9071   /* Add a symbol for the namespace.  */
9072
9073   add_partial_symbol (pdi, cu);
9074
9075   /* Now scan partial symbols in that module.  */
9076
9077   if (pdi->has_children)
9078     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9079 }
9080
9081 /* Read a partial die corresponding to a subprogram or an inlined
9082    subprogram and create a partial symbol for that subprogram.
9083    When the CU language allows it, this routine also defines a partial
9084    symbol for each nested subprogram that this subprogram contains.
9085    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9086    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9087
9088    PDI may also be a lexical block, in which case we simply search
9089    recursively for subprograms defined inside that lexical block.
9090    Again, this is only performed when the CU language allows this
9091    type of definitions.  */
9092
9093 static void
9094 add_partial_subprogram (struct partial_die_info *pdi,
9095                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9096                         int set_addrmap, struct dwarf2_cu *cu)
9097 {
9098   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9099     {
9100       if (pdi->has_pc_info)
9101         {
9102           if (pdi->lowpc < *lowpc)
9103             *lowpc = pdi->lowpc;
9104           if (pdi->highpc > *highpc)
9105             *highpc = pdi->highpc;
9106           if (set_addrmap)
9107             {
9108               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9109               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9110               CORE_ADDR baseaddr;
9111               CORE_ADDR this_highpc;
9112               CORE_ADDR this_lowpc;
9113
9114               baseaddr = ANOFFSET (objfile->section_offsets,
9115                                    SECT_OFF_TEXT (objfile));
9116               this_lowpc
9117                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9118                                                pdi->lowpc + baseaddr)
9119                    - baseaddr);
9120               this_highpc
9121                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9122                                                pdi->highpc + baseaddr)
9123                    - baseaddr);
9124               addrmap_set_empty (objfile->psymtabs_addrmap,
9125                                  this_lowpc, this_highpc - 1,
9126                                  cu->per_cu->v.psymtab);
9127             }
9128         }
9129
9130       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9131         {
9132           if (!pdi->is_declaration)
9133             /* Ignore subprogram DIEs that do not have a name, they are
9134                illegal.  Do not emit a complaint at this point, we will
9135                do so when we convert this psymtab into a symtab.  */
9136             if (pdi->name)
9137               add_partial_symbol (pdi, cu);
9138         }
9139     }
9140
9141   if (! pdi->has_children)
9142     return;
9143
9144   if (cu->language == language_ada)
9145     {
9146       pdi = pdi->die_child;
9147       while (pdi != NULL)
9148         {
9149           pdi->fixup (cu);
9150           if (pdi->tag == DW_TAG_subprogram
9151               || pdi->tag == DW_TAG_inlined_subroutine
9152               || pdi->tag == DW_TAG_lexical_block)
9153             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9154           pdi = pdi->die_sibling;
9155         }
9156     }
9157 }
9158
9159 /* Read a partial die corresponding to an enumeration type.  */
9160
9161 static void
9162 add_partial_enumeration (struct partial_die_info *enum_pdi,
9163                          struct dwarf2_cu *cu)
9164 {
9165   struct partial_die_info *pdi;
9166
9167   if (enum_pdi->name != NULL)
9168     add_partial_symbol (enum_pdi, cu);
9169
9170   pdi = enum_pdi->die_child;
9171   while (pdi)
9172     {
9173       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9174         complaint (_("malformed enumerator DIE ignored"));
9175       else
9176         add_partial_symbol (pdi, cu);
9177       pdi = pdi->die_sibling;
9178     }
9179 }
9180
9181 /* Return the initial uleb128 in the die at INFO_PTR.  */
9182
9183 static unsigned int
9184 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9185 {
9186   unsigned int bytes_read;
9187
9188   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9189 }
9190
9191 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9192    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9193
9194    Return the corresponding abbrev, or NULL if the number is zero (indicating
9195    an empty DIE).  In either case *BYTES_READ will be set to the length of
9196    the initial number.  */
9197
9198 static struct abbrev_info *
9199 peek_die_abbrev (const die_reader_specs &reader,
9200                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9201 {
9202   dwarf2_cu *cu = reader.cu;
9203   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9204   unsigned int abbrev_number
9205     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9206
9207   if (abbrev_number == 0)
9208     return NULL;
9209
9210   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9211   if (!abbrev)
9212     {
9213       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9214                " at offset %s [in module %s]"),
9215              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9216              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9217     }
9218
9219   return abbrev;
9220 }
9221
9222 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9223    Returns a pointer to the end of a series of DIEs, terminated by an empty
9224    DIE.  Any children of the skipped DIEs will also be skipped.  */
9225
9226 static const gdb_byte *
9227 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9228 {
9229   while (1)
9230     {
9231       unsigned int bytes_read;
9232       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9233
9234       if (abbrev == NULL)
9235         return info_ptr + bytes_read;
9236       else
9237         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9238     }
9239 }
9240
9241 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9242    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9243    abbrev corresponding to that skipped uleb128 should be passed in
9244    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9245    children.  */
9246
9247 static const gdb_byte *
9248 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9249               struct abbrev_info *abbrev)
9250 {
9251   unsigned int bytes_read;
9252   struct attribute attr;
9253   bfd *abfd = reader->abfd;
9254   struct dwarf2_cu *cu = reader->cu;
9255   const gdb_byte *buffer = reader->buffer;
9256   const gdb_byte *buffer_end = reader->buffer_end;
9257   unsigned int form, i;
9258
9259   for (i = 0; i < abbrev->num_attrs; i++)
9260     {
9261       /* The only abbrev we care about is DW_AT_sibling.  */
9262       if (abbrev->attrs[i].name == DW_AT_sibling)
9263         {
9264           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9265           if (attr.form == DW_FORM_ref_addr)
9266             complaint (_("ignoring absolute DW_AT_sibling"));
9267           else
9268             {
9269               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9270               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9271
9272               if (sibling_ptr < info_ptr)
9273                 complaint (_("DW_AT_sibling points backwards"));
9274               else if (sibling_ptr > reader->buffer_end)
9275                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9276               else
9277                 return sibling_ptr;
9278             }
9279         }
9280
9281       /* If it isn't DW_AT_sibling, skip this attribute.  */
9282       form = abbrev->attrs[i].form;
9283     skip_attribute:
9284       switch (form)
9285         {
9286         case DW_FORM_ref_addr:
9287           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9288              and later it is offset sized.  */
9289           if (cu->header.version == 2)
9290             info_ptr += cu->header.addr_size;
9291           else
9292             info_ptr += cu->header.offset_size;
9293           break;
9294         case DW_FORM_GNU_ref_alt:
9295           info_ptr += cu->header.offset_size;
9296           break;
9297         case DW_FORM_addr:
9298           info_ptr += cu->header.addr_size;
9299           break;
9300         case DW_FORM_data1:
9301         case DW_FORM_ref1:
9302         case DW_FORM_flag:
9303           info_ptr += 1;
9304           break;
9305         case DW_FORM_flag_present:
9306         case DW_FORM_implicit_const:
9307           break;
9308         case DW_FORM_data2:
9309         case DW_FORM_ref2:
9310           info_ptr += 2;
9311           break;
9312         case DW_FORM_data4:
9313         case DW_FORM_ref4:
9314           info_ptr += 4;
9315           break;
9316         case DW_FORM_data8:
9317         case DW_FORM_ref8:
9318         case DW_FORM_ref_sig8:
9319           info_ptr += 8;
9320           break;
9321         case DW_FORM_data16:
9322           info_ptr += 16;
9323           break;
9324         case DW_FORM_string:
9325           read_direct_string (abfd, info_ptr, &bytes_read);
9326           info_ptr += bytes_read;
9327           break;
9328         case DW_FORM_sec_offset:
9329         case DW_FORM_strp:
9330         case DW_FORM_GNU_strp_alt:
9331           info_ptr += cu->header.offset_size;
9332           break;
9333         case DW_FORM_exprloc:
9334         case DW_FORM_block:
9335           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9336           info_ptr += bytes_read;
9337           break;
9338         case DW_FORM_block1:
9339           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9340           break;
9341         case DW_FORM_block2:
9342           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9343           break;
9344         case DW_FORM_block4:
9345           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9346           break;
9347         case DW_FORM_sdata:
9348         case DW_FORM_udata:
9349         case DW_FORM_ref_udata:
9350         case DW_FORM_GNU_addr_index:
9351         case DW_FORM_GNU_str_index:
9352           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9353           break;
9354         case DW_FORM_indirect:
9355           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9356           info_ptr += bytes_read;
9357           /* We need to continue parsing from here, so just go back to
9358              the top.  */
9359           goto skip_attribute;
9360
9361         default:
9362           error (_("Dwarf Error: Cannot handle %s "
9363                    "in DWARF reader [in module %s]"),
9364                  dwarf_form_name (form),
9365                  bfd_get_filename (abfd));
9366         }
9367     }
9368
9369   if (abbrev->has_children)
9370     return skip_children (reader, info_ptr);
9371   else
9372     return info_ptr;
9373 }
9374
9375 /* Locate ORIG_PDI's sibling.
9376    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9377
9378 static const gdb_byte *
9379 locate_pdi_sibling (const struct die_reader_specs *reader,
9380                     struct partial_die_info *orig_pdi,
9381                     const gdb_byte *info_ptr)
9382 {
9383   /* Do we know the sibling already?  */
9384
9385   if (orig_pdi->sibling)
9386     return orig_pdi->sibling;
9387
9388   /* Are there any children to deal with?  */
9389
9390   if (!orig_pdi->has_children)
9391     return info_ptr;
9392
9393   /* Skip the children the long way.  */
9394
9395   return skip_children (reader, info_ptr);
9396 }
9397
9398 /* Expand this partial symbol table into a full symbol table.  SELF is
9399    not NULL.  */
9400
9401 static void
9402 dwarf2_read_symtab (struct partial_symtab *self,
9403                     struct objfile *objfile)
9404 {
9405   struct dwarf2_per_objfile *dwarf2_per_objfile
9406     = get_dwarf2_per_objfile (objfile);
9407
9408   if (self->readin)
9409     {
9410       warning (_("bug: psymtab for %s is already read in."),
9411                self->filename);
9412     }
9413   else
9414     {
9415       if (info_verbose)
9416         {
9417           printf_filtered (_("Reading in symbols for %s..."),
9418                            self->filename);
9419           gdb_flush (gdb_stdout);
9420         }
9421
9422       /* If this psymtab is constructed from a debug-only objfile, the
9423          has_section_at_zero flag will not necessarily be correct.  We
9424          can get the correct value for this flag by looking at the data
9425          associated with the (presumably stripped) associated objfile.  */
9426       if (objfile->separate_debug_objfile_backlink)
9427         {
9428           struct dwarf2_per_objfile *dpo_backlink
9429             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9430
9431           dwarf2_per_objfile->has_section_at_zero
9432             = dpo_backlink->has_section_at_zero;
9433         }
9434
9435       dwarf2_per_objfile->reading_partial_symbols = 0;
9436
9437       psymtab_to_symtab_1 (self);
9438
9439       /* Finish up the debug error message.  */
9440       if (info_verbose)
9441         printf_filtered (_("done.\n"));
9442     }
9443
9444   process_cu_includes (dwarf2_per_objfile);
9445 }
9446 \f
9447 /* Reading in full CUs.  */
9448
9449 /* Add PER_CU to the queue.  */
9450
9451 static void
9452 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9453                  enum language pretend_language)
9454 {
9455   struct dwarf2_queue_item *item;
9456
9457   per_cu->queued = 1;
9458   item = XNEW (struct dwarf2_queue_item);
9459   item->per_cu = per_cu;
9460   item->pretend_language = pretend_language;
9461   item->next = NULL;
9462
9463   if (dwarf2_queue == NULL)
9464     dwarf2_queue = item;
9465   else
9466     dwarf2_queue_tail->next = item;
9467
9468   dwarf2_queue_tail = item;
9469 }
9470
9471 /* If PER_CU is not yet queued, add it to the queue.
9472    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9473    dependency.
9474    The result is non-zero if PER_CU was queued, otherwise the result is zero
9475    meaning either PER_CU is already queued or it is already loaded.
9476
9477    N.B. There is an invariant here that if a CU is queued then it is loaded.
9478    The caller is required to load PER_CU if we return non-zero.  */
9479
9480 static int
9481 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9482                        struct dwarf2_per_cu_data *per_cu,
9483                        enum language pretend_language)
9484 {
9485   /* We may arrive here during partial symbol reading, if we need full
9486      DIEs to process an unusual case (e.g. template arguments).  Do
9487      not queue PER_CU, just tell our caller to load its DIEs.  */
9488   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9489     {
9490       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9491         return 1;
9492       return 0;
9493     }
9494
9495   /* Mark the dependence relation so that we don't flush PER_CU
9496      too early.  */
9497   if (dependent_cu != NULL)
9498     dwarf2_add_dependence (dependent_cu, per_cu);
9499
9500   /* If it's already on the queue, we have nothing to do.  */
9501   if (per_cu->queued)
9502     return 0;
9503
9504   /* If the compilation unit is already loaded, just mark it as
9505      used.  */
9506   if (per_cu->cu != NULL)
9507     {
9508       per_cu->cu->last_used = 0;
9509       return 0;
9510     }
9511
9512   /* Add it to the queue.  */
9513   queue_comp_unit (per_cu, pretend_language);
9514
9515   return 1;
9516 }
9517
9518 /* Process the queue.  */
9519
9520 static void
9521 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9522 {
9523   struct dwarf2_queue_item *item, *next_item;
9524
9525   if (dwarf_read_debug)
9526     {
9527       fprintf_unfiltered (gdb_stdlog,
9528                           "Expanding one or more symtabs of objfile %s ...\n",
9529                           objfile_name (dwarf2_per_objfile->objfile));
9530     }
9531
9532   /* The queue starts out with one item, but following a DIE reference
9533      may load a new CU, adding it to the end of the queue.  */
9534   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9535     {
9536       if ((dwarf2_per_objfile->using_index
9537            ? !item->per_cu->v.quick->compunit_symtab
9538            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9539           /* Skip dummy CUs.  */
9540           && item->per_cu->cu != NULL)
9541         {
9542           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9543           unsigned int debug_print_threshold;
9544           char buf[100];
9545
9546           if (per_cu->is_debug_types)
9547             {
9548               struct signatured_type *sig_type =
9549                 (struct signatured_type *) per_cu;
9550
9551               sprintf (buf, "TU %s at offset %s",
9552                        hex_string (sig_type->signature),
9553                        sect_offset_str (per_cu->sect_off));
9554               /* There can be 100s of TUs.
9555                  Only print them in verbose mode.  */
9556               debug_print_threshold = 2;
9557             }
9558           else
9559             {
9560               sprintf (buf, "CU at offset %s",
9561                        sect_offset_str (per_cu->sect_off));
9562               debug_print_threshold = 1;
9563             }
9564
9565           if (dwarf_read_debug >= debug_print_threshold)
9566             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9567
9568           if (per_cu->is_debug_types)
9569             process_full_type_unit (per_cu, item->pretend_language);
9570           else
9571             process_full_comp_unit (per_cu, item->pretend_language);
9572
9573           if (dwarf_read_debug >= debug_print_threshold)
9574             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9575         }
9576
9577       item->per_cu->queued = 0;
9578       next_item = item->next;
9579       xfree (item);
9580     }
9581
9582   dwarf2_queue_tail = NULL;
9583
9584   if (dwarf_read_debug)
9585     {
9586       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9587                           objfile_name (dwarf2_per_objfile->objfile));
9588     }
9589 }
9590
9591 /* Read in full symbols for PST, and anything it depends on.  */
9592
9593 static void
9594 psymtab_to_symtab_1 (struct partial_symtab *pst)
9595 {
9596   struct dwarf2_per_cu_data *per_cu;
9597   int i;
9598
9599   if (pst->readin)
9600     return;
9601
9602   for (i = 0; i < pst->number_of_dependencies; i++)
9603     if (!pst->dependencies[i]->readin
9604         && pst->dependencies[i]->user == NULL)
9605       {
9606         /* Inform about additional files that need to be read in.  */
9607         if (info_verbose)
9608           {
9609             /* FIXME: i18n: Need to make this a single string.  */
9610             fputs_filtered (" ", gdb_stdout);
9611             wrap_here ("");
9612             fputs_filtered ("and ", gdb_stdout);
9613             wrap_here ("");
9614             printf_filtered ("%s...", pst->dependencies[i]->filename);
9615             wrap_here ("");     /* Flush output.  */
9616             gdb_flush (gdb_stdout);
9617           }
9618         psymtab_to_symtab_1 (pst->dependencies[i]);
9619       }
9620
9621   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9622
9623   if (per_cu == NULL)
9624     {
9625       /* It's an include file, no symbols to read for it.
9626          Everything is in the parent symtab.  */
9627       pst->readin = 1;
9628       return;
9629     }
9630
9631   dw2_do_instantiate_symtab (per_cu, false);
9632 }
9633
9634 /* Trivial hash function for die_info: the hash value of a DIE
9635    is its offset in .debug_info for this objfile.  */
9636
9637 static hashval_t
9638 die_hash (const void *item)
9639 {
9640   const struct die_info *die = (const struct die_info *) item;
9641
9642   return to_underlying (die->sect_off);
9643 }
9644
9645 /* Trivial comparison function for die_info structures: two DIEs
9646    are equal if they have the same offset.  */
9647
9648 static int
9649 die_eq (const void *item_lhs, const void *item_rhs)
9650 {
9651   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9652   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9653
9654   return die_lhs->sect_off == die_rhs->sect_off;
9655 }
9656
9657 /* die_reader_func for load_full_comp_unit.
9658    This is identical to read_signatured_type_reader,
9659    but is kept separate for now.  */
9660
9661 static void
9662 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9663                             const gdb_byte *info_ptr,
9664                             struct die_info *comp_unit_die,
9665                             int has_children,
9666                             void *data)
9667 {
9668   struct dwarf2_cu *cu = reader->cu;
9669   enum language *language_ptr = (enum language *) data;
9670
9671   gdb_assert (cu->die_hash == NULL);
9672   cu->die_hash =
9673     htab_create_alloc_ex (cu->header.length / 12,
9674                           die_hash,
9675                           die_eq,
9676                           NULL,
9677                           &cu->comp_unit_obstack,
9678                           hashtab_obstack_allocate,
9679                           dummy_obstack_deallocate);
9680
9681   if (has_children)
9682     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9683                                                   &info_ptr, comp_unit_die);
9684   cu->dies = comp_unit_die;
9685   /* comp_unit_die is not stored in die_hash, no need.  */
9686
9687   /* We try not to read any attributes in this function, because not
9688      all CUs needed for references have been loaded yet, and symbol
9689      table processing isn't initialized.  But we have to set the CU language,
9690      or we won't be able to build types correctly.
9691      Similarly, if we do not read the producer, we can not apply
9692      producer-specific interpretation.  */
9693   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9694 }
9695
9696 /* Load the DIEs associated with PER_CU into memory.  */
9697
9698 static void
9699 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9700                      bool skip_partial,
9701                      enum language pretend_language)
9702 {
9703   gdb_assert (! this_cu->is_debug_types);
9704
9705   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9706                            load_full_comp_unit_reader, &pretend_language);
9707 }
9708
9709 /* Add a DIE to the delayed physname list.  */
9710
9711 static void
9712 add_to_method_list (struct type *type, int fnfield_index, int index,
9713                     const char *name, struct die_info *die,
9714                     struct dwarf2_cu *cu)
9715 {
9716   struct delayed_method_info mi;
9717   mi.type = type;
9718   mi.fnfield_index = fnfield_index;
9719   mi.index = index;
9720   mi.name = name;
9721   mi.die = die;
9722   cu->method_list.push_back (mi);
9723 }
9724
9725 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9726    "const" / "volatile".  If so, decrements LEN by the length of the
9727    modifier and return true.  Otherwise return false.  */
9728
9729 template<size_t N>
9730 static bool
9731 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9732 {
9733   size_t mod_len = sizeof (mod) - 1;
9734   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9735     {
9736       len -= mod_len;
9737       return true;
9738     }
9739   return false;
9740 }
9741
9742 /* Compute the physnames of any methods on the CU's method list.
9743
9744    The computation of method physnames is delayed in order to avoid the
9745    (bad) condition that one of the method's formal parameters is of an as yet
9746    incomplete type.  */
9747
9748 static void
9749 compute_delayed_physnames (struct dwarf2_cu *cu)
9750 {
9751   /* Only C++ delays computing physnames.  */
9752   if (cu->method_list.empty ())
9753     return;
9754   gdb_assert (cu->language == language_cplus);
9755
9756   for (const delayed_method_info &mi : cu->method_list)
9757     {
9758       const char *physname;
9759       struct fn_fieldlist *fn_flp
9760         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9761       physname = dwarf2_physname (mi.name, mi.die, cu);
9762       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9763         = physname ? physname : "";
9764
9765       /* Since there's no tag to indicate whether a method is a
9766          const/volatile overload, extract that information out of the
9767          demangled name.  */
9768       if (physname != NULL)
9769         {
9770           size_t len = strlen (physname);
9771
9772           while (1)
9773             {
9774               if (physname[len] == ')') /* shortcut */
9775                 break;
9776               else if (check_modifier (physname, len, " const"))
9777                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9778               else if (check_modifier (physname, len, " volatile"))
9779                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9780               else
9781                 break;
9782             }
9783         }
9784     }
9785
9786   /* The list is no longer needed.  */
9787   cu->method_list.clear ();
9788 }
9789
9790 /* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9791    the same as all other symbols in LISTHEAD.  If a new symbol is added
9792    with a different language, this function asserts.  */
9793
9794 static inline void
9795 dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9796 {
9797   /* Only assert if LISTHEAD already contains symbols of a different
9798      language (dict_create_hashed/insert_symbol_hashed requires that all
9799      symbols in this list are of the same language).  */
9800   gdb_assert ((*listhead) == NULL
9801               || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9802                   == SYMBOL_LANGUAGE (symbol)));
9803
9804   add_symbol_to_list (symbol, listhead);
9805 }
9806
9807 /* Go objects should be embedded in a DW_TAG_module DIE,
9808    and it's not clear if/how imported objects will appear.
9809    To keep Go support simple until that's worked out,
9810    go back through what we've read and create something usable.
9811    We could do this while processing each DIE, and feels kinda cleaner,
9812    but that way is more invasive.
9813    This is to, for example, allow the user to type "p var" or "b main"
9814    without having to specify the package name, and allow lookups
9815    of module.object to work in contexts that use the expression
9816    parser.  */
9817
9818 static void
9819 fixup_go_packaging (struct dwarf2_cu *cu)
9820 {
9821   char *package_name = NULL;
9822   struct pending *list;
9823   int i;
9824
9825   for (list = *cu->builder->get_global_symbols ();
9826        list != NULL;
9827        list = list->next)
9828     {
9829       for (i = 0; i < list->nsyms; ++i)
9830         {
9831           struct symbol *sym = list->symbol[i];
9832
9833           if (SYMBOL_LANGUAGE (sym) == language_go
9834               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9835             {
9836               char *this_package_name = go_symbol_package_name (sym);
9837
9838               if (this_package_name == NULL)
9839                 continue;
9840               if (package_name == NULL)
9841                 package_name = this_package_name;
9842               else
9843                 {
9844                   struct objfile *objfile
9845                     = cu->per_cu->dwarf2_per_objfile->objfile;
9846                   if (strcmp (package_name, this_package_name) != 0)
9847                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9848                                (symbol_symtab (sym) != NULL
9849                                 ? symtab_to_filename_for_display
9850                                     (symbol_symtab (sym))
9851                                 : objfile_name (objfile)),
9852                                this_package_name, package_name);
9853                   xfree (this_package_name);
9854                 }
9855             }
9856         }
9857     }
9858
9859   if (package_name != NULL)
9860     {
9861       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9862       const char *saved_package_name
9863         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9864                                         package_name,
9865                                         strlen (package_name));
9866       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9867                                      saved_package_name);
9868       struct symbol *sym;
9869
9870       sym = allocate_symbol (objfile);
9871       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9872       SYMBOL_SET_NAMES (sym, saved_package_name,
9873                         strlen (saved_package_name), 0, objfile);
9874       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9875          e.g., "main" finds the "main" module and not C's main().  */
9876       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9877       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9878       SYMBOL_TYPE (sym) = type;
9879
9880       dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
9881
9882       xfree (package_name);
9883     }
9884 }
9885
9886 /* Allocate a fully-qualified name consisting of the two parts on the
9887    obstack.  */
9888
9889 static const char *
9890 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9891 {
9892   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9893 }
9894
9895 /* A helper that allocates a struct discriminant_info to attach to a
9896    union type.  */
9897
9898 static struct discriminant_info *
9899 alloc_discriminant_info (struct type *type, int discriminant_index,
9900                          int default_index)
9901 {
9902   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9903   gdb_assert (discriminant_index == -1
9904               || (discriminant_index >= 0
9905                   && discriminant_index < TYPE_NFIELDS (type)));
9906   gdb_assert (default_index == -1
9907               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9908
9909   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9910
9911   struct discriminant_info *disc
9912     = ((struct discriminant_info *)
9913        TYPE_ZALLOC (type,
9914                     offsetof (struct discriminant_info, discriminants)
9915                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9916   disc->default_index = default_index;
9917   disc->discriminant_index = discriminant_index;
9918
9919   struct dynamic_prop prop;
9920   prop.kind = PROP_UNDEFINED;
9921   prop.data.baton = disc;
9922
9923   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9924
9925   return disc;
9926 }
9927
9928 /* Some versions of rustc emitted enums in an unusual way.
9929
9930    Ordinary enums were emitted as unions.  The first element of each
9931    structure in the union was named "RUST$ENUM$DISR".  This element
9932    held the discriminant.
9933
9934    These versions of Rust also implemented the "non-zero"
9935    optimization.  When the enum had two values, and one is empty and
9936    the other holds a pointer that cannot be zero, the pointer is used
9937    as the discriminant, with a zero value meaning the empty variant.
9938    Here, the union's first member is of the form
9939    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9940    where the fieldnos are the indices of the fields that should be
9941    traversed in order to find the field (which may be several fields deep)
9942    and the variantname is the name of the variant of the case when the
9943    field is zero.
9944
9945    This function recognizes whether TYPE is of one of these forms,
9946    and, if so, smashes it to be a variant type.  */
9947
9948 static void
9949 quirk_rust_enum (struct type *type, struct objfile *objfile)
9950 {
9951   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9952
9953   /* We don't need to deal with empty enums.  */
9954   if (TYPE_NFIELDS (type) == 0)
9955     return;
9956
9957 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9958   if (TYPE_NFIELDS (type) == 1
9959       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9960     {
9961       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9962
9963       /* Decode the field name to find the offset of the
9964          discriminant.  */
9965       ULONGEST bit_offset = 0;
9966       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9967       while (name[0] >= '0' && name[0] <= '9')
9968         {
9969           char *tail;
9970           unsigned long index = strtoul (name, &tail, 10);
9971           name = tail;
9972           if (*name != '$'
9973               || index >= TYPE_NFIELDS (field_type)
9974               || (TYPE_FIELD_LOC_KIND (field_type, index)
9975                   != FIELD_LOC_KIND_BITPOS))
9976             {
9977               complaint (_("Could not parse Rust enum encoding string \"%s\""
9978                            "[in module %s]"),
9979                          TYPE_FIELD_NAME (type, 0),
9980                          objfile_name (objfile));
9981               return;
9982             }
9983           ++name;
9984
9985           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9986           field_type = TYPE_FIELD_TYPE (field_type, index);
9987         }
9988
9989       /* Make a union to hold the variants.  */
9990       struct type *union_type = alloc_type (objfile);
9991       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9992       TYPE_NFIELDS (union_type) = 3;
9993       TYPE_FIELDS (union_type)
9994         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9995       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9996       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9997
9998       /* Put the discriminant must at index 0.  */
9999       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10000       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10001       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10002       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10003
10004       /* The order of fields doesn't really matter, so put the real
10005          field at index 1 and the data-less field at index 2.  */
10006       struct discriminant_info *disc
10007         = alloc_discriminant_info (union_type, 0, 1);
10008       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10009       TYPE_FIELD_NAME (union_type, 1)
10010         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10011       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10012         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10013                               TYPE_FIELD_NAME (union_type, 1));
10014
10015       const char *dataless_name
10016         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10017                               name);
10018       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10019                                               dataless_name);
10020       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10021       /* NAME points into the original discriminant name, which
10022          already has the correct lifetime.  */
10023       TYPE_FIELD_NAME (union_type, 2) = name;
10024       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10025       disc->discriminants[2] = 0;
10026
10027       /* Smash this type to be a structure type.  We have to do this
10028          because the type has already been recorded.  */
10029       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10030       TYPE_NFIELDS (type) = 1;
10031       TYPE_FIELDS (type)
10032         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10033
10034       /* Install the variant part.  */
10035       TYPE_FIELD_TYPE (type, 0) = union_type;
10036       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10037       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10038     }
10039   else if (TYPE_NFIELDS (type) == 1)
10040     {
10041       /* We assume that a union with a single field is a univariant
10042          enum.  */
10043       /* Smash this type to be a structure type.  We have to do this
10044          because the type has already been recorded.  */
10045       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10046
10047       /* Make a union to hold the variants.  */
10048       struct type *union_type = alloc_type (objfile);
10049       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10050       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10051       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10052       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10053       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10054
10055       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10056       const char *variant_name
10057         = rust_last_path_segment (TYPE_NAME (field_type));
10058       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10059       TYPE_NAME (field_type)
10060         = rust_fully_qualify (&objfile->objfile_obstack,
10061                               TYPE_NAME (type), variant_name);
10062
10063       /* Install the union in the outer struct type.  */
10064       TYPE_NFIELDS (type) = 1;
10065       TYPE_FIELDS (type)
10066         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10067       TYPE_FIELD_TYPE (type, 0) = union_type;
10068       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10069       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10070
10071       alloc_discriminant_info (union_type, -1, 0);
10072     }
10073   else
10074     {
10075       struct type *disr_type = nullptr;
10076       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10077         {
10078           disr_type = TYPE_FIELD_TYPE (type, i);
10079
10080           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10081             {
10082               /* All fields of a true enum will be structs.  */
10083               return;
10084             }
10085           else if (TYPE_NFIELDS (disr_type) == 0)
10086             {
10087               /* Could be data-less variant, so keep going.  */
10088               disr_type = nullptr;
10089             }
10090           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10091                            "RUST$ENUM$DISR") != 0)
10092             {
10093               /* Not a Rust enum.  */
10094               return;
10095             }
10096           else
10097             {
10098               /* Found one.  */
10099               break;
10100             }
10101         }
10102
10103       /* If we got here without a discriminant, then it's probably
10104          just a union.  */
10105       if (disr_type == nullptr)
10106         return;
10107
10108       /* Smash this type to be a structure type.  We have to do this
10109          because the type has already been recorded.  */
10110       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10111
10112       /* Make a union to hold the variants.  */
10113       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10114       struct type *union_type = alloc_type (objfile);
10115       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10116       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10117       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10118       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10119       TYPE_FIELDS (union_type)
10120         = (struct field *) TYPE_ZALLOC (union_type,
10121                                         (TYPE_NFIELDS (union_type)
10122                                          * sizeof (struct field)));
10123
10124       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10125               TYPE_NFIELDS (type) * sizeof (struct field));
10126
10127       /* Install the discriminant at index 0 in the union.  */
10128       TYPE_FIELD (union_type, 0) = *disr_field;
10129       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10130       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10131
10132       /* Install the union in the outer struct type.  */
10133       TYPE_FIELD_TYPE (type, 0) = union_type;
10134       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10135       TYPE_NFIELDS (type) = 1;
10136
10137       /* Set the size and offset of the union type.  */
10138       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10139
10140       /* We need a way to find the correct discriminant given a
10141          variant name.  For convenience we build a map here.  */
10142       struct type *enum_type = FIELD_TYPE (*disr_field);
10143       std::unordered_map<std::string, ULONGEST> discriminant_map;
10144       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10145         {
10146           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10147             {
10148               const char *name
10149                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10150               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10151             }
10152         }
10153
10154       int n_fields = TYPE_NFIELDS (union_type);
10155       struct discriminant_info *disc
10156         = alloc_discriminant_info (union_type, 0, -1);
10157       /* Skip the discriminant here.  */
10158       for (int i = 1; i < n_fields; ++i)
10159         {
10160           /* Find the final word in the name of this variant's type.
10161              That name can be used to look up the correct
10162              discriminant.  */
10163           const char *variant_name
10164             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10165                                                                   i)));
10166
10167           auto iter = discriminant_map.find (variant_name);
10168           if (iter != discriminant_map.end ())
10169             disc->discriminants[i] = iter->second;
10170
10171           /* Remove the discriminant field, if it exists.  */
10172           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10173           if (TYPE_NFIELDS (sub_type) > 0)
10174             {
10175               --TYPE_NFIELDS (sub_type);
10176               ++TYPE_FIELDS (sub_type);
10177             }
10178           TYPE_FIELD_NAME (union_type, i) = variant_name;
10179           TYPE_NAME (sub_type)
10180             = rust_fully_qualify (&objfile->objfile_obstack,
10181                                   TYPE_NAME (type), variant_name);
10182         }
10183     }
10184 }
10185
10186 /* Rewrite some Rust unions to be structures with variants parts.  */
10187
10188 static void
10189 rust_union_quirks (struct dwarf2_cu *cu)
10190 {
10191   gdb_assert (cu->language == language_rust);
10192   for (type *type_ : cu->rust_unions)
10193     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10194   /* We don't need this any more.  */
10195   cu->rust_unions.clear ();
10196 }
10197
10198 /* Return the symtab for PER_CU.  This works properly regardless of
10199    whether we're using the index or psymtabs.  */
10200
10201 static struct compunit_symtab *
10202 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10203 {
10204   return (per_cu->dwarf2_per_objfile->using_index
10205           ? per_cu->v.quick->compunit_symtab
10206           : per_cu->v.psymtab->compunit_symtab);
10207 }
10208
10209 /* A helper function for computing the list of all symbol tables
10210    included by PER_CU.  */
10211
10212 static void
10213 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10214                                 htab_t all_children, htab_t all_type_symtabs,
10215                                 struct dwarf2_per_cu_data *per_cu,
10216                                 struct compunit_symtab *immediate_parent)
10217 {
10218   void **slot;
10219   int ix;
10220   struct compunit_symtab *cust;
10221   struct dwarf2_per_cu_data *iter;
10222
10223   slot = htab_find_slot (all_children, per_cu, INSERT);
10224   if (*slot != NULL)
10225     {
10226       /* This inclusion and its children have been processed.  */
10227       return;
10228     }
10229
10230   *slot = per_cu;
10231   /* Only add a CU if it has a symbol table.  */
10232   cust = get_compunit_symtab (per_cu);
10233   if (cust != NULL)
10234     {
10235       /* If this is a type unit only add its symbol table if we haven't
10236          seen it yet (type unit per_cu's can share symtabs).  */
10237       if (per_cu->is_debug_types)
10238         {
10239           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10240           if (*slot == NULL)
10241             {
10242               *slot = cust;
10243               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10244               if (cust->user == NULL)
10245                 cust->user = immediate_parent;
10246             }
10247         }
10248       else
10249         {
10250           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10251           if (cust->user == NULL)
10252             cust->user = immediate_parent;
10253         }
10254     }
10255
10256   for (ix = 0;
10257        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10258        ++ix)
10259     {
10260       recursively_compute_inclusions (result, all_children,
10261                                       all_type_symtabs, iter, cust);
10262     }
10263 }
10264
10265 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10266    PER_CU.  */
10267
10268 static void
10269 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10270 {
10271   gdb_assert (! per_cu->is_debug_types);
10272
10273   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10274     {
10275       int ix, len;
10276       struct dwarf2_per_cu_data *per_cu_iter;
10277       struct compunit_symtab *compunit_symtab_iter;
10278       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10279       htab_t all_children, all_type_symtabs;
10280       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10281
10282       /* If we don't have a symtab, we can just skip this case.  */
10283       if (cust == NULL)
10284         return;
10285
10286       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10287                                         NULL, xcalloc, xfree);
10288       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10289                                             NULL, xcalloc, xfree);
10290
10291       for (ix = 0;
10292            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10293                         ix, per_cu_iter);
10294            ++ix)
10295         {
10296           recursively_compute_inclusions (&result_symtabs, all_children,
10297                                           all_type_symtabs, per_cu_iter,
10298                                           cust);
10299         }
10300
10301       /* Now we have a transitive closure of all the included symtabs.  */
10302       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10303       cust->includes
10304         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10305                      struct compunit_symtab *, len + 1);
10306       for (ix = 0;
10307            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10308                         compunit_symtab_iter);
10309            ++ix)
10310         cust->includes[ix] = compunit_symtab_iter;
10311       cust->includes[len] = NULL;
10312
10313       VEC_free (compunit_symtab_ptr, result_symtabs);
10314       htab_delete (all_children);
10315       htab_delete (all_type_symtabs);
10316     }
10317 }
10318
10319 /* Compute the 'includes' field for the symtabs of all the CUs we just
10320    read.  */
10321
10322 static void
10323 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10324 {
10325   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10326     {
10327       if (! iter->is_debug_types)
10328         compute_compunit_symtab_includes (iter);
10329     }
10330
10331   dwarf2_per_objfile->just_read_cus.clear ();
10332 }
10333
10334 /* Generate full symbol information for PER_CU, whose DIEs have
10335    already been loaded into memory.  */
10336
10337 static void
10338 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10339                         enum language pretend_language)
10340 {
10341   struct dwarf2_cu *cu = per_cu->cu;
10342   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10343   struct objfile *objfile = dwarf2_per_objfile->objfile;
10344   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10345   CORE_ADDR lowpc, highpc;
10346   struct compunit_symtab *cust;
10347   CORE_ADDR baseaddr;
10348   struct block *static_block;
10349   CORE_ADDR addr;
10350
10351   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10352
10353   /* Clear the list here in case something was left over.  */
10354   cu->method_list.clear ();
10355
10356   cu->language = pretend_language;
10357   cu->language_defn = language_def (cu->language);
10358
10359   /* Do line number decoding in read_file_scope () */
10360   process_die (cu->dies, cu);
10361
10362   /* For now fudge the Go package.  */
10363   if (cu->language == language_go)
10364     fixup_go_packaging (cu);
10365
10366   /* Now that we have processed all the DIEs in the CU, all the types 
10367      should be complete, and it should now be safe to compute all of the
10368      physnames.  */
10369   compute_delayed_physnames (cu);
10370
10371   if (cu->language == language_rust)
10372     rust_union_quirks (cu);
10373
10374   /* Some compilers don't define a DW_AT_high_pc attribute for the
10375      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10376      it, by scanning the DIE's below the compilation unit.  */
10377   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10378
10379   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10380   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10381
10382   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10383      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10384      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10385      addrmap to help ensure it has an accurate map of pc values belonging to
10386      this comp unit.  */
10387   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10388
10389   cust = cu->builder->end_symtab_from_static_block (static_block,
10390                                                     SECT_OFF_TEXT (objfile),
10391                                                     0);
10392
10393   if (cust != NULL)
10394     {
10395       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10396
10397       /* Set symtab language to language from DW_AT_language.  If the
10398          compilation is from a C file generated by language preprocessors, do
10399          not set the language if it was already deduced by start_subfile.  */
10400       if (!(cu->language == language_c
10401             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10402         COMPUNIT_FILETABS (cust)->language = cu->language;
10403
10404       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10405          produce DW_AT_location with location lists but it can be possibly
10406          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10407          there were bugs in prologue debug info, fixed later in GCC-4.5
10408          by "unwind info for epilogues" patch (which is not directly related).
10409
10410          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10411          needed, it would be wrong due to missing DW_AT_producer there.
10412
10413          Still one can confuse GDB by using non-standard GCC compilation
10414          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10415          */ 
10416       if (cu->has_loclist && gcc_4_minor >= 5)
10417         cust->locations_valid = 1;
10418
10419       if (gcc_4_minor >= 5)
10420         cust->epilogue_unwind_valid = 1;
10421
10422       cust->call_site_htab = cu->call_site_htab;
10423     }
10424
10425   if (dwarf2_per_objfile->using_index)
10426     per_cu->v.quick->compunit_symtab = cust;
10427   else
10428     {
10429       struct partial_symtab *pst = per_cu->v.psymtab;
10430       pst->compunit_symtab = cust;
10431       pst->readin = 1;
10432     }
10433
10434   /* Push it for inclusion processing later.  */
10435   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10436
10437   /* Not needed any more.  */
10438   cu->builder.reset ();
10439 }
10440
10441 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10442    already been loaded into memory.  */
10443
10444 static void
10445 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10446                         enum language pretend_language)
10447 {
10448   struct dwarf2_cu *cu = per_cu->cu;
10449   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10450   struct objfile *objfile = dwarf2_per_objfile->objfile;
10451   struct compunit_symtab *cust;
10452   struct signatured_type *sig_type;
10453
10454   gdb_assert (per_cu->is_debug_types);
10455   sig_type = (struct signatured_type *) per_cu;
10456
10457   /* Clear the list here in case something was left over.  */
10458   cu->method_list.clear ();
10459
10460   cu->language = pretend_language;
10461   cu->language_defn = language_def (cu->language);
10462
10463   /* The symbol tables are set up in read_type_unit_scope.  */
10464   process_die (cu->dies, cu);
10465
10466   /* For now fudge the Go package.  */
10467   if (cu->language == language_go)
10468     fixup_go_packaging (cu);
10469
10470   /* Now that we have processed all the DIEs in the CU, all the types 
10471      should be complete, and it should now be safe to compute all of the
10472      physnames.  */
10473   compute_delayed_physnames (cu);
10474
10475   if (cu->language == language_rust)
10476     rust_union_quirks (cu);
10477
10478   /* TUs share symbol tables.
10479      If this is the first TU to use this symtab, complete the construction
10480      of it with end_expandable_symtab.  Otherwise, complete the addition of
10481      this TU's symbols to the existing symtab.  */
10482   if (sig_type->type_unit_group->compunit_symtab == NULL)
10483     {
10484       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10485       sig_type->type_unit_group->compunit_symtab = cust;
10486
10487       if (cust != NULL)
10488         {
10489           /* Set symtab language to language from DW_AT_language.  If the
10490              compilation is from a C file generated by language preprocessors,
10491              do not set the language if it was already deduced by
10492              start_subfile.  */
10493           if (!(cu->language == language_c
10494                 && COMPUNIT_FILETABS (cust)->language != language_c))
10495             COMPUNIT_FILETABS (cust)->language = cu->language;
10496         }
10497     }
10498   else
10499     {
10500       cu->builder->augment_type_symtab ();
10501       cust = sig_type->type_unit_group->compunit_symtab;
10502     }
10503
10504   if (dwarf2_per_objfile->using_index)
10505     per_cu->v.quick->compunit_symtab = cust;
10506   else
10507     {
10508       struct partial_symtab *pst = per_cu->v.psymtab;
10509       pst->compunit_symtab = cust;
10510       pst->readin = 1;
10511     }
10512
10513   /* Not needed any more.  */
10514   cu->builder.reset ();
10515 }
10516
10517 /* Process an imported unit DIE.  */
10518
10519 static void
10520 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10521 {
10522   struct attribute *attr;
10523
10524   /* For now we don't handle imported units in type units.  */
10525   if (cu->per_cu->is_debug_types)
10526     {
10527       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10528                " supported in type units [in module %s]"),
10529              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10530     }
10531
10532   attr = dwarf2_attr (die, DW_AT_import, cu);
10533   if (attr != NULL)
10534     {
10535       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10536       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10537       dwarf2_per_cu_data *per_cu
10538         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10539                                             cu->per_cu->dwarf2_per_objfile);
10540
10541       /* If necessary, add it to the queue and load its DIEs.  */
10542       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10543         load_full_comp_unit (per_cu, false, cu->language);
10544
10545       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10546                      per_cu);
10547     }
10548 }
10549
10550 /* RAII object that represents a process_die scope: i.e.,
10551    starts/finishes processing a DIE.  */
10552 class process_die_scope
10553 {
10554 public:
10555   process_die_scope (die_info *die, dwarf2_cu *cu)
10556     : m_die (die), m_cu (cu)
10557   {
10558     /* We should only be processing DIEs not already in process.  */
10559     gdb_assert (!m_die->in_process);
10560     m_die->in_process = true;
10561   }
10562
10563   ~process_die_scope ()
10564   {
10565     m_die->in_process = false;
10566
10567     /* If we're done processing the DIE for the CU that owns the line
10568        header, we don't need the line header anymore.  */
10569     if (m_cu->line_header_die_owner == m_die)
10570       {
10571         delete m_cu->line_header;
10572         m_cu->line_header = NULL;
10573         m_cu->line_header_die_owner = NULL;
10574       }
10575   }
10576
10577 private:
10578   die_info *m_die;
10579   dwarf2_cu *m_cu;
10580 };
10581
10582 /* Process a die and its children.  */
10583
10584 static void
10585 process_die (struct die_info *die, struct dwarf2_cu *cu)
10586 {
10587   process_die_scope scope (die, cu);
10588
10589   switch (die->tag)
10590     {
10591     case DW_TAG_padding:
10592       break;
10593     case DW_TAG_compile_unit:
10594     case DW_TAG_partial_unit:
10595       read_file_scope (die, cu);
10596       break;
10597     case DW_TAG_type_unit:
10598       read_type_unit_scope (die, cu);
10599       break;
10600     case DW_TAG_subprogram:
10601     case DW_TAG_inlined_subroutine:
10602       read_func_scope (die, cu);
10603       break;
10604     case DW_TAG_lexical_block:
10605     case DW_TAG_try_block:
10606     case DW_TAG_catch_block:
10607       read_lexical_block_scope (die, cu);
10608       break;
10609     case DW_TAG_call_site:
10610     case DW_TAG_GNU_call_site:
10611       read_call_site_scope (die, cu);
10612       break;
10613     case DW_TAG_class_type:
10614     case DW_TAG_interface_type:
10615     case DW_TAG_structure_type:
10616     case DW_TAG_union_type:
10617       process_structure_scope (die, cu);
10618       break;
10619     case DW_TAG_enumeration_type:
10620       process_enumeration_scope (die, cu);
10621       break;
10622
10623     /* These dies have a type, but processing them does not create
10624        a symbol or recurse to process the children.  Therefore we can
10625        read them on-demand through read_type_die.  */
10626     case DW_TAG_subroutine_type:
10627     case DW_TAG_set_type:
10628     case DW_TAG_array_type:
10629     case DW_TAG_pointer_type:
10630     case DW_TAG_ptr_to_member_type:
10631     case DW_TAG_reference_type:
10632     case DW_TAG_rvalue_reference_type:
10633     case DW_TAG_string_type:
10634       break;
10635
10636     case DW_TAG_base_type:
10637     case DW_TAG_subrange_type:
10638     case DW_TAG_typedef:
10639       /* Add a typedef symbol for the type definition, if it has a
10640          DW_AT_name.  */
10641       new_symbol (die, read_type_die (die, cu), cu);
10642       break;
10643     case DW_TAG_common_block:
10644       read_common_block (die, cu);
10645       break;
10646     case DW_TAG_common_inclusion:
10647       break;
10648     case DW_TAG_namespace:
10649       cu->processing_has_namespace_info = 1;
10650       read_namespace (die, cu);
10651       break;
10652     case DW_TAG_module:
10653       cu->processing_has_namespace_info = 1;
10654       read_module (die, cu);
10655       break;
10656     case DW_TAG_imported_declaration:
10657       cu->processing_has_namespace_info = 1;
10658       if (read_namespace_alias (die, cu))
10659         break;
10660       /* The declaration is not a global namespace alias.  */
10661       /* Fall through.  */
10662     case DW_TAG_imported_module:
10663       cu->processing_has_namespace_info = 1;
10664       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10665                                  || cu->language != language_fortran))
10666         complaint (_("Tag '%s' has unexpected children"),
10667                    dwarf_tag_name (die->tag));
10668       read_import_statement (die, cu);
10669       break;
10670
10671     case DW_TAG_imported_unit:
10672       process_imported_unit_die (die, cu);
10673       break;
10674
10675     case DW_TAG_variable:
10676       read_variable (die, cu);
10677       break;
10678
10679     default:
10680       new_symbol (die, NULL, cu);
10681       break;
10682     }
10683 }
10684 \f
10685 /* DWARF name computation.  */
10686
10687 /* A helper function for dwarf2_compute_name which determines whether DIE
10688    needs to have the name of the scope prepended to the name listed in the
10689    die.  */
10690
10691 static int
10692 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10693 {
10694   struct attribute *attr;
10695
10696   switch (die->tag)
10697     {
10698     case DW_TAG_namespace:
10699     case DW_TAG_typedef:
10700     case DW_TAG_class_type:
10701     case DW_TAG_interface_type:
10702     case DW_TAG_structure_type:
10703     case DW_TAG_union_type:
10704     case DW_TAG_enumeration_type:
10705     case DW_TAG_enumerator:
10706     case DW_TAG_subprogram:
10707     case DW_TAG_inlined_subroutine:
10708     case DW_TAG_member:
10709     case DW_TAG_imported_declaration:
10710       return 1;
10711
10712     case DW_TAG_variable:
10713     case DW_TAG_constant:
10714       /* We only need to prefix "globally" visible variables.  These include
10715          any variable marked with DW_AT_external or any variable that
10716          lives in a namespace.  [Variables in anonymous namespaces
10717          require prefixing, but they are not DW_AT_external.]  */
10718
10719       if (dwarf2_attr (die, DW_AT_specification, cu))
10720         {
10721           struct dwarf2_cu *spec_cu = cu;
10722
10723           return die_needs_namespace (die_specification (die, &spec_cu),
10724                                       spec_cu);
10725         }
10726
10727       attr = dwarf2_attr (die, DW_AT_external, cu);
10728       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10729           && die->parent->tag != DW_TAG_module)
10730         return 0;
10731       /* A variable in a lexical block of some kind does not need a
10732          namespace, even though in C++ such variables may be external
10733          and have a mangled name.  */
10734       if (die->parent->tag ==  DW_TAG_lexical_block
10735           || die->parent->tag ==  DW_TAG_try_block
10736           || die->parent->tag ==  DW_TAG_catch_block
10737           || die->parent->tag == DW_TAG_subprogram)
10738         return 0;
10739       return 1;
10740
10741     default:
10742       return 0;
10743     }
10744 }
10745
10746 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10747    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10748    defined for the given DIE.  */
10749
10750 static struct attribute *
10751 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10752 {
10753   struct attribute *attr;
10754
10755   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10756   if (attr == NULL)
10757     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10758
10759   return attr;
10760 }
10761
10762 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10763    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10764    defined for the given DIE.  */
10765
10766 static const char *
10767 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10768 {
10769   const char *linkage_name;
10770
10771   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10772   if (linkage_name == NULL)
10773     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10774
10775   return linkage_name;
10776 }
10777
10778 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10779    compute the physname for the object, which include a method's:
10780    - formal parameters (C++),
10781    - receiver type (Go),
10782
10783    The term "physname" is a bit confusing.
10784    For C++, for example, it is the demangled name.
10785    For Go, for example, it's the mangled name.
10786
10787    For Ada, return the DIE's linkage name rather than the fully qualified
10788    name.  PHYSNAME is ignored..
10789
10790    The result is allocated on the objfile_obstack and canonicalized.  */
10791
10792 static const char *
10793 dwarf2_compute_name (const char *name,
10794                      struct die_info *die, struct dwarf2_cu *cu,
10795                      int physname)
10796 {
10797   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10798
10799   if (name == NULL)
10800     name = dwarf2_name (die, cu);
10801
10802   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10803      but otherwise compute it by typename_concat inside GDB.
10804      FIXME: Actually this is not really true, or at least not always true.
10805      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10806      Fortran names because there is no mangling standard.  So new_symbol
10807      will set the demangled name to the result of dwarf2_full_name, and it is
10808      the demangled name that GDB uses if it exists.  */
10809   if (cu->language == language_ada
10810       || (cu->language == language_fortran && physname))
10811     {
10812       /* For Ada unit, we prefer the linkage name over the name, as
10813          the former contains the exported name, which the user expects
10814          to be able to reference.  Ideally, we want the user to be able
10815          to reference this entity using either natural or linkage name,
10816          but we haven't started looking at this enhancement yet.  */
10817       const char *linkage_name = dw2_linkage_name (die, cu);
10818
10819       if (linkage_name != NULL)
10820         return linkage_name;
10821     }
10822
10823   /* These are the only languages we know how to qualify names in.  */
10824   if (name != NULL
10825       && (cu->language == language_cplus
10826           || cu->language == language_fortran || cu->language == language_d
10827           || cu->language == language_rust))
10828     {
10829       if (die_needs_namespace (die, cu))
10830         {
10831           const char *prefix;
10832           const char *canonical_name = NULL;
10833
10834           string_file buf;
10835
10836           prefix = determine_prefix (die, cu);
10837           if (*prefix != '\0')
10838             {
10839               char *prefixed_name = typename_concat (NULL, prefix, name,
10840                                                      physname, cu);
10841
10842               buf.puts (prefixed_name);
10843               xfree (prefixed_name);
10844             }
10845           else
10846             buf.puts (name);
10847
10848           /* Template parameters may be specified in the DIE's DW_AT_name, or
10849              as children with DW_TAG_template_type_param or
10850              DW_TAG_value_type_param.  If the latter, add them to the name
10851              here.  If the name already has template parameters, then
10852              skip this step; some versions of GCC emit both, and
10853              it is more efficient to use the pre-computed name.
10854
10855              Something to keep in mind about this process: it is very
10856              unlikely, or in some cases downright impossible, to produce
10857              something that will match the mangled name of a function.
10858              If the definition of the function has the same debug info,
10859              we should be able to match up with it anyway.  But fallbacks
10860              using the minimal symbol, for instance to find a method
10861              implemented in a stripped copy of libstdc++, will not work.
10862              If we do not have debug info for the definition, we will have to
10863              match them up some other way.
10864
10865              When we do name matching there is a related problem with function
10866              templates; two instantiated function templates are allowed to
10867              differ only by their return types, which we do not add here.  */
10868
10869           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10870             {
10871               struct attribute *attr;
10872               struct die_info *child;
10873               int first = 1;
10874
10875               die->building_fullname = 1;
10876
10877               for (child = die->child; child != NULL; child = child->sibling)
10878                 {
10879                   struct type *type;
10880                   LONGEST value;
10881                   const gdb_byte *bytes;
10882                   struct dwarf2_locexpr_baton *baton;
10883                   struct value *v;
10884
10885                   if (child->tag != DW_TAG_template_type_param
10886                       && child->tag != DW_TAG_template_value_param)
10887                     continue;
10888
10889                   if (first)
10890                     {
10891                       buf.puts ("<");
10892                       first = 0;
10893                     }
10894                   else
10895                     buf.puts (", ");
10896
10897                   attr = dwarf2_attr (child, DW_AT_type, cu);
10898                   if (attr == NULL)
10899                     {
10900                       complaint (_("template parameter missing DW_AT_type"));
10901                       buf.puts ("UNKNOWN_TYPE");
10902                       continue;
10903                     }
10904                   type = die_type (child, cu);
10905
10906                   if (child->tag == DW_TAG_template_type_param)
10907                     {
10908                       c_print_type (type, "", &buf, -1, 0, cu->language,
10909                                     &type_print_raw_options);
10910                       continue;
10911                     }
10912
10913                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10914                   if (attr == NULL)
10915                     {
10916                       complaint (_("template parameter missing "
10917                                    "DW_AT_const_value"));
10918                       buf.puts ("UNKNOWN_VALUE");
10919                       continue;
10920                     }
10921
10922                   dwarf2_const_value_attr (attr, type, name,
10923                                            &cu->comp_unit_obstack, cu,
10924                                            &value, &bytes, &baton);
10925
10926                   if (TYPE_NOSIGN (type))
10927                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10928                        changed, this can use value_print instead.  */
10929                     c_printchar (value, type, &buf);
10930                   else
10931                     {
10932                       struct value_print_options opts;
10933
10934                       if (baton != NULL)
10935                         v = dwarf2_evaluate_loc_desc (type, NULL,
10936                                                       baton->data,
10937                                                       baton->size,
10938                                                       baton->per_cu);
10939                       else if (bytes != NULL)
10940                         {
10941                           v = allocate_value (type);
10942                           memcpy (value_contents_writeable (v), bytes,
10943                                   TYPE_LENGTH (type));
10944                         }
10945                       else
10946                         v = value_from_longest (type, value);
10947
10948                       /* Specify decimal so that we do not depend on
10949                          the radix.  */
10950                       get_formatted_print_options (&opts, 'd');
10951                       opts.raw = 1;
10952                       value_print (v, &buf, &opts);
10953                       release_value (v);
10954                     }
10955                 }
10956
10957               die->building_fullname = 0;
10958
10959               if (!first)
10960                 {
10961                   /* Close the argument list, with a space if necessary
10962                      (nested templates).  */
10963                   if (!buf.empty () && buf.string ().back () == '>')
10964                     buf.puts (" >");
10965                   else
10966                     buf.puts (">");
10967                 }
10968             }
10969
10970           /* For C++ methods, append formal parameter type
10971              information, if PHYSNAME.  */
10972
10973           if (physname && die->tag == DW_TAG_subprogram
10974               && cu->language == language_cplus)
10975             {
10976               struct type *type = read_type_die (die, cu);
10977
10978               c_type_print_args (type, &buf, 1, cu->language,
10979                                  &type_print_raw_options);
10980
10981               if (cu->language == language_cplus)
10982                 {
10983                   /* Assume that an artificial first parameter is
10984                      "this", but do not crash if it is not.  RealView
10985                      marks unnamed (and thus unused) parameters as
10986                      artificial; there is no way to differentiate
10987                      the two cases.  */
10988                   if (TYPE_NFIELDS (type) > 0
10989                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10990                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10991                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10992                                                                         0))))
10993                     buf.puts (" const");
10994                 }
10995             }
10996
10997           const std::string &intermediate_name = buf.string ();
10998
10999           if (cu->language == language_cplus)
11000             canonical_name
11001               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11002                                           &objfile->per_bfd->storage_obstack);
11003
11004           /* If we only computed INTERMEDIATE_NAME, or if
11005              INTERMEDIATE_NAME is already canonical, then we need to
11006              copy it to the appropriate obstack.  */
11007           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11008             name = ((const char *)
11009                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11010                                    intermediate_name.c_str (),
11011                                    intermediate_name.length ()));
11012           else
11013             name = canonical_name;
11014         }
11015     }
11016
11017   return name;
11018 }
11019
11020 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11021    If scope qualifiers are appropriate they will be added.  The result
11022    will be allocated on the storage_obstack, or NULL if the DIE does
11023    not have a name.  NAME may either be from a previous call to
11024    dwarf2_name or NULL.
11025
11026    The output string will be canonicalized (if C++).  */
11027
11028 static const char *
11029 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11030 {
11031   return dwarf2_compute_name (name, die, cu, 0);
11032 }
11033
11034 /* Construct a physname for the given DIE in CU.  NAME may either be
11035    from a previous call to dwarf2_name or NULL.  The result will be
11036    allocated on the objfile_objstack or NULL if the DIE does not have a
11037    name.
11038
11039    The output string will be canonicalized (if C++).  */
11040
11041 static const char *
11042 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11043 {
11044   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11045   const char *retval, *mangled = NULL, *canon = NULL;
11046   int need_copy = 1;
11047
11048   /* In this case dwarf2_compute_name is just a shortcut not building anything
11049      on its own.  */
11050   if (!die_needs_namespace (die, cu))
11051     return dwarf2_compute_name (name, die, cu, 1);
11052
11053   mangled = dw2_linkage_name (die, cu);
11054
11055   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11056      See https://github.com/rust-lang/rust/issues/32925.  */
11057   if (cu->language == language_rust && mangled != NULL
11058       && strchr (mangled, '{') != NULL)
11059     mangled = NULL;
11060
11061   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11062      has computed.  */
11063   gdb::unique_xmalloc_ptr<char> demangled;
11064   if (mangled != NULL)
11065     {
11066
11067       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11068         {
11069           /* Do nothing (do not demangle the symbol name).  */
11070         }
11071       else if (cu->language == language_go)
11072         {
11073           /* This is a lie, but we already lie to the caller new_symbol.
11074              new_symbol assumes we return the mangled name.
11075              This just undoes that lie until things are cleaned up.  */
11076         }
11077       else
11078         {
11079           /* Use DMGL_RET_DROP for C++ template functions to suppress
11080              their return type.  It is easier for GDB users to search
11081              for such functions as `name(params)' than `long name(params)'.
11082              In such case the minimal symbol names do not match the full
11083              symbol names but for template functions there is never a need
11084              to look up their definition from their declaration so
11085              the only disadvantage remains the minimal symbol variant
11086              `long name(params)' does not have the proper inferior type.  */
11087           demangled.reset (gdb_demangle (mangled,
11088                                          (DMGL_PARAMS | DMGL_ANSI
11089                                           | DMGL_RET_DROP)));
11090         }
11091       if (demangled)
11092         canon = demangled.get ();
11093       else
11094         {
11095           canon = mangled;
11096           need_copy = 0;
11097         }
11098     }
11099
11100   if (canon == NULL || check_physname)
11101     {
11102       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11103
11104       if (canon != NULL && strcmp (physname, canon) != 0)
11105         {
11106           /* It may not mean a bug in GDB.  The compiler could also
11107              compute DW_AT_linkage_name incorrectly.  But in such case
11108              GDB would need to be bug-to-bug compatible.  */
11109
11110           complaint (_("Computed physname <%s> does not match demangled <%s> "
11111                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11112                      physname, canon, mangled, sect_offset_str (die->sect_off),
11113                      objfile_name (objfile));
11114
11115           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11116              is available here - over computed PHYSNAME.  It is safer
11117              against both buggy GDB and buggy compilers.  */
11118
11119           retval = canon;
11120         }
11121       else
11122         {
11123           retval = physname;
11124           need_copy = 0;
11125         }
11126     }
11127   else
11128     retval = canon;
11129
11130   if (need_copy)
11131     retval = ((const char *)
11132               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11133                              retval, strlen (retval)));
11134
11135   return retval;
11136 }
11137
11138 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11139    a new symbol for it.
11140
11141    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11142
11143 static int
11144 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11145 {
11146   struct attribute *attr;
11147
11148   /* If the die does not have a name, this is not a namespace
11149      alias.  */
11150   attr = dwarf2_attr (die, DW_AT_name, cu);
11151   if (attr != NULL)
11152     {
11153       int num;
11154       struct die_info *d = die;
11155       struct dwarf2_cu *imported_cu = cu;
11156
11157       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11158          keep inspecting DIEs until we hit the underlying import.  */
11159 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11160       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11161         {
11162           attr = dwarf2_attr (d, DW_AT_import, cu);
11163           if (attr == NULL)
11164             break;
11165
11166           d = follow_die_ref (d, attr, &imported_cu);
11167           if (d->tag != DW_TAG_imported_declaration)
11168             break;
11169         }
11170
11171       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11172         {
11173           complaint (_("DIE at %s has too many recursively imported "
11174                        "declarations"), sect_offset_str (d->sect_off));
11175           return 0;
11176         }
11177
11178       if (attr != NULL)
11179         {
11180           struct type *type;
11181           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11182
11183           type = get_die_type_at_offset (sect_off, cu->per_cu);
11184           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11185             {
11186               /* This declaration is a global namespace alias.  Add
11187                  a symbol for it whose type is the aliased namespace.  */
11188               new_symbol (die, type, cu);
11189               return 1;
11190             }
11191         }
11192     }
11193
11194   return 0;
11195 }
11196
11197 /* Return the using directives repository (global or local?) to use in the
11198    current context for CU.
11199
11200    For Ada, imported declarations can materialize renamings, which *may* be
11201    global.  However it is impossible (for now?) in DWARF to distinguish
11202    "external" imported declarations and "static" ones.  As all imported
11203    declarations seem to be static in all other languages, make them all CU-wide
11204    global only in Ada.  */
11205
11206 static struct using_direct **
11207 using_directives (struct dwarf2_cu *cu)
11208 {
11209   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11210     return cu->builder->get_global_using_directives ();
11211   else
11212     return cu->builder->get_local_using_directives ();
11213 }
11214
11215 /* Read the import statement specified by the given die and record it.  */
11216
11217 static void
11218 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11219 {
11220   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11221   struct attribute *import_attr;
11222   struct die_info *imported_die, *child_die;
11223   struct dwarf2_cu *imported_cu;
11224   const char *imported_name;
11225   const char *imported_name_prefix;
11226   const char *canonical_name;
11227   const char *import_alias;
11228   const char *imported_declaration = NULL;
11229   const char *import_prefix;
11230   std::vector<const char *> excludes;
11231
11232   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11233   if (import_attr == NULL)
11234     {
11235       complaint (_("Tag '%s' has no DW_AT_import"),
11236                  dwarf_tag_name (die->tag));
11237       return;
11238     }
11239
11240   imported_cu = cu;
11241   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11242   imported_name = dwarf2_name (imported_die, imported_cu);
11243   if (imported_name == NULL)
11244     {
11245       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11246
11247         The import in the following code:
11248         namespace A
11249           {
11250             typedef int B;
11251           }
11252
11253         int main ()
11254           {
11255             using A::B;
11256             B b;
11257             return b;
11258           }
11259
11260         ...
11261          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11262             <52>   DW_AT_decl_file   : 1
11263             <53>   DW_AT_decl_line   : 6
11264             <54>   DW_AT_import      : <0x75>
11265          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11266             <59>   DW_AT_name        : B
11267             <5b>   DW_AT_decl_file   : 1
11268             <5c>   DW_AT_decl_line   : 2
11269             <5d>   DW_AT_type        : <0x6e>
11270         ...
11271          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11272             <76>   DW_AT_byte_size   : 4
11273             <77>   DW_AT_encoding    : 5        (signed)
11274
11275         imports the wrong die ( 0x75 instead of 0x58 ).
11276         This case will be ignored until the gcc bug is fixed.  */
11277       return;
11278     }
11279
11280   /* Figure out the local name after import.  */
11281   import_alias = dwarf2_name (die, cu);
11282
11283   /* Figure out where the statement is being imported to.  */
11284   import_prefix = determine_prefix (die, cu);
11285
11286   /* Figure out what the scope of the imported die is and prepend it
11287      to the name of the imported die.  */
11288   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11289
11290   if (imported_die->tag != DW_TAG_namespace
11291       && imported_die->tag != DW_TAG_module)
11292     {
11293       imported_declaration = imported_name;
11294       canonical_name = imported_name_prefix;
11295     }
11296   else if (strlen (imported_name_prefix) > 0)
11297     canonical_name = obconcat (&objfile->objfile_obstack,
11298                                imported_name_prefix,
11299                                (cu->language == language_d ? "." : "::"),
11300                                imported_name, (char *) NULL);
11301   else
11302     canonical_name = imported_name;
11303
11304   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11305     for (child_die = die->child; child_die && child_die->tag;
11306          child_die = sibling_die (child_die))
11307       {
11308         /* DWARF-4: A Fortran use statement with a “rename list” may be
11309            represented by an imported module entry with an import attribute
11310            referring to the module and owned entries corresponding to those
11311            entities that are renamed as part of being imported.  */
11312
11313         if (child_die->tag != DW_TAG_imported_declaration)
11314           {
11315             complaint (_("child DW_TAG_imported_declaration expected "
11316                          "- DIE at %s [in module %s]"),
11317                        sect_offset_str (child_die->sect_off),
11318                        objfile_name (objfile));
11319             continue;
11320           }
11321
11322         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11323         if (import_attr == NULL)
11324           {
11325             complaint (_("Tag '%s' has no DW_AT_import"),
11326                        dwarf_tag_name (child_die->tag));
11327             continue;
11328           }
11329
11330         imported_cu = cu;
11331         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11332                                               &imported_cu);
11333         imported_name = dwarf2_name (imported_die, imported_cu);
11334         if (imported_name == NULL)
11335           {
11336             complaint (_("child DW_TAG_imported_declaration has unknown "
11337                          "imported name - DIE at %s [in module %s]"),
11338                        sect_offset_str (child_die->sect_off),
11339                        objfile_name (objfile));
11340             continue;
11341           }
11342
11343         excludes.push_back (imported_name);
11344
11345         process_die (child_die, cu);
11346       }
11347
11348   add_using_directive (using_directives (cu),
11349                        import_prefix,
11350                        canonical_name,
11351                        import_alias,
11352                        imported_declaration,
11353                        excludes,
11354                        0,
11355                        &objfile->objfile_obstack);
11356 }
11357
11358 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11359    types, but gives them a size of zero.  Starting with version 14,
11360    ICC is compatible with GCC.  */
11361
11362 static int
11363 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11364 {
11365   if (!cu->checked_producer)
11366     check_producer (cu);
11367
11368   return cu->producer_is_icc_lt_14;
11369 }
11370
11371 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11372    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11373    this, it was first present in GCC release 4.3.0.  */
11374
11375 static int
11376 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11377 {
11378   if (!cu->checked_producer)
11379     check_producer (cu);
11380
11381   return cu->producer_is_gcc_lt_4_3;
11382 }
11383
11384 static file_and_directory
11385 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11386 {
11387   file_and_directory res;
11388
11389   /* Find the filename.  Do not use dwarf2_name here, since the filename
11390      is not a source language identifier.  */
11391   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11392   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11393
11394   if (res.comp_dir == NULL
11395       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11396       && IS_ABSOLUTE_PATH (res.name))
11397     {
11398       res.comp_dir_storage = ldirname (res.name);
11399       if (!res.comp_dir_storage.empty ())
11400         res.comp_dir = res.comp_dir_storage.c_str ();
11401     }
11402   if (res.comp_dir != NULL)
11403     {
11404       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11405          directory, get rid of it.  */
11406       const char *cp = strchr (res.comp_dir, ':');
11407
11408       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11409         res.comp_dir = cp + 1;
11410     }
11411
11412   if (res.name == NULL)
11413     res.name = "<unknown>";
11414
11415   return res;
11416 }
11417
11418 /* Handle DW_AT_stmt_list for a compilation unit.
11419    DIE is the DW_TAG_compile_unit die for CU.
11420    COMP_DIR is the compilation directory.  LOWPC is passed to
11421    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11422
11423 static void
11424 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11425                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11426 {
11427   struct dwarf2_per_objfile *dwarf2_per_objfile
11428     = cu->per_cu->dwarf2_per_objfile;
11429   struct objfile *objfile = dwarf2_per_objfile->objfile;
11430   struct attribute *attr;
11431   struct line_header line_header_local;
11432   hashval_t line_header_local_hash;
11433   void **slot;
11434   int decode_mapping;
11435
11436   gdb_assert (! cu->per_cu->is_debug_types);
11437
11438   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11439   if (attr == NULL)
11440     return;
11441
11442   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11443
11444   /* The line header hash table is only created if needed (it exists to
11445      prevent redundant reading of the line table for partial_units).
11446      If we're given a partial_unit, we'll need it.  If we're given a
11447      compile_unit, then use the line header hash table if it's already
11448      created, but don't create one just yet.  */
11449
11450   if (dwarf2_per_objfile->line_header_hash == NULL
11451       && die->tag == DW_TAG_partial_unit)
11452     {
11453       dwarf2_per_objfile->line_header_hash
11454         = htab_create_alloc_ex (127, line_header_hash_voidp,
11455                                 line_header_eq_voidp,
11456                                 free_line_header_voidp,
11457                                 &objfile->objfile_obstack,
11458                                 hashtab_obstack_allocate,
11459                                 dummy_obstack_deallocate);
11460     }
11461
11462   line_header_local.sect_off = line_offset;
11463   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11464   line_header_local_hash = line_header_hash (&line_header_local);
11465   if (dwarf2_per_objfile->line_header_hash != NULL)
11466     {
11467       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11468                                        &line_header_local,
11469                                        line_header_local_hash, NO_INSERT);
11470
11471       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11472          is not present in *SLOT (since if there is something in *SLOT then
11473          it will be for a partial_unit).  */
11474       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11475         {
11476           gdb_assert (*slot != NULL);
11477           cu->line_header = (struct line_header *) *slot;
11478           return;
11479         }
11480     }
11481
11482   /* dwarf_decode_line_header does not yet provide sufficient information.
11483      We always have to call also dwarf_decode_lines for it.  */
11484   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11485   if (lh == NULL)
11486     return;
11487
11488   cu->line_header = lh.release ();
11489   cu->line_header_die_owner = die;
11490
11491   if (dwarf2_per_objfile->line_header_hash == NULL)
11492     slot = NULL;
11493   else
11494     {
11495       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11496                                        &line_header_local,
11497                                        line_header_local_hash, INSERT);
11498       gdb_assert (slot != NULL);
11499     }
11500   if (slot != NULL && *slot == NULL)
11501     {
11502       /* This newly decoded line number information unit will be owned
11503          by line_header_hash hash table.  */
11504       *slot = cu->line_header;
11505       cu->line_header_die_owner = NULL;
11506     }
11507   else
11508     {
11509       /* We cannot free any current entry in (*slot) as that struct line_header
11510          may be already used by multiple CUs.  Create only temporary decoded
11511          line_header for this CU - it may happen at most once for each line
11512          number information unit.  And if we're not using line_header_hash
11513          then this is what we want as well.  */
11514       gdb_assert (die->tag != DW_TAG_partial_unit);
11515     }
11516   decode_mapping = (die->tag != DW_TAG_partial_unit);
11517   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11518                       decode_mapping);
11519
11520 }
11521
11522 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11523
11524 static void
11525 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11526 {
11527   struct dwarf2_per_objfile *dwarf2_per_objfile
11528     = cu->per_cu->dwarf2_per_objfile;
11529   struct objfile *objfile = dwarf2_per_objfile->objfile;
11530   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11531   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11532   CORE_ADDR highpc = ((CORE_ADDR) 0);
11533   struct attribute *attr;
11534   struct die_info *child_die;
11535   CORE_ADDR baseaddr;
11536
11537   prepare_one_comp_unit (cu, die, cu->language);
11538   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11539
11540   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11541
11542   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11543      from finish_block.  */
11544   if (lowpc == ((CORE_ADDR) -1))
11545     lowpc = highpc;
11546   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11547
11548   file_and_directory fnd = find_file_and_directory (die, cu);
11549
11550   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11551      standardised yet.  As a workaround for the language detection we fall
11552      back to the DW_AT_producer string.  */
11553   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11554     cu->language = language_opencl;
11555
11556   /* Similar hack for Go.  */
11557   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11558     set_cu_language (DW_LANG_Go, cu);
11559
11560   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11561
11562   /* Decode line number information if present.  We do this before
11563      processing child DIEs, so that the line header table is available
11564      for DW_AT_decl_file.  */
11565   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11566
11567   /* Process all dies in compilation unit.  */
11568   if (die->child != NULL)
11569     {
11570       child_die = die->child;
11571       while (child_die && child_die->tag)
11572         {
11573           process_die (child_die, cu);
11574           child_die = sibling_die (child_die);
11575         }
11576     }
11577
11578   /* Decode macro information, if present.  Dwarf 2 macro information
11579      refers to information in the line number info statement program
11580      header, so we can only read it if we've read the header
11581      successfully.  */
11582   attr = dwarf2_attr (die, DW_AT_macros, cu);
11583   if (attr == NULL)
11584     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11585   if (attr && cu->line_header)
11586     {
11587       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11588         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11589
11590       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11591     }
11592   else
11593     {
11594       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11595       if (attr && cu->line_header)
11596         {
11597           unsigned int macro_offset = DW_UNSND (attr);
11598
11599           dwarf_decode_macros (cu, macro_offset, 0);
11600         }
11601     }
11602 }
11603
11604 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11605    Create the set of symtabs used by this TU, or if this TU is sharing
11606    symtabs with another TU and the symtabs have already been created
11607    then restore those symtabs in the line header.
11608    We don't need the pc/line-number mapping for type units.  */
11609
11610 static void
11611 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11612 {
11613   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11614   struct type_unit_group *tu_group;
11615   int first_time;
11616   struct attribute *attr;
11617   unsigned int i;
11618   struct signatured_type *sig_type;
11619
11620   gdb_assert (per_cu->is_debug_types);
11621   sig_type = (struct signatured_type *) per_cu;
11622
11623   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11624
11625   /* If we're using .gdb_index (includes -readnow) then
11626      per_cu->type_unit_group may not have been set up yet.  */
11627   if (sig_type->type_unit_group == NULL)
11628     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11629   tu_group = sig_type->type_unit_group;
11630
11631   /* If we've already processed this stmt_list there's no real need to
11632      do it again, we could fake it and just recreate the part we need
11633      (file name,index -> symtab mapping).  If data shows this optimization
11634      is useful we can do it then.  */
11635   first_time = tu_group->compunit_symtab == NULL;
11636
11637   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11638      debug info.  */
11639   line_header_up lh;
11640   if (attr != NULL)
11641     {
11642       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11643       lh = dwarf_decode_line_header (line_offset, cu);
11644     }
11645   if (lh == NULL)
11646     {
11647       if (first_time)
11648         dwarf2_start_symtab (cu, "", NULL, 0);
11649       else
11650         {
11651           gdb_assert (tu_group->symtabs == NULL);
11652           gdb_assert (cu->builder == nullptr);
11653           struct compunit_symtab *cust = tu_group->compunit_symtab;
11654           cu->builder.reset (new struct buildsym_compunit
11655                              (COMPUNIT_OBJFILE (cust), "",
11656                               COMPUNIT_DIRNAME (cust),
11657                               compunit_language (cust),
11658                               0, cust));
11659         }
11660       return;
11661     }
11662
11663   cu->line_header = lh.release ();
11664   cu->line_header_die_owner = die;
11665
11666   if (first_time)
11667     {
11668       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11669
11670       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11671          still initializing it, and our caller (a few levels up)
11672          process_full_type_unit still needs to know if this is the first
11673          time.  */
11674
11675       tu_group->num_symtabs = cu->line_header->file_names.size ();
11676       tu_group->symtabs = XNEWVEC (struct symtab *,
11677                                    cu->line_header->file_names.size ());
11678
11679       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11680         {
11681           file_entry &fe = cu->line_header->file_names[i];
11682
11683           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11684
11685           if (cu->builder->get_current_subfile ()->symtab == NULL)
11686             {
11687               /* NOTE: start_subfile will recognize when it's been
11688                  passed a file it has already seen.  So we can't
11689                  assume there's a simple mapping from
11690                  cu->line_header->file_names to subfiles, plus
11691                  cu->line_header->file_names may contain dups.  */
11692               cu->builder->get_current_subfile ()->symtab
11693                 = allocate_symtab (cust,
11694                                    cu->builder->get_current_subfile ()->name);
11695             }
11696
11697           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11698           tu_group->symtabs[i] = fe.symtab;
11699         }
11700     }
11701   else
11702     {
11703       gdb_assert (cu->builder == nullptr);
11704       struct compunit_symtab *cust = tu_group->compunit_symtab;
11705       cu->builder.reset (new struct buildsym_compunit
11706                          (COMPUNIT_OBJFILE (cust), "",
11707                           COMPUNIT_DIRNAME (cust),
11708                           compunit_language (cust),
11709                           0, cust));
11710
11711       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11712         {
11713           file_entry &fe = cu->line_header->file_names[i];
11714
11715           fe.symtab = tu_group->symtabs[i];
11716         }
11717     }
11718
11719   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11720      so they don't have a "real" (so to speak) symtab anyway.
11721      There is later code that will assign the main symtab to all symbols
11722      that don't have one.  We need to handle the case of a symbol with a
11723      missing symtab (DW_AT_decl_file) anyway.  */
11724 }
11725
11726 /* Process DW_TAG_type_unit.
11727    For TUs we want to skip the first top level sibling if it's not the
11728    actual type being defined by this TU.  In this case the first top
11729    level sibling is there to provide context only.  */
11730
11731 static void
11732 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11733 {
11734   struct die_info *child_die;
11735
11736   prepare_one_comp_unit (cu, die, language_minimal);
11737
11738   /* Initialize (or reinitialize) the machinery for building symtabs.
11739      We do this before processing child DIEs, so that the line header table
11740      is available for DW_AT_decl_file.  */
11741   setup_type_unit_groups (die, cu);
11742
11743   if (die->child != NULL)
11744     {
11745       child_die = die->child;
11746       while (child_die && child_die->tag)
11747         {
11748           process_die (child_die, cu);
11749           child_die = sibling_die (child_die);
11750         }
11751     }
11752 }
11753 \f
11754 /* DWO/DWP files.
11755
11756    http://gcc.gnu.org/wiki/DebugFission
11757    http://gcc.gnu.org/wiki/DebugFissionDWP
11758
11759    To simplify handling of both DWO files ("object" files with the DWARF info)
11760    and DWP files (a file with the DWOs packaged up into one file), we treat
11761    DWP files as having a collection of virtual DWO files.  */
11762
11763 static hashval_t
11764 hash_dwo_file (const void *item)
11765 {
11766   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11767   hashval_t hash;
11768
11769   hash = htab_hash_string (dwo_file->dwo_name);
11770   if (dwo_file->comp_dir != NULL)
11771     hash += htab_hash_string (dwo_file->comp_dir);
11772   return hash;
11773 }
11774
11775 static int
11776 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11777 {
11778   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11779   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11780
11781   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11782     return 0;
11783   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11784     return lhs->comp_dir == rhs->comp_dir;
11785   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11786 }
11787
11788 /* Allocate a hash table for DWO files.  */
11789
11790 static htab_t
11791 allocate_dwo_file_hash_table (struct objfile *objfile)
11792 {
11793   return htab_create_alloc_ex (41,
11794                                hash_dwo_file,
11795                                eq_dwo_file,
11796                                NULL,
11797                                &objfile->objfile_obstack,
11798                                hashtab_obstack_allocate,
11799                                dummy_obstack_deallocate);
11800 }
11801
11802 /* Lookup DWO file DWO_NAME.  */
11803
11804 static void **
11805 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11806                       const char *dwo_name,
11807                       const char *comp_dir)
11808 {
11809   struct dwo_file find_entry;
11810   void **slot;
11811
11812   if (dwarf2_per_objfile->dwo_files == NULL)
11813     dwarf2_per_objfile->dwo_files
11814       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11815
11816   memset (&find_entry, 0, sizeof (find_entry));
11817   find_entry.dwo_name = dwo_name;
11818   find_entry.comp_dir = comp_dir;
11819   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11820
11821   return slot;
11822 }
11823
11824 static hashval_t
11825 hash_dwo_unit (const void *item)
11826 {
11827   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11828
11829   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11830   return dwo_unit->signature;
11831 }
11832
11833 static int
11834 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11835 {
11836   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11837   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11838
11839   /* The signature is assumed to be unique within the DWO file.
11840      So while object file CU dwo_id's always have the value zero,
11841      that's OK, assuming each object file DWO file has only one CU,
11842      and that's the rule for now.  */
11843   return lhs->signature == rhs->signature;
11844 }
11845
11846 /* Allocate a hash table for DWO CUs,TUs.
11847    There is one of these tables for each of CUs,TUs for each DWO file.  */
11848
11849 static htab_t
11850 allocate_dwo_unit_table (struct objfile *objfile)
11851 {
11852   /* Start out with a pretty small number.
11853      Generally DWO files contain only one CU and maybe some TUs.  */
11854   return htab_create_alloc_ex (3,
11855                                hash_dwo_unit,
11856                                eq_dwo_unit,
11857                                NULL,
11858                                &objfile->objfile_obstack,
11859                                hashtab_obstack_allocate,
11860                                dummy_obstack_deallocate);
11861 }
11862
11863 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11864
11865 struct create_dwo_cu_data
11866 {
11867   struct dwo_file *dwo_file;
11868   struct dwo_unit dwo_unit;
11869 };
11870
11871 /* die_reader_func for create_dwo_cu.  */
11872
11873 static void
11874 create_dwo_cu_reader (const struct die_reader_specs *reader,
11875                       const gdb_byte *info_ptr,
11876                       struct die_info *comp_unit_die,
11877                       int has_children,
11878                       void *datap)
11879 {
11880   struct dwarf2_cu *cu = reader->cu;
11881   sect_offset sect_off = cu->per_cu->sect_off;
11882   struct dwarf2_section_info *section = cu->per_cu->section;
11883   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11884   struct dwo_file *dwo_file = data->dwo_file;
11885   struct dwo_unit *dwo_unit = &data->dwo_unit;
11886   struct attribute *attr;
11887
11888   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11889   if (attr == NULL)
11890     {
11891       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11892                    " its dwo_id [in module %s]"),
11893                  sect_offset_str (sect_off), dwo_file->dwo_name);
11894       return;
11895     }
11896
11897   dwo_unit->dwo_file = dwo_file;
11898   dwo_unit->signature = DW_UNSND (attr);
11899   dwo_unit->section = section;
11900   dwo_unit->sect_off = sect_off;
11901   dwo_unit->length = cu->per_cu->length;
11902
11903   if (dwarf_read_debug)
11904     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11905                         sect_offset_str (sect_off),
11906                         hex_string (dwo_unit->signature));
11907 }
11908
11909 /* Create the dwo_units for the CUs in a DWO_FILE.
11910    Note: This function processes DWO files only, not DWP files.  */
11911
11912 static void
11913 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11914                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11915                        htab_t &cus_htab)
11916 {
11917   struct objfile *objfile = dwarf2_per_objfile->objfile;
11918   const gdb_byte *info_ptr, *end_ptr;
11919
11920   dwarf2_read_section (objfile, &section);
11921   info_ptr = section.buffer;
11922
11923   if (info_ptr == NULL)
11924     return;
11925
11926   if (dwarf_read_debug)
11927     {
11928       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11929                           get_section_name (&section),
11930                           get_section_file_name (&section));
11931     }
11932
11933   end_ptr = info_ptr + section.size;
11934   while (info_ptr < end_ptr)
11935     {
11936       struct dwarf2_per_cu_data per_cu;
11937       struct create_dwo_cu_data create_dwo_cu_data;
11938       struct dwo_unit *dwo_unit;
11939       void **slot;
11940       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11941
11942       memset (&create_dwo_cu_data.dwo_unit, 0,
11943               sizeof (create_dwo_cu_data.dwo_unit));
11944       memset (&per_cu, 0, sizeof (per_cu));
11945       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11946       per_cu.is_debug_types = 0;
11947       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11948       per_cu.section = &section;
11949       create_dwo_cu_data.dwo_file = &dwo_file;
11950
11951       init_cutu_and_read_dies_no_follow (
11952           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11953       info_ptr += per_cu.length;
11954
11955       // If the unit could not be parsed, skip it.
11956       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11957         continue;
11958
11959       if (cus_htab == NULL)
11960         cus_htab = allocate_dwo_unit_table (objfile);
11961
11962       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11963       *dwo_unit = create_dwo_cu_data.dwo_unit;
11964       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11965       gdb_assert (slot != NULL);
11966       if (*slot != NULL)
11967         {
11968           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11969           sect_offset dup_sect_off = dup_cu->sect_off;
11970
11971           complaint (_("debug cu entry at offset %s is duplicate to"
11972                        " the entry at offset %s, signature %s"),
11973                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11974                      hex_string (dwo_unit->signature));
11975         }
11976       *slot = (void *)dwo_unit;
11977     }
11978 }
11979
11980 /* DWP file .debug_{cu,tu}_index section format:
11981    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11982
11983    DWP Version 1:
11984
11985    Both index sections have the same format, and serve to map a 64-bit
11986    signature to a set of section numbers.  Each section begins with a header,
11987    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11988    indexes, and a pool of 32-bit section numbers.  The index sections will be
11989    aligned at 8-byte boundaries in the file.
11990
11991    The index section header consists of:
11992
11993     V, 32 bit version number
11994     -, 32 bits unused
11995     N, 32 bit number of compilation units or type units in the index
11996     M, 32 bit number of slots in the hash table
11997
11998    Numbers are recorded using the byte order of the application binary.
11999
12000    The hash table begins at offset 16 in the section, and consists of an array
12001    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12002    order of the application binary).  Unused slots in the hash table are 0.
12003    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12004
12005    The parallel table begins immediately after the hash table
12006    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12007    array of 32-bit indexes (using the byte order of the application binary),
12008    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12009    table contains a 32-bit index into the pool of section numbers.  For unused
12010    hash table slots, the corresponding entry in the parallel table will be 0.
12011
12012    The pool of section numbers begins immediately following the hash table
12013    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12014    section numbers consists of an array of 32-bit words (using the byte order
12015    of the application binary).  Each item in the array is indexed starting
12016    from 0.  The hash table entry provides the index of the first section
12017    number in the set.  Additional section numbers in the set follow, and the
12018    set is terminated by a 0 entry (section number 0 is not used in ELF).
12019
12020    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12021    section must be the first entry in the set, and the .debug_abbrev.dwo must
12022    be the second entry. Other members of the set may follow in any order.
12023
12024    ---
12025
12026    DWP Version 2:
12027
12028    DWP Version 2 combines all the .debug_info, etc. sections into one,
12029    and the entries in the index tables are now offsets into these sections.
12030    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12031    section.
12032
12033    Index Section Contents:
12034     Header
12035     Hash Table of Signatures   dwp_hash_table.hash_table
12036     Parallel Table of Indices  dwp_hash_table.unit_table
12037     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12038     Table of Section Sizes     dwp_hash_table.v2.sizes
12039
12040    The index section header consists of:
12041
12042     V, 32 bit version number
12043     L, 32 bit number of columns in the table of section offsets
12044     N, 32 bit number of compilation units or type units in the index
12045     M, 32 bit number of slots in the hash table
12046
12047    Numbers are recorded using the byte order of the application binary.
12048
12049    The hash table has the same format as version 1.
12050    The parallel table of indices has the same format as version 1,
12051    except that the entries are origin-1 indices into the table of sections
12052    offsets and the table of section sizes.
12053
12054    The table of offsets begins immediately following the parallel table
12055    (at offset 16 + 12 * M from the beginning of the section).  The table is
12056    a two-dimensional array of 32-bit words (using the byte order of the
12057    application binary), with L columns and N+1 rows, in row-major order.
12058    Each row in the array is indexed starting from 0.  The first row provides
12059    a key to the remaining rows: each column in this row provides an identifier
12060    for a debug section, and the offsets in the same column of subsequent rows
12061    refer to that section.  The section identifiers are:
12062
12063     DW_SECT_INFO         1  .debug_info.dwo
12064     DW_SECT_TYPES        2  .debug_types.dwo
12065     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12066     DW_SECT_LINE         4  .debug_line.dwo
12067     DW_SECT_LOC          5  .debug_loc.dwo
12068     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12069     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12070     DW_SECT_MACRO        8  .debug_macro.dwo
12071
12072    The offsets provided by the CU and TU index sections are the base offsets
12073    for the contributions made by each CU or TU to the corresponding section
12074    in the package file.  Each CU and TU header contains an abbrev_offset
12075    field, used to find the abbreviations table for that CU or TU within the
12076    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12077    be interpreted as relative to the base offset given in the index section.
12078    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12079    should be interpreted as relative to the base offset for .debug_line.dwo,
12080    and offsets into other debug sections obtained from DWARF attributes should
12081    also be interpreted as relative to the corresponding base offset.
12082
12083    The table of sizes begins immediately following the table of offsets.
12084    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12085    with L columns and N rows, in row-major order.  Each row in the array is
12086    indexed starting from 1 (row 0 is shared by the two tables).
12087
12088    ---
12089
12090    Hash table lookup is handled the same in version 1 and 2:
12091
12092    We assume that N and M will not exceed 2^32 - 1.
12093    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12094
12095    Given a 64-bit compilation unit signature or a type signature S, an entry
12096    in the hash table is located as follows:
12097
12098    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12099       the low-order k bits all set to 1.
12100
12101    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12102
12103    3) If the hash table entry at index H matches the signature, use that
12104       entry.  If the hash table entry at index H is unused (all zeroes),
12105       terminate the search: the signature is not present in the table.
12106
12107    4) Let H = (H + H') modulo M. Repeat at Step 3.
12108
12109    Because M > N and H' and M are relatively prime, the search is guaranteed
12110    to stop at an unused slot or find the match.  */
12111
12112 /* Create a hash table to map DWO IDs to their CU/TU entry in
12113    .debug_{info,types}.dwo in DWP_FILE.
12114    Returns NULL if there isn't one.
12115    Note: This function processes DWP files only, not DWO files.  */
12116
12117 static struct dwp_hash_table *
12118 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12119                        struct dwp_file *dwp_file, int is_debug_types)
12120 {
12121   struct objfile *objfile = dwarf2_per_objfile->objfile;
12122   bfd *dbfd = dwp_file->dbfd.get ();
12123   const gdb_byte *index_ptr, *index_end;
12124   struct dwarf2_section_info *index;
12125   uint32_t version, nr_columns, nr_units, nr_slots;
12126   struct dwp_hash_table *htab;
12127
12128   if (is_debug_types)
12129     index = &dwp_file->sections.tu_index;
12130   else
12131     index = &dwp_file->sections.cu_index;
12132
12133   if (dwarf2_section_empty_p (index))
12134     return NULL;
12135   dwarf2_read_section (objfile, index);
12136
12137   index_ptr = index->buffer;
12138   index_end = index_ptr + index->size;
12139
12140   version = read_4_bytes (dbfd, index_ptr);
12141   index_ptr += 4;
12142   if (version == 2)
12143     nr_columns = read_4_bytes (dbfd, index_ptr);
12144   else
12145     nr_columns = 0;
12146   index_ptr += 4;
12147   nr_units = read_4_bytes (dbfd, index_ptr);
12148   index_ptr += 4;
12149   nr_slots = read_4_bytes (dbfd, index_ptr);
12150   index_ptr += 4;
12151
12152   if (version != 1 && version != 2)
12153     {
12154       error (_("Dwarf Error: unsupported DWP file version (%s)"
12155                " [in module %s]"),
12156              pulongest (version), dwp_file->name);
12157     }
12158   if (nr_slots != (nr_slots & -nr_slots))
12159     {
12160       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12161                " is not power of 2 [in module %s]"),
12162              pulongest (nr_slots), dwp_file->name);
12163     }
12164
12165   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12166   htab->version = version;
12167   htab->nr_columns = nr_columns;
12168   htab->nr_units = nr_units;
12169   htab->nr_slots = nr_slots;
12170   htab->hash_table = index_ptr;
12171   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12172
12173   /* Exit early if the table is empty.  */
12174   if (nr_slots == 0 || nr_units == 0
12175       || (version == 2 && nr_columns == 0))
12176     {
12177       /* All must be zero.  */
12178       if (nr_slots != 0 || nr_units != 0
12179           || (version == 2 && nr_columns != 0))
12180         {
12181           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12182                        " all zero [in modules %s]"),
12183                      dwp_file->name);
12184         }
12185       return htab;
12186     }
12187
12188   if (version == 1)
12189     {
12190       htab->section_pool.v1.indices =
12191         htab->unit_table + sizeof (uint32_t) * nr_slots;
12192       /* It's harder to decide whether the section is too small in v1.
12193          V1 is deprecated anyway so we punt.  */
12194     }
12195   else
12196     {
12197       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12198       int *ids = htab->section_pool.v2.section_ids;
12199       /* Reverse map for error checking.  */
12200       int ids_seen[DW_SECT_MAX + 1];
12201       int i;
12202
12203       if (nr_columns < 2)
12204         {
12205           error (_("Dwarf Error: bad DWP hash table, too few columns"
12206                    " in section table [in module %s]"),
12207                  dwp_file->name);
12208         }
12209       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12210         {
12211           error (_("Dwarf Error: bad DWP hash table, too many columns"
12212                    " in section table [in module %s]"),
12213                  dwp_file->name);
12214         }
12215       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12216       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12217       for (i = 0; i < nr_columns; ++i)
12218         {
12219           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12220
12221           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12222             {
12223               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12224                        " in section table [in module %s]"),
12225                      id, dwp_file->name);
12226             }
12227           if (ids_seen[id] != -1)
12228             {
12229               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12230                        " id %d in section table [in module %s]"),
12231                      id, dwp_file->name);
12232             }
12233           ids_seen[id] = i;
12234           ids[i] = id;
12235         }
12236       /* Must have exactly one info or types section.  */
12237       if (((ids_seen[DW_SECT_INFO] != -1)
12238            + (ids_seen[DW_SECT_TYPES] != -1))
12239           != 1)
12240         {
12241           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12242                    " DWO info/types section [in module %s]"),
12243                  dwp_file->name);
12244         }
12245       /* Must have an abbrev section.  */
12246       if (ids_seen[DW_SECT_ABBREV] == -1)
12247         {
12248           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12249                    " section [in module %s]"),
12250                  dwp_file->name);
12251         }
12252       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12253       htab->section_pool.v2.sizes =
12254         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12255                                          * nr_units * nr_columns);
12256       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12257                                           * nr_units * nr_columns))
12258           > index_end)
12259         {
12260           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12261                    " [in module %s]"),
12262                  dwp_file->name);
12263         }
12264     }
12265
12266   return htab;
12267 }
12268
12269 /* Update SECTIONS with the data from SECTP.
12270
12271    This function is like the other "locate" section routines that are
12272    passed to bfd_map_over_sections, but in this context the sections to
12273    read comes from the DWP V1 hash table, not the full ELF section table.
12274
12275    The result is non-zero for success, or zero if an error was found.  */
12276
12277 static int
12278 locate_v1_virtual_dwo_sections (asection *sectp,
12279                                 struct virtual_v1_dwo_sections *sections)
12280 {
12281   const struct dwop_section_names *names = &dwop_section_names;
12282
12283   if (section_is_p (sectp->name, &names->abbrev_dwo))
12284     {
12285       /* There can be only one.  */
12286       if (sections->abbrev.s.section != NULL)
12287         return 0;
12288       sections->abbrev.s.section = sectp;
12289       sections->abbrev.size = bfd_get_section_size (sectp);
12290     }
12291   else if (section_is_p (sectp->name, &names->info_dwo)
12292            || section_is_p (sectp->name, &names->types_dwo))
12293     {
12294       /* There can be only one.  */
12295       if (sections->info_or_types.s.section != NULL)
12296         return 0;
12297       sections->info_or_types.s.section = sectp;
12298       sections->info_or_types.size = bfd_get_section_size (sectp);
12299     }
12300   else if (section_is_p (sectp->name, &names->line_dwo))
12301     {
12302       /* There can be only one.  */
12303       if (sections->line.s.section != NULL)
12304         return 0;
12305       sections->line.s.section = sectp;
12306       sections->line.size = bfd_get_section_size (sectp);
12307     }
12308   else if (section_is_p (sectp->name, &names->loc_dwo))
12309     {
12310       /* There can be only one.  */
12311       if (sections->loc.s.section != NULL)
12312         return 0;
12313       sections->loc.s.section = sectp;
12314       sections->loc.size = bfd_get_section_size (sectp);
12315     }
12316   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12317     {
12318       /* There can be only one.  */
12319       if (sections->macinfo.s.section != NULL)
12320         return 0;
12321       sections->macinfo.s.section = sectp;
12322       sections->macinfo.size = bfd_get_section_size (sectp);
12323     }
12324   else if (section_is_p (sectp->name, &names->macro_dwo))
12325     {
12326       /* There can be only one.  */
12327       if (sections->macro.s.section != NULL)
12328         return 0;
12329       sections->macro.s.section = sectp;
12330       sections->macro.size = bfd_get_section_size (sectp);
12331     }
12332   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12333     {
12334       /* There can be only one.  */
12335       if (sections->str_offsets.s.section != NULL)
12336         return 0;
12337       sections->str_offsets.s.section = sectp;
12338       sections->str_offsets.size = bfd_get_section_size (sectp);
12339     }
12340   else
12341     {
12342       /* No other kind of section is valid.  */
12343       return 0;
12344     }
12345
12346   return 1;
12347 }
12348
12349 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12350    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12351    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12352    This is for DWP version 1 files.  */
12353
12354 static struct dwo_unit *
12355 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12356                            struct dwp_file *dwp_file,
12357                            uint32_t unit_index,
12358                            const char *comp_dir,
12359                            ULONGEST signature, int is_debug_types)
12360 {
12361   struct objfile *objfile = dwarf2_per_objfile->objfile;
12362   const struct dwp_hash_table *dwp_htab =
12363     is_debug_types ? dwp_file->tus : dwp_file->cus;
12364   bfd *dbfd = dwp_file->dbfd.get ();
12365   const char *kind = is_debug_types ? "TU" : "CU";
12366   struct dwo_file *dwo_file;
12367   struct dwo_unit *dwo_unit;
12368   struct virtual_v1_dwo_sections sections;
12369   void **dwo_file_slot;
12370   int i;
12371
12372   gdb_assert (dwp_file->version == 1);
12373
12374   if (dwarf_read_debug)
12375     {
12376       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12377                           kind,
12378                           pulongest (unit_index), hex_string (signature),
12379                           dwp_file->name);
12380     }
12381
12382   /* Fetch the sections of this DWO unit.
12383      Put a limit on the number of sections we look for so that bad data
12384      doesn't cause us to loop forever.  */
12385
12386 #define MAX_NR_V1_DWO_SECTIONS \
12387   (1 /* .debug_info or .debug_types */ \
12388    + 1 /* .debug_abbrev */ \
12389    + 1 /* .debug_line */ \
12390    + 1 /* .debug_loc */ \
12391    + 1 /* .debug_str_offsets */ \
12392    + 1 /* .debug_macro or .debug_macinfo */ \
12393    + 1 /* trailing zero */)
12394
12395   memset (&sections, 0, sizeof (sections));
12396
12397   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12398     {
12399       asection *sectp;
12400       uint32_t section_nr =
12401         read_4_bytes (dbfd,
12402                       dwp_htab->section_pool.v1.indices
12403                       + (unit_index + i) * sizeof (uint32_t));
12404
12405       if (section_nr == 0)
12406         break;
12407       if (section_nr >= dwp_file->num_sections)
12408         {
12409           error (_("Dwarf Error: bad DWP hash table, section number too large"
12410                    " [in module %s]"),
12411                  dwp_file->name);
12412         }
12413
12414       sectp = dwp_file->elf_sections[section_nr];
12415       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12416         {
12417           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12418                    " [in module %s]"),
12419                  dwp_file->name);
12420         }
12421     }
12422
12423   if (i < 2
12424       || dwarf2_section_empty_p (&sections.info_or_types)
12425       || dwarf2_section_empty_p (&sections.abbrev))
12426     {
12427       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12428                " [in module %s]"),
12429              dwp_file->name);
12430     }
12431   if (i == MAX_NR_V1_DWO_SECTIONS)
12432     {
12433       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12434                " [in module %s]"),
12435              dwp_file->name);
12436     }
12437
12438   /* It's easier for the rest of the code if we fake a struct dwo_file and
12439      have dwo_unit "live" in that.  At least for now.
12440
12441      The DWP file can be made up of a random collection of CUs and TUs.
12442      However, for each CU + set of TUs that came from the same original DWO
12443      file, we can combine them back into a virtual DWO file to save space
12444      (fewer struct dwo_file objects to allocate).  Remember that for really
12445      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12446
12447   std::string virtual_dwo_name =
12448     string_printf ("virtual-dwo/%d-%d-%d-%d",
12449                    get_section_id (&sections.abbrev),
12450                    get_section_id (&sections.line),
12451                    get_section_id (&sections.loc),
12452                    get_section_id (&sections.str_offsets));
12453   /* Can we use an existing virtual DWO file?  */
12454   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12455                                         virtual_dwo_name.c_str (),
12456                                         comp_dir);
12457   /* Create one if necessary.  */
12458   if (*dwo_file_slot == NULL)
12459     {
12460       if (dwarf_read_debug)
12461         {
12462           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12463                               virtual_dwo_name.c_str ());
12464         }
12465       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12466       dwo_file->dwo_name
12467         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12468                                         virtual_dwo_name.c_str (),
12469                                         virtual_dwo_name.size ());
12470       dwo_file->comp_dir = comp_dir;
12471       dwo_file->sections.abbrev = sections.abbrev;
12472       dwo_file->sections.line = sections.line;
12473       dwo_file->sections.loc = sections.loc;
12474       dwo_file->sections.macinfo = sections.macinfo;
12475       dwo_file->sections.macro = sections.macro;
12476       dwo_file->sections.str_offsets = sections.str_offsets;
12477       /* The "str" section is global to the entire DWP file.  */
12478       dwo_file->sections.str = dwp_file->sections.str;
12479       /* The info or types section is assigned below to dwo_unit,
12480          there's no need to record it in dwo_file.
12481          Also, we can't simply record type sections in dwo_file because
12482          we record a pointer into the vector in dwo_unit.  As we collect more
12483          types we'll grow the vector and eventually have to reallocate space
12484          for it, invalidating all copies of pointers into the previous
12485          contents.  */
12486       *dwo_file_slot = dwo_file;
12487     }
12488   else
12489     {
12490       if (dwarf_read_debug)
12491         {
12492           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12493                               virtual_dwo_name.c_str ());
12494         }
12495       dwo_file = (struct dwo_file *) *dwo_file_slot;
12496     }
12497
12498   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12499   dwo_unit->dwo_file = dwo_file;
12500   dwo_unit->signature = signature;
12501   dwo_unit->section =
12502     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12503   *dwo_unit->section = sections.info_or_types;
12504   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12505
12506   return dwo_unit;
12507 }
12508
12509 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12510    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12511    piece within that section used by a TU/CU, return a virtual section
12512    of just that piece.  */
12513
12514 static struct dwarf2_section_info
12515 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12516                        struct dwarf2_section_info *section,
12517                        bfd_size_type offset, bfd_size_type size)
12518 {
12519   struct dwarf2_section_info result;
12520   asection *sectp;
12521
12522   gdb_assert (section != NULL);
12523   gdb_assert (!section->is_virtual);
12524
12525   memset (&result, 0, sizeof (result));
12526   result.s.containing_section = section;
12527   result.is_virtual = 1;
12528
12529   if (size == 0)
12530     return result;
12531
12532   sectp = get_section_bfd_section (section);
12533
12534   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12535      bounds of the real section.  This is a pretty-rare event, so just
12536      flag an error (easier) instead of a warning and trying to cope.  */
12537   if (sectp == NULL
12538       || offset + size > bfd_get_section_size (sectp))
12539     {
12540       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12541                " in section %s [in module %s]"),
12542              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12543              objfile_name (dwarf2_per_objfile->objfile));
12544     }
12545
12546   result.virtual_offset = offset;
12547   result.size = size;
12548   return result;
12549 }
12550
12551 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12552    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12553    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12554    This is for DWP version 2 files.  */
12555
12556 static struct dwo_unit *
12557 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12558                            struct dwp_file *dwp_file,
12559                            uint32_t unit_index,
12560                            const char *comp_dir,
12561                            ULONGEST signature, int is_debug_types)
12562 {
12563   struct objfile *objfile = dwarf2_per_objfile->objfile;
12564   const struct dwp_hash_table *dwp_htab =
12565     is_debug_types ? dwp_file->tus : dwp_file->cus;
12566   bfd *dbfd = dwp_file->dbfd.get ();
12567   const char *kind = is_debug_types ? "TU" : "CU";
12568   struct dwo_file *dwo_file;
12569   struct dwo_unit *dwo_unit;
12570   struct virtual_v2_dwo_sections sections;
12571   void **dwo_file_slot;
12572   int i;
12573
12574   gdb_assert (dwp_file->version == 2);
12575
12576   if (dwarf_read_debug)
12577     {
12578       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12579                           kind,
12580                           pulongest (unit_index), hex_string (signature),
12581                           dwp_file->name);
12582     }
12583
12584   /* Fetch the section offsets of this DWO unit.  */
12585
12586   memset (&sections, 0, sizeof (sections));
12587
12588   for (i = 0; i < dwp_htab->nr_columns; ++i)
12589     {
12590       uint32_t offset = read_4_bytes (dbfd,
12591                                       dwp_htab->section_pool.v2.offsets
12592                                       + (((unit_index - 1) * dwp_htab->nr_columns
12593                                           + i)
12594                                          * sizeof (uint32_t)));
12595       uint32_t size = read_4_bytes (dbfd,
12596                                     dwp_htab->section_pool.v2.sizes
12597                                     + (((unit_index - 1) * dwp_htab->nr_columns
12598                                         + i)
12599                                        * sizeof (uint32_t)));
12600
12601       switch (dwp_htab->section_pool.v2.section_ids[i])
12602         {
12603         case DW_SECT_INFO:
12604         case DW_SECT_TYPES:
12605           sections.info_or_types_offset = offset;
12606           sections.info_or_types_size = size;
12607           break;
12608         case DW_SECT_ABBREV:
12609           sections.abbrev_offset = offset;
12610           sections.abbrev_size = size;
12611           break;
12612         case DW_SECT_LINE:
12613           sections.line_offset = offset;
12614           sections.line_size = size;
12615           break;
12616         case DW_SECT_LOC:
12617           sections.loc_offset = offset;
12618           sections.loc_size = size;
12619           break;
12620         case DW_SECT_STR_OFFSETS:
12621           sections.str_offsets_offset = offset;
12622           sections.str_offsets_size = size;
12623           break;
12624         case DW_SECT_MACINFO:
12625           sections.macinfo_offset = offset;
12626           sections.macinfo_size = size;
12627           break;
12628         case DW_SECT_MACRO:
12629           sections.macro_offset = offset;
12630           sections.macro_size = size;
12631           break;
12632         }
12633     }
12634
12635   /* It's easier for the rest of the code if we fake a struct dwo_file and
12636      have dwo_unit "live" in that.  At least for now.
12637
12638      The DWP file can be made up of a random collection of CUs and TUs.
12639      However, for each CU + set of TUs that came from the same original DWO
12640      file, we can combine them back into a virtual DWO file to save space
12641      (fewer struct dwo_file objects to allocate).  Remember that for really
12642      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12643
12644   std::string virtual_dwo_name =
12645     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12646                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12647                    (long) (sections.line_size ? sections.line_offset : 0),
12648                    (long) (sections.loc_size ? sections.loc_offset : 0),
12649                    (long) (sections.str_offsets_size
12650                            ? sections.str_offsets_offset : 0));
12651   /* Can we use an existing virtual DWO file?  */
12652   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12653                                         virtual_dwo_name.c_str (),
12654                                         comp_dir);
12655   /* Create one if necessary.  */
12656   if (*dwo_file_slot == NULL)
12657     {
12658       if (dwarf_read_debug)
12659         {
12660           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12661                               virtual_dwo_name.c_str ());
12662         }
12663       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12664       dwo_file->dwo_name
12665         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12666                                         virtual_dwo_name.c_str (),
12667                                         virtual_dwo_name.size ());
12668       dwo_file->comp_dir = comp_dir;
12669       dwo_file->sections.abbrev =
12670         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12671                                sections.abbrev_offset, sections.abbrev_size);
12672       dwo_file->sections.line =
12673         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12674                                sections.line_offset, sections.line_size);
12675       dwo_file->sections.loc =
12676         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12677                                sections.loc_offset, sections.loc_size);
12678       dwo_file->sections.macinfo =
12679         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12680                                sections.macinfo_offset, sections.macinfo_size);
12681       dwo_file->sections.macro =
12682         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12683                                sections.macro_offset, sections.macro_size);
12684       dwo_file->sections.str_offsets =
12685         create_dwp_v2_section (dwarf2_per_objfile,
12686                                &dwp_file->sections.str_offsets,
12687                                sections.str_offsets_offset,
12688                                sections.str_offsets_size);
12689       /* The "str" section is global to the entire DWP file.  */
12690       dwo_file->sections.str = dwp_file->sections.str;
12691       /* The info or types section is assigned below to dwo_unit,
12692          there's no need to record it in dwo_file.
12693          Also, we can't simply record type sections in dwo_file because
12694          we record a pointer into the vector in dwo_unit.  As we collect more
12695          types we'll grow the vector and eventually have to reallocate space
12696          for it, invalidating all copies of pointers into the previous
12697          contents.  */
12698       *dwo_file_slot = dwo_file;
12699     }
12700   else
12701     {
12702       if (dwarf_read_debug)
12703         {
12704           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12705                               virtual_dwo_name.c_str ());
12706         }
12707       dwo_file = (struct dwo_file *) *dwo_file_slot;
12708     }
12709
12710   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12711   dwo_unit->dwo_file = dwo_file;
12712   dwo_unit->signature = signature;
12713   dwo_unit->section =
12714     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12715   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12716                                               is_debug_types
12717                                               ? &dwp_file->sections.types
12718                                               : &dwp_file->sections.info,
12719                                               sections.info_or_types_offset,
12720                                               sections.info_or_types_size);
12721   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12722
12723   return dwo_unit;
12724 }
12725
12726 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12727    Returns NULL if the signature isn't found.  */
12728
12729 static struct dwo_unit *
12730 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12731                         struct dwp_file *dwp_file, const char *comp_dir,
12732                         ULONGEST signature, int is_debug_types)
12733 {
12734   const struct dwp_hash_table *dwp_htab =
12735     is_debug_types ? dwp_file->tus : dwp_file->cus;
12736   bfd *dbfd = dwp_file->dbfd.get ();
12737   uint32_t mask = dwp_htab->nr_slots - 1;
12738   uint32_t hash = signature & mask;
12739   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12740   unsigned int i;
12741   void **slot;
12742   struct dwo_unit find_dwo_cu;
12743
12744   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12745   find_dwo_cu.signature = signature;
12746   slot = htab_find_slot (is_debug_types
12747                          ? dwp_file->loaded_tus
12748                          : dwp_file->loaded_cus,
12749                          &find_dwo_cu, INSERT);
12750
12751   if (*slot != NULL)
12752     return (struct dwo_unit *) *slot;
12753
12754   /* Use a for loop so that we don't loop forever on bad debug info.  */
12755   for (i = 0; i < dwp_htab->nr_slots; ++i)
12756     {
12757       ULONGEST signature_in_table;
12758
12759       signature_in_table =
12760         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12761       if (signature_in_table == signature)
12762         {
12763           uint32_t unit_index =
12764             read_4_bytes (dbfd,
12765                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12766
12767           if (dwp_file->version == 1)
12768             {
12769               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12770                                                  dwp_file, unit_index,
12771                                                  comp_dir, signature,
12772                                                  is_debug_types);
12773             }
12774           else
12775             {
12776               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12777                                                  dwp_file, unit_index,
12778                                                  comp_dir, signature,
12779                                                  is_debug_types);
12780             }
12781           return (struct dwo_unit *) *slot;
12782         }
12783       if (signature_in_table == 0)
12784         return NULL;
12785       hash = (hash + hash2) & mask;
12786     }
12787
12788   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12789            " [in module %s]"),
12790          dwp_file->name);
12791 }
12792
12793 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12794    Open the file specified by FILE_NAME and hand it off to BFD for
12795    preliminary analysis.  Return a newly initialized bfd *, which
12796    includes a canonicalized copy of FILE_NAME.
12797    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12798    SEARCH_CWD is true if the current directory is to be searched.
12799    It will be searched before debug-file-directory.
12800    If successful, the file is added to the bfd include table of the
12801    objfile's bfd (see gdb_bfd_record_inclusion).
12802    If unable to find/open the file, return NULL.
12803    NOTE: This function is derived from symfile_bfd_open.  */
12804
12805 static gdb_bfd_ref_ptr
12806 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12807                     const char *file_name, int is_dwp, int search_cwd)
12808 {
12809   int desc;
12810   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12811      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12812      to debug_file_directory.  */
12813   const char *search_path;
12814   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12815
12816   gdb::unique_xmalloc_ptr<char> search_path_holder;
12817   if (search_cwd)
12818     {
12819       if (*debug_file_directory != '\0')
12820         {
12821           search_path_holder.reset (concat (".", dirname_separator_string,
12822                                             debug_file_directory,
12823                                             (char *) NULL));
12824           search_path = search_path_holder.get ();
12825         }
12826       else
12827         search_path = ".";
12828     }
12829   else
12830     search_path = debug_file_directory;
12831
12832   openp_flags flags = OPF_RETURN_REALPATH;
12833   if (is_dwp)
12834     flags |= OPF_SEARCH_IN_PATH;
12835
12836   gdb::unique_xmalloc_ptr<char> absolute_name;
12837   desc = openp (search_path, flags, file_name,
12838                 O_RDONLY | O_BINARY, &absolute_name);
12839   if (desc < 0)
12840     return NULL;
12841
12842   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12843                                          gnutarget, desc));
12844   if (sym_bfd == NULL)
12845     return NULL;
12846   bfd_set_cacheable (sym_bfd.get (), 1);
12847
12848   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12849     return NULL;
12850
12851   /* Success.  Record the bfd as having been included by the objfile's bfd.
12852      This is important because things like demangled_names_hash lives in the
12853      objfile's per_bfd space and may have references to things like symbol
12854      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12855   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12856
12857   return sym_bfd;
12858 }
12859
12860 /* Try to open DWO file FILE_NAME.
12861    COMP_DIR is the DW_AT_comp_dir attribute.
12862    The result is the bfd handle of the file.
12863    If there is a problem finding or opening the file, return NULL.
12864    Upon success, the canonicalized path of the file is stored in the bfd,
12865    same as symfile_bfd_open.  */
12866
12867 static gdb_bfd_ref_ptr
12868 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12869                const char *file_name, const char *comp_dir)
12870 {
12871   if (IS_ABSOLUTE_PATH (file_name))
12872     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12873                                0 /*is_dwp*/, 0 /*search_cwd*/);
12874
12875   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12876
12877   if (comp_dir != NULL)
12878     {
12879       char *path_to_try = concat (comp_dir, SLASH_STRING,
12880                                   file_name, (char *) NULL);
12881
12882       /* NOTE: If comp_dir is a relative path, this will also try the
12883          search path, which seems useful.  */
12884       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12885                                                 path_to_try,
12886                                                 0 /*is_dwp*/,
12887                                                 1 /*search_cwd*/));
12888       xfree (path_to_try);
12889       if (abfd != NULL)
12890         return abfd;
12891     }
12892
12893   /* That didn't work, try debug-file-directory, which, despite its name,
12894      is a list of paths.  */
12895
12896   if (*debug_file_directory == '\0')
12897     return NULL;
12898
12899   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12900                              0 /*is_dwp*/, 1 /*search_cwd*/);
12901 }
12902
12903 /* This function is mapped across the sections and remembers the offset and
12904    size of each of the DWO debugging sections we are interested in.  */
12905
12906 static void
12907 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12908 {
12909   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12910   const struct dwop_section_names *names = &dwop_section_names;
12911
12912   if (section_is_p (sectp->name, &names->abbrev_dwo))
12913     {
12914       dwo_sections->abbrev.s.section = sectp;
12915       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12916     }
12917   else if (section_is_p (sectp->name, &names->info_dwo))
12918     {
12919       dwo_sections->info.s.section = sectp;
12920       dwo_sections->info.size = bfd_get_section_size (sectp);
12921     }
12922   else if (section_is_p (sectp->name, &names->line_dwo))
12923     {
12924       dwo_sections->line.s.section = sectp;
12925       dwo_sections->line.size = bfd_get_section_size (sectp);
12926     }
12927   else if (section_is_p (sectp->name, &names->loc_dwo))
12928     {
12929       dwo_sections->loc.s.section = sectp;
12930       dwo_sections->loc.size = bfd_get_section_size (sectp);
12931     }
12932   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12933     {
12934       dwo_sections->macinfo.s.section = sectp;
12935       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12936     }
12937   else if (section_is_p (sectp->name, &names->macro_dwo))
12938     {
12939       dwo_sections->macro.s.section = sectp;
12940       dwo_sections->macro.size = bfd_get_section_size (sectp);
12941     }
12942   else if (section_is_p (sectp->name, &names->str_dwo))
12943     {
12944       dwo_sections->str.s.section = sectp;
12945       dwo_sections->str.size = bfd_get_section_size (sectp);
12946     }
12947   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12948     {
12949       dwo_sections->str_offsets.s.section = sectp;
12950       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12951     }
12952   else if (section_is_p (sectp->name, &names->types_dwo))
12953     {
12954       struct dwarf2_section_info type_section;
12955
12956       memset (&type_section, 0, sizeof (type_section));
12957       type_section.s.section = sectp;
12958       type_section.size = bfd_get_section_size (sectp);
12959       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12960                      &type_section);
12961     }
12962 }
12963
12964 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12965    by PER_CU.  This is for the non-DWP case.
12966    The result is NULL if DWO_NAME can't be found.  */
12967
12968 static struct dwo_file *
12969 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12970                         const char *dwo_name, const char *comp_dir)
12971 {
12972   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12973   struct objfile *objfile = dwarf2_per_objfile->objfile;
12974
12975   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12976   if (dbfd == NULL)
12977     {
12978       if (dwarf_read_debug)
12979         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12980       return NULL;
12981     }
12982
12983   /* We use a unique pointer here, despite the obstack allocation,
12984      because a dwo_file needs some cleanup if it is abandoned.  */
12985   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12986                                         struct dwo_file));
12987   dwo_file->dwo_name = dwo_name;
12988   dwo_file->comp_dir = comp_dir;
12989   dwo_file->dbfd = dbfd.release ();
12990
12991   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12992                          &dwo_file->sections);
12993
12994   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12995                          dwo_file->cus);
12996
12997   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12998                                  dwo_file->sections.types, dwo_file->tus);
12999
13000   if (dwarf_read_debug)
13001     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13002
13003   return dwo_file.release ();
13004 }
13005
13006 /* This function is mapped across the sections and remembers the offset and
13007    size of each of the DWP debugging sections common to version 1 and 2 that
13008    we are interested in.  */
13009
13010 static void
13011 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13012                                    void *dwp_file_ptr)
13013 {
13014   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13015   const struct dwop_section_names *names = &dwop_section_names;
13016   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13017
13018   /* Record the ELF section number for later lookup: this is what the
13019      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13020   gdb_assert (elf_section_nr < dwp_file->num_sections);
13021   dwp_file->elf_sections[elf_section_nr] = sectp;
13022
13023   /* Look for specific sections that we need.  */
13024   if (section_is_p (sectp->name, &names->str_dwo))
13025     {
13026       dwp_file->sections.str.s.section = sectp;
13027       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13028     }
13029   else if (section_is_p (sectp->name, &names->cu_index))
13030     {
13031       dwp_file->sections.cu_index.s.section = sectp;
13032       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13033     }
13034   else if (section_is_p (sectp->name, &names->tu_index))
13035     {
13036       dwp_file->sections.tu_index.s.section = sectp;
13037       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13038     }
13039 }
13040
13041 /* This function is mapped across the sections and remembers the offset and
13042    size of each of the DWP version 2 debugging sections that we are interested
13043    in.  This is split into a separate function because we don't know if we
13044    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13045
13046 static void
13047 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13048 {
13049   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13050   const struct dwop_section_names *names = &dwop_section_names;
13051   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13052
13053   /* Record the ELF section number for later lookup: this is what the
13054      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13055   gdb_assert (elf_section_nr < dwp_file->num_sections);
13056   dwp_file->elf_sections[elf_section_nr] = sectp;
13057
13058   /* Look for specific sections that we need.  */
13059   if (section_is_p (sectp->name, &names->abbrev_dwo))
13060     {
13061       dwp_file->sections.abbrev.s.section = sectp;
13062       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13063     }
13064   else if (section_is_p (sectp->name, &names->info_dwo))
13065     {
13066       dwp_file->sections.info.s.section = sectp;
13067       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13068     }
13069   else if (section_is_p (sectp->name, &names->line_dwo))
13070     {
13071       dwp_file->sections.line.s.section = sectp;
13072       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13073     }
13074   else if (section_is_p (sectp->name, &names->loc_dwo))
13075     {
13076       dwp_file->sections.loc.s.section = sectp;
13077       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13078     }
13079   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13080     {
13081       dwp_file->sections.macinfo.s.section = sectp;
13082       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13083     }
13084   else if (section_is_p (sectp->name, &names->macro_dwo))
13085     {
13086       dwp_file->sections.macro.s.section = sectp;
13087       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13088     }
13089   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13090     {
13091       dwp_file->sections.str_offsets.s.section = sectp;
13092       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13093     }
13094   else if (section_is_p (sectp->name, &names->types_dwo))
13095     {
13096       dwp_file->sections.types.s.section = sectp;
13097       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13098     }
13099 }
13100
13101 /* Hash function for dwp_file loaded CUs/TUs.  */
13102
13103 static hashval_t
13104 hash_dwp_loaded_cutus (const void *item)
13105 {
13106   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13107
13108   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13109   return dwo_unit->signature;
13110 }
13111
13112 /* Equality function for dwp_file loaded CUs/TUs.  */
13113
13114 static int
13115 eq_dwp_loaded_cutus (const void *a, const void *b)
13116 {
13117   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13118   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13119
13120   return dua->signature == dub->signature;
13121 }
13122
13123 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13124
13125 static htab_t
13126 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13127 {
13128   return htab_create_alloc_ex (3,
13129                                hash_dwp_loaded_cutus,
13130                                eq_dwp_loaded_cutus,
13131                                NULL,
13132                                &objfile->objfile_obstack,
13133                                hashtab_obstack_allocate,
13134                                dummy_obstack_deallocate);
13135 }
13136
13137 /* Try to open DWP file FILE_NAME.
13138    The result is the bfd handle of the file.
13139    If there is a problem finding or opening the file, return NULL.
13140    Upon success, the canonicalized path of the file is stored in the bfd,
13141    same as symfile_bfd_open.  */
13142
13143 static gdb_bfd_ref_ptr
13144 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13145                const char *file_name)
13146 {
13147   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13148                                             1 /*is_dwp*/,
13149                                             1 /*search_cwd*/));
13150   if (abfd != NULL)
13151     return abfd;
13152
13153   /* Work around upstream bug 15652.
13154      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13155      [Whether that's a "bug" is debatable, but it is getting in our way.]
13156      We have no real idea where the dwp file is, because gdb's realpath-ing
13157      of the executable's path may have discarded the needed info.
13158      [IWBN if the dwp file name was recorded in the executable, akin to
13159      .gnu_debuglink, but that doesn't exist yet.]
13160      Strip the directory from FILE_NAME and search again.  */
13161   if (*debug_file_directory != '\0')
13162     {
13163       /* Don't implicitly search the current directory here.
13164          If the user wants to search "." to handle this case,
13165          it must be added to debug-file-directory.  */
13166       return try_open_dwop_file (dwarf2_per_objfile,
13167                                  lbasename (file_name), 1 /*is_dwp*/,
13168                                  0 /*search_cwd*/);
13169     }
13170
13171   return NULL;
13172 }
13173
13174 /* Initialize the use of the DWP file for the current objfile.
13175    By convention the name of the DWP file is ${objfile}.dwp.
13176    The result is NULL if it can't be found.  */
13177
13178 static std::unique_ptr<struct dwp_file>
13179 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13180 {
13181   struct objfile *objfile = dwarf2_per_objfile->objfile;
13182
13183   /* Try to find first .dwp for the binary file before any symbolic links
13184      resolving.  */
13185
13186   /* If the objfile is a debug file, find the name of the real binary
13187      file and get the name of dwp file from there.  */
13188   std::string dwp_name;
13189   if (objfile->separate_debug_objfile_backlink != NULL)
13190     {
13191       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13192       const char *backlink_basename = lbasename (backlink->original_name);
13193
13194       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13195     }
13196   else
13197     dwp_name = objfile->original_name;
13198
13199   dwp_name += ".dwp";
13200
13201   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13202   if (dbfd == NULL
13203       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13204     {
13205       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13206       dwp_name = objfile_name (objfile);
13207       dwp_name += ".dwp";
13208       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13209     }
13210
13211   if (dbfd == NULL)
13212     {
13213       if (dwarf_read_debug)
13214         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13215       return std::unique_ptr<dwp_file> ();
13216     }
13217
13218   const char *name = bfd_get_filename (dbfd.get ());
13219   std::unique_ptr<struct dwp_file> dwp_file
13220     (new struct dwp_file (name, std::move (dbfd)));
13221
13222   /* +1: section 0 is unused */
13223   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13224   dwp_file->elf_sections =
13225     OBSTACK_CALLOC (&objfile->objfile_obstack,
13226                     dwp_file->num_sections, asection *);
13227
13228   bfd_map_over_sections (dwp_file->dbfd.get (),
13229                          dwarf2_locate_common_dwp_sections,
13230                          dwp_file.get ());
13231
13232   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13233                                          0);
13234
13235   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13236                                          1);
13237
13238   /* The DWP file version is stored in the hash table.  Oh well.  */
13239   if (dwp_file->cus && dwp_file->tus
13240       && dwp_file->cus->version != dwp_file->tus->version)
13241     {
13242       /* Technically speaking, we should try to limp along, but this is
13243          pretty bizarre.  We use pulongest here because that's the established
13244          portability solution (e.g, we cannot use %u for uint32_t).  */
13245       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13246                " TU version %s [in DWP file %s]"),
13247              pulongest (dwp_file->cus->version),
13248              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13249     }
13250
13251   if (dwp_file->cus)
13252     dwp_file->version = dwp_file->cus->version;
13253   else if (dwp_file->tus)
13254     dwp_file->version = dwp_file->tus->version;
13255   else
13256     dwp_file->version = 2;
13257
13258   if (dwp_file->version == 2)
13259     bfd_map_over_sections (dwp_file->dbfd.get (),
13260                            dwarf2_locate_v2_dwp_sections,
13261                            dwp_file.get ());
13262
13263   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13264   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13265
13266   if (dwarf_read_debug)
13267     {
13268       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13269       fprintf_unfiltered (gdb_stdlog,
13270                           "    %s CUs, %s TUs\n",
13271                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13272                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13273     }
13274
13275   return dwp_file;
13276 }
13277
13278 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13279
13280 static struct dwp_file *
13281 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13282 {
13283   if (! dwarf2_per_objfile->dwp_checked)
13284     {
13285       dwarf2_per_objfile->dwp_file
13286         = open_and_init_dwp_file (dwarf2_per_objfile);
13287       dwarf2_per_objfile->dwp_checked = 1;
13288     }
13289   return dwarf2_per_objfile->dwp_file.get ();
13290 }
13291
13292 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13293    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13294    or in the DWP file for the objfile, referenced by THIS_UNIT.
13295    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13296    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13297
13298    This is called, for example, when wanting to read a variable with a
13299    complex location.  Therefore we don't want to do file i/o for every call.
13300    Therefore we don't want to look for a DWO file on every call.
13301    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13302    then we check if we've already seen DWO_NAME, and only THEN do we check
13303    for a DWO file.
13304
13305    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13306    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13307
13308 static struct dwo_unit *
13309 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13310                  const char *dwo_name, const char *comp_dir,
13311                  ULONGEST signature, int is_debug_types)
13312 {
13313   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13314   struct objfile *objfile = dwarf2_per_objfile->objfile;
13315   const char *kind = is_debug_types ? "TU" : "CU";
13316   void **dwo_file_slot;
13317   struct dwo_file *dwo_file;
13318   struct dwp_file *dwp_file;
13319
13320   /* First see if there's a DWP file.
13321      If we have a DWP file but didn't find the DWO inside it, don't
13322      look for the original DWO file.  It makes gdb behave differently
13323      depending on whether one is debugging in the build tree.  */
13324
13325   dwp_file = get_dwp_file (dwarf2_per_objfile);
13326   if (dwp_file != NULL)
13327     {
13328       const struct dwp_hash_table *dwp_htab =
13329         is_debug_types ? dwp_file->tus : dwp_file->cus;
13330
13331       if (dwp_htab != NULL)
13332         {
13333           struct dwo_unit *dwo_cutu =
13334             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13335                                     signature, is_debug_types);
13336
13337           if (dwo_cutu != NULL)
13338             {
13339               if (dwarf_read_debug)
13340                 {
13341                   fprintf_unfiltered (gdb_stdlog,
13342                                       "Virtual DWO %s %s found: @%s\n",
13343                                       kind, hex_string (signature),
13344                                       host_address_to_string (dwo_cutu));
13345                 }
13346               return dwo_cutu;
13347             }
13348         }
13349     }
13350   else
13351     {
13352       /* No DWP file, look for the DWO file.  */
13353
13354       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13355                                             dwo_name, comp_dir);
13356       if (*dwo_file_slot == NULL)
13357         {
13358           /* Read in the file and build a table of the CUs/TUs it contains.  */
13359           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13360         }
13361       /* NOTE: This will be NULL if unable to open the file.  */
13362       dwo_file = (struct dwo_file *) *dwo_file_slot;
13363
13364       if (dwo_file != NULL)
13365         {
13366           struct dwo_unit *dwo_cutu = NULL;
13367
13368           if (is_debug_types && dwo_file->tus)
13369             {
13370               struct dwo_unit find_dwo_cutu;
13371
13372               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13373               find_dwo_cutu.signature = signature;
13374               dwo_cutu
13375                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13376             }
13377           else if (!is_debug_types && dwo_file->cus)
13378             {
13379               struct dwo_unit find_dwo_cutu;
13380
13381               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13382               find_dwo_cutu.signature = signature;
13383               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13384                                                        &find_dwo_cutu);
13385             }
13386
13387           if (dwo_cutu != NULL)
13388             {
13389               if (dwarf_read_debug)
13390                 {
13391                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13392                                       kind, dwo_name, hex_string (signature),
13393                                       host_address_to_string (dwo_cutu));
13394                 }
13395               return dwo_cutu;
13396             }
13397         }
13398     }
13399
13400   /* We didn't find it.  This could mean a dwo_id mismatch, or
13401      someone deleted the DWO/DWP file, or the search path isn't set up
13402      correctly to find the file.  */
13403
13404   if (dwarf_read_debug)
13405     {
13406       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13407                           kind, dwo_name, hex_string (signature));
13408     }
13409
13410   /* This is a warning and not a complaint because it can be caused by
13411      pilot error (e.g., user accidentally deleting the DWO).  */
13412   {
13413     /* Print the name of the DWP file if we looked there, helps the user
13414        better diagnose the problem.  */
13415     std::string dwp_text;
13416
13417     if (dwp_file != NULL)
13418       dwp_text = string_printf (" [in DWP file %s]",
13419                                 lbasename (dwp_file->name));
13420
13421     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13422                " [in module %s]"),
13423              kind, dwo_name, hex_string (signature),
13424              dwp_text.c_str (),
13425              this_unit->is_debug_types ? "TU" : "CU",
13426              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13427   }
13428   return NULL;
13429 }
13430
13431 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13432    See lookup_dwo_cutu_unit for details.  */
13433
13434 static struct dwo_unit *
13435 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13436                       const char *dwo_name, const char *comp_dir,
13437                       ULONGEST signature)
13438 {
13439   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13440 }
13441
13442 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13443    See lookup_dwo_cutu_unit for details.  */
13444
13445 static struct dwo_unit *
13446 lookup_dwo_type_unit (struct signatured_type *this_tu,
13447                       const char *dwo_name, const char *comp_dir)
13448 {
13449   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13450 }
13451
13452 /* Traversal function for queue_and_load_all_dwo_tus.  */
13453
13454 static int
13455 queue_and_load_dwo_tu (void **slot, void *info)
13456 {
13457   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13458   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13459   ULONGEST signature = dwo_unit->signature;
13460   struct signatured_type *sig_type =
13461     lookup_dwo_signatured_type (per_cu->cu, signature);
13462
13463   if (sig_type != NULL)
13464     {
13465       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13466
13467       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13468          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13469          while processing PER_CU.  */
13470       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13471         load_full_type_unit (sig_cu);
13472       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13473     }
13474
13475   return 1;
13476 }
13477
13478 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13479    The DWO may have the only definition of the type, though it may not be
13480    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13481    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13482
13483 static void
13484 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13485 {
13486   struct dwo_unit *dwo_unit;
13487   struct dwo_file *dwo_file;
13488
13489   gdb_assert (!per_cu->is_debug_types);
13490   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13491   gdb_assert (per_cu->cu != NULL);
13492
13493   dwo_unit = per_cu->cu->dwo_unit;
13494   gdb_assert (dwo_unit != NULL);
13495
13496   dwo_file = dwo_unit->dwo_file;
13497   if (dwo_file->tus != NULL)
13498     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13499 }
13500
13501 /* Free all resources associated with DWO_FILE.
13502    Close the DWO file and munmap the sections.  */
13503
13504 static void
13505 free_dwo_file (struct dwo_file *dwo_file)
13506 {
13507   /* Note: dbfd is NULL for virtual DWO files.  */
13508   gdb_bfd_unref (dwo_file->dbfd);
13509
13510   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13511 }
13512
13513 /* Traversal function for free_dwo_files.  */
13514
13515 static int
13516 free_dwo_file_from_slot (void **slot, void *info)
13517 {
13518   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13519
13520   free_dwo_file (dwo_file);
13521
13522   return 1;
13523 }
13524
13525 /* Free all resources associated with DWO_FILES.  */
13526
13527 static void
13528 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13529 {
13530   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13531 }
13532 \f
13533 /* Read in various DIEs.  */
13534
13535 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13536    Inherit only the children of the DW_AT_abstract_origin DIE not being
13537    already referenced by DW_AT_abstract_origin from the children of the
13538    current DIE.  */
13539
13540 static void
13541 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13542 {
13543   struct die_info *child_die;
13544   sect_offset *offsetp;
13545   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13546   struct die_info *origin_die;
13547   /* Iterator of the ORIGIN_DIE children.  */
13548   struct die_info *origin_child_die;
13549   struct attribute *attr;
13550   struct dwarf2_cu *origin_cu;
13551   struct pending **origin_previous_list_in_scope;
13552
13553   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13554   if (!attr)
13555     return;
13556
13557   /* Note that following die references may follow to a die in a
13558      different cu.  */
13559
13560   origin_cu = cu;
13561   origin_die = follow_die_ref (die, attr, &origin_cu);
13562
13563   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13564      symbols in.  */
13565   origin_previous_list_in_scope = origin_cu->list_in_scope;
13566   origin_cu->list_in_scope = cu->list_in_scope;
13567
13568   if (die->tag != origin_die->tag
13569       && !(die->tag == DW_TAG_inlined_subroutine
13570            && origin_die->tag == DW_TAG_subprogram))
13571     complaint (_("DIE %s and its abstract origin %s have different tags"),
13572                sect_offset_str (die->sect_off),
13573                sect_offset_str (origin_die->sect_off));
13574
13575   std::vector<sect_offset> offsets;
13576
13577   for (child_die = die->child;
13578        child_die && child_die->tag;
13579        child_die = sibling_die (child_die))
13580     {
13581       struct die_info *child_origin_die;
13582       struct dwarf2_cu *child_origin_cu;
13583
13584       /* We are trying to process concrete instance entries:
13585          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13586          it's not relevant to our analysis here. i.e. detecting DIEs that are
13587          present in the abstract instance but not referenced in the concrete
13588          one.  */
13589       if (child_die->tag == DW_TAG_call_site
13590           || child_die->tag == DW_TAG_GNU_call_site)
13591         continue;
13592
13593       /* For each CHILD_DIE, find the corresponding child of
13594          ORIGIN_DIE.  If there is more than one layer of
13595          DW_AT_abstract_origin, follow them all; there shouldn't be,
13596          but GCC versions at least through 4.4 generate this (GCC PR
13597          40573).  */
13598       child_origin_die = child_die;
13599       child_origin_cu = cu;
13600       while (1)
13601         {
13602           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13603                               child_origin_cu);
13604           if (attr == NULL)
13605             break;
13606           child_origin_die = follow_die_ref (child_origin_die, attr,
13607                                              &child_origin_cu);
13608         }
13609
13610       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13611          counterpart may exist.  */
13612       if (child_origin_die != child_die)
13613         {
13614           if (child_die->tag != child_origin_die->tag
13615               && !(child_die->tag == DW_TAG_inlined_subroutine
13616                    && child_origin_die->tag == DW_TAG_subprogram))
13617             complaint (_("Child DIE %s and its abstract origin %s have "
13618                          "different tags"),
13619                        sect_offset_str (child_die->sect_off),
13620                        sect_offset_str (child_origin_die->sect_off));
13621           if (child_origin_die->parent != origin_die)
13622             complaint (_("Child DIE %s and its abstract origin %s have "
13623                          "different parents"),
13624                        sect_offset_str (child_die->sect_off),
13625                        sect_offset_str (child_origin_die->sect_off));
13626           else
13627             offsets.push_back (child_origin_die->sect_off);
13628         }
13629     }
13630   std::sort (offsets.begin (), offsets.end ());
13631   sect_offset *offsets_end = offsets.data () + offsets.size ();
13632   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13633     if (offsetp[-1] == *offsetp)
13634       complaint (_("Multiple children of DIE %s refer "
13635                    "to DIE %s as their abstract origin"),
13636                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13637
13638   offsetp = offsets.data ();
13639   origin_child_die = origin_die->child;
13640   while (origin_child_die && origin_child_die->tag)
13641     {
13642       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13643       while (offsetp < offsets_end
13644              && *offsetp < origin_child_die->sect_off)
13645         offsetp++;
13646       if (offsetp >= offsets_end
13647           || *offsetp > origin_child_die->sect_off)
13648         {
13649           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13650              Check whether we're already processing ORIGIN_CHILD_DIE.
13651              This can happen with mutually referenced abstract_origins.
13652              PR 16581.  */
13653           if (!origin_child_die->in_process)
13654             process_die (origin_child_die, origin_cu);
13655         }
13656       origin_child_die = sibling_die (origin_child_die);
13657     }
13658   origin_cu->list_in_scope = origin_previous_list_in_scope;
13659 }
13660
13661 static void
13662 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13663 {
13664   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13665   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13666   struct context_stack *newobj;
13667   CORE_ADDR lowpc;
13668   CORE_ADDR highpc;
13669   struct die_info *child_die;
13670   struct attribute *attr, *call_line, *call_file;
13671   const char *name;
13672   CORE_ADDR baseaddr;
13673   struct block *block;
13674   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13675   std::vector<struct symbol *> template_args;
13676   struct template_symbol *templ_func = NULL;
13677
13678   if (inlined_func)
13679     {
13680       /* If we do not have call site information, we can't show the
13681          caller of this inlined function.  That's too confusing, so
13682          only use the scope for local variables.  */
13683       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13684       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13685       if (call_line == NULL || call_file == NULL)
13686         {
13687           read_lexical_block_scope (die, cu);
13688           return;
13689         }
13690     }
13691
13692   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13693
13694   name = dwarf2_name (die, cu);
13695
13696   /* Ignore functions with missing or empty names.  These are actually
13697      illegal according to the DWARF standard.  */
13698   if (name == NULL)
13699     {
13700       complaint (_("missing name for subprogram DIE at %s"),
13701                  sect_offset_str (die->sect_off));
13702       return;
13703     }
13704
13705   /* Ignore functions with missing or invalid low and high pc attributes.  */
13706   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13707       <= PC_BOUNDS_INVALID)
13708     {
13709       attr = dwarf2_attr (die, DW_AT_external, cu);
13710       if (!attr || !DW_UNSND (attr))
13711         complaint (_("cannot get low and high bounds "
13712                      "for subprogram DIE at %s"),
13713                    sect_offset_str (die->sect_off));
13714       return;
13715     }
13716
13717   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13718   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13719
13720   /* If we have any template arguments, then we must allocate a
13721      different sort of symbol.  */
13722   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13723     {
13724       if (child_die->tag == DW_TAG_template_type_param
13725           || child_die->tag == DW_TAG_template_value_param)
13726         {
13727           templ_func = allocate_template_symbol (objfile);
13728           templ_func->subclass = SYMBOL_TEMPLATE;
13729           break;
13730         }
13731     }
13732
13733   newobj = cu->builder->push_context (0, lowpc);
13734   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13735                              (struct symbol *) templ_func);
13736
13737   /* If there is a location expression for DW_AT_frame_base, record
13738      it.  */
13739   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13740   if (attr)
13741     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13742
13743   /* If there is a location for the static link, record it.  */
13744   newobj->static_link = NULL;
13745   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13746   if (attr)
13747     {
13748       newobj->static_link
13749         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13750       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13751     }
13752
13753   cu->list_in_scope = cu->builder->get_local_symbols ();
13754
13755   if (die->child != NULL)
13756     {
13757       child_die = die->child;
13758       while (child_die && child_die->tag)
13759         {
13760           if (child_die->tag == DW_TAG_template_type_param
13761               || child_die->tag == DW_TAG_template_value_param)
13762             {
13763               struct symbol *arg = new_symbol (child_die, NULL, cu);
13764
13765               if (arg != NULL)
13766                 template_args.push_back (arg);
13767             }
13768           else
13769             process_die (child_die, cu);
13770           child_die = sibling_die (child_die);
13771         }
13772     }
13773
13774   inherit_abstract_dies (die, cu);
13775
13776   /* If we have a DW_AT_specification, we might need to import using
13777      directives from the context of the specification DIE.  See the
13778      comment in determine_prefix.  */
13779   if (cu->language == language_cplus
13780       && dwarf2_attr (die, DW_AT_specification, cu))
13781     {
13782       struct dwarf2_cu *spec_cu = cu;
13783       struct die_info *spec_die = die_specification (die, &spec_cu);
13784
13785       while (spec_die)
13786         {
13787           child_die = spec_die->child;
13788           while (child_die && child_die->tag)
13789             {
13790               if (child_die->tag == DW_TAG_imported_module)
13791                 process_die (child_die, spec_cu);
13792               child_die = sibling_die (child_die);
13793             }
13794
13795           /* In some cases, GCC generates specification DIEs that
13796              themselves contain DW_AT_specification attributes.  */
13797           spec_die = die_specification (spec_die, &spec_cu);
13798         }
13799     }
13800
13801   struct context_stack cstk = cu->builder->pop_context ();
13802   /* Make a block for the local symbols within.  */
13803   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13804                                      cstk.static_link, lowpc, highpc);
13805
13806   /* For C++, set the block's scope.  */
13807   if ((cu->language == language_cplus
13808        || cu->language == language_fortran
13809        || cu->language == language_d
13810        || cu->language == language_rust)
13811       && cu->processing_has_namespace_info)
13812     block_set_scope (block, determine_prefix (die, cu),
13813                      &objfile->objfile_obstack);
13814
13815   /* If we have address ranges, record them.  */
13816   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13817
13818   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13819
13820   /* Attach template arguments to function.  */
13821   if (!template_args.empty ())
13822     {
13823       gdb_assert (templ_func != NULL);
13824
13825       templ_func->n_template_arguments = template_args.size ();
13826       templ_func->template_arguments
13827         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13828                      templ_func->n_template_arguments);
13829       memcpy (templ_func->template_arguments,
13830               template_args.data (),
13831               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13832
13833       /* Make sure that the symtab is set on the new symbols.  Even
13834          though they don't appear in this symtab directly, other parts
13835          of gdb assume that symbols do, and this is reasonably
13836          true.  */
13837       for (symbol *sym : template_args)
13838         symbol_set_symtab (sym, symbol_symtab (templ_func));
13839     }
13840
13841   /* In C++, we can have functions nested inside functions (e.g., when
13842      a function declares a class that has methods).  This means that
13843      when we finish processing a function scope, we may need to go
13844      back to building a containing block's symbol lists.  */
13845   *cu->builder->get_local_symbols () = cstk.locals;
13846   cu->builder->set_local_using_directives (cstk.local_using_directives);
13847
13848   /* If we've finished processing a top-level function, subsequent
13849      symbols go in the file symbol list.  */
13850   if (cu->builder->outermost_context_p ())
13851     cu->list_in_scope = cu->builder->get_file_symbols ();
13852 }
13853
13854 /* Process all the DIES contained within a lexical block scope.  Start
13855    a new scope, process the dies, and then close the scope.  */
13856
13857 static void
13858 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13859 {
13860   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13861   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13862   CORE_ADDR lowpc, highpc;
13863   struct die_info *child_die;
13864   CORE_ADDR baseaddr;
13865
13866   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13867
13868   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13869   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13870      as multiple lexical blocks?  Handling children in a sane way would
13871      be nasty.  Might be easier to properly extend generic blocks to
13872      describe ranges.  */
13873   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13874     {
13875     case PC_BOUNDS_NOT_PRESENT:
13876       /* DW_TAG_lexical_block has no attributes, process its children as if
13877          there was no wrapping by that DW_TAG_lexical_block.
13878          GCC does no longer produces such DWARF since GCC r224161.  */
13879       for (child_die = die->child;
13880            child_die != NULL && child_die->tag;
13881            child_die = sibling_die (child_die))
13882         process_die (child_die, cu);
13883       return;
13884     case PC_BOUNDS_INVALID:
13885       return;
13886     }
13887   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13888   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13889
13890   cu->builder->push_context (0, lowpc);
13891   if (die->child != NULL)
13892     {
13893       child_die = die->child;
13894       while (child_die && child_die->tag)
13895         {
13896           process_die (child_die, cu);
13897           child_die = sibling_die (child_die);
13898         }
13899     }
13900   inherit_abstract_dies (die, cu);
13901   struct context_stack cstk = cu->builder->pop_context ();
13902
13903   if (*cu->builder->get_local_symbols () != NULL
13904       || (*cu->builder->get_local_using_directives ()) != NULL)
13905     {
13906       struct block *block
13907         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13908                                      cstk.start_addr, highpc);
13909
13910       /* Note that recording ranges after traversing children, as we
13911          do here, means that recording a parent's ranges entails
13912          walking across all its children's ranges as they appear in
13913          the address map, which is quadratic behavior.
13914
13915          It would be nicer to record the parent's ranges before
13916          traversing its children, simply overriding whatever you find
13917          there.  But since we don't even decide whether to create a
13918          block until after we've traversed its children, that's hard
13919          to do.  */
13920       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13921     }
13922   *cu->builder->get_local_symbols () = cstk.locals;
13923   cu->builder->set_local_using_directives (cstk.local_using_directives);
13924 }
13925
13926 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13927
13928 static void
13929 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13930 {
13931   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13932   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13933   CORE_ADDR pc, baseaddr;
13934   struct attribute *attr;
13935   struct call_site *call_site, call_site_local;
13936   void **slot;
13937   int nparams;
13938   struct die_info *child_die;
13939
13940   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13941
13942   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13943   if (attr == NULL)
13944     {
13945       /* This was a pre-DWARF-5 GNU extension alias
13946          for DW_AT_call_return_pc.  */
13947       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13948     }
13949   if (!attr)
13950     {
13951       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13952                    "DIE %s [in module %s]"),
13953                  sect_offset_str (die->sect_off), objfile_name (objfile));
13954       return;
13955     }
13956   pc = attr_value_as_address (attr) + baseaddr;
13957   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13958
13959   if (cu->call_site_htab == NULL)
13960     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13961                                                NULL, &objfile->objfile_obstack,
13962                                                hashtab_obstack_allocate, NULL);
13963   call_site_local.pc = pc;
13964   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13965   if (*slot != NULL)
13966     {
13967       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13968                    "DIE %s [in module %s]"),
13969                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13970                  objfile_name (objfile));
13971       return;
13972     }
13973
13974   /* Count parameters at the caller.  */
13975
13976   nparams = 0;
13977   for (child_die = die->child; child_die && child_die->tag;
13978        child_die = sibling_die (child_die))
13979     {
13980       if (child_die->tag != DW_TAG_call_site_parameter
13981           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13982         {
13983           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13984                        "DW_TAG_call_site child DIE %s [in module %s]"),
13985                      child_die->tag, sect_offset_str (child_die->sect_off),
13986                      objfile_name (objfile));
13987           continue;
13988         }
13989
13990       nparams++;
13991     }
13992
13993   call_site
13994     = ((struct call_site *)
13995        obstack_alloc (&objfile->objfile_obstack,
13996                       sizeof (*call_site)
13997                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13998   *slot = call_site;
13999   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14000   call_site->pc = pc;
14001
14002   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14003       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14004     {
14005       struct die_info *func_die;
14006
14007       /* Skip also over DW_TAG_inlined_subroutine.  */
14008       for (func_die = die->parent;
14009            func_die && func_die->tag != DW_TAG_subprogram
14010            && func_die->tag != DW_TAG_subroutine_type;
14011            func_die = func_die->parent);
14012
14013       /* DW_AT_call_all_calls is a superset
14014          of DW_AT_call_all_tail_calls.  */
14015       if (func_die
14016           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14017           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14018           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14019           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14020         {
14021           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14022              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14023              both the initial caller containing the real return address PC and
14024              the final callee containing the current PC of a chain of tail
14025              calls do not need to have the tail call list complete.  But any
14026              function candidate for a virtual tail call frame searched via
14027              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14028              determined unambiguously.  */
14029         }
14030       else
14031         {
14032           struct type *func_type = NULL;
14033
14034           if (func_die)
14035             func_type = get_die_type (func_die, cu);
14036           if (func_type != NULL)
14037             {
14038               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14039
14040               /* Enlist this call site to the function.  */
14041               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14042               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14043             }
14044           else
14045             complaint (_("Cannot find function owning DW_TAG_call_site "
14046                          "DIE %s [in module %s]"),
14047                        sect_offset_str (die->sect_off), objfile_name (objfile));
14048         }
14049     }
14050
14051   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14052   if (attr == NULL)
14053     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14054   if (attr == NULL)
14055     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14056   if (attr == NULL)
14057     {
14058       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14059       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14060     }
14061   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14062   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14063     /* Keep NULL DWARF_BLOCK.  */;
14064   else if (attr_form_is_block (attr))
14065     {
14066       struct dwarf2_locexpr_baton *dlbaton;
14067
14068       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14069       dlbaton->data = DW_BLOCK (attr)->data;
14070       dlbaton->size = DW_BLOCK (attr)->size;
14071       dlbaton->per_cu = cu->per_cu;
14072
14073       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14074     }
14075   else if (attr_form_is_ref (attr))
14076     {
14077       struct dwarf2_cu *target_cu = cu;
14078       struct die_info *target_die;
14079
14080       target_die = follow_die_ref (die, attr, &target_cu);
14081       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14082       if (die_is_declaration (target_die, target_cu))
14083         {
14084           const char *target_physname;
14085
14086           /* Prefer the mangled name; otherwise compute the demangled one.  */
14087           target_physname = dw2_linkage_name (target_die, target_cu);
14088           if (target_physname == NULL)
14089             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14090           if (target_physname == NULL)
14091             complaint (_("DW_AT_call_target target DIE has invalid "
14092                          "physname, for referencing DIE %s [in module %s]"),
14093                        sect_offset_str (die->sect_off), objfile_name (objfile));
14094           else
14095             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14096         }
14097       else
14098         {
14099           CORE_ADDR lowpc;
14100
14101           /* DW_AT_entry_pc should be preferred.  */
14102           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14103               <= PC_BOUNDS_INVALID)
14104             complaint (_("DW_AT_call_target target DIE has invalid "
14105                          "low pc, for referencing DIE %s [in module %s]"),
14106                        sect_offset_str (die->sect_off), objfile_name (objfile));
14107           else
14108             {
14109               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14110               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14111             }
14112         }
14113     }
14114   else
14115     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14116                  "block nor reference, for DIE %s [in module %s]"),
14117                sect_offset_str (die->sect_off), objfile_name (objfile));
14118
14119   call_site->per_cu = cu->per_cu;
14120
14121   for (child_die = die->child;
14122        child_die && child_die->tag;
14123        child_die = sibling_die (child_die))
14124     {
14125       struct call_site_parameter *parameter;
14126       struct attribute *loc, *origin;
14127
14128       if (child_die->tag != DW_TAG_call_site_parameter
14129           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14130         {
14131           /* Already printed the complaint above.  */
14132           continue;
14133         }
14134
14135       gdb_assert (call_site->parameter_count < nparams);
14136       parameter = &call_site->parameter[call_site->parameter_count];
14137
14138       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14139          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14140          register is contained in DW_AT_call_value.  */
14141
14142       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14143       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14144       if (origin == NULL)
14145         {
14146           /* This was a pre-DWARF-5 GNU extension alias
14147              for DW_AT_call_parameter.  */
14148           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14149         }
14150       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14151         {
14152           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14153
14154           sect_offset sect_off
14155             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14156           if (!offset_in_cu_p (&cu->header, sect_off))
14157             {
14158               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14159                  binding can be done only inside one CU.  Such referenced DIE
14160                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14161               complaint (_("DW_AT_call_parameter offset is not in CU for "
14162                            "DW_TAG_call_site child DIE %s [in module %s]"),
14163                          sect_offset_str (child_die->sect_off),
14164                          objfile_name (objfile));
14165               continue;
14166             }
14167           parameter->u.param_cu_off
14168             = (cu_offset) (sect_off - cu->header.sect_off);
14169         }
14170       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14171         {
14172           complaint (_("No DW_FORM_block* DW_AT_location for "
14173                        "DW_TAG_call_site child DIE %s [in module %s]"),
14174                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14175           continue;
14176         }
14177       else
14178         {
14179           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14180             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14181           if (parameter->u.dwarf_reg != -1)
14182             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14183           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14184                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14185                                              &parameter->u.fb_offset))
14186             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14187           else
14188             {
14189               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14190                            "for DW_FORM_block* DW_AT_location is supported for "
14191                            "DW_TAG_call_site child DIE %s "
14192                            "[in module %s]"),
14193                          sect_offset_str (child_die->sect_off),
14194                          objfile_name (objfile));
14195               continue;
14196             }
14197         }
14198
14199       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14200       if (attr == NULL)
14201         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14202       if (!attr_form_is_block (attr))
14203         {
14204           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14205                        "DW_TAG_call_site child DIE %s [in module %s]"),
14206                      sect_offset_str (child_die->sect_off),
14207                      objfile_name (objfile));
14208           continue;
14209         }
14210       parameter->value = DW_BLOCK (attr)->data;
14211       parameter->value_size = DW_BLOCK (attr)->size;
14212
14213       /* Parameters are not pre-cleared by memset above.  */
14214       parameter->data_value = NULL;
14215       parameter->data_value_size = 0;
14216       call_site->parameter_count++;
14217
14218       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14219       if (attr == NULL)
14220         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14221       if (attr)
14222         {
14223           if (!attr_form_is_block (attr))
14224             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14225                          "DW_TAG_call_site child DIE %s [in module %s]"),
14226                        sect_offset_str (child_die->sect_off),
14227                        objfile_name (objfile));
14228           else
14229             {
14230               parameter->data_value = DW_BLOCK (attr)->data;
14231               parameter->data_value_size = DW_BLOCK (attr)->size;
14232             }
14233         }
14234     }
14235 }
14236
14237 /* Helper function for read_variable.  If DIE represents a virtual
14238    table, then return the type of the concrete object that is
14239    associated with the virtual table.  Otherwise, return NULL.  */
14240
14241 static struct type *
14242 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14243 {
14244   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14245   if (attr == NULL)
14246     return NULL;
14247
14248   /* Find the type DIE.  */
14249   struct die_info *type_die = NULL;
14250   struct dwarf2_cu *type_cu = cu;
14251
14252   if (attr_form_is_ref (attr))
14253     type_die = follow_die_ref (die, attr, &type_cu);
14254   if (type_die == NULL)
14255     return NULL;
14256
14257   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14258     return NULL;
14259   return die_containing_type (type_die, type_cu);
14260 }
14261
14262 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14263
14264 static void
14265 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14266 {
14267   struct rust_vtable_symbol *storage = NULL;
14268
14269   if (cu->language == language_rust)
14270     {
14271       struct type *containing_type = rust_containing_type (die, cu);
14272
14273       if (containing_type != NULL)
14274         {
14275           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14276
14277           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14278                                     struct rust_vtable_symbol);
14279           initialize_objfile_symbol (storage);
14280           storage->concrete_type = containing_type;
14281           storage->subclass = SYMBOL_RUST_VTABLE;
14282         }
14283     }
14284
14285   struct symbol *res = new_symbol (die, NULL, cu, storage);
14286   struct attribute *abstract_origin
14287     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14288   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14289   if (res == NULL && loc && abstract_origin)
14290     {
14291       /* We have a variable without a name, but with a location and an abstract
14292          origin.  This may be a concrete instance of an abstract variable
14293          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14294          later.  */
14295       struct dwarf2_cu *origin_cu = cu;
14296       struct die_info *origin_die
14297         = follow_die_ref (die, abstract_origin, &origin_cu);
14298       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14299       dpo->abstract_to_concrete[origin_die].push_back (die);
14300     }
14301 }
14302
14303 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14304    reading .debug_rnglists.
14305    Callback's type should be:
14306     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14307    Return true if the attributes are present and valid, otherwise,
14308    return false.  */
14309
14310 template <typename Callback>
14311 static bool
14312 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14313                          Callback &&callback)
14314 {
14315   struct dwarf2_per_objfile *dwarf2_per_objfile
14316     = cu->per_cu->dwarf2_per_objfile;
14317   struct objfile *objfile = dwarf2_per_objfile->objfile;
14318   bfd *obfd = objfile->obfd;
14319   /* Base address selection entry.  */
14320   CORE_ADDR base;
14321   int found_base;
14322   const gdb_byte *buffer;
14323   CORE_ADDR baseaddr;
14324   bool overflow = false;
14325
14326   found_base = cu->base_known;
14327   base = cu->base_address;
14328
14329   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14330   if (offset >= dwarf2_per_objfile->rnglists.size)
14331     {
14332       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14333                  offset);
14334       return false;
14335     }
14336   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14337
14338   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14339
14340   while (1)
14341     {
14342       /* Initialize it due to a false compiler warning.  */
14343       CORE_ADDR range_beginning = 0, range_end = 0;
14344       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14345                                  + dwarf2_per_objfile->rnglists.size);
14346       unsigned int bytes_read;
14347
14348       if (buffer == buf_end)
14349         {
14350           overflow = true;
14351           break;
14352         }
14353       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14354       switch (rlet)
14355         {
14356         case DW_RLE_end_of_list:
14357           break;
14358         case DW_RLE_base_address:
14359           if (buffer + cu->header.addr_size > buf_end)
14360             {
14361               overflow = true;
14362               break;
14363             }
14364           base = read_address (obfd, buffer, cu, &bytes_read);
14365           found_base = 1;
14366           buffer += bytes_read;
14367           break;
14368         case DW_RLE_start_length:
14369           if (buffer + cu->header.addr_size > buf_end)
14370             {
14371               overflow = true;
14372               break;
14373             }
14374           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14375           buffer += bytes_read;
14376           range_end = (range_beginning
14377                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14378           buffer += bytes_read;
14379           if (buffer > buf_end)
14380             {
14381               overflow = true;
14382               break;
14383             }
14384           break;
14385         case DW_RLE_offset_pair:
14386           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14387           buffer += bytes_read;
14388           if (buffer > buf_end)
14389             {
14390               overflow = true;
14391               break;
14392             }
14393           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14394           buffer += bytes_read;
14395           if (buffer > buf_end)
14396             {
14397               overflow = true;
14398               break;
14399             }
14400           break;
14401         case DW_RLE_start_end:
14402           if (buffer + 2 * cu->header.addr_size > buf_end)
14403             {
14404               overflow = true;
14405               break;
14406             }
14407           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14408           buffer += bytes_read;
14409           range_end = read_address (obfd, buffer, cu, &bytes_read);
14410           buffer += bytes_read;
14411           break;
14412         default:
14413           complaint (_("Invalid .debug_rnglists data (no base address)"));
14414           return false;
14415         }
14416       if (rlet == DW_RLE_end_of_list || overflow)
14417         break;
14418       if (rlet == DW_RLE_base_address)
14419         continue;
14420
14421       if (!found_base)
14422         {
14423           /* We have no valid base address for the ranges
14424              data.  */
14425           complaint (_("Invalid .debug_rnglists data (no base address)"));
14426           return false;
14427         }
14428
14429       if (range_beginning > range_end)
14430         {
14431           /* Inverted range entries are invalid.  */
14432           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14433           return false;
14434         }
14435
14436       /* Empty range entries have no effect.  */
14437       if (range_beginning == range_end)
14438         continue;
14439
14440       range_beginning += base;
14441       range_end += base;
14442
14443       /* A not-uncommon case of bad debug info.
14444          Don't pollute the addrmap with bad data.  */
14445       if (range_beginning + baseaddr == 0
14446           && !dwarf2_per_objfile->has_section_at_zero)
14447         {
14448           complaint (_(".debug_rnglists entry has start address of zero"
14449                        " [in module %s]"), objfile_name (objfile));
14450           continue;
14451         }
14452
14453       callback (range_beginning, range_end);
14454     }
14455
14456   if (overflow)
14457     {
14458       complaint (_("Offset %d is not terminated "
14459                    "for DW_AT_ranges attribute"),
14460                  offset);
14461       return false;
14462     }
14463
14464   return true;
14465 }
14466
14467 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14468    Callback's type should be:
14469     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14470    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14471
14472 template <typename Callback>
14473 static int
14474 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14475                        Callback &&callback)
14476 {
14477   struct dwarf2_per_objfile *dwarf2_per_objfile
14478       = cu->per_cu->dwarf2_per_objfile;
14479   struct objfile *objfile = dwarf2_per_objfile->objfile;
14480   struct comp_unit_head *cu_header = &cu->header;
14481   bfd *obfd = objfile->obfd;
14482   unsigned int addr_size = cu_header->addr_size;
14483   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14484   /* Base address selection entry.  */
14485   CORE_ADDR base;
14486   int found_base;
14487   unsigned int dummy;
14488   const gdb_byte *buffer;
14489   CORE_ADDR baseaddr;
14490
14491   if (cu_header->version >= 5)
14492     return dwarf2_rnglists_process (offset, cu, callback);
14493
14494   found_base = cu->base_known;
14495   base = cu->base_address;
14496
14497   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14498   if (offset >= dwarf2_per_objfile->ranges.size)
14499     {
14500       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14501                  offset);
14502       return 0;
14503     }
14504   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14505
14506   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14507
14508   while (1)
14509     {
14510       CORE_ADDR range_beginning, range_end;
14511
14512       range_beginning = read_address (obfd, buffer, cu, &dummy);
14513       buffer += addr_size;
14514       range_end = read_address (obfd, buffer, cu, &dummy);
14515       buffer += addr_size;
14516       offset += 2 * addr_size;
14517
14518       /* An end of list marker is a pair of zero addresses.  */
14519       if (range_beginning == 0 && range_end == 0)
14520         /* Found the end of list entry.  */
14521         break;
14522
14523       /* Each base address selection entry is a pair of 2 values.
14524          The first is the largest possible address, the second is
14525          the base address.  Check for a base address here.  */
14526       if ((range_beginning & mask) == mask)
14527         {
14528           /* If we found the largest possible address, then we already
14529              have the base address in range_end.  */
14530           base = range_end;
14531           found_base = 1;
14532           continue;
14533         }
14534
14535       if (!found_base)
14536         {
14537           /* We have no valid base address for the ranges
14538              data.  */
14539           complaint (_("Invalid .debug_ranges data (no base address)"));
14540           return 0;
14541         }
14542
14543       if (range_beginning > range_end)
14544         {
14545           /* Inverted range entries are invalid.  */
14546           complaint (_("Invalid .debug_ranges data (inverted range)"));
14547           return 0;
14548         }
14549
14550       /* Empty range entries have no effect.  */
14551       if (range_beginning == range_end)
14552         continue;
14553
14554       range_beginning += base;
14555       range_end += base;
14556
14557       /* A not-uncommon case of bad debug info.
14558          Don't pollute the addrmap with bad data.  */
14559       if (range_beginning + baseaddr == 0
14560           && !dwarf2_per_objfile->has_section_at_zero)
14561         {
14562           complaint (_(".debug_ranges entry has start address of zero"
14563                        " [in module %s]"), objfile_name (objfile));
14564           continue;
14565         }
14566
14567       callback (range_beginning, range_end);
14568     }
14569
14570   return 1;
14571 }
14572
14573 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14574    Return 1 if the attributes are present and valid, otherwise, return 0.
14575    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14576
14577 static int
14578 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14579                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14580                     struct partial_symtab *ranges_pst)
14581 {
14582   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14583   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14584   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14585                                        SECT_OFF_TEXT (objfile));
14586   int low_set = 0;
14587   CORE_ADDR low = 0;
14588   CORE_ADDR high = 0;
14589   int retval;
14590
14591   retval = dwarf2_ranges_process (offset, cu,
14592     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14593     {
14594       if (ranges_pst != NULL)
14595         {
14596           CORE_ADDR lowpc;
14597           CORE_ADDR highpc;
14598
14599           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14600                                                range_beginning + baseaddr)
14601                    - baseaddr);
14602           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14603                                                 range_end + baseaddr)
14604                     - baseaddr);
14605           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14606                              ranges_pst);
14607         }
14608
14609       /* FIXME: This is recording everything as a low-high
14610          segment of consecutive addresses.  We should have a
14611          data structure for discontiguous block ranges
14612          instead.  */
14613       if (! low_set)
14614         {
14615           low = range_beginning;
14616           high = range_end;
14617           low_set = 1;
14618         }
14619       else
14620         {
14621           if (range_beginning < low)
14622             low = range_beginning;
14623           if (range_end > high)
14624             high = range_end;
14625         }
14626     });
14627   if (!retval)
14628     return 0;
14629
14630   if (! low_set)
14631     /* If the first entry is an end-of-list marker, the range
14632        describes an empty scope, i.e. no instructions.  */
14633     return 0;
14634
14635   if (low_return)
14636     *low_return = low;
14637   if (high_return)
14638     *high_return = high;
14639   return 1;
14640 }
14641
14642 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14643    definition for the return value.  *LOWPC and *HIGHPC are set iff
14644    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14645
14646 static enum pc_bounds_kind
14647 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14648                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14649                       struct partial_symtab *pst)
14650 {
14651   struct dwarf2_per_objfile *dwarf2_per_objfile
14652     = cu->per_cu->dwarf2_per_objfile;
14653   struct attribute *attr;
14654   struct attribute *attr_high;
14655   CORE_ADDR low = 0;
14656   CORE_ADDR high = 0;
14657   enum pc_bounds_kind ret;
14658
14659   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14660   if (attr_high)
14661     {
14662       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14663       if (attr)
14664         {
14665           low = attr_value_as_address (attr);
14666           high = attr_value_as_address (attr_high);
14667           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14668             high += low;
14669         }
14670       else
14671         /* Found high w/o low attribute.  */
14672         return PC_BOUNDS_INVALID;
14673
14674       /* Found consecutive range of addresses.  */
14675       ret = PC_BOUNDS_HIGH_LOW;
14676     }
14677   else
14678     {
14679       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14680       if (attr != NULL)
14681         {
14682           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14683              We take advantage of the fact that DW_AT_ranges does not appear
14684              in DW_TAG_compile_unit of DWO files.  */
14685           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14686           unsigned int ranges_offset = (DW_UNSND (attr)
14687                                         + (need_ranges_base
14688                                            ? cu->ranges_base
14689                                            : 0));
14690
14691           /* Value of the DW_AT_ranges attribute is the offset in the
14692              .debug_ranges section.  */
14693           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14694             return PC_BOUNDS_INVALID;
14695           /* Found discontinuous range of addresses.  */
14696           ret = PC_BOUNDS_RANGES;
14697         }
14698       else
14699         return PC_BOUNDS_NOT_PRESENT;
14700     }
14701
14702   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14703   if (high <= low)
14704     return PC_BOUNDS_INVALID;
14705
14706   /* When using the GNU linker, .gnu.linkonce. sections are used to
14707      eliminate duplicate copies of functions and vtables and such.
14708      The linker will arbitrarily choose one and discard the others.
14709      The AT_*_pc values for such functions refer to local labels in
14710      these sections.  If the section from that file was discarded, the
14711      labels are not in the output, so the relocs get a value of 0.
14712      If this is a discarded function, mark the pc bounds as invalid,
14713      so that GDB will ignore it.  */
14714   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14715     return PC_BOUNDS_INVALID;
14716
14717   *lowpc = low;
14718   if (highpc)
14719     *highpc = high;
14720   return ret;
14721 }
14722
14723 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14724    its low and high PC addresses.  Do nothing if these addresses could not
14725    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14726    and HIGHPC to the high address if greater than HIGHPC.  */
14727
14728 static void
14729 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14730                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14731                                  struct dwarf2_cu *cu)
14732 {
14733   CORE_ADDR low, high;
14734   struct die_info *child = die->child;
14735
14736   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14737     {
14738       *lowpc = std::min (*lowpc, low);
14739       *highpc = std::max (*highpc, high);
14740     }
14741
14742   /* If the language does not allow nested subprograms (either inside
14743      subprograms or lexical blocks), we're done.  */
14744   if (cu->language != language_ada)
14745     return;
14746
14747   /* Check all the children of the given DIE.  If it contains nested
14748      subprograms, then check their pc bounds.  Likewise, we need to
14749      check lexical blocks as well, as they may also contain subprogram
14750      definitions.  */
14751   while (child && child->tag)
14752     {
14753       if (child->tag == DW_TAG_subprogram
14754           || child->tag == DW_TAG_lexical_block)
14755         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14756       child = sibling_die (child);
14757     }
14758 }
14759
14760 /* Get the low and high pc's represented by the scope DIE, and store
14761    them in *LOWPC and *HIGHPC.  If the correct values can't be
14762    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14763
14764 static void
14765 get_scope_pc_bounds (struct die_info *die,
14766                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14767                      struct dwarf2_cu *cu)
14768 {
14769   CORE_ADDR best_low = (CORE_ADDR) -1;
14770   CORE_ADDR best_high = (CORE_ADDR) 0;
14771   CORE_ADDR current_low, current_high;
14772
14773   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14774       >= PC_BOUNDS_RANGES)
14775     {
14776       best_low = current_low;
14777       best_high = current_high;
14778     }
14779   else
14780     {
14781       struct die_info *child = die->child;
14782
14783       while (child && child->tag)
14784         {
14785           switch (child->tag) {
14786           case DW_TAG_subprogram:
14787             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14788             break;
14789           case DW_TAG_namespace:
14790           case DW_TAG_module:
14791             /* FIXME: carlton/2004-01-16: Should we do this for
14792                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14793                that current GCC's always emit the DIEs corresponding
14794                to definitions of methods of classes as children of a
14795                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14796                the DIEs giving the declarations, which could be
14797                anywhere).  But I don't see any reason why the
14798                standards says that they have to be there.  */
14799             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14800
14801             if (current_low != ((CORE_ADDR) -1))
14802               {
14803                 best_low = std::min (best_low, current_low);
14804                 best_high = std::max (best_high, current_high);
14805               }
14806             break;
14807           default:
14808             /* Ignore.  */
14809             break;
14810           }
14811
14812           child = sibling_die (child);
14813         }
14814     }
14815
14816   *lowpc = best_low;
14817   *highpc = best_high;
14818 }
14819
14820 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14821    in DIE.  */
14822
14823 static void
14824 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14825                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14826 {
14827   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14828   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14829   struct attribute *attr;
14830   struct attribute *attr_high;
14831
14832   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14833   if (attr_high)
14834     {
14835       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14836       if (attr)
14837         {
14838           CORE_ADDR low = attr_value_as_address (attr);
14839           CORE_ADDR high = attr_value_as_address (attr_high);
14840
14841           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14842             high += low;
14843
14844           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14845           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14846           cu->builder->record_block_range (block, low, high - 1);
14847         }
14848     }
14849
14850   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14851   if (attr)
14852     {
14853       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14854          We take advantage of the fact that DW_AT_ranges does not appear
14855          in DW_TAG_compile_unit of DWO files.  */
14856       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14857
14858       /* The value of the DW_AT_ranges attribute is the offset of the
14859          address range list in the .debug_ranges section.  */
14860       unsigned long offset = (DW_UNSND (attr)
14861                               + (need_ranges_base ? cu->ranges_base : 0));
14862
14863       std::vector<blockrange> blockvec;
14864       dwarf2_ranges_process (offset, cu,
14865         [&] (CORE_ADDR start, CORE_ADDR end)
14866         {
14867           start += baseaddr;
14868           end += baseaddr;
14869           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14870           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14871           cu->builder->record_block_range (block, start, end - 1);
14872           blockvec.emplace_back (start, end);
14873         });
14874
14875       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14876     }
14877 }
14878
14879 /* Check whether the producer field indicates either of GCC < 4.6, or the
14880    Intel C/C++ compiler, and cache the result in CU.  */
14881
14882 static void
14883 check_producer (struct dwarf2_cu *cu)
14884 {
14885   int major, minor;
14886
14887   if (cu->producer == NULL)
14888     {
14889       /* For unknown compilers expect their behavior is DWARF version
14890          compliant.
14891
14892          GCC started to support .debug_types sections by -gdwarf-4 since
14893          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14894          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14895          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14896          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14897     }
14898   else if (producer_is_gcc (cu->producer, &major, &minor))
14899     {
14900       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14901       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14902     }
14903   else if (producer_is_icc (cu->producer, &major, &minor))
14904     cu->producer_is_icc_lt_14 = major < 14;
14905   else if (startswith (cu->producer, "CodeWarrior S12/L-ISA"))
14906     cu->producer_is_codewarrior = true;
14907   else
14908     {
14909       /* For other non-GCC compilers, expect their behavior is DWARF version
14910          compliant.  */
14911     }
14912
14913   cu->checked_producer = 1;
14914 }
14915
14916 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14917    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14918    during 4.6.0 experimental.  */
14919
14920 static int
14921 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14922 {
14923   if (!cu->checked_producer)
14924     check_producer (cu);
14925
14926   return cu->producer_is_gxx_lt_4_6;
14927 }
14928
14929
14930 /* Codewarrior (at least as of version 5.0.40) generates dwarf line information
14931    with incorrect is_stmt attributes.  */
14932
14933 static bool
14934 producer_is_codewarrior (struct dwarf2_cu *cu)
14935 {
14936   if (!cu->checked_producer)
14937     check_producer (cu);
14938
14939   return cu->producer_is_codewarrior;
14940 }
14941
14942 /* Return the default accessibility type if it is not overriden by
14943    DW_AT_accessibility.  */
14944
14945 static enum dwarf_access_attribute
14946 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14947 {
14948   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14949     {
14950       /* The default DWARF 2 accessibility for members is public, the default
14951          accessibility for inheritance is private.  */
14952
14953       if (die->tag != DW_TAG_inheritance)
14954         return DW_ACCESS_public;
14955       else
14956         return DW_ACCESS_private;
14957     }
14958   else
14959     {
14960       /* DWARF 3+ defines the default accessibility a different way.  The same
14961          rules apply now for DW_TAG_inheritance as for the members and it only
14962          depends on the container kind.  */
14963
14964       if (die->parent->tag == DW_TAG_class_type)
14965         return DW_ACCESS_private;
14966       else
14967         return DW_ACCESS_public;
14968     }
14969 }
14970
14971 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14972    offset.  If the attribute was not found return 0, otherwise return
14973    1.  If it was found but could not properly be handled, set *OFFSET
14974    to 0.  */
14975
14976 static int
14977 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14978                              LONGEST *offset)
14979 {
14980   struct attribute *attr;
14981
14982   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14983   if (attr != NULL)
14984     {
14985       *offset = 0;
14986
14987       /* Note that we do not check for a section offset first here.
14988          This is because DW_AT_data_member_location is new in DWARF 4,
14989          so if we see it, we can assume that a constant form is really
14990          a constant and not a section offset.  */
14991       if (attr_form_is_constant (attr))
14992         *offset = dwarf2_get_attr_constant_value (attr, 0);
14993       else if (attr_form_is_section_offset (attr))
14994         dwarf2_complex_location_expr_complaint ();
14995       else if (attr_form_is_block (attr))
14996         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14997       else
14998         dwarf2_complex_location_expr_complaint ();
14999
15000       return 1;
15001     }
15002
15003   return 0;
15004 }
15005
15006 /* Add an aggregate field to the field list.  */
15007
15008 static void
15009 dwarf2_add_field (struct field_info *fip, struct die_info *die,
15010                   struct dwarf2_cu *cu)
15011 {
15012   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15013   struct gdbarch *gdbarch = get_objfile_arch (objfile);
15014   struct nextfield *new_field;
15015   struct attribute *attr;
15016   struct field *fp;
15017   const char *fieldname = "";
15018
15019   if (die->tag == DW_TAG_inheritance)
15020     {
15021       fip->baseclasses.emplace_back ();
15022       new_field = &fip->baseclasses.back ();
15023     }
15024   else
15025     {
15026       fip->fields.emplace_back ();
15027       new_field = &fip->fields.back ();
15028     }
15029
15030   fip->nfields++;
15031
15032   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15033   if (attr)
15034     new_field->accessibility = DW_UNSND (attr);
15035   else
15036     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15037   if (new_field->accessibility != DW_ACCESS_public)
15038     fip->non_public_fields = 1;
15039
15040   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15041   if (attr)
15042     new_field->virtuality = DW_UNSND (attr);
15043   else
15044     new_field->virtuality = DW_VIRTUALITY_none;
15045
15046   fp = &new_field->field;
15047
15048   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15049     {
15050       LONGEST offset;
15051
15052       /* Data member other than a C++ static data member.  */
15053
15054       /* Get type of field.  */
15055       fp->type = die_type (die, cu);
15056
15057       SET_FIELD_BITPOS (*fp, 0);
15058
15059       /* Get bit size of field (zero if none).  */
15060       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15061       if (attr)
15062         {
15063           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15064         }
15065       else
15066         {
15067           FIELD_BITSIZE (*fp) = 0;
15068         }
15069
15070       /* Get bit offset of field.  */
15071       if (handle_data_member_location (die, cu, &offset))
15072         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15073       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15074       if (attr)
15075         {
15076           if (gdbarch_bits_big_endian (gdbarch))
15077             {
15078               /* For big endian bits, the DW_AT_bit_offset gives the
15079                  additional bit offset from the MSB of the containing
15080                  anonymous object to the MSB of the field.  We don't
15081                  have to do anything special since we don't need to
15082                  know the size of the anonymous object.  */
15083               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15084             }
15085           else
15086             {
15087               /* For little endian bits, compute the bit offset to the
15088                  MSB of the anonymous object, subtract off the number of
15089                  bits from the MSB of the field to the MSB of the
15090                  object, and then subtract off the number of bits of
15091                  the field itself.  The result is the bit offset of
15092                  the LSB of the field.  */
15093               int anonymous_size;
15094               int bit_offset = DW_UNSND (attr);
15095
15096               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15097               if (attr)
15098                 {
15099                   /* The size of the anonymous object containing
15100                      the bit field is explicit, so use the
15101                      indicated size (in bytes).  */
15102                   anonymous_size = DW_UNSND (attr);
15103                 }
15104               else
15105                 {
15106                   /* The size of the anonymous object containing
15107                      the bit field must be inferred from the type
15108                      attribute of the data member containing the
15109                      bit field.  */
15110                   anonymous_size = TYPE_LENGTH (fp->type);
15111                 }
15112               SET_FIELD_BITPOS (*fp,
15113                                 (FIELD_BITPOS (*fp)
15114                                  + anonymous_size * bits_per_byte
15115                                  - bit_offset - FIELD_BITSIZE (*fp)));
15116             }
15117         }
15118       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15119       if (attr != NULL)
15120         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15121                                 + dwarf2_get_attr_constant_value (attr, 0)));
15122
15123       /* Get name of field.  */
15124       fieldname = dwarf2_name (die, cu);
15125       if (fieldname == NULL)
15126         fieldname = "";
15127
15128       /* The name is already allocated along with this objfile, so we don't
15129          need to duplicate it for the type.  */
15130       fp->name = fieldname;
15131
15132       /* Change accessibility for artificial fields (e.g. virtual table
15133          pointer or virtual base class pointer) to private.  */
15134       if (dwarf2_attr (die, DW_AT_artificial, cu))
15135         {
15136           FIELD_ARTIFICIAL (*fp) = 1;
15137           new_field->accessibility = DW_ACCESS_private;
15138           fip->non_public_fields = 1;
15139         }
15140     }
15141   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15142     {
15143       /* C++ static member.  */
15144
15145       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15146          is a declaration, but all versions of G++ as of this writing
15147          (so through at least 3.2.1) incorrectly generate
15148          DW_TAG_variable tags.  */
15149
15150       const char *physname;
15151
15152       /* Get name of field.  */
15153       fieldname = dwarf2_name (die, cu);
15154       if (fieldname == NULL)
15155         return;
15156
15157       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15158       if (attr
15159           /* Only create a symbol if this is an external value.
15160              new_symbol checks this and puts the value in the global symbol
15161              table, which we want.  If it is not external, new_symbol
15162              will try to put the value in cu->list_in_scope which is wrong.  */
15163           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15164         {
15165           /* A static const member, not much different than an enum as far as
15166              we're concerned, except that we can support more types.  */
15167           new_symbol (die, NULL, cu);
15168         }
15169
15170       /* Get physical name.  */
15171       physname = dwarf2_physname (fieldname, die, cu);
15172
15173       /* The name is already allocated along with this objfile, so we don't
15174          need to duplicate it for the type.  */
15175       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15176       FIELD_TYPE (*fp) = die_type (die, cu);
15177       FIELD_NAME (*fp) = fieldname;
15178     }
15179   else if (die->tag == DW_TAG_inheritance)
15180     {
15181       LONGEST offset;
15182
15183       /* C++ base class field.  */
15184       if (handle_data_member_location (die, cu, &offset))
15185         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15186       FIELD_BITSIZE (*fp) = 0;
15187       FIELD_TYPE (*fp) = die_type (die, cu);
15188       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15189     }
15190   else if (die->tag == DW_TAG_variant_part)
15191     {
15192       /* process_structure_scope will treat this DIE as a union.  */
15193       process_structure_scope (die, cu);
15194
15195       /* The variant part is relative to the start of the enclosing
15196          structure.  */
15197       SET_FIELD_BITPOS (*fp, 0);
15198       fp->type = get_die_type (die, cu);
15199       fp->artificial = 1;
15200       fp->name = "<<variant>>";
15201
15202       /* Normally a DW_TAG_variant_part won't have a size, but our
15203          representation requires one, so set it to the maximum of the
15204          child sizes.  */
15205       if (TYPE_LENGTH (fp->type) == 0)
15206         {
15207           unsigned max = 0;
15208           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15209             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15210               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15211           TYPE_LENGTH (fp->type) = max;
15212         }
15213     }
15214   else
15215     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15216 }
15217
15218 /* Can the type given by DIE define another type?  */
15219
15220 static bool
15221 type_can_define_types (const struct die_info *die)
15222 {
15223   switch (die->tag)
15224     {
15225     case DW_TAG_typedef:
15226     case DW_TAG_class_type:
15227     case DW_TAG_structure_type:
15228     case DW_TAG_union_type:
15229     case DW_TAG_enumeration_type:
15230       return true;
15231
15232     default:
15233       return false;
15234     }
15235 }
15236
15237 /* Add a type definition defined in the scope of the FIP's class.  */
15238
15239 static void
15240 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15241                       struct dwarf2_cu *cu)
15242 {
15243   struct decl_field fp;
15244   memset (&fp, 0, sizeof (fp));
15245
15246   gdb_assert (type_can_define_types (die));
15247
15248   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15249   fp.name = dwarf2_name (die, cu);
15250   fp.type = read_type_die (die, cu);
15251
15252   /* Save accessibility.  */
15253   enum dwarf_access_attribute accessibility;
15254   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15255   if (attr != NULL)
15256     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15257   else
15258     accessibility = dwarf2_default_access_attribute (die, cu);
15259   switch (accessibility)
15260     {
15261     case DW_ACCESS_public:
15262       /* The assumed value if neither private nor protected.  */
15263       break;
15264     case DW_ACCESS_private:
15265       fp.is_private = 1;
15266       break;
15267     case DW_ACCESS_protected:
15268       fp.is_protected = 1;
15269       break;
15270     default:
15271       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15272     }
15273
15274   if (die->tag == DW_TAG_typedef)
15275     fip->typedef_field_list.push_back (fp);
15276   else
15277     fip->nested_types_list.push_back (fp);
15278 }
15279
15280 /* Create the vector of fields, and attach it to the type.  */
15281
15282 static void
15283 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15284                               struct dwarf2_cu *cu)
15285 {
15286   int nfields = fip->nfields;
15287
15288   /* Record the field count, allocate space for the array of fields,
15289      and create blank accessibility bitfields if necessary.  */
15290   TYPE_NFIELDS (type) = nfields;
15291   TYPE_FIELDS (type) = (struct field *)
15292     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15293
15294   if (fip->non_public_fields && cu->language != language_ada)
15295     {
15296       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15297
15298       TYPE_FIELD_PRIVATE_BITS (type) =
15299         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15300       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15301
15302       TYPE_FIELD_PROTECTED_BITS (type) =
15303         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15304       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15305
15306       TYPE_FIELD_IGNORE_BITS (type) =
15307         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15308       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15309     }
15310
15311   /* If the type has baseclasses, allocate and clear a bit vector for
15312      TYPE_FIELD_VIRTUAL_BITS.  */
15313   if (!fip->baseclasses.empty () && cu->language != language_ada)
15314     {
15315       int num_bytes = B_BYTES (fip->baseclasses.size ());
15316       unsigned char *pointer;
15317
15318       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15319       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15320       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15321       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15322       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15323     }
15324
15325   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15326     {
15327       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15328
15329       for (int index = 0; index < nfields; ++index)
15330         {
15331           struct nextfield &field = fip->fields[index];
15332
15333           if (field.variant.is_discriminant)
15334             di->discriminant_index = index;
15335           else if (field.variant.default_branch)
15336             di->default_index = index;
15337           else
15338             di->discriminants[index] = field.variant.discriminant_value;
15339         }
15340     }
15341
15342   /* Copy the saved-up fields into the field vector.  */
15343   for (int i = 0; i < nfields; ++i)
15344     {
15345       struct nextfield &field
15346         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15347            : fip->fields[i - fip->baseclasses.size ()]);
15348
15349       TYPE_FIELD (type, i) = field.field;
15350       switch (field.accessibility)
15351         {
15352         case DW_ACCESS_private:
15353           if (cu->language != language_ada)
15354             SET_TYPE_FIELD_PRIVATE (type, i);
15355           break;
15356
15357         case DW_ACCESS_protected:
15358           if (cu->language != language_ada)
15359             SET_TYPE_FIELD_PROTECTED (type, i);
15360           break;
15361
15362         case DW_ACCESS_public:
15363           break;
15364
15365         default:
15366           /* Unknown accessibility.  Complain and treat it as public.  */
15367           {
15368             complaint (_("unsupported accessibility %d"),
15369                        field.accessibility);
15370           }
15371           break;
15372         }
15373       if (i < fip->baseclasses.size ())
15374         {
15375           switch (field.virtuality)
15376             {
15377             case DW_VIRTUALITY_virtual:
15378             case DW_VIRTUALITY_pure_virtual:
15379               if (cu->language == language_ada)
15380                 error (_("unexpected virtuality in component of Ada type"));
15381               SET_TYPE_FIELD_VIRTUAL (type, i);
15382               break;
15383             }
15384         }
15385     }
15386 }
15387
15388 /* Return true if this member function is a constructor, false
15389    otherwise.  */
15390
15391 static int
15392 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15393 {
15394   const char *fieldname;
15395   const char *type_name;
15396   int len;
15397
15398   if (die->parent == NULL)
15399     return 0;
15400
15401   if (die->parent->tag != DW_TAG_structure_type
15402       && die->parent->tag != DW_TAG_union_type
15403       && die->parent->tag != DW_TAG_class_type)
15404     return 0;
15405
15406   fieldname = dwarf2_name (die, cu);
15407   type_name = dwarf2_name (die->parent, cu);
15408   if (fieldname == NULL || type_name == NULL)
15409     return 0;
15410
15411   len = strlen (fieldname);
15412   return (strncmp (fieldname, type_name, len) == 0
15413           && (type_name[len] == '\0' || type_name[len] == '<'));
15414 }
15415
15416 /* Add a member function to the proper fieldlist.  */
15417
15418 static void
15419 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15420                       struct type *type, struct dwarf2_cu *cu)
15421 {
15422   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15423   struct attribute *attr;
15424   int i;
15425   struct fnfieldlist *flp = nullptr;
15426   struct fn_field *fnp;
15427   const char *fieldname;
15428   struct type *this_type;
15429   enum dwarf_access_attribute accessibility;
15430
15431   if (cu->language == language_ada)
15432     error (_("unexpected member function in Ada type"));
15433
15434   /* Get name of member function.  */
15435   fieldname = dwarf2_name (die, cu);
15436   if (fieldname == NULL)
15437     return;
15438
15439   /* Look up member function name in fieldlist.  */
15440   for (i = 0; i < fip->fnfieldlists.size (); i++)
15441     {
15442       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15443         {
15444           flp = &fip->fnfieldlists[i];
15445           break;
15446         }
15447     }
15448
15449   /* Create a new fnfieldlist if necessary.  */
15450   if (flp == nullptr)
15451     {
15452       fip->fnfieldlists.emplace_back ();
15453       flp = &fip->fnfieldlists.back ();
15454       flp->name = fieldname;
15455       i = fip->fnfieldlists.size () - 1;
15456     }
15457
15458   /* Create a new member function field and add it to the vector of
15459      fnfieldlists.  */
15460   flp->fnfields.emplace_back ();
15461   fnp = &flp->fnfields.back ();
15462
15463   /* Delay processing of the physname until later.  */
15464   if (cu->language == language_cplus)
15465     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15466                         die, cu);
15467   else
15468     {
15469       const char *physname = dwarf2_physname (fieldname, die, cu);
15470       fnp->physname = physname ? physname : "";
15471     }
15472
15473   fnp->type = alloc_type (objfile);
15474   this_type = read_type_die (die, cu);
15475   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15476     {
15477       int nparams = TYPE_NFIELDS (this_type);
15478
15479       /* TYPE is the domain of this method, and THIS_TYPE is the type
15480            of the method itself (TYPE_CODE_METHOD).  */
15481       smash_to_method_type (fnp->type, type,
15482                             TYPE_TARGET_TYPE (this_type),
15483                             TYPE_FIELDS (this_type),
15484                             TYPE_NFIELDS (this_type),
15485                             TYPE_VARARGS (this_type));
15486
15487       /* Handle static member functions.
15488          Dwarf2 has no clean way to discern C++ static and non-static
15489          member functions.  G++ helps GDB by marking the first
15490          parameter for non-static member functions (which is the this
15491          pointer) as artificial.  We obtain this information from
15492          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15493       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15494         fnp->voffset = VOFFSET_STATIC;
15495     }
15496   else
15497     complaint (_("member function type missing for '%s'"),
15498                dwarf2_full_name (fieldname, die, cu));
15499
15500   /* Get fcontext from DW_AT_containing_type if present.  */
15501   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15502     fnp->fcontext = die_containing_type (die, cu);
15503
15504   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15505      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15506
15507   /* Get accessibility.  */
15508   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15509   if (attr)
15510     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15511   else
15512     accessibility = dwarf2_default_access_attribute (die, cu);
15513   switch (accessibility)
15514     {
15515     case DW_ACCESS_private:
15516       fnp->is_private = 1;
15517       break;
15518     case DW_ACCESS_protected:
15519       fnp->is_protected = 1;
15520       break;
15521     }
15522
15523   /* Check for artificial methods.  */
15524   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15525   if (attr && DW_UNSND (attr) != 0)
15526     fnp->is_artificial = 1;
15527
15528   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15529
15530   /* Get index in virtual function table if it is a virtual member
15531      function.  For older versions of GCC, this is an offset in the
15532      appropriate virtual table, as specified by DW_AT_containing_type.
15533      For everyone else, it is an expression to be evaluated relative
15534      to the object address.  */
15535
15536   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15537   if (attr)
15538     {
15539       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15540         {
15541           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15542             {
15543               /* Old-style GCC.  */
15544               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15545             }
15546           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15547                    || (DW_BLOCK (attr)->size > 1
15548                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15549                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15550             {
15551               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15552               if ((fnp->voffset % cu->header.addr_size) != 0)
15553                 dwarf2_complex_location_expr_complaint ();
15554               else
15555                 fnp->voffset /= cu->header.addr_size;
15556               fnp->voffset += 2;
15557             }
15558           else
15559             dwarf2_complex_location_expr_complaint ();
15560
15561           if (!fnp->fcontext)
15562             {
15563               /* If there is no `this' field and no DW_AT_containing_type,
15564                  we cannot actually find a base class context for the
15565                  vtable!  */
15566               if (TYPE_NFIELDS (this_type) == 0
15567                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15568                 {
15569                   complaint (_("cannot determine context for virtual member "
15570                                "function \"%s\" (offset %s)"),
15571                              fieldname, sect_offset_str (die->sect_off));
15572                 }
15573               else
15574                 {
15575                   fnp->fcontext
15576                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15577                 }
15578             }
15579         }
15580       else if (attr_form_is_section_offset (attr))
15581         {
15582           dwarf2_complex_location_expr_complaint ();
15583         }
15584       else
15585         {
15586           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15587                                                  fieldname);
15588         }
15589     }
15590   else
15591     {
15592       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15593       if (attr && DW_UNSND (attr))
15594         {
15595           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15596           complaint (_("Member function \"%s\" (offset %s) is virtual "
15597                        "but the vtable offset is not specified"),
15598                      fieldname, sect_offset_str (die->sect_off));
15599           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15600           TYPE_CPLUS_DYNAMIC (type) = 1;
15601         }
15602     }
15603 }
15604
15605 /* Create the vector of member function fields, and attach it to the type.  */
15606
15607 static void
15608 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15609                                  struct dwarf2_cu *cu)
15610 {
15611   if (cu->language == language_ada)
15612     error (_("unexpected member functions in Ada type"));
15613
15614   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15615   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15616     TYPE_ALLOC (type,
15617                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15618
15619   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15620     {
15621       struct fnfieldlist &nf = fip->fnfieldlists[i];
15622       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15623
15624       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15625       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15626       fn_flp->fn_fields = (struct fn_field *)
15627         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15628
15629       for (int k = 0; k < nf.fnfields.size (); ++k)
15630         fn_flp->fn_fields[k] = nf.fnfields[k];
15631     }
15632
15633   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15634 }
15635
15636 /* Returns non-zero if NAME is the name of a vtable member in CU's
15637    language, zero otherwise.  */
15638 static int
15639 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15640 {
15641   static const char vptr[] = "_vptr";
15642
15643   /* Look for the C++ form of the vtable.  */
15644   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15645     return 1;
15646
15647   return 0;
15648 }
15649
15650 /* GCC outputs unnamed structures that are really pointers to member
15651    functions, with the ABI-specified layout.  If TYPE describes
15652    such a structure, smash it into a member function type.
15653
15654    GCC shouldn't do this; it should just output pointer to member DIEs.
15655    This is GCC PR debug/28767.  */
15656
15657 static void
15658 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15659 {
15660   struct type *pfn_type, *self_type, *new_type;
15661
15662   /* Check for a structure with no name and two children.  */
15663   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15664     return;
15665
15666   /* Check for __pfn and __delta members.  */
15667   if (TYPE_FIELD_NAME (type, 0) == NULL
15668       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15669       || TYPE_FIELD_NAME (type, 1) == NULL
15670       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15671     return;
15672
15673   /* Find the type of the method.  */
15674   pfn_type = TYPE_FIELD_TYPE (type, 0);
15675   if (pfn_type == NULL
15676       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15677       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15678     return;
15679
15680   /* Look for the "this" argument.  */
15681   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15682   if (TYPE_NFIELDS (pfn_type) == 0
15683       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15684       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15685     return;
15686
15687   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15688   new_type = alloc_type (objfile);
15689   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15690                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15691                         TYPE_VARARGS (pfn_type));
15692   smash_to_methodptr_type (type, new_type);
15693 }
15694
15695 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15696    appropriate error checking and issuing complaints if there is a
15697    problem.  */
15698
15699 static ULONGEST
15700 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15701 {
15702   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15703
15704   if (attr == nullptr)
15705     return 0;
15706
15707   if (!attr_form_is_constant (attr))
15708     {
15709       complaint (_("DW_AT_alignment must have constant form"
15710                    " - DIE at %s [in module %s]"),
15711                  sect_offset_str (die->sect_off),
15712                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15713       return 0;
15714     }
15715
15716   ULONGEST align;
15717   if (attr->form == DW_FORM_sdata)
15718     {
15719       LONGEST val = DW_SND (attr);
15720       if (val < 0)
15721         {
15722           complaint (_("DW_AT_alignment value must not be negative"
15723                        " - DIE at %s [in module %s]"),
15724                      sect_offset_str (die->sect_off),
15725                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15726           return 0;
15727         }
15728       align = val;
15729     }
15730   else
15731     align = DW_UNSND (attr);
15732
15733   if (align == 0)
15734     {
15735       complaint (_("DW_AT_alignment value must not be zero"
15736                    " - DIE at %s [in module %s]"),
15737                  sect_offset_str (die->sect_off),
15738                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15739       return 0;
15740     }
15741   if ((align & (align - 1)) != 0)
15742     {
15743       complaint (_("DW_AT_alignment value must be a power of 2"
15744                    " - DIE at %s [in module %s]"),
15745                  sect_offset_str (die->sect_off),
15746                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15747       return 0;
15748     }
15749
15750   return align;
15751 }
15752
15753 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15754    the alignment for TYPE.  */
15755
15756 static void
15757 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15758                      struct type *type)
15759 {
15760   if (!set_type_align (type, get_alignment (cu, die)))
15761     complaint (_("DW_AT_alignment value too large"
15762                  " - DIE at %s [in module %s]"),
15763                sect_offset_str (die->sect_off),
15764                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15765 }
15766
15767 /* Called when we find the DIE that starts a structure or union scope
15768    (definition) to create a type for the structure or union.  Fill in
15769    the type's name and general properties; the members will not be
15770    processed until process_structure_scope.  A symbol table entry for
15771    the type will also not be done until process_structure_scope (assuming
15772    the type has a name).
15773
15774    NOTE: we need to call these functions regardless of whether or not the
15775    DIE has a DW_AT_name attribute, since it might be an anonymous
15776    structure or union.  This gets the type entered into our set of
15777    user defined types.  */
15778
15779 static struct type *
15780 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15781 {
15782   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15783   struct type *type;
15784   struct attribute *attr;
15785   const char *name;
15786
15787   /* If the definition of this type lives in .debug_types, read that type.
15788      Don't follow DW_AT_specification though, that will take us back up
15789      the chain and we want to go down.  */
15790   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15791   if (attr)
15792     {
15793       type = get_DW_AT_signature_type (die, attr, cu);
15794
15795       /* The type's CU may not be the same as CU.
15796          Ensure TYPE is recorded with CU in die_type_hash.  */
15797       return set_die_type (die, type, cu);
15798     }
15799
15800   type = alloc_type (objfile);
15801   INIT_CPLUS_SPECIFIC (type);
15802
15803   name = dwarf2_name (die, cu);
15804   if (name != NULL)
15805     {
15806       if (cu->language == language_cplus
15807           || cu->language == language_d
15808           || cu->language == language_rust)
15809         {
15810           const char *full_name = dwarf2_full_name (name, die, cu);
15811
15812           /* dwarf2_full_name might have already finished building the DIE's
15813              type.  If so, there is no need to continue.  */
15814           if (get_die_type (die, cu) != NULL)
15815             return get_die_type (die, cu);
15816
15817           TYPE_NAME (type) = full_name;
15818         }
15819       else
15820         {
15821           /* The name is already allocated along with this objfile, so
15822              we don't need to duplicate it for the type.  */
15823           TYPE_NAME (type) = name;
15824         }
15825     }
15826
15827   if (die->tag == DW_TAG_structure_type)
15828     {
15829       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15830     }
15831   else if (die->tag == DW_TAG_union_type)
15832     {
15833       TYPE_CODE (type) = TYPE_CODE_UNION;
15834     }
15835   else if (die->tag == DW_TAG_variant_part)
15836     {
15837       TYPE_CODE (type) = TYPE_CODE_UNION;
15838       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15839     }
15840   else
15841     {
15842       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15843     }
15844
15845   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15846     TYPE_DECLARED_CLASS (type) = 1;
15847
15848   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15849   if (attr)
15850     {
15851       if (attr_form_is_constant (attr))
15852         TYPE_LENGTH (type) = DW_UNSND (attr);
15853       else
15854         {
15855           /* For the moment, dynamic type sizes are not supported
15856              by GDB's struct type.  The actual size is determined
15857              on-demand when resolving the type of a given object,
15858              so set the type's length to zero for now.  Otherwise,
15859              we record an expression as the length, and that expression
15860              could lead to a very large value, which could eventually
15861              lead to us trying to allocate that much memory when creating
15862              a value of that type.  */
15863           TYPE_LENGTH (type) = 0;
15864         }
15865     }
15866   else
15867     {
15868       TYPE_LENGTH (type) = 0;
15869     }
15870
15871   maybe_set_alignment (cu, die, type);
15872
15873   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15874     {
15875       /* ICC<14 does not output the required DW_AT_declaration on
15876          incomplete types, but gives them a size of zero.  */
15877       TYPE_STUB (type) = 1;
15878     }
15879   else
15880     TYPE_STUB_SUPPORTED (type) = 1;
15881
15882   if (die_is_declaration (die, cu))
15883     TYPE_STUB (type) = 1;
15884   else if (attr == NULL && die->child == NULL
15885            && producer_is_realview (cu->producer))
15886     /* RealView does not output the required DW_AT_declaration
15887        on incomplete types.  */
15888     TYPE_STUB (type) = 1;
15889
15890   /* We need to add the type field to the die immediately so we don't
15891      infinitely recurse when dealing with pointers to the structure
15892      type within the structure itself.  */
15893   set_die_type (die, type, cu);
15894
15895   /* set_die_type should be already done.  */
15896   set_descriptive_type (type, die, cu);
15897
15898   return type;
15899 }
15900
15901 /* A helper for process_structure_scope that handles a single member
15902    DIE.  */
15903
15904 static void
15905 handle_struct_member_die (struct die_info *child_die, struct type *type,
15906                           struct field_info *fi,
15907                           std::vector<struct symbol *> *template_args,
15908                           struct dwarf2_cu *cu)
15909 {
15910   if (child_die->tag == DW_TAG_member
15911       || child_die->tag == DW_TAG_variable
15912       || child_die->tag == DW_TAG_variant_part)
15913     {
15914       /* NOTE: carlton/2002-11-05: A C++ static data member
15915          should be a DW_TAG_member that is a declaration, but
15916          all versions of G++ as of this writing (so through at
15917          least 3.2.1) incorrectly generate DW_TAG_variable
15918          tags for them instead.  */
15919       dwarf2_add_field (fi, child_die, cu);
15920     }
15921   else if (child_die->tag == DW_TAG_subprogram)
15922     {
15923       /* Rust doesn't have member functions in the C++ sense.
15924          However, it does emit ordinary functions as children
15925          of a struct DIE.  */
15926       if (cu->language == language_rust)
15927         read_func_scope (child_die, cu);
15928       else
15929         {
15930           /* C++ member function.  */
15931           dwarf2_add_member_fn (fi, child_die, type, cu);
15932         }
15933     }
15934   else if (child_die->tag == DW_TAG_inheritance)
15935     {
15936       /* C++ base class field.  */
15937       dwarf2_add_field (fi, child_die, cu);
15938     }
15939   else if (type_can_define_types (child_die))
15940     dwarf2_add_type_defn (fi, child_die, cu);
15941   else if (child_die->tag == DW_TAG_template_type_param
15942            || child_die->tag == DW_TAG_template_value_param)
15943     {
15944       struct symbol *arg = new_symbol (child_die, NULL, cu);
15945
15946       if (arg != NULL)
15947         template_args->push_back (arg);
15948     }
15949   else if (child_die->tag == DW_TAG_variant)
15950     {
15951       /* In a variant we want to get the discriminant and also add a
15952          field for our sole member child.  */
15953       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15954
15955       for (struct die_info *variant_child = child_die->child;
15956            variant_child != NULL;
15957            variant_child = sibling_die (variant_child))
15958         {
15959           if (variant_child->tag == DW_TAG_member)
15960             {
15961               handle_struct_member_die (variant_child, type, fi,
15962                                         template_args, cu);
15963               /* Only handle the one.  */
15964               break;
15965             }
15966         }
15967
15968       /* We don't handle this but we might as well report it if we see
15969          it.  */
15970       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15971           complaint (_("DW_AT_discr_list is not supported yet"
15972                        " - DIE at %s [in module %s]"),
15973                      sect_offset_str (child_die->sect_off),
15974                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15975
15976       /* The first field was just added, so we can stash the
15977          discriminant there.  */
15978       gdb_assert (!fi->fields.empty ());
15979       if (discr == NULL)
15980         fi->fields.back ().variant.default_branch = true;
15981       else
15982         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15983     }
15984 }
15985
15986 /* Finish creating a structure or union type, including filling in
15987    its members and creating a symbol for it.  */
15988
15989 static void
15990 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15991 {
15992   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15993   struct die_info *child_die;
15994   struct type *type;
15995
15996   type = get_die_type (die, cu);
15997   if (type == NULL)
15998     type = read_structure_type (die, cu);
15999
16000   /* When reading a DW_TAG_variant_part, we need to notice when we
16001      read the discriminant member, so we can record it later in the
16002      discriminant_info.  */
16003   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
16004   sect_offset discr_offset;
16005   bool has_template_parameters = false;
16006
16007   if (is_variant_part)
16008     {
16009       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
16010       if (discr == NULL)
16011         {
16012           /* Maybe it's a univariant form, an extension we support.
16013              In this case arrange not to check the offset.  */
16014           is_variant_part = false;
16015         }
16016       else if (attr_form_is_ref (discr))
16017         {
16018           struct dwarf2_cu *target_cu = cu;
16019           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16020
16021           discr_offset = target_die->sect_off;
16022         }
16023       else
16024         {
16025           complaint (_("DW_AT_discr does not have DIE reference form"
16026                        " - DIE at %s [in module %s]"),
16027                      sect_offset_str (die->sect_off),
16028                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16029           is_variant_part = false;
16030         }
16031     }
16032
16033   if (die->child != NULL && ! die_is_declaration (die, cu))
16034     {
16035       struct field_info fi;
16036       std::vector<struct symbol *> template_args;
16037
16038       child_die = die->child;
16039
16040       while (child_die && child_die->tag)
16041         {
16042           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16043
16044           if (is_variant_part && discr_offset == child_die->sect_off)
16045             fi.fields.back ().variant.is_discriminant = true;
16046
16047           child_die = sibling_die (child_die);
16048         }
16049
16050       /* Attach template arguments to type.  */
16051       if (!template_args.empty ())
16052         {
16053           has_template_parameters = true;
16054           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16055           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16056           TYPE_TEMPLATE_ARGUMENTS (type)
16057             = XOBNEWVEC (&objfile->objfile_obstack,
16058                          struct symbol *,
16059                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16060           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16061                   template_args.data (),
16062                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16063                    * sizeof (struct symbol *)));
16064         }
16065
16066       /* Attach fields and member functions to the type.  */
16067       if (fi.nfields)
16068         dwarf2_attach_fields_to_type (&fi, type, cu);
16069       if (!fi.fnfieldlists.empty ())
16070         {
16071           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16072
16073           /* Get the type which refers to the base class (possibly this
16074              class itself) which contains the vtable pointer for the current
16075              class from the DW_AT_containing_type attribute.  This use of
16076              DW_AT_containing_type is a GNU extension.  */
16077
16078           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16079             {
16080               struct type *t = die_containing_type (die, cu);
16081
16082               set_type_vptr_basetype (type, t);
16083               if (type == t)
16084                 {
16085                   int i;
16086
16087                   /* Our own class provides vtbl ptr.  */
16088                   for (i = TYPE_NFIELDS (t) - 1;
16089                        i >= TYPE_N_BASECLASSES (t);
16090                        --i)
16091                     {
16092                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16093
16094                       if (is_vtable_name (fieldname, cu))
16095                         {
16096                           set_type_vptr_fieldno (type, i);
16097                           break;
16098                         }
16099                     }
16100
16101                   /* Complain if virtual function table field not found.  */
16102                   if (i < TYPE_N_BASECLASSES (t))
16103                     complaint (_("virtual function table pointer "
16104                                  "not found when defining class '%s'"),
16105                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16106                 }
16107               else
16108                 {
16109                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16110                 }
16111             }
16112           else if (cu->producer
16113                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16114             {
16115               /* The IBM XLC compiler does not provide direct indication
16116                  of the containing type, but the vtable pointer is
16117                  always named __vfp.  */
16118
16119               int i;
16120
16121               for (i = TYPE_NFIELDS (type) - 1;
16122                    i >= TYPE_N_BASECLASSES (type);
16123                    --i)
16124                 {
16125                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16126                     {
16127                       set_type_vptr_fieldno (type, i);
16128                       set_type_vptr_basetype (type, type);
16129                       break;
16130                     }
16131                 }
16132             }
16133         }
16134
16135       /* Copy fi.typedef_field_list linked list elements content into the
16136          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16137       if (!fi.typedef_field_list.empty ())
16138         {
16139           int count = fi.typedef_field_list.size ();
16140
16141           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16142           TYPE_TYPEDEF_FIELD_ARRAY (type)
16143             = ((struct decl_field *)
16144                TYPE_ALLOC (type,
16145                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16146           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16147
16148           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16149             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16150         }
16151
16152       /* Copy fi.nested_types_list linked list elements content into the
16153          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16154       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16155         {
16156           int count = fi.nested_types_list.size ();
16157
16158           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16159           TYPE_NESTED_TYPES_ARRAY (type)
16160             = ((struct decl_field *)
16161                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16162           TYPE_NESTED_TYPES_COUNT (type) = count;
16163
16164           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16165             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16166         }
16167     }
16168
16169   quirk_gcc_member_function_pointer (type, objfile);
16170   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16171     cu->rust_unions.push_back (type);
16172
16173   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16174      snapshots) has been known to create a die giving a declaration
16175      for a class that has, as a child, a die giving a definition for a
16176      nested class.  So we have to process our children even if the
16177      current die is a declaration.  Normally, of course, a declaration
16178      won't have any children at all.  */
16179
16180   child_die = die->child;
16181
16182   while (child_die != NULL && child_die->tag)
16183     {
16184       if (child_die->tag == DW_TAG_member
16185           || child_die->tag == DW_TAG_variable
16186           || child_die->tag == DW_TAG_inheritance
16187           || child_die->tag == DW_TAG_template_value_param
16188           || child_die->tag == DW_TAG_template_type_param)
16189         {
16190           /* Do nothing.  */
16191         }
16192       else
16193         process_die (child_die, cu);
16194
16195       child_die = sibling_die (child_die);
16196     }
16197
16198   /* Do not consider external references.  According to the DWARF standard,
16199      these DIEs are identified by the fact that they have no byte_size
16200      attribute, and a declaration attribute.  */
16201   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16202       || !die_is_declaration (die, cu))
16203     {
16204       struct symbol *sym = new_symbol (die, type, cu);
16205
16206       if (has_template_parameters)
16207         {
16208           /* Make sure that the symtab is set on the new symbols.
16209              Even though they don't appear in this symtab directly,
16210              other parts of gdb assume that symbols do, and this is
16211              reasonably true.  */
16212           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16213             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16214                                symbol_symtab (sym));
16215         }
16216     }
16217 }
16218
16219 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16220    update TYPE using some information only available in DIE's children.  */
16221
16222 static void
16223 update_enumeration_type_from_children (struct die_info *die,
16224                                        struct type *type,
16225                                        struct dwarf2_cu *cu)
16226 {
16227   struct die_info *child_die;
16228   int unsigned_enum = 1;
16229   int flag_enum = 1;
16230   ULONGEST mask = 0;
16231
16232   auto_obstack obstack;
16233
16234   for (child_die = die->child;
16235        child_die != NULL && child_die->tag;
16236        child_die = sibling_die (child_die))
16237     {
16238       struct attribute *attr;
16239       LONGEST value;
16240       const gdb_byte *bytes;
16241       struct dwarf2_locexpr_baton *baton;
16242       const char *name;
16243
16244       if (child_die->tag != DW_TAG_enumerator)
16245         continue;
16246
16247       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16248       if (attr == NULL)
16249         continue;
16250
16251       name = dwarf2_name (child_die, cu);
16252       if (name == NULL)
16253         name = "<anonymous enumerator>";
16254
16255       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16256                                &value, &bytes, &baton);
16257       if (value < 0)
16258         {
16259           unsigned_enum = 0;
16260           flag_enum = 0;
16261         }
16262       else if ((mask & value) != 0)
16263         flag_enum = 0;
16264       else
16265         mask |= value;
16266
16267       /* If we already know that the enum type is neither unsigned, nor
16268          a flag type, no need to look at the rest of the enumerates.  */
16269       if (!unsigned_enum && !flag_enum)
16270         break;
16271     }
16272
16273   if (unsigned_enum)
16274     TYPE_UNSIGNED (type) = 1;
16275   if (flag_enum)
16276     TYPE_FLAG_ENUM (type) = 1;
16277 }
16278
16279 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16280    complete the type's fields yet, or create any symbols.  */
16281
16282 static struct type *
16283 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16284 {
16285   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16286   struct type *type;
16287   struct attribute *attr;
16288   const char *name;
16289
16290   /* If the definition of this type lives in .debug_types, read that type.
16291      Don't follow DW_AT_specification though, that will take us back up
16292      the chain and we want to go down.  */
16293   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16294   if (attr)
16295     {
16296       type = get_DW_AT_signature_type (die, attr, cu);
16297
16298       /* The type's CU may not be the same as CU.
16299          Ensure TYPE is recorded with CU in die_type_hash.  */
16300       return set_die_type (die, type, cu);
16301     }
16302
16303   type = alloc_type (objfile);
16304
16305   TYPE_CODE (type) = TYPE_CODE_ENUM;
16306   name = dwarf2_full_name (NULL, die, cu);
16307   if (name != NULL)
16308     TYPE_NAME (type) = name;
16309
16310   attr = dwarf2_attr (die, DW_AT_type, cu);
16311   if (attr != NULL)
16312     {
16313       struct type *underlying_type = die_type (die, cu);
16314
16315       TYPE_TARGET_TYPE (type) = underlying_type;
16316     }
16317
16318   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16319   if (attr)
16320     {
16321       TYPE_LENGTH (type) = DW_UNSND (attr);
16322     }
16323   else
16324     {
16325       TYPE_LENGTH (type) = 0;
16326     }
16327
16328   maybe_set_alignment (cu, die, type);
16329
16330   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16331      declared as private in the package spec, and then defined only
16332      inside the package body.  Such types are known as Taft Amendment
16333      Types.  When another package uses such a type, an incomplete DIE
16334      may be generated by the compiler.  */
16335   if (die_is_declaration (die, cu))
16336     TYPE_STUB (type) = 1;
16337
16338   /* Finish the creation of this type by using the enum's children.
16339      We must call this even when the underlying type has been provided
16340      so that we can determine if we're looking at a "flag" enum.  */
16341   update_enumeration_type_from_children (die, type, cu);
16342
16343   /* If this type has an underlying type that is not a stub, then we
16344      may use its attributes.  We always use the "unsigned" attribute
16345      in this situation, because ordinarily we guess whether the type
16346      is unsigned -- but the guess can be wrong and the underlying type
16347      can tell us the reality.  However, we defer to a local size
16348      attribute if one exists, because this lets the compiler override
16349      the underlying type if needed.  */
16350   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16351     {
16352       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16353       if (TYPE_LENGTH (type) == 0)
16354         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16355       if (TYPE_RAW_ALIGN (type) == 0
16356           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16357         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16358     }
16359
16360   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16361
16362   return set_die_type (die, type, cu);
16363 }
16364
16365 /* Given a pointer to a die which begins an enumeration, process all
16366    the dies that define the members of the enumeration, and create the
16367    symbol for the enumeration type.
16368
16369    NOTE: We reverse the order of the element list.  */
16370
16371 static void
16372 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16373 {
16374   struct type *this_type;
16375
16376   this_type = get_die_type (die, cu);
16377   if (this_type == NULL)
16378     this_type = read_enumeration_type (die, cu);
16379
16380   if (die->child != NULL)
16381     {
16382       struct die_info *child_die;
16383       struct symbol *sym;
16384       struct field *fields = NULL;
16385       int num_fields = 0;
16386       const char *name;
16387
16388       child_die = die->child;
16389       while (child_die && child_die->tag)
16390         {
16391           if (child_die->tag != DW_TAG_enumerator)
16392             {
16393               process_die (child_die, cu);
16394             }
16395           else
16396             {
16397               name = dwarf2_name (child_die, cu);
16398               if (name)
16399                 {
16400                   sym = new_symbol (child_die, this_type, cu);
16401
16402                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16403                     {
16404                       fields = (struct field *)
16405                         xrealloc (fields,
16406                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16407                                   * sizeof (struct field));
16408                     }
16409
16410                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16411                   FIELD_TYPE (fields[num_fields]) = NULL;
16412                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16413                   FIELD_BITSIZE (fields[num_fields]) = 0;
16414
16415                   num_fields++;
16416                 }
16417             }
16418
16419           child_die = sibling_die (child_die);
16420         }
16421
16422       if (num_fields)
16423         {
16424           TYPE_NFIELDS (this_type) = num_fields;
16425           TYPE_FIELDS (this_type) = (struct field *)
16426             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16427           memcpy (TYPE_FIELDS (this_type), fields,
16428                   sizeof (struct field) * num_fields);
16429           xfree (fields);
16430         }
16431     }
16432
16433   /* If we are reading an enum from a .debug_types unit, and the enum
16434      is a declaration, and the enum is not the signatured type in the
16435      unit, then we do not want to add a symbol for it.  Adding a
16436      symbol would in some cases obscure the true definition of the
16437      enum, giving users an incomplete type when the definition is
16438      actually available.  Note that we do not want to do this for all
16439      enums which are just declarations, because C++0x allows forward
16440      enum declarations.  */
16441   if (cu->per_cu->is_debug_types
16442       && die_is_declaration (die, cu))
16443     {
16444       struct signatured_type *sig_type;
16445
16446       sig_type = (struct signatured_type *) cu->per_cu;
16447       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16448       if (sig_type->type_offset_in_section != die->sect_off)
16449         return;
16450     }
16451
16452   new_symbol (die, this_type, cu);
16453 }
16454
16455 /* Extract all information from a DW_TAG_array_type DIE and put it in
16456    the DIE's type field.  For now, this only handles one dimensional
16457    arrays.  */
16458
16459 static struct type *
16460 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16461 {
16462   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16463   struct die_info *child_die;
16464   struct type *type;
16465   struct type *element_type, *range_type, *index_type;
16466   struct attribute *attr;
16467   const char *name;
16468   struct dynamic_prop *byte_stride_prop = NULL;
16469   unsigned int bit_stride = 0;
16470
16471   element_type = die_type (die, cu);
16472
16473   /* The die_type call above may have already set the type for this DIE.  */
16474   type = get_die_type (die, cu);
16475   if (type)
16476     return type;
16477
16478   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16479   if (attr != NULL)
16480     {
16481       int stride_ok;
16482
16483       byte_stride_prop
16484         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16485       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16486       if (!stride_ok)
16487         {
16488           complaint (_("unable to read array DW_AT_byte_stride "
16489                        " - DIE at %s [in module %s]"),
16490                      sect_offset_str (die->sect_off),
16491                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16492           /* Ignore this attribute.  We will likely not be able to print
16493              arrays of this type correctly, but there is little we can do
16494              to help if we cannot read the attribute's value.  */
16495           byte_stride_prop = NULL;
16496         }
16497     }
16498
16499   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16500   if (attr != NULL)
16501     bit_stride = DW_UNSND (attr);
16502
16503   /* Irix 6.2 native cc creates array types without children for
16504      arrays with unspecified length.  */
16505   if (die->child == NULL)
16506     {
16507       index_type = objfile_type (objfile)->builtin_int;
16508       range_type = create_static_range_type (NULL, index_type, 0, -1);
16509       type = create_array_type_with_stride (NULL, element_type, range_type,
16510                                             byte_stride_prop, bit_stride);
16511       return set_die_type (die, type, cu);
16512     }
16513
16514   std::vector<struct type *> range_types;
16515   child_die = die->child;
16516   while (child_die && child_die->tag)
16517     {
16518       if (child_die->tag == DW_TAG_subrange_type)
16519         {
16520           struct type *child_type = read_type_die (child_die, cu);
16521
16522           if (child_type != NULL)
16523             {
16524               /* The range type was succesfully read.  Save it for the
16525                  array type creation.  */
16526               range_types.push_back (child_type);
16527             }
16528         }
16529       child_die = sibling_die (child_die);
16530     }
16531
16532   /* Dwarf2 dimensions are output from left to right, create the
16533      necessary array types in backwards order.  */
16534
16535   type = element_type;
16536
16537   if (read_array_order (die, cu) == DW_ORD_col_major)
16538     {
16539       int i = 0;
16540
16541       while (i < range_types.size ())
16542         type = create_array_type_with_stride (NULL, type, range_types[i++],
16543                                               byte_stride_prop, bit_stride);
16544     }
16545   else
16546     {
16547       size_t ndim = range_types.size ();
16548       while (ndim-- > 0)
16549         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16550                                               byte_stride_prop, bit_stride);
16551     }
16552
16553   /* Understand Dwarf2 support for vector types (like they occur on
16554      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16555      array type.  This is not part of the Dwarf2/3 standard yet, but a
16556      custom vendor extension.  The main difference between a regular
16557      array and the vector variant is that vectors are passed by value
16558      to functions.  */
16559   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16560   if (attr)
16561     make_vector_type (type);
16562
16563   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16564      implementation may choose to implement triple vectors using this
16565      attribute.  */
16566   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16567   if (attr)
16568     {
16569       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16570         TYPE_LENGTH (type) = DW_UNSND (attr);
16571       else
16572         complaint (_("DW_AT_byte_size for array type smaller "
16573                      "than the total size of elements"));
16574     }
16575
16576   name = dwarf2_name (die, cu);
16577   if (name)
16578     TYPE_NAME (type) = name;
16579
16580   maybe_set_alignment (cu, die, type);
16581
16582   /* Install the type in the die.  */
16583   set_die_type (die, type, cu);
16584
16585   /* set_die_type should be already done.  */
16586   set_descriptive_type (type, die, cu);
16587
16588   return type;
16589 }
16590
16591 static enum dwarf_array_dim_ordering
16592 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16593 {
16594   struct attribute *attr;
16595
16596   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16597
16598   if (attr)
16599     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16600
16601   /* GNU F77 is a special case, as at 08/2004 array type info is the
16602      opposite order to the dwarf2 specification, but data is still
16603      laid out as per normal fortran.
16604
16605      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16606      version checking.  */
16607
16608   if (cu->language == language_fortran
16609       && cu->producer && strstr (cu->producer, "GNU F77"))
16610     {
16611       return DW_ORD_row_major;
16612     }
16613
16614   switch (cu->language_defn->la_array_ordering)
16615     {
16616     case array_column_major:
16617       return DW_ORD_col_major;
16618     case array_row_major:
16619     default:
16620       return DW_ORD_row_major;
16621     };
16622 }
16623
16624 /* Extract all information from a DW_TAG_set_type DIE and put it in
16625    the DIE's type field.  */
16626
16627 static struct type *
16628 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16629 {
16630   struct type *domain_type, *set_type;
16631   struct attribute *attr;
16632
16633   domain_type = die_type (die, cu);
16634
16635   /* The die_type call above may have already set the type for this DIE.  */
16636   set_type = get_die_type (die, cu);
16637   if (set_type)
16638     return set_type;
16639
16640   set_type = create_set_type (NULL, domain_type);
16641
16642   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16643   if (attr)
16644     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16645
16646   maybe_set_alignment (cu, die, set_type);
16647
16648   return set_die_type (die, set_type, cu);
16649 }
16650
16651 /* A helper for read_common_block that creates a locexpr baton.
16652    SYM is the symbol which we are marking as computed.
16653    COMMON_DIE is the DIE for the common block.
16654    COMMON_LOC is the location expression attribute for the common
16655    block itself.
16656    MEMBER_LOC is the location expression attribute for the particular
16657    member of the common block that we are processing.
16658    CU is the CU from which the above come.  */
16659
16660 static void
16661 mark_common_block_symbol_computed (struct symbol *sym,
16662                                    struct die_info *common_die,
16663                                    struct attribute *common_loc,
16664                                    struct attribute *member_loc,
16665                                    struct dwarf2_cu *cu)
16666 {
16667   struct dwarf2_per_objfile *dwarf2_per_objfile
16668     = cu->per_cu->dwarf2_per_objfile;
16669   struct objfile *objfile = dwarf2_per_objfile->objfile;
16670   struct dwarf2_locexpr_baton *baton;
16671   gdb_byte *ptr;
16672   unsigned int cu_off;
16673   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16674   LONGEST offset = 0;
16675
16676   gdb_assert (common_loc && member_loc);
16677   gdb_assert (attr_form_is_block (common_loc));
16678   gdb_assert (attr_form_is_block (member_loc)
16679               || attr_form_is_constant (member_loc));
16680
16681   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16682   baton->per_cu = cu->per_cu;
16683   gdb_assert (baton->per_cu);
16684
16685   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16686
16687   if (attr_form_is_constant (member_loc))
16688     {
16689       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16690       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16691     }
16692   else
16693     baton->size += DW_BLOCK (member_loc)->size;
16694
16695   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16696   baton->data = ptr;
16697
16698   *ptr++ = DW_OP_call4;
16699   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16700   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16701   ptr += 4;
16702
16703   if (attr_form_is_constant (member_loc))
16704     {
16705       *ptr++ = DW_OP_addr;
16706       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16707       ptr += cu->header.addr_size;
16708     }
16709   else
16710     {
16711       /* We have to copy the data here, because DW_OP_call4 will only
16712          use a DW_AT_location attribute.  */
16713       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16714       ptr += DW_BLOCK (member_loc)->size;
16715     }
16716
16717   *ptr++ = DW_OP_plus;
16718   gdb_assert (ptr - baton->data == baton->size);
16719
16720   SYMBOL_LOCATION_BATON (sym) = baton;
16721   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16722 }
16723
16724 /* Create appropriate locally-scoped variables for all the
16725    DW_TAG_common_block entries.  Also create a struct common_block
16726    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16727    is used to sepate the common blocks name namespace from regular
16728    variable names.  */
16729
16730 static void
16731 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16732 {
16733   struct attribute *attr;
16734
16735   attr = dwarf2_attr (die, DW_AT_location, cu);
16736   if (attr)
16737     {
16738       /* Support the .debug_loc offsets.  */
16739       if (attr_form_is_block (attr))
16740         {
16741           /* Ok.  */
16742         }
16743       else if (attr_form_is_section_offset (attr))
16744         {
16745           dwarf2_complex_location_expr_complaint ();
16746           attr = NULL;
16747         }
16748       else
16749         {
16750           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16751                                                  "common block member");
16752           attr = NULL;
16753         }
16754     }
16755
16756   if (die->child != NULL)
16757     {
16758       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16759       struct die_info *child_die;
16760       size_t n_entries = 0, size;
16761       struct common_block *common_block;
16762       struct symbol *sym;
16763
16764       for (child_die = die->child;
16765            child_die && child_die->tag;
16766            child_die = sibling_die (child_die))
16767         ++n_entries;
16768
16769       size = (sizeof (struct common_block)
16770               + (n_entries - 1) * sizeof (struct symbol *));
16771       common_block
16772         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16773                                                  size);
16774       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16775       common_block->n_entries = 0;
16776
16777       for (child_die = die->child;
16778            child_die && child_die->tag;
16779            child_die = sibling_die (child_die))
16780         {
16781           /* Create the symbol in the DW_TAG_common_block block in the current
16782              symbol scope.  */
16783           sym = new_symbol (child_die, NULL, cu);
16784           if (sym != NULL)
16785             {
16786               struct attribute *member_loc;
16787
16788               common_block->contents[common_block->n_entries++] = sym;
16789
16790               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16791                                         cu);
16792               if (member_loc)
16793                 {
16794                   /* GDB has handled this for a long time, but it is
16795                      not specified by DWARF.  It seems to have been
16796                      emitted by gfortran at least as recently as:
16797                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16798                   complaint (_("Variable in common block has "
16799                                "DW_AT_data_member_location "
16800                                "- DIE at %s [in module %s]"),
16801                                sect_offset_str (child_die->sect_off),
16802                              objfile_name (objfile));
16803
16804                   if (attr_form_is_section_offset (member_loc))
16805                     dwarf2_complex_location_expr_complaint ();
16806                   else if (attr_form_is_constant (member_loc)
16807                            || attr_form_is_block (member_loc))
16808                     {
16809                       if (attr)
16810                         mark_common_block_symbol_computed (sym, die, attr,
16811                                                            member_loc, cu);
16812                     }
16813                   else
16814                     dwarf2_complex_location_expr_complaint ();
16815                 }
16816             }
16817         }
16818
16819       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16820       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16821     }
16822 }
16823
16824 /* Create a type for a C++ namespace.  */
16825
16826 static struct type *
16827 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16828 {
16829   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16830   const char *previous_prefix, *name;
16831   int is_anonymous;
16832   struct type *type;
16833
16834   /* For extensions, reuse the type of the original namespace.  */
16835   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16836     {
16837       struct die_info *ext_die;
16838       struct dwarf2_cu *ext_cu = cu;
16839
16840       ext_die = dwarf2_extension (die, &ext_cu);
16841       type = read_type_die (ext_die, ext_cu);
16842
16843       /* EXT_CU may not be the same as CU.
16844          Ensure TYPE is recorded with CU in die_type_hash.  */
16845       return set_die_type (die, type, cu);
16846     }
16847
16848   name = namespace_name (die, &is_anonymous, cu);
16849
16850   /* Now build the name of the current namespace.  */
16851
16852   previous_prefix = determine_prefix (die, cu);
16853   if (previous_prefix[0] != '\0')
16854     name = typename_concat (&objfile->objfile_obstack,
16855                             previous_prefix, name, 0, cu);
16856
16857   /* Create the type.  */
16858   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16859
16860   return set_die_type (die, type, cu);
16861 }
16862
16863 /* Read a namespace scope.  */
16864
16865 static void
16866 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16867 {
16868   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16869   int is_anonymous;
16870
16871   /* Add a symbol associated to this if we haven't seen the namespace
16872      before.  Also, add a using directive if it's an anonymous
16873      namespace.  */
16874
16875   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16876     {
16877       struct type *type;
16878
16879       type = read_type_die (die, cu);
16880       new_symbol (die, type, cu);
16881
16882       namespace_name (die, &is_anonymous, cu);
16883       if (is_anonymous)
16884         {
16885           const char *previous_prefix = determine_prefix (die, cu);
16886
16887           std::vector<const char *> excludes;
16888           add_using_directive (using_directives (cu),
16889                                previous_prefix, TYPE_NAME (type), NULL,
16890                                NULL, excludes, 0, &objfile->objfile_obstack);
16891         }
16892     }
16893
16894   if (die->child != NULL)
16895     {
16896       struct die_info *child_die = die->child;
16897
16898       while (child_die && child_die->tag)
16899         {
16900           process_die (child_die, cu);
16901           child_die = sibling_die (child_die);
16902         }
16903     }
16904 }
16905
16906 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16907    imported module.  Still we need that type as local Fortran "use ... only"
16908    declaration imports depend on the created type in determine_prefix.  */
16909
16910 static struct type *
16911 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16912 {
16913   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16914   const char *module_name;
16915   struct type *type;
16916
16917   module_name = dwarf2_name (die, cu);
16918   if (!module_name)
16919     complaint (_("DW_TAG_module has no name, offset %s"),
16920                sect_offset_str (die->sect_off));
16921   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16922
16923   return set_die_type (die, type, cu);
16924 }
16925
16926 /* Read a Fortran module.  */
16927
16928 static void
16929 read_module (struct die_info *die, struct dwarf2_cu *cu)
16930 {
16931   struct die_info *child_die = die->child;
16932   struct type *type;
16933
16934   type = read_type_die (die, cu);
16935   new_symbol (die, type, cu);
16936
16937   while (child_die && child_die->tag)
16938     {
16939       process_die (child_die, cu);
16940       child_die = sibling_die (child_die);
16941     }
16942 }
16943
16944 /* Return the name of the namespace represented by DIE.  Set
16945    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16946    namespace.  */
16947
16948 static const char *
16949 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16950 {
16951   struct die_info *current_die;
16952   const char *name = NULL;
16953
16954   /* Loop through the extensions until we find a name.  */
16955
16956   for (current_die = die;
16957        current_die != NULL;
16958        current_die = dwarf2_extension (die, &cu))
16959     {
16960       /* We don't use dwarf2_name here so that we can detect the absence
16961          of a name -> anonymous namespace.  */
16962       name = dwarf2_string_attr (die, DW_AT_name, cu);
16963
16964       if (name != NULL)
16965         break;
16966     }
16967
16968   /* Is it an anonymous namespace?  */
16969
16970   *is_anonymous = (name == NULL);
16971   if (*is_anonymous)
16972     name = CP_ANONYMOUS_NAMESPACE_STR;
16973
16974   return name;
16975 }
16976
16977 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16978    the user defined type vector.  */
16979
16980 static struct type *
16981 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16982 {
16983   struct gdbarch *gdbarch
16984     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16985   struct comp_unit_head *cu_header = &cu->header;
16986   struct type *type;
16987   struct attribute *attr_byte_size;
16988   struct attribute *attr_address_class;
16989   int byte_size, addr_class;
16990   struct type *target_type;
16991
16992   target_type = die_type (die, cu);
16993
16994   /* The die_type call above may have already set the type for this DIE.  */
16995   type = get_die_type (die, cu);
16996   if (type)
16997     return type;
16998
16999   type = lookup_pointer_type (target_type);
17000
17001   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
17002   if (attr_byte_size)
17003     byte_size = DW_UNSND (attr_byte_size);
17004   else
17005     byte_size = cu_header->addr_size;
17006
17007   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
17008   if (attr_address_class)
17009     addr_class = DW_UNSND (attr_address_class);
17010   else
17011     addr_class = DW_ADDR_none;
17012
17013   ULONGEST alignment = get_alignment (cu, die);
17014
17015   /* If the pointer size, alignment, or address class is different
17016      than the default, create a type variant marked as such and set
17017      the length accordingly.  */
17018   if (TYPE_LENGTH (type) != byte_size
17019       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17020           && alignment != TYPE_RAW_ALIGN (type))
17021       || addr_class != DW_ADDR_none)
17022     {
17023       if (gdbarch_address_class_type_flags_p (gdbarch))
17024         {
17025           int type_flags;
17026
17027           type_flags = gdbarch_address_class_type_flags
17028                          (gdbarch, byte_size, addr_class);
17029           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17030                       == 0);
17031           type = make_type_with_address_space (type, type_flags);
17032         }
17033       else if (TYPE_LENGTH (type) != byte_size)
17034         {
17035           complaint (_("invalid pointer size %d"), byte_size);
17036         }
17037       else if (TYPE_RAW_ALIGN (type) != alignment)
17038         {
17039           complaint (_("Invalid DW_AT_alignment"
17040                        " - DIE at %s [in module %s]"),
17041                      sect_offset_str (die->sect_off),
17042                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17043         }
17044       else
17045         {
17046           /* Should we also complain about unhandled address classes?  */
17047         }
17048     }
17049
17050   TYPE_LENGTH (type) = byte_size;
17051   set_type_align (type, alignment);
17052   return set_die_type (die, type, cu);
17053 }
17054
17055 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17056    the user defined type vector.  */
17057
17058 static struct type *
17059 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17060 {
17061   struct type *type;
17062   struct type *to_type;
17063   struct type *domain;
17064
17065   to_type = die_type (die, cu);
17066   domain = die_containing_type (die, cu);
17067
17068   /* The calls above may have already set the type for this DIE.  */
17069   type = get_die_type (die, cu);
17070   if (type)
17071     return type;
17072
17073   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17074     type = lookup_methodptr_type (to_type);
17075   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17076     {
17077       struct type *new_type
17078         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17079
17080       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17081                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17082                             TYPE_VARARGS (to_type));
17083       type = lookup_methodptr_type (new_type);
17084     }
17085   else
17086     type = lookup_memberptr_type (to_type, domain);
17087
17088   return set_die_type (die, type, cu);
17089 }
17090
17091 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17092    the user defined type vector.  */
17093
17094 static struct type *
17095 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17096                           enum type_code refcode)
17097 {
17098   struct comp_unit_head *cu_header = &cu->header;
17099   struct type *type, *target_type;
17100   struct attribute *attr;
17101
17102   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17103
17104   target_type = die_type (die, cu);
17105
17106   /* The die_type call above may have already set the type for this DIE.  */
17107   type = get_die_type (die, cu);
17108   if (type)
17109     return type;
17110
17111   type = lookup_reference_type (target_type, refcode);
17112   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17113   if (attr)
17114     {
17115       TYPE_LENGTH (type) = DW_UNSND (attr);
17116     }
17117   else
17118     {
17119       TYPE_LENGTH (type) = cu_header->addr_size;
17120     }
17121   maybe_set_alignment (cu, die, type);
17122   return set_die_type (die, type, cu);
17123 }
17124
17125 /* Add the given cv-qualifiers to the element type of the array.  GCC
17126    outputs DWARF type qualifiers that apply to an array, not the
17127    element type.  But GDB relies on the array element type to carry
17128    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17129    specification.  */
17130
17131 static struct type *
17132 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17133                    struct type *base_type, int cnst, int voltl)
17134 {
17135   struct type *el_type, *inner_array;
17136
17137   base_type = copy_type (base_type);
17138   inner_array = base_type;
17139
17140   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17141     {
17142       TYPE_TARGET_TYPE (inner_array) =
17143         copy_type (TYPE_TARGET_TYPE (inner_array));
17144       inner_array = TYPE_TARGET_TYPE (inner_array);
17145     }
17146
17147   el_type = TYPE_TARGET_TYPE (inner_array);
17148   cnst |= TYPE_CONST (el_type);
17149   voltl |= TYPE_VOLATILE (el_type);
17150   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17151
17152   return set_die_type (die, base_type, cu);
17153 }
17154
17155 static struct type *
17156 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17157 {
17158   struct type *base_type, *cv_type;
17159
17160   base_type = die_type (die, cu);
17161
17162   /* The die_type call above may have already set the type for this DIE.  */
17163   cv_type = get_die_type (die, cu);
17164   if (cv_type)
17165     return cv_type;
17166
17167   /* In case the const qualifier is applied to an array type, the element type
17168      is so qualified, not the array type (section 6.7.3 of C99).  */
17169   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17170     return add_array_cv_type (die, cu, base_type, 1, 0);
17171
17172   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17173   return set_die_type (die, cv_type, cu);
17174 }
17175
17176 static struct type *
17177 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17178 {
17179   struct type *base_type, *cv_type;
17180
17181   base_type = die_type (die, cu);
17182
17183   /* The die_type call above may have already set the type for this DIE.  */
17184   cv_type = get_die_type (die, cu);
17185   if (cv_type)
17186     return cv_type;
17187
17188   /* In case the volatile qualifier is applied to an array type, the
17189      element type is so qualified, not the array type (section 6.7.3
17190      of C99).  */
17191   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17192     return add_array_cv_type (die, cu, base_type, 0, 1);
17193
17194   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17195   return set_die_type (die, cv_type, cu);
17196 }
17197
17198 /* Handle DW_TAG_restrict_type.  */
17199
17200 static struct type *
17201 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17202 {
17203   struct type *base_type, *cv_type;
17204
17205   base_type = die_type (die, cu);
17206
17207   /* The die_type call above may have already set the type for this DIE.  */
17208   cv_type = get_die_type (die, cu);
17209   if (cv_type)
17210     return cv_type;
17211
17212   cv_type = make_restrict_type (base_type);
17213   return set_die_type (die, cv_type, cu);
17214 }
17215
17216 /* Handle DW_TAG_atomic_type.  */
17217
17218 static struct type *
17219 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17220 {
17221   struct type *base_type, *cv_type;
17222
17223   base_type = die_type (die, cu);
17224
17225   /* The die_type call above may have already set the type for this DIE.  */
17226   cv_type = get_die_type (die, cu);
17227   if (cv_type)
17228     return cv_type;
17229
17230   cv_type = make_atomic_type (base_type);
17231   return set_die_type (die, cv_type, cu);
17232 }
17233
17234 /* Extract all information from a DW_TAG_string_type DIE and add to
17235    the user defined type vector.  It isn't really a user defined type,
17236    but it behaves like one, with other DIE's using an AT_user_def_type
17237    attribute to reference it.  */
17238
17239 static struct type *
17240 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17241 {
17242   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17243   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17244   struct type *type, *range_type, *index_type, *char_type;
17245   struct attribute *attr;
17246   unsigned int length;
17247
17248   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17249   if (attr)
17250     {
17251       length = DW_UNSND (attr);
17252     }
17253   else
17254     {
17255       /* Check for the DW_AT_byte_size attribute.  */
17256       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17257       if (attr)
17258         {
17259           length = DW_UNSND (attr);
17260         }
17261       else
17262         {
17263           length = 1;
17264         }
17265     }
17266
17267   index_type = objfile_type (objfile)->builtin_int;
17268   range_type = create_static_range_type (NULL, index_type, 1, length);
17269   char_type = language_string_char_type (cu->language_defn, gdbarch);
17270   type = create_string_type (NULL, char_type, range_type);
17271
17272   return set_die_type (die, type, cu);
17273 }
17274
17275 /* Assuming that DIE corresponds to a function, returns nonzero
17276    if the function is prototyped.  */
17277
17278 static int
17279 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17280 {
17281   struct attribute *attr;
17282
17283   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17284   if (attr && (DW_UNSND (attr) != 0))
17285     return 1;
17286
17287   /* The DWARF standard implies that the DW_AT_prototyped attribute
17288      is only meaninful for C, but the concept also extends to other
17289      languages that allow unprototyped functions (Eg: Objective C).
17290      For all other languages, assume that functions are always
17291      prototyped.  */
17292   if (cu->language != language_c
17293       && cu->language != language_objc
17294       && cu->language != language_opencl)
17295     return 1;
17296
17297   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17298      prototyped and unprototyped functions; default to prototyped,
17299      since that is more common in modern code (and RealView warns
17300      about unprototyped functions).  */
17301   if (producer_is_realview (cu->producer))
17302     return 1;
17303
17304   return 0;
17305 }
17306
17307 /* Handle DIES due to C code like:
17308
17309    struct foo
17310    {
17311    int (*funcp)(int a, long l);
17312    int b;
17313    };
17314
17315    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17316
17317 static struct type *
17318 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17319 {
17320   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17321   struct type *type;            /* Type that this function returns.  */
17322   struct type *ftype;           /* Function that returns above type.  */
17323   struct attribute *attr;
17324
17325   type = die_type (die, cu);
17326
17327   /* The die_type call above may have already set the type for this DIE.  */
17328   ftype = get_die_type (die, cu);
17329   if (ftype)
17330     return ftype;
17331
17332   ftype = lookup_function_type (type);
17333
17334   if (prototyped_function_p (die, cu))
17335     TYPE_PROTOTYPED (ftype) = 1;
17336
17337   /* Store the calling convention in the type if it's available in
17338      the subroutine die.  Otherwise set the calling convention to
17339      the default value DW_CC_normal.  */
17340   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17341   if (attr)
17342     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17343   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17344     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17345   else
17346     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17347
17348   /* Record whether the function returns normally to its caller or not
17349      if the DWARF producer set that information.  */
17350   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17351   if (attr && (DW_UNSND (attr) != 0))
17352     TYPE_NO_RETURN (ftype) = 1;
17353
17354   /* We need to add the subroutine type to the die immediately so
17355      we don't infinitely recurse when dealing with parameters
17356      declared as the same subroutine type.  */
17357   set_die_type (die, ftype, cu);
17358
17359   if (die->child != NULL)
17360     {
17361       struct type *void_type = objfile_type (objfile)->builtin_void;
17362       struct die_info *child_die;
17363       int nparams, iparams;
17364
17365       /* Count the number of parameters.
17366          FIXME: GDB currently ignores vararg functions, but knows about
17367          vararg member functions.  */
17368       nparams = 0;
17369       child_die = die->child;
17370       while (child_die && child_die->tag)
17371         {
17372           if (child_die->tag == DW_TAG_formal_parameter)
17373             nparams++;
17374           else if (child_die->tag == DW_TAG_unspecified_parameters)
17375             TYPE_VARARGS (ftype) = 1;
17376           child_die = sibling_die (child_die);
17377         }
17378
17379       /* Allocate storage for parameters and fill them in.  */
17380       TYPE_NFIELDS (ftype) = nparams;
17381       TYPE_FIELDS (ftype) = (struct field *)
17382         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17383
17384       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17385          even if we error out during the parameters reading below.  */
17386       for (iparams = 0; iparams < nparams; iparams++)
17387         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17388
17389       iparams = 0;
17390       child_die = die->child;
17391       while (child_die && child_die->tag)
17392         {
17393           if (child_die->tag == DW_TAG_formal_parameter)
17394             {
17395               struct type *arg_type;
17396
17397               /* DWARF version 2 has no clean way to discern C++
17398                  static and non-static member functions.  G++ helps
17399                  GDB by marking the first parameter for non-static
17400                  member functions (which is the this pointer) as
17401                  artificial.  We pass this information to
17402                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17403
17404                  DWARF version 3 added DW_AT_object_pointer, which GCC
17405                  4.5 does not yet generate.  */
17406               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17407               if (attr)
17408                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17409               else
17410                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17411               arg_type = die_type (child_die, cu);
17412
17413               /* RealView does not mark THIS as const, which the testsuite
17414                  expects.  GCC marks THIS as const in method definitions,
17415                  but not in the class specifications (GCC PR 43053).  */
17416               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17417                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17418                 {
17419                   int is_this = 0;
17420                   struct dwarf2_cu *arg_cu = cu;
17421                   const char *name = dwarf2_name (child_die, cu);
17422
17423                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17424                   if (attr)
17425                     {
17426                       /* If the compiler emits this, use it.  */
17427                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17428                         is_this = 1;
17429                     }
17430                   else if (name && strcmp (name, "this") == 0)
17431                     /* Function definitions will have the argument names.  */
17432                     is_this = 1;
17433                   else if (name == NULL && iparams == 0)
17434                     /* Declarations may not have the names, so like
17435                        elsewhere in GDB, assume an artificial first
17436                        argument is "this".  */
17437                     is_this = 1;
17438
17439                   if (is_this)
17440                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17441                                              arg_type, 0);
17442                 }
17443
17444               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17445               iparams++;
17446             }
17447           child_die = sibling_die (child_die);
17448         }
17449     }
17450
17451   return ftype;
17452 }
17453
17454 static struct type *
17455 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17456 {
17457   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17458   const char *name = NULL;
17459   struct type *this_type, *target_type;
17460
17461   name = dwarf2_full_name (NULL, die, cu);
17462   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17463   TYPE_TARGET_STUB (this_type) = 1;
17464   set_die_type (die, this_type, cu);
17465   target_type = die_type (die, cu);
17466   if (target_type != this_type)
17467     TYPE_TARGET_TYPE (this_type) = target_type;
17468   else
17469     {
17470       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17471          spec and cause infinite loops in GDB.  */
17472       complaint (_("Self-referential DW_TAG_typedef "
17473                    "- DIE at %s [in module %s]"),
17474                  sect_offset_str (die->sect_off), objfile_name (objfile));
17475       TYPE_TARGET_TYPE (this_type) = NULL;
17476     }
17477   return this_type;
17478 }
17479
17480 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17481    (which may be different from NAME) to the architecture back-end to allow
17482    it to guess the correct format if necessary.  */
17483
17484 static struct type *
17485 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17486                         const char *name_hint)
17487 {
17488   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17489   const struct floatformat **format;
17490   struct type *type;
17491
17492   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17493   if (format)
17494     type = init_float_type (objfile, bits, name, format);
17495   else
17496     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17497
17498   return type;
17499 }
17500
17501 /* Find a representation of a given base type and install
17502    it in the TYPE field of the die.  */
17503
17504 static struct type *
17505 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17506 {
17507   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17508   struct type *type;
17509   struct attribute *attr;
17510   int encoding = 0, bits = 0;
17511   const char *name;
17512
17513   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17514   if (attr)
17515     {
17516       encoding = DW_UNSND (attr);
17517     }
17518   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17519   if (attr)
17520     {
17521       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17522     }
17523   name = dwarf2_name (die, cu);
17524   if (!name)
17525     {
17526       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17527     }
17528
17529   switch (encoding)
17530     {
17531       case DW_ATE_address:
17532         /* Turn DW_ATE_address into a void * pointer.  */
17533         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17534         type = init_pointer_type (objfile, bits, name, type);
17535         break;
17536       case DW_ATE_boolean:
17537         type = init_boolean_type (objfile, bits, 1, name);
17538         break;
17539       case DW_ATE_complex_float:
17540         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17541         type = init_complex_type (objfile, name, type);
17542         break;
17543       case DW_ATE_decimal_float:
17544         type = init_decfloat_type (objfile, bits, name);
17545         break;
17546       case DW_ATE_float:
17547         type = dwarf2_init_float_type (objfile, bits, name, name);
17548         break;
17549       case DW_ATE_signed:
17550         type = init_integer_type (objfile, bits, 0, name);
17551         break;
17552       case DW_ATE_unsigned:
17553         if (cu->language == language_fortran
17554             && name
17555             && startswith (name, "character("))
17556           type = init_character_type (objfile, bits, 1, name);
17557         else
17558           type = init_integer_type (objfile, bits, 1, name);
17559         break;
17560       case DW_ATE_signed_char:
17561         if (cu->language == language_ada || cu->language == language_m2
17562             || cu->language == language_pascal
17563             || cu->language == language_fortran)
17564           type = init_character_type (objfile, bits, 0, name);
17565         else
17566           type = init_integer_type (objfile, bits, 0, name);
17567         break;
17568       case DW_ATE_unsigned_char:
17569         if (cu->language == language_ada || cu->language == language_m2
17570             || cu->language == language_pascal
17571             || cu->language == language_fortran
17572             || cu->language == language_rust)
17573           type = init_character_type (objfile, bits, 1, name);
17574         else
17575           type = init_integer_type (objfile, bits, 1, name);
17576         break;
17577       case DW_ATE_UTF:
17578         {
17579           gdbarch *arch = get_objfile_arch (objfile);
17580
17581           if (bits == 16)
17582             type = builtin_type (arch)->builtin_char16;
17583           else if (bits == 32)
17584             type = builtin_type (arch)->builtin_char32;
17585           else
17586             {
17587               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17588                          bits);
17589               type = init_integer_type (objfile, bits, 1, name);
17590             }
17591           return set_die_type (die, type, cu);
17592         }
17593         break;
17594
17595       default:
17596         complaint (_("unsupported DW_AT_encoding: '%s'"),
17597                    dwarf_type_encoding_name (encoding));
17598         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17599         break;
17600     }
17601
17602   if (name && strcmp (name, "char") == 0)
17603     TYPE_NOSIGN (type) = 1;
17604
17605   maybe_set_alignment (cu, die, type);
17606
17607   return set_die_type (die, type, cu);
17608 }
17609
17610 /* Parse dwarf attribute if it's a block, reference or constant and put the
17611    resulting value of the attribute into struct bound_prop.
17612    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17613
17614 static int
17615 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17616                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17617 {
17618   struct dwarf2_property_baton *baton;
17619   struct obstack *obstack
17620     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17621
17622   if (attr == NULL || prop == NULL)
17623     return 0;
17624
17625   if (attr_form_is_block (attr))
17626     {
17627       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17628       baton->referenced_type = NULL;
17629       baton->locexpr.per_cu = cu->per_cu;
17630       baton->locexpr.size = DW_BLOCK (attr)->size;
17631       baton->locexpr.data = DW_BLOCK (attr)->data;
17632       prop->data.baton = baton;
17633       prop->kind = PROP_LOCEXPR;
17634       gdb_assert (prop->data.baton != NULL);
17635     }
17636   else if (attr_form_is_ref (attr))
17637     {
17638       struct dwarf2_cu *target_cu = cu;
17639       struct die_info *target_die;
17640       struct attribute *target_attr;
17641
17642       target_die = follow_die_ref (die, attr, &target_cu);
17643       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17644       if (target_attr == NULL)
17645         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17646                                    target_cu);
17647       if (target_attr == NULL)
17648         return 0;
17649
17650       switch (target_attr->name)
17651         {
17652           case DW_AT_location:
17653             if (attr_form_is_section_offset (target_attr))
17654               {
17655                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17656                 baton->referenced_type = die_type (target_die, target_cu);
17657                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17658                 prop->data.baton = baton;
17659                 prop->kind = PROP_LOCLIST;
17660                 gdb_assert (prop->data.baton != NULL);
17661               }
17662             else if (attr_form_is_block (target_attr))
17663               {
17664                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17665                 baton->referenced_type = die_type (target_die, target_cu);
17666                 baton->locexpr.per_cu = cu->per_cu;
17667                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17668                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17669                 prop->data.baton = baton;
17670                 prop->kind = PROP_LOCEXPR;
17671                 gdb_assert (prop->data.baton != NULL);
17672               }
17673             else
17674               {
17675                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17676                                                        "dynamic property");
17677                 return 0;
17678               }
17679             break;
17680           case DW_AT_data_member_location:
17681             {
17682               LONGEST offset;
17683
17684               if (!handle_data_member_location (target_die, target_cu,
17685                                                 &offset))
17686                 return 0;
17687
17688               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17689               baton->referenced_type = read_type_die (target_die->parent,
17690                                                       target_cu);
17691               baton->offset_info.offset = offset;
17692               baton->offset_info.type = die_type (target_die, target_cu);
17693               prop->data.baton = baton;
17694               prop->kind = PROP_ADDR_OFFSET;
17695               break;
17696             }
17697         }
17698     }
17699   else if (attr_form_is_constant (attr))
17700     {
17701       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17702       prop->kind = PROP_CONST;
17703     }
17704   else
17705     {
17706       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17707                                              dwarf2_name (die, cu));
17708       return 0;
17709     }
17710
17711   return 1;
17712 }
17713
17714 /* Read the given DW_AT_subrange DIE.  */
17715
17716 static struct type *
17717 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17718 {
17719   struct type *base_type, *orig_base_type;
17720   struct type *range_type;
17721   struct attribute *attr;
17722   struct dynamic_prop low, high;
17723   int low_default_is_valid;
17724   int high_bound_is_count = 0;
17725   const char *name;
17726   ULONGEST negative_mask;
17727
17728   orig_base_type = die_type (die, cu);
17729   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17730      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17731      creating the range type, but we use the result of check_typedef
17732      when examining properties of the type.  */
17733   base_type = check_typedef (orig_base_type);
17734
17735   /* The die_type call above may have already set the type for this DIE.  */
17736   range_type = get_die_type (die, cu);
17737   if (range_type)
17738     return range_type;
17739
17740   low.kind = PROP_CONST;
17741   high.kind = PROP_CONST;
17742   high.data.const_val = 0;
17743
17744   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17745      omitting DW_AT_lower_bound.  */
17746   switch (cu->language)
17747     {
17748     case language_c:
17749     case language_cplus:
17750       low.data.const_val = 0;
17751       low_default_is_valid = 1;
17752       break;
17753     case language_fortran:
17754       low.data.const_val = 1;
17755       low_default_is_valid = 1;
17756       break;
17757     case language_d:
17758     case language_objc:
17759     case language_rust:
17760       low.data.const_val = 0;
17761       low_default_is_valid = (cu->header.version >= 4);
17762       break;
17763     case language_ada:
17764     case language_m2:
17765     case language_pascal:
17766       low.data.const_val = 1;
17767       low_default_is_valid = (cu->header.version >= 4);
17768       break;
17769     default:
17770       low.data.const_val = 0;
17771       low_default_is_valid = 0;
17772       break;
17773     }
17774
17775   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17776   if (attr)
17777     attr_to_dynamic_prop (attr, die, cu, &low);
17778   else if (!low_default_is_valid)
17779     complaint (_("Missing DW_AT_lower_bound "
17780                                       "- DIE at %s [in module %s]"),
17781                sect_offset_str (die->sect_off),
17782                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17783
17784   struct attribute *attr_ub, *attr_count;
17785   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17786   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17787     {
17788       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17789       if (attr_to_dynamic_prop (attr, die, cu, &high))
17790         {
17791           /* If bounds are constant do the final calculation here.  */
17792           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17793             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17794           else
17795             high_bound_is_count = 1;
17796         }
17797       else
17798         {
17799           if (attr_ub != NULL)
17800             complaint (_("Unresolved DW_AT_upper_bound "
17801                          "- DIE at %s [in module %s]"),
17802                        sect_offset_str (die->sect_off),
17803                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17804           if (attr_count != NULL)
17805             complaint (_("Unresolved DW_AT_count "
17806                          "- DIE at %s [in module %s]"),
17807                        sect_offset_str (die->sect_off),
17808                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17809         }
17810         
17811     }
17812
17813   /* Dwarf-2 specifications explicitly allows to create subrange types
17814      without specifying a base type.
17815      In that case, the base type must be set to the type of
17816      the lower bound, upper bound or count, in that order, if any of these
17817      three attributes references an object that has a type.
17818      If no base type is found, the Dwarf-2 specifications say that
17819      a signed integer type of size equal to the size of an address should
17820      be used.
17821      For the following C code: `extern char gdb_int [];'
17822      GCC produces an empty range DIE.
17823      FIXME: muller/2010-05-28: Possible references to object for low bound,
17824      high bound or count are not yet handled by this code.  */
17825   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17826     {
17827       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17828       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17829       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17830       struct type *int_type = objfile_type (objfile)->builtin_int;
17831
17832       /* Test "int", "long int", and "long long int" objfile types,
17833          and select the first one having a size above or equal to the
17834          architecture address size.  */
17835       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17836         base_type = int_type;
17837       else
17838         {
17839           int_type = objfile_type (objfile)->builtin_long;
17840           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17841             base_type = int_type;
17842           else
17843             {
17844               int_type = objfile_type (objfile)->builtin_long_long;
17845               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17846                 base_type = int_type;
17847             }
17848         }
17849     }
17850
17851   /* Normally, the DWARF producers are expected to use a signed
17852      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17853      But this is unfortunately not always the case, as witnessed
17854      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17855      is used instead.  To work around that ambiguity, we treat
17856      the bounds as signed, and thus sign-extend their values, when
17857      the base type is signed.  */
17858   negative_mask =
17859     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17860   if (low.kind == PROP_CONST
17861       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17862     low.data.const_val |= negative_mask;
17863   if (high.kind == PROP_CONST
17864       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17865     high.data.const_val |= negative_mask;
17866
17867   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17868
17869   if (high_bound_is_count)
17870     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17871
17872   /* Ada expects an empty array on no boundary attributes.  */
17873   if (attr == NULL && cu->language != language_ada)
17874     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17875
17876   name = dwarf2_name (die, cu);
17877   if (name)
17878     TYPE_NAME (range_type) = name;
17879
17880   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17881   if (attr)
17882     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17883
17884   maybe_set_alignment (cu, die, range_type);
17885
17886   set_die_type (die, range_type, cu);
17887
17888   /* set_die_type should be already done.  */
17889   set_descriptive_type (range_type, die, cu);
17890
17891   return range_type;
17892 }
17893
17894 static struct type *
17895 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17896 {
17897   struct type *type;
17898
17899   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17900                     NULL);
17901   TYPE_NAME (type) = dwarf2_name (die, cu);
17902
17903   /* In Ada, an unspecified type is typically used when the description
17904      of the type is defered to a different unit.  When encountering
17905      such a type, we treat it as a stub, and try to resolve it later on,
17906      when needed.  */
17907   if (cu->language == language_ada)
17908     TYPE_STUB (type) = 1;
17909
17910   return set_die_type (die, type, cu);
17911 }
17912
17913 /* Read a single die and all its descendents.  Set the die's sibling
17914    field to NULL; set other fields in the die correctly, and set all
17915    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17916    location of the info_ptr after reading all of those dies.  PARENT
17917    is the parent of the die in question.  */
17918
17919 static struct die_info *
17920 read_die_and_children (const struct die_reader_specs *reader,
17921                        const gdb_byte *info_ptr,
17922                        const gdb_byte **new_info_ptr,
17923                        struct die_info *parent)
17924 {
17925   struct die_info *die;
17926   const gdb_byte *cur_ptr;
17927   int has_children;
17928
17929   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17930   if (die == NULL)
17931     {
17932       *new_info_ptr = cur_ptr;
17933       return NULL;
17934     }
17935   store_in_ref_table (die, reader->cu);
17936
17937   if (has_children)
17938     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17939   else
17940     {
17941       die->child = NULL;
17942       *new_info_ptr = cur_ptr;
17943     }
17944
17945   die->sibling = NULL;
17946   die->parent = parent;
17947   return die;
17948 }
17949
17950 /* Read a die, all of its descendents, and all of its siblings; set
17951    all of the fields of all of the dies correctly.  Arguments are as
17952    in read_die_and_children.  */
17953
17954 static struct die_info *
17955 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17956                          const gdb_byte *info_ptr,
17957                          const gdb_byte **new_info_ptr,
17958                          struct die_info *parent)
17959 {
17960   struct die_info *first_die, *last_sibling;
17961   const gdb_byte *cur_ptr;
17962
17963   cur_ptr = info_ptr;
17964   first_die = last_sibling = NULL;
17965
17966   while (1)
17967     {
17968       struct die_info *die
17969         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17970
17971       if (die == NULL)
17972         {
17973           *new_info_ptr = cur_ptr;
17974           return first_die;
17975         }
17976
17977       if (!first_die)
17978         first_die = die;
17979       else
17980         last_sibling->sibling = die;
17981
17982       last_sibling = die;
17983     }
17984 }
17985
17986 /* Read a die, all of its descendents, and all of its siblings; set
17987    all of the fields of all of the dies correctly.  Arguments are as
17988    in read_die_and_children.
17989    This the main entry point for reading a DIE and all its children.  */
17990
17991 static struct die_info *
17992 read_die_and_siblings (const struct die_reader_specs *reader,
17993                        const gdb_byte *info_ptr,
17994                        const gdb_byte **new_info_ptr,
17995                        struct die_info *parent)
17996 {
17997   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17998                                                   new_info_ptr, parent);
17999
18000   if (dwarf_die_debug)
18001     {
18002       fprintf_unfiltered (gdb_stdlog,
18003                           "Read die from %s@0x%x of %s:\n",
18004                           get_section_name (reader->die_section),
18005                           (unsigned) (info_ptr - reader->die_section->buffer),
18006                           bfd_get_filename (reader->abfd));
18007       dump_die (die, dwarf_die_debug);
18008     }
18009
18010   return die;
18011 }
18012
18013 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
18014    attributes.
18015    The caller is responsible for filling in the extra attributes
18016    and updating (*DIEP)->num_attrs.
18017    Set DIEP to point to a newly allocated die with its information,
18018    except for its child, sibling, and parent fields.
18019    Set HAS_CHILDREN to tell whether the die has children or not.  */
18020
18021 static const gdb_byte *
18022 read_full_die_1 (const struct die_reader_specs *reader,
18023                  struct die_info **diep, const gdb_byte *info_ptr,
18024                  int *has_children, int num_extra_attrs)
18025 {
18026   unsigned int abbrev_number, bytes_read, i;
18027   struct abbrev_info *abbrev;
18028   struct die_info *die;
18029   struct dwarf2_cu *cu = reader->cu;
18030   bfd *abfd = reader->abfd;
18031
18032   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18033   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18034   info_ptr += bytes_read;
18035   if (!abbrev_number)
18036     {
18037       *diep = NULL;
18038       *has_children = 0;
18039       return info_ptr;
18040     }
18041
18042   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18043   if (!abbrev)
18044     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18045            abbrev_number,
18046            bfd_get_filename (abfd));
18047
18048   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18049   die->sect_off = sect_off;
18050   die->tag = abbrev->tag;
18051   die->abbrev = abbrev_number;
18052
18053   /* Make the result usable.
18054      The caller needs to update num_attrs after adding the extra
18055      attributes.  */
18056   die->num_attrs = abbrev->num_attrs;
18057
18058   for (i = 0; i < abbrev->num_attrs; ++i)
18059     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18060                                info_ptr);
18061
18062   *diep = die;
18063   *has_children = abbrev->has_children;
18064   return info_ptr;
18065 }
18066
18067 /* Read a die and all its attributes.
18068    Set DIEP to point to a newly allocated die with its information,
18069    except for its child, sibling, and parent fields.
18070    Set HAS_CHILDREN to tell whether the die has children or not.  */
18071
18072 static const gdb_byte *
18073 read_full_die (const struct die_reader_specs *reader,
18074                struct die_info **diep, const gdb_byte *info_ptr,
18075                int *has_children)
18076 {
18077   const gdb_byte *result;
18078
18079   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18080
18081   if (dwarf_die_debug)
18082     {
18083       fprintf_unfiltered (gdb_stdlog,
18084                           "Read die from %s@0x%x of %s:\n",
18085                           get_section_name (reader->die_section),
18086                           (unsigned) (info_ptr - reader->die_section->buffer),
18087                           bfd_get_filename (reader->abfd));
18088       dump_die (*diep, dwarf_die_debug);
18089     }
18090
18091   return result;
18092 }
18093 \f
18094 /* Abbreviation tables.
18095
18096    In DWARF version 2, the description of the debugging information is
18097    stored in a separate .debug_abbrev section.  Before we read any
18098    dies from a section we read in all abbreviations and install them
18099    in a hash table.  */
18100
18101 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18102
18103 struct abbrev_info *
18104 abbrev_table::alloc_abbrev ()
18105 {
18106   struct abbrev_info *abbrev;
18107
18108   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18109   memset (abbrev, 0, sizeof (struct abbrev_info));
18110
18111   return abbrev;
18112 }
18113
18114 /* Add an abbreviation to the table.  */
18115
18116 void
18117 abbrev_table::add_abbrev (unsigned int abbrev_number,
18118                           struct abbrev_info *abbrev)
18119 {
18120   unsigned int hash_number;
18121
18122   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18123   abbrev->next = m_abbrevs[hash_number];
18124   m_abbrevs[hash_number] = abbrev;
18125 }
18126
18127 /* Look up an abbrev in the table.
18128    Returns NULL if the abbrev is not found.  */
18129
18130 struct abbrev_info *
18131 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18132 {
18133   unsigned int hash_number;
18134   struct abbrev_info *abbrev;
18135
18136   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18137   abbrev = m_abbrevs[hash_number];
18138
18139   while (abbrev)
18140     {
18141       if (abbrev->number == abbrev_number)
18142         return abbrev;
18143       abbrev = abbrev->next;
18144     }
18145   return NULL;
18146 }
18147
18148 /* Read in an abbrev table.  */
18149
18150 static abbrev_table_up
18151 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18152                          struct dwarf2_section_info *section,
18153                          sect_offset sect_off)
18154 {
18155   struct objfile *objfile = dwarf2_per_objfile->objfile;
18156   bfd *abfd = get_section_bfd_owner (section);
18157   const gdb_byte *abbrev_ptr;
18158   struct abbrev_info *cur_abbrev;
18159   unsigned int abbrev_number, bytes_read, abbrev_name;
18160   unsigned int abbrev_form;
18161   struct attr_abbrev *cur_attrs;
18162   unsigned int allocated_attrs;
18163
18164   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18165
18166   dwarf2_read_section (objfile, section);
18167   abbrev_ptr = section->buffer + to_underlying (sect_off);
18168   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18169   abbrev_ptr += bytes_read;
18170
18171   allocated_attrs = ATTR_ALLOC_CHUNK;
18172   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18173
18174   /* Loop until we reach an abbrev number of 0.  */
18175   while (abbrev_number)
18176     {
18177       cur_abbrev = abbrev_table->alloc_abbrev ();
18178
18179       /* read in abbrev header */
18180       cur_abbrev->number = abbrev_number;
18181       cur_abbrev->tag
18182         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18183       abbrev_ptr += bytes_read;
18184       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18185       abbrev_ptr += 1;
18186
18187       /* now read in declarations */
18188       for (;;)
18189         {
18190           LONGEST implicit_const;
18191
18192           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18193           abbrev_ptr += bytes_read;
18194           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18195           abbrev_ptr += bytes_read;
18196           if (abbrev_form == DW_FORM_implicit_const)
18197             {
18198               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18199                                                    &bytes_read);
18200               abbrev_ptr += bytes_read;
18201             }
18202           else
18203             {
18204               /* Initialize it due to a false compiler warning.  */
18205               implicit_const = -1;
18206             }
18207
18208           if (abbrev_name == 0)
18209             break;
18210
18211           if (cur_abbrev->num_attrs == allocated_attrs)
18212             {
18213               allocated_attrs += ATTR_ALLOC_CHUNK;
18214               cur_attrs
18215                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18216             }
18217
18218           cur_attrs[cur_abbrev->num_attrs].name
18219             = (enum dwarf_attribute) abbrev_name;
18220           cur_attrs[cur_abbrev->num_attrs].form
18221             = (enum dwarf_form) abbrev_form;
18222           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18223           ++cur_abbrev->num_attrs;
18224         }
18225
18226       cur_abbrev->attrs =
18227         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18228                    cur_abbrev->num_attrs);
18229       memcpy (cur_abbrev->attrs, cur_attrs,
18230               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18231
18232       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18233
18234       /* Get next abbreviation.
18235          Under Irix6 the abbreviations for a compilation unit are not
18236          always properly terminated with an abbrev number of 0.
18237          Exit loop if we encounter an abbreviation which we have
18238          already read (which means we are about to read the abbreviations
18239          for the next compile unit) or if the end of the abbreviation
18240          table is reached.  */
18241       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18242         break;
18243       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18244       abbrev_ptr += bytes_read;
18245       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18246         break;
18247     }
18248
18249   xfree (cur_attrs);
18250   return abbrev_table;
18251 }
18252
18253 /* Returns nonzero if TAG represents a type that we might generate a partial
18254    symbol for.  */
18255
18256 static int
18257 is_type_tag_for_partial (int tag)
18258 {
18259   switch (tag)
18260     {
18261 #if 0
18262     /* Some types that would be reasonable to generate partial symbols for,
18263        that we don't at present.  */
18264     case DW_TAG_array_type:
18265     case DW_TAG_file_type:
18266     case DW_TAG_ptr_to_member_type:
18267     case DW_TAG_set_type:
18268     case DW_TAG_string_type:
18269     case DW_TAG_subroutine_type:
18270 #endif
18271     case DW_TAG_base_type:
18272     case DW_TAG_class_type:
18273     case DW_TAG_interface_type:
18274     case DW_TAG_enumeration_type:
18275     case DW_TAG_structure_type:
18276     case DW_TAG_subrange_type:
18277     case DW_TAG_typedef:
18278     case DW_TAG_union_type:
18279       return 1;
18280     default:
18281       return 0;
18282     }
18283 }
18284
18285 /* Load all DIEs that are interesting for partial symbols into memory.  */
18286
18287 static struct partial_die_info *
18288 load_partial_dies (const struct die_reader_specs *reader,
18289                    const gdb_byte *info_ptr, int building_psymtab)
18290 {
18291   struct dwarf2_cu *cu = reader->cu;
18292   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18293   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18294   unsigned int bytes_read;
18295   unsigned int load_all = 0;
18296   int nesting_level = 1;
18297
18298   parent_die = NULL;
18299   last_die = NULL;
18300
18301   gdb_assert (cu->per_cu != NULL);
18302   if (cu->per_cu->load_all_dies)
18303     load_all = 1;
18304
18305   cu->partial_dies
18306     = htab_create_alloc_ex (cu->header.length / 12,
18307                             partial_die_hash,
18308                             partial_die_eq,
18309                             NULL,
18310                             &cu->comp_unit_obstack,
18311                             hashtab_obstack_allocate,
18312                             dummy_obstack_deallocate);
18313
18314   while (1)
18315     {
18316       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18317
18318       /* A NULL abbrev means the end of a series of children.  */
18319       if (abbrev == NULL)
18320         {
18321           if (--nesting_level == 0)
18322             return first_die;
18323
18324           info_ptr += bytes_read;
18325           last_die = parent_die;
18326           parent_die = parent_die->die_parent;
18327           continue;
18328         }
18329
18330       /* Check for template arguments.  We never save these; if
18331          they're seen, we just mark the parent, and go on our way.  */
18332       if (parent_die != NULL
18333           && cu->language == language_cplus
18334           && (abbrev->tag == DW_TAG_template_type_param
18335               || abbrev->tag == DW_TAG_template_value_param))
18336         {
18337           parent_die->has_template_arguments = 1;
18338
18339           if (!load_all)
18340             {
18341               /* We don't need a partial DIE for the template argument.  */
18342               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18343               continue;
18344             }
18345         }
18346
18347       /* We only recurse into c++ subprograms looking for template arguments.
18348          Skip their other children.  */
18349       if (!load_all
18350           && cu->language == language_cplus
18351           && parent_die != NULL
18352           && parent_die->tag == DW_TAG_subprogram)
18353         {
18354           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18355           continue;
18356         }
18357
18358       /* Check whether this DIE is interesting enough to save.  Normally
18359          we would not be interested in members here, but there may be
18360          later variables referencing them via DW_AT_specification (for
18361          static members).  */
18362       if (!load_all
18363           && !is_type_tag_for_partial (abbrev->tag)
18364           && abbrev->tag != DW_TAG_constant
18365           && abbrev->tag != DW_TAG_enumerator
18366           && abbrev->tag != DW_TAG_subprogram
18367           && abbrev->tag != DW_TAG_inlined_subroutine
18368           && abbrev->tag != DW_TAG_lexical_block
18369           && abbrev->tag != DW_TAG_variable
18370           && abbrev->tag != DW_TAG_namespace
18371           && abbrev->tag != DW_TAG_module
18372           && abbrev->tag != DW_TAG_member
18373           && abbrev->tag != DW_TAG_imported_unit
18374           && abbrev->tag != DW_TAG_imported_declaration)
18375         {
18376           /* Otherwise we skip to the next sibling, if any.  */
18377           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18378           continue;
18379         }
18380
18381       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18382                                    abbrev);
18383
18384       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18385
18386       /* This two-pass algorithm for processing partial symbols has a
18387          high cost in cache pressure.  Thus, handle some simple cases
18388          here which cover the majority of C partial symbols.  DIEs
18389          which neither have specification tags in them, nor could have
18390          specification tags elsewhere pointing at them, can simply be
18391          processed and discarded.
18392
18393          This segment is also optional; scan_partial_symbols and
18394          add_partial_symbol will handle these DIEs if we chain
18395          them in normally.  When compilers which do not emit large
18396          quantities of duplicate debug information are more common,
18397          this code can probably be removed.  */
18398
18399       /* Any complete simple types at the top level (pretty much all
18400          of them, for a language without namespaces), can be processed
18401          directly.  */
18402       if (parent_die == NULL
18403           && pdi.has_specification == 0
18404           && pdi.is_declaration == 0
18405           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18406               || pdi.tag == DW_TAG_base_type
18407               || pdi.tag == DW_TAG_subrange_type))
18408         {
18409           if (building_psymtab && pdi.name != NULL)
18410             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18411                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18412                                  &objfile->static_psymbols,
18413                                  0, cu->language, objfile);
18414           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18415           continue;
18416         }
18417
18418       /* The exception for DW_TAG_typedef with has_children above is
18419          a workaround of GCC PR debug/47510.  In the case of this complaint
18420          type_name_or_error will error on such types later.
18421
18422          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18423          it could not find the child DIEs referenced later, this is checked
18424          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18425
18426       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18427         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18428                      "- DIE at %s [in module %s]"),
18429                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18430
18431       /* If we're at the second level, and we're an enumerator, and
18432          our parent has no specification (meaning possibly lives in a
18433          namespace elsewhere), then we can add the partial symbol now
18434          instead of queueing it.  */
18435       if (pdi.tag == DW_TAG_enumerator
18436           && parent_die != NULL
18437           && parent_die->die_parent == NULL
18438           && parent_die->tag == DW_TAG_enumeration_type
18439           && parent_die->has_specification == 0)
18440         {
18441           if (pdi.name == NULL)
18442             complaint (_("malformed enumerator DIE ignored"));
18443           else if (building_psymtab)
18444             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18445                                  VAR_DOMAIN, LOC_CONST, -1,
18446                                  cu->language == language_cplus
18447                                  ? &objfile->global_psymbols
18448                                  : &objfile->static_psymbols,
18449                                  0, cu->language, objfile);
18450
18451           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18452           continue;
18453         }
18454
18455       struct partial_die_info *part_die
18456         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18457
18458       /* We'll save this DIE so link it in.  */
18459       part_die->die_parent = parent_die;
18460       part_die->die_sibling = NULL;
18461       part_die->die_child = NULL;
18462
18463       if (last_die && last_die == parent_die)
18464         last_die->die_child = part_die;
18465       else if (last_die)
18466         last_die->die_sibling = part_die;
18467
18468       last_die = part_die;
18469
18470       if (first_die == NULL)
18471         first_die = part_die;
18472
18473       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18474          find interesting need to be in the hash table, because we
18475          also have the parent/sibling/child chains; only those that we
18476          might refer to by offset later during partial symbol reading.
18477
18478          For now this means things that might have be the target of a
18479          DW_AT_specification, DW_AT_abstract_origin, or
18480          DW_AT_extension.  DW_AT_extension will refer only to
18481          namespaces; DW_AT_abstract_origin refers to functions (and
18482          many things under the function DIE, but we do not recurse
18483          into function DIEs during partial symbol reading) and
18484          possibly variables as well; DW_AT_specification refers to
18485          declarations.  Declarations ought to have the DW_AT_declaration
18486          flag.  It happens that GCC forgets to put it in sometimes, but
18487          only for functions, not for types.
18488
18489          Adding more things than necessary to the hash table is harmless
18490          except for the performance cost.  Adding too few will result in
18491          wasted time in find_partial_die, when we reread the compilation
18492          unit with load_all_dies set.  */
18493
18494       if (load_all
18495           || abbrev->tag == DW_TAG_constant
18496           || abbrev->tag == DW_TAG_subprogram
18497           || abbrev->tag == DW_TAG_variable
18498           || abbrev->tag == DW_TAG_namespace
18499           || part_die->is_declaration)
18500         {
18501           void **slot;
18502
18503           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18504                                            to_underlying (part_die->sect_off),
18505                                            INSERT);
18506           *slot = part_die;
18507         }
18508
18509       /* For some DIEs we want to follow their children (if any).  For C
18510          we have no reason to follow the children of structures; for other
18511          languages we have to, so that we can get at method physnames
18512          to infer fully qualified class names, for DW_AT_specification,
18513          and for C++ template arguments.  For C++, we also look one level
18514          inside functions to find template arguments (if the name of the
18515          function does not already contain the template arguments).
18516
18517          For Ada, we need to scan the children of subprograms and lexical
18518          blocks as well because Ada allows the definition of nested
18519          entities that could be interesting for the debugger, such as
18520          nested subprograms for instance.  */
18521       if (last_die->has_children
18522           && (load_all
18523               || last_die->tag == DW_TAG_namespace
18524               || last_die->tag == DW_TAG_module
18525               || last_die->tag == DW_TAG_enumeration_type
18526               || (cu->language == language_cplus
18527                   && last_die->tag == DW_TAG_subprogram
18528                   && (last_die->name == NULL
18529                       || strchr (last_die->name, '<') == NULL))
18530               || (cu->language != language_c
18531                   && (last_die->tag == DW_TAG_class_type
18532                       || last_die->tag == DW_TAG_interface_type
18533                       || last_die->tag == DW_TAG_structure_type
18534                       || last_die->tag == DW_TAG_union_type))
18535               || (cu->language == language_ada
18536                   && (last_die->tag == DW_TAG_subprogram
18537                       || last_die->tag == DW_TAG_lexical_block))))
18538         {
18539           nesting_level++;
18540           parent_die = last_die;
18541           continue;
18542         }
18543
18544       /* Otherwise we skip to the next sibling, if any.  */
18545       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18546
18547       /* Back to the top, do it again.  */
18548     }
18549 }
18550
18551 partial_die_info::partial_die_info (sect_offset sect_off_,
18552                                     struct abbrev_info *abbrev)
18553   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18554 {
18555 }
18556
18557 /* Read a minimal amount of information into the minimal die structure.
18558    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18559
18560 const gdb_byte *
18561 partial_die_info::read (const struct die_reader_specs *reader,
18562                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18563 {
18564   struct dwarf2_cu *cu = reader->cu;
18565   struct dwarf2_per_objfile *dwarf2_per_objfile
18566     = cu->per_cu->dwarf2_per_objfile;
18567   unsigned int i;
18568   int has_low_pc_attr = 0;
18569   int has_high_pc_attr = 0;
18570   int high_pc_relative = 0;
18571
18572   for (i = 0; i < abbrev.num_attrs; ++i)
18573     {
18574       struct attribute attr;
18575
18576       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18577
18578       /* Store the data if it is of an attribute we want to keep in a
18579          partial symbol table.  */
18580       switch (attr.name)
18581         {
18582         case DW_AT_name:
18583           switch (tag)
18584             {
18585             case DW_TAG_compile_unit:
18586             case DW_TAG_partial_unit:
18587             case DW_TAG_type_unit:
18588               /* Compilation units have a DW_AT_name that is a filename, not
18589                  a source language identifier.  */
18590             case DW_TAG_enumeration_type:
18591             case DW_TAG_enumerator:
18592               /* These tags always have simple identifiers already; no need
18593                  to canonicalize them.  */
18594               name = DW_STRING (&attr);
18595               break;
18596             default:
18597               {
18598                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18599
18600                 name
18601                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18602                                               &objfile->per_bfd->storage_obstack);
18603               }
18604               break;
18605             }
18606           break;
18607         case DW_AT_linkage_name:
18608         case DW_AT_MIPS_linkage_name:
18609           /* Note that both forms of linkage name might appear.  We
18610              assume they will be the same, and we only store the last
18611              one we see.  */
18612           if (cu->language == language_ada)
18613             name = DW_STRING (&attr);
18614           linkage_name = DW_STRING (&attr);
18615           break;
18616         case DW_AT_low_pc:
18617           has_low_pc_attr = 1;
18618           lowpc = attr_value_as_address (&attr);
18619           break;
18620         case DW_AT_high_pc:
18621           has_high_pc_attr = 1;
18622           highpc = attr_value_as_address (&attr);
18623           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18624                 high_pc_relative = 1;
18625           break;
18626         case DW_AT_location:
18627           /* Support the .debug_loc offsets.  */
18628           if (attr_form_is_block (&attr))
18629             {
18630                d.locdesc = DW_BLOCK (&attr);
18631             }
18632           else if (attr_form_is_section_offset (&attr))
18633             {
18634               dwarf2_complex_location_expr_complaint ();
18635             }
18636           else
18637             {
18638               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18639                                                      "partial symbol information");
18640             }
18641           break;
18642         case DW_AT_external:
18643           is_external = DW_UNSND (&attr);
18644           break;
18645         case DW_AT_declaration:
18646           is_declaration = DW_UNSND (&attr);
18647           break;
18648         case DW_AT_type:
18649           has_type = 1;
18650           break;
18651         case DW_AT_abstract_origin:
18652         case DW_AT_specification:
18653         case DW_AT_extension:
18654           has_specification = 1;
18655           spec_offset = dwarf2_get_ref_die_offset (&attr);
18656           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18657                                    || cu->per_cu->is_dwz);
18658           break;
18659         case DW_AT_sibling:
18660           /* Ignore absolute siblings, they might point outside of
18661              the current compile unit.  */
18662           if (attr.form == DW_FORM_ref_addr)
18663             complaint (_("ignoring absolute DW_AT_sibling"));
18664           else
18665             {
18666               const gdb_byte *buffer = reader->buffer;
18667               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18668               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18669
18670               if (sibling_ptr < info_ptr)
18671                 complaint (_("DW_AT_sibling points backwards"));
18672               else if (sibling_ptr > reader->buffer_end)
18673                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18674               else
18675                 sibling = sibling_ptr;
18676             }
18677           break;
18678         case DW_AT_byte_size:
18679           has_byte_size = 1;
18680           break;
18681         case DW_AT_const_value:
18682           has_const_value = 1;
18683           break;
18684         case DW_AT_calling_convention:
18685           /* DWARF doesn't provide a way to identify a program's source-level
18686              entry point.  DW_AT_calling_convention attributes are only meant
18687              to describe functions' calling conventions.
18688
18689              However, because it's a necessary piece of information in
18690              Fortran, and before DWARF 4 DW_CC_program was the only
18691              piece of debugging information whose definition refers to
18692              a 'main program' at all, several compilers marked Fortran
18693              main programs with DW_CC_program --- even when those
18694              functions use the standard calling conventions.
18695
18696              Although DWARF now specifies a way to provide this
18697              information, we support this practice for backward
18698              compatibility.  */
18699           if (DW_UNSND (&attr) == DW_CC_program
18700               && cu->language == language_fortran)
18701             main_subprogram = 1;
18702           break;
18703         case DW_AT_inline:
18704           if (DW_UNSND (&attr) == DW_INL_inlined
18705               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18706             may_be_inlined = 1;
18707           break;
18708
18709         case DW_AT_import:
18710           if (tag == DW_TAG_imported_unit)
18711             {
18712               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18713               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18714                                   || cu->per_cu->is_dwz);
18715             }
18716           break;
18717
18718         case DW_AT_main_subprogram:
18719           main_subprogram = DW_UNSND (&attr);
18720           break;
18721
18722         default:
18723           break;
18724         }
18725     }
18726
18727   if (high_pc_relative)
18728     highpc += lowpc;
18729
18730   if (has_low_pc_attr && has_high_pc_attr)
18731     {
18732       /* When using the GNU linker, .gnu.linkonce. sections are used to
18733          eliminate duplicate copies of functions and vtables and such.
18734          The linker will arbitrarily choose one and discard the others.
18735          The AT_*_pc values for such functions refer to local labels in
18736          these sections.  If the section from that file was discarded, the
18737          labels are not in the output, so the relocs get a value of 0.
18738          If this is a discarded function, mark the pc bounds as invalid,
18739          so that GDB will ignore it.  */
18740       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18741         {
18742           struct objfile *objfile = dwarf2_per_objfile->objfile;
18743           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18744
18745           complaint (_("DW_AT_low_pc %s is zero "
18746                        "for DIE at %s [in module %s]"),
18747                      paddress (gdbarch, lowpc),
18748                      sect_offset_str (sect_off),
18749                      objfile_name (objfile));
18750         }
18751       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18752       else if (lowpc >= highpc)
18753         {
18754           struct objfile *objfile = dwarf2_per_objfile->objfile;
18755           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18756
18757           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18758                        "for DIE at %s [in module %s]"),
18759                      paddress (gdbarch, lowpc),
18760                      paddress (gdbarch, highpc),
18761                      sect_offset_str (sect_off),
18762                      objfile_name (objfile));
18763         }
18764       else
18765         has_pc_info = 1;
18766     }
18767
18768   return info_ptr;
18769 }
18770
18771 /* Find a cached partial DIE at OFFSET in CU.  */
18772
18773 struct partial_die_info *
18774 dwarf2_cu::find_partial_die (sect_offset sect_off)
18775 {
18776   struct partial_die_info *lookup_die = NULL;
18777   struct partial_die_info part_die (sect_off);
18778
18779   lookup_die = ((struct partial_die_info *)
18780                 htab_find_with_hash (partial_dies, &part_die,
18781                                      to_underlying (sect_off)));
18782
18783   return lookup_die;
18784 }
18785
18786 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18787    except in the case of .debug_types DIEs which do not reference
18788    outside their CU (they do however referencing other types via
18789    DW_FORM_ref_sig8).  */
18790
18791 static struct partial_die_info *
18792 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18793 {
18794   struct dwarf2_per_objfile *dwarf2_per_objfile
18795     = cu->per_cu->dwarf2_per_objfile;
18796   struct objfile *objfile = dwarf2_per_objfile->objfile;
18797   struct dwarf2_per_cu_data *per_cu = NULL;
18798   struct partial_die_info *pd = NULL;
18799
18800   if (offset_in_dwz == cu->per_cu->is_dwz
18801       && offset_in_cu_p (&cu->header, sect_off))
18802     {
18803       pd = cu->find_partial_die (sect_off);
18804       if (pd != NULL)
18805         return pd;
18806       /* We missed recording what we needed.
18807          Load all dies and try again.  */
18808       per_cu = cu->per_cu;
18809     }
18810   else
18811     {
18812       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18813       if (cu->per_cu->is_debug_types)
18814         {
18815           error (_("Dwarf Error: Type Unit at offset %s contains"
18816                    " external reference to offset %s [in module %s].\n"),
18817                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18818                  bfd_get_filename (objfile->obfd));
18819         }
18820       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18821                                                  dwarf2_per_objfile);
18822
18823       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18824         load_partial_comp_unit (per_cu);
18825
18826       per_cu->cu->last_used = 0;
18827       pd = per_cu->cu->find_partial_die (sect_off);
18828     }
18829
18830   /* If we didn't find it, and not all dies have been loaded,
18831      load them all and try again.  */
18832
18833   if (pd == NULL && per_cu->load_all_dies == 0)
18834     {
18835       per_cu->load_all_dies = 1;
18836
18837       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18838          THIS_CU->cu may already be in use.  So we can't just free it and
18839          replace its DIEs with the ones we read in.  Instead, we leave those
18840          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18841          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18842          set.  */
18843       load_partial_comp_unit (per_cu);
18844
18845       pd = per_cu->cu->find_partial_die (sect_off);
18846     }
18847
18848   if (pd == NULL)
18849     internal_error (__FILE__, __LINE__,
18850                     _("could not find partial DIE %s "
18851                       "in cache [from module %s]\n"),
18852                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18853   return pd;
18854 }
18855
18856 /* See if we can figure out if the class lives in a namespace.  We do
18857    this by looking for a member function; its demangled name will
18858    contain namespace info, if there is any.  */
18859
18860 static void
18861 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18862                                   struct dwarf2_cu *cu)
18863 {
18864   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18865      what template types look like, because the demangler
18866      frequently doesn't give the same name as the debug info.  We
18867      could fix this by only using the demangled name to get the
18868      prefix (but see comment in read_structure_type).  */
18869
18870   struct partial_die_info *real_pdi;
18871   struct partial_die_info *child_pdi;
18872
18873   /* If this DIE (this DIE's specification, if any) has a parent, then
18874      we should not do this.  We'll prepend the parent's fully qualified
18875      name when we create the partial symbol.  */
18876
18877   real_pdi = struct_pdi;
18878   while (real_pdi->has_specification)
18879     real_pdi = find_partial_die (real_pdi->spec_offset,
18880                                  real_pdi->spec_is_dwz, cu);
18881
18882   if (real_pdi->die_parent != NULL)
18883     return;
18884
18885   for (child_pdi = struct_pdi->die_child;
18886        child_pdi != NULL;
18887        child_pdi = child_pdi->die_sibling)
18888     {
18889       if (child_pdi->tag == DW_TAG_subprogram
18890           && child_pdi->linkage_name != NULL)
18891         {
18892           char *actual_class_name
18893             = language_class_name_from_physname (cu->language_defn,
18894                                                  child_pdi->linkage_name);
18895           if (actual_class_name != NULL)
18896             {
18897               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18898               struct_pdi->name
18899                 = ((const char *)
18900                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18901                                   actual_class_name,
18902                                   strlen (actual_class_name)));
18903               xfree (actual_class_name);
18904             }
18905           break;
18906         }
18907     }
18908 }
18909
18910 void
18911 partial_die_info::fixup (struct dwarf2_cu *cu)
18912 {
18913   /* Once we've fixed up a die, there's no point in doing so again.
18914      This also avoids a memory leak if we were to call
18915      guess_partial_die_structure_name multiple times.  */
18916   if (fixup_called)
18917     return;
18918
18919   /* If we found a reference attribute and the DIE has no name, try
18920      to find a name in the referred to DIE.  */
18921
18922   if (name == NULL && has_specification)
18923     {
18924       struct partial_die_info *spec_die;
18925
18926       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18927
18928       spec_die->fixup (cu);
18929
18930       if (spec_die->name)
18931         {
18932           name = spec_die->name;
18933
18934           /* Copy DW_AT_external attribute if it is set.  */
18935           if (spec_die->is_external)
18936             is_external = spec_die->is_external;
18937         }
18938     }
18939
18940   /* Set default names for some unnamed DIEs.  */
18941
18942   if (name == NULL && tag == DW_TAG_namespace)
18943     name = CP_ANONYMOUS_NAMESPACE_STR;
18944
18945   /* If there is no parent die to provide a namespace, and there are
18946      children, see if we can determine the namespace from their linkage
18947      name.  */
18948   if (cu->language == language_cplus
18949       && !VEC_empty (dwarf2_section_info_def,
18950                      cu->per_cu->dwarf2_per_objfile->types)
18951       && die_parent == NULL
18952       && has_children
18953       && (tag == DW_TAG_class_type
18954           || tag == DW_TAG_structure_type
18955           || tag == DW_TAG_union_type))
18956     guess_partial_die_structure_name (this, cu);
18957
18958   /* GCC might emit a nameless struct or union that has a linkage
18959      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18960   if (name == NULL
18961       && (tag == DW_TAG_class_type
18962           || tag == DW_TAG_interface_type
18963           || tag == DW_TAG_structure_type
18964           || tag == DW_TAG_union_type)
18965       && linkage_name != NULL)
18966     {
18967       char *demangled;
18968
18969       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18970       if (demangled)
18971         {
18972           const char *base;
18973
18974           /* Strip any leading namespaces/classes, keep only the base name.
18975              DW_AT_name for named DIEs does not contain the prefixes.  */
18976           base = strrchr (demangled, ':');
18977           if (base && base > demangled && base[-1] == ':')
18978             base++;
18979           else
18980             base = demangled;
18981
18982           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18983           name
18984             = ((const char *)
18985                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18986                               base, strlen (base)));
18987           xfree (demangled);
18988         }
18989     }
18990
18991   fixup_called = 1;
18992 }
18993
18994 /* Read an attribute value described by an attribute form.  */
18995
18996 static const gdb_byte *
18997 read_attribute_value (const struct die_reader_specs *reader,
18998                       struct attribute *attr, unsigned form,
18999                       LONGEST implicit_const, const gdb_byte *info_ptr)
19000 {
19001   struct dwarf2_cu *cu = reader->cu;
19002   struct dwarf2_per_objfile *dwarf2_per_objfile
19003     = cu->per_cu->dwarf2_per_objfile;
19004   struct objfile *objfile = dwarf2_per_objfile->objfile;
19005   struct gdbarch *gdbarch = get_objfile_arch (objfile);
19006   bfd *abfd = reader->abfd;
19007   struct comp_unit_head *cu_header = &cu->header;
19008   unsigned int bytes_read;
19009   struct dwarf_block *blk;
19010
19011   attr->form = (enum dwarf_form) form;
19012   switch (form)
19013     {
19014     case DW_FORM_ref_addr:
19015       if (cu->header.version == 2)
19016         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19017       else
19018         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19019                                        &cu->header, &bytes_read);
19020       info_ptr += bytes_read;
19021       break;
19022     case DW_FORM_GNU_ref_alt:
19023       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19024       info_ptr += bytes_read;
19025       break;
19026     case DW_FORM_addr:
19027       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19028       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19029       info_ptr += bytes_read;
19030       break;
19031     case DW_FORM_block2:
19032       blk = dwarf_alloc_block (cu);
19033       blk->size = read_2_bytes (abfd, info_ptr);
19034       info_ptr += 2;
19035       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19036       info_ptr += blk->size;
19037       DW_BLOCK (attr) = blk;
19038       break;
19039     case DW_FORM_block4:
19040       blk = dwarf_alloc_block (cu);
19041       blk->size = read_4_bytes (abfd, info_ptr);
19042       info_ptr += 4;
19043       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19044       info_ptr += blk->size;
19045       DW_BLOCK (attr) = blk;
19046       break;
19047     case DW_FORM_data2:
19048       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19049       info_ptr += 2;
19050       break;
19051     case DW_FORM_data4:
19052       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19053       info_ptr += 4;
19054       break;
19055     case DW_FORM_data8:
19056       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19057       info_ptr += 8;
19058       break;
19059     case DW_FORM_data16:
19060       blk = dwarf_alloc_block (cu);
19061       blk->size = 16;
19062       blk->data = read_n_bytes (abfd, info_ptr, 16);
19063       info_ptr += 16;
19064       DW_BLOCK (attr) = blk;
19065       break;
19066     case DW_FORM_sec_offset:
19067       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19068       info_ptr += bytes_read;
19069       break;
19070     case DW_FORM_string:
19071       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19072       DW_STRING_IS_CANONICAL (attr) = 0;
19073       info_ptr += bytes_read;
19074       break;
19075     case DW_FORM_strp:
19076       if (!cu->per_cu->is_dwz)
19077         {
19078           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19079                                                    abfd, info_ptr, cu_header,
19080                                                    &bytes_read);
19081           DW_STRING_IS_CANONICAL (attr) = 0;
19082           info_ptr += bytes_read;
19083           break;
19084         }
19085       /* FALLTHROUGH */
19086     case DW_FORM_line_strp:
19087       if (!cu->per_cu->is_dwz)
19088         {
19089           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19090                                                         abfd, info_ptr,
19091                                                         cu_header, &bytes_read);
19092           DW_STRING_IS_CANONICAL (attr) = 0;
19093           info_ptr += bytes_read;
19094           break;
19095         }
19096       /* FALLTHROUGH */
19097     case DW_FORM_GNU_strp_alt:
19098       {
19099         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19100         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19101                                           &bytes_read);
19102
19103         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19104                                                           dwz, str_offset);
19105         DW_STRING_IS_CANONICAL (attr) = 0;
19106         info_ptr += bytes_read;
19107       }
19108       break;
19109     case DW_FORM_exprloc:
19110     case DW_FORM_block:
19111       blk = dwarf_alloc_block (cu);
19112       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19113       info_ptr += bytes_read;
19114       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19115       info_ptr += blk->size;
19116       DW_BLOCK (attr) = blk;
19117       break;
19118     case DW_FORM_block1:
19119       blk = dwarf_alloc_block (cu);
19120       blk->size = read_1_byte (abfd, info_ptr);
19121       info_ptr += 1;
19122       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19123       info_ptr += blk->size;
19124       DW_BLOCK (attr) = blk;
19125       break;
19126     case DW_FORM_data1:
19127       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19128       info_ptr += 1;
19129       break;
19130     case DW_FORM_flag:
19131       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19132       info_ptr += 1;
19133       break;
19134     case DW_FORM_flag_present:
19135       DW_UNSND (attr) = 1;
19136       break;
19137     case DW_FORM_sdata:
19138       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19139       info_ptr += bytes_read;
19140       break;
19141     case DW_FORM_udata:
19142       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19143       info_ptr += bytes_read;
19144       break;
19145     case DW_FORM_ref1:
19146       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19147                          + read_1_byte (abfd, info_ptr));
19148       info_ptr += 1;
19149       break;
19150     case DW_FORM_ref2:
19151       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19152                          + read_2_bytes (abfd, info_ptr));
19153       info_ptr += 2;
19154       break;
19155     case DW_FORM_ref4:
19156       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19157                          + read_4_bytes (abfd, info_ptr));
19158       info_ptr += 4;
19159       break;
19160     case DW_FORM_ref8:
19161       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19162                          + read_8_bytes (abfd, info_ptr));
19163       info_ptr += 8;
19164       break;
19165     case DW_FORM_ref_sig8:
19166       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19167       info_ptr += 8;
19168       break;
19169     case DW_FORM_ref_udata:
19170       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19171                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19172       info_ptr += bytes_read;
19173       break;
19174     case DW_FORM_indirect:
19175       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19176       info_ptr += bytes_read;
19177       if (form == DW_FORM_implicit_const)
19178         {
19179           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19180           info_ptr += bytes_read;
19181         }
19182       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19183                                        info_ptr);
19184       break;
19185     case DW_FORM_implicit_const:
19186       DW_SND (attr) = implicit_const;
19187       break;
19188     case DW_FORM_GNU_addr_index:
19189       if (reader->dwo_file == NULL)
19190         {
19191           /* For now flag a hard error.
19192              Later we can turn this into a complaint.  */
19193           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19194                  dwarf_form_name (form),
19195                  bfd_get_filename (abfd));
19196         }
19197       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19198       info_ptr += bytes_read;
19199       break;
19200     case DW_FORM_GNU_str_index:
19201       if (reader->dwo_file == NULL)
19202         {
19203           /* For now flag a hard error.
19204              Later we can turn this into a complaint if warranted.  */
19205           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19206                  dwarf_form_name (form),
19207                  bfd_get_filename (abfd));
19208         }
19209       {
19210         ULONGEST str_index =
19211           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19212
19213         DW_STRING (attr) = read_str_index (reader, str_index);
19214         DW_STRING_IS_CANONICAL (attr) = 0;
19215         info_ptr += bytes_read;
19216       }
19217       break;
19218     default:
19219       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19220              dwarf_form_name (form),
19221              bfd_get_filename (abfd));
19222     }
19223
19224   /* Super hack.  */
19225   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19226     attr->form = DW_FORM_GNU_ref_alt;
19227
19228   /* We have seen instances where the compiler tried to emit a byte
19229      size attribute of -1 which ended up being encoded as an unsigned
19230      0xffffffff.  Although 0xffffffff is technically a valid size value,
19231      an object of this size seems pretty unlikely so we can relatively
19232      safely treat these cases as if the size attribute was invalid and
19233      treat them as zero by default.  */
19234   if (attr->name == DW_AT_byte_size
19235       && form == DW_FORM_data4
19236       && DW_UNSND (attr) >= 0xffffffff)
19237     {
19238       complaint
19239         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19240          hex_string (DW_UNSND (attr)));
19241       DW_UNSND (attr) = 0;
19242     }
19243
19244   return info_ptr;
19245 }
19246
19247 /* Read an attribute described by an abbreviated attribute.  */
19248
19249 static const gdb_byte *
19250 read_attribute (const struct die_reader_specs *reader,
19251                 struct attribute *attr, struct attr_abbrev *abbrev,
19252                 const gdb_byte *info_ptr)
19253 {
19254   attr->name = abbrev->name;
19255   return read_attribute_value (reader, attr, abbrev->form,
19256                                abbrev->implicit_const, info_ptr);
19257 }
19258
19259 /* Read dwarf information from a buffer.  */
19260
19261 static unsigned int
19262 read_1_byte (bfd *abfd, const gdb_byte *buf)
19263 {
19264   return bfd_get_8 (abfd, buf);
19265 }
19266
19267 static int
19268 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19269 {
19270   return bfd_get_signed_8 (abfd, buf);
19271 }
19272
19273 static unsigned int
19274 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19275 {
19276   return bfd_get_16 (abfd, buf);
19277 }
19278
19279 static int
19280 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19281 {
19282   return bfd_get_signed_16 (abfd, buf);
19283 }
19284
19285 static unsigned int
19286 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19287 {
19288   return bfd_get_32 (abfd, buf);
19289 }
19290
19291 static int
19292 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19293 {
19294   return bfd_get_signed_32 (abfd, buf);
19295 }
19296
19297 static ULONGEST
19298 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19299 {
19300   return bfd_get_64 (abfd, buf);
19301 }
19302
19303 static CORE_ADDR
19304 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19305               unsigned int *bytes_read)
19306 {
19307   struct comp_unit_head *cu_header = &cu->header;
19308   CORE_ADDR retval = 0;
19309
19310   if (cu_header->signed_addr_p)
19311     {
19312       switch (cu_header->addr_size)
19313         {
19314         case 2:
19315           retval = bfd_get_signed_16 (abfd, buf);
19316           break;
19317         case 4:
19318           retval = bfd_get_signed_32 (abfd, buf);
19319           break;
19320         case 8:
19321           retval = bfd_get_signed_64 (abfd, buf);
19322           break;
19323         default:
19324           internal_error (__FILE__, __LINE__,
19325                           _("read_address: bad switch, signed [in module %s]"),
19326                           bfd_get_filename (abfd));
19327         }
19328     }
19329   else
19330     {
19331       switch (cu_header->addr_size)
19332         {
19333         case 2:
19334           retval = bfd_get_16 (abfd, buf);
19335           break;
19336         case 4:
19337           retval = bfd_get_32 (abfd, buf);
19338           break;
19339         case 8:
19340           retval = bfd_get_64 (abfd, buf);
19341           break;
19342         default:
19343           internal_error (__FILE__, __LINE__,
19344                           _("read_address: bad switch, "
19345                             "unsigned [in module %s]"),
19346                           bfd_get_filename (abfd));
19347         }
19348     }
19349
19350   *bytes_read = cu_header->addr_size;
19351   return retval;
19352 }
19353
19354 /* Read the initial length from a section.  The (draft) DWARF 3
19355    specification allows the initial length to take up either 4 bytes
19356    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19357    bytes describe the length and all offsets will be 8 bytes in length
19358    instead of 4.
19359
19360    An older, non-standard 64-bit format is also handled by this
19361    function.  The older format in question stores the initial length
19362    as an 8-byte quantity without an escape value.  Lengths greater
19363    than 2^32 aren't very common which means that the initial 4 bytes
19364    is almost always zero.  Since a length value of zero doesn't make
19365    sense for the 32-bit format, this initial zero can be considered to
19366    be an escape value which indicates the presence of the older 64-bit
19367    format.  As written, the code can't detect (old format) lengths
19368    greater than 4GB.  If it becomes necessary to handle lengths
19369    somewhat larger than 4GB, we could allow other small values (such
19370    as the non-sensical values of 1, 2, and 3) to also be used as
19371    escape values indicating the presence of the old format.
19372
19373    The value returned via bytes_read should be used to increment the
19374    relevant pointer after calling read_initial_length().
19375
19376    [ Note:  read_initial_length() and read_offset() are based on the
19377      document entitled "DWARF Debugging Information Format", revision
19378      3, draft 8, dated November 19, 2001.  This document was obtained
19379      from:
19380
19381         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19382
19383      This document is only a draft and is subject to change.  (So beware.)
19384
19385      Details regarding the older, non-standard 64-bit format were
19386      determined empirically by examining 64-bit ELF files produced by
19387      the SGI toolchain on an IRIX 6.5 machine.
19388
19389      - Kevin, July 16, 2002
19390    ] */
19391
19392 static LONGEST
19393 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19394 {
19395   LONGEST length = bfd_get_32 (abfd, buf);
19396
19397   if (length == 0xffffffff)
19398     {
19399       length = bfd_get_64 (abfd, buf + 4);
19400       *bytes_read = 12;
19401     }
19402   else if (length == 0)
19403     {
19404       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19405       length = bfd_get_64 (abfd, buf);
19406       *bytes_read = 8;
19407     }
19408   else
19409     {
19410       *bytes_read = 4;
19411     }
19412
19413   return length;
19414 }
19415
19416 /* Cover function for read_initial_length.
19417    Returns the length of the object at BUF, and stores the size of the
19418    initial length in *BYTES_READ and stores the size that offsets will be in
19419    *OFFSET_SIZE.
19420    If the initial length size is not equivalent to that specified in
19421    CU_HEADER then issue a complaint.
19422    This is useful when reading non-comp-unit headers.  */
19423
19424 static LONGEST
19425 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19426                                         const struct comp_unit_head *cu_header,
19427                                         unsigned int *bytes_read,
19428                                         unsigned int *offset_size)
19429 {
19430   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19431
19432   gdb_assert (cu_header->initial_length_size == 4
19433               || cu_header->initial_length_size == 8
19434               || cu_header->initial_length_size == 12);
19435
19436   if (cu_header->initial_length_size != *bytes_read)
19437     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19438
19439   *offset_size = (*bytes_read == 4) ? 4 : 8;
19440   return length;
19441 }
19442
19443 /* Read an offset from the data stream.  The size of the offset is
19444    given by cu_header->offset_size.  */
19445
19446 static LONGEST
19447 read_offset (bfd *abfd, const gdb_byte *buf,
19448              const struct comp_unit_head *cu_header,
19449              unsigned int *bytes_read)
19450 {
19451   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19452
19453   *bytes_read = cu_header->offset_size;
19454   return offset;
19455 }
19456
19457 /* Read an offset from the data stream.  */
19458
19459 static LONGEST
19460 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19461 {
19462   LONGEST retval = 0;
19463
19464   switch (offset_size)
19465     {
19466     case 4:
19467       retval = bfd_get_32 (abfd, buf);
19468       break;
19469     case 8:
19470       retval = bfd_get_64 (abfd, buf);
19471       break;
19472     default:
19473       internal_error (__FILE__, __LINE__,
19474                       _("read_offset_1: bad switch [in module %s]"),
19475                       bfd_get_filename (abfd));
19476     }
19477
19478   return retval;
19479 }
19480
19481 static const gdb_byte *
19482 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19483 {
19484   /* If the size of a host char is 8 bits, we can return a pointer
19485      to the buffer, otherwise we have to copy the data to a buffer
19486      allocated on the temporary obstack.  */
19487   gdb_assert (HOST_CHAR_BIT == 8);
19488   return buf;
19489 }
19490
19491 static const char *
19492 read_direct_string (bfd *abfd, const gdb_byte *buf,
19493                     unsigned int *bytes_read_ptr)
19494 {
19495   /* If the size of a host char is 8 bits, we can return a pointer
19496      to the string, otherwise we have to copy the string to a buffer
19497      allocated on the temporary obstack.  */
19498   gdb_assert (HOST_CHAR_BIT == 8);
19499   if (*buf == '\0')
19500     {
19501       *bytes_read_ptr = 1;
19502       return NULL;
19503     }
19504   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19505   return (const char *) buf;
19506 }
19507
19508 /* Return pointer to string at section SECT offset STR_OFFSET with error
19509    reporting strings FORM_NAME and SECT_NAME.  */
19510
19511 static const char *
19512 read_indirect_string_at_offset_from (struct objfile *objfile,
19513                                      bfd *abfd, LONGEST str_offset,
19514                                      struct dwarf2_section_info *sect,
19515                                      const char *form_name,
19516                                      const char *sect_name)
19517 {
19518   dwarf2_read_section (objfile, sect);
19519   if (sect->buffer == NULL)
19520     error (_("%s used without %s section [in module %s]"),
19521            form_name, sect_name, bfd_get_filename (abfd));
19522   if (str_offset >= sect->size)
19523     error (_("%s pointing outside of %s section [in module %s]"),
19524            form_name, sect_name, bfd_get_filename (abfd));
19525   gdb_assert (HOST_CHAR_BIT == 8);
19526   if (sect->buffer[str_offset] == '\0')
19527     return NULL;
19528   return (const char *) (sect->buffer + str_offset);
19529 }
19530
19531 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19532
19533 static const char *
19534 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19535                                 bfd *abfd, LONGEST str_offset)
19536 {
19537   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19538                                               abfd, str_offset,
19539                                               &dwarf2_per_objfile->str,
19540                                               "DW_FORM_strp", ".debug_str");
19541 }
19542
19543 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19544
19545 static const char *
19546 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19547                                      bfd *abfd, LONGEST str_offset)
19548 {
19549   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19550                                               abfd, str_offset,
19551                                               &dwarf2_per_objfile->line_str,
19552                                               "DW_FORM_line_strp",
19553                                               ".debug_line_str");
19554 }
19555
19556 /* Read a string at offset STR_OFFSET in the .debug_str section from
19557    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19558    the string consists of a single NUL byte, return NULL; otherwise
19559    return a pointer to the string.  */
19560
19561 static const char *
19562 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19563                                LONGEST str_offset)
19564 {
19565   dwarf2_read_section (objfile, &dwz->str);
19566
19567   if (dwz->str.buffer == NULL)
19568     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19569              "section [in module %s]"),
19570            bfd_get_filename (dwz->dwz_bfd));
19571   if (str_offset >= dwz->str.size)
19572     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19573              ".debug_str section [in module %s]"),
19574            bfd_get_filename (dwz->dwz_bfd));
19575   gdb_assert (HOST_CHAR_BIT == 8);
19576   if (dwz->str.buffer[str_offset] == '\0')
19577     return NULL;
19578   return (const char *) (dwz->str.buffer + str_offset);
19579 }
19580
19581 /* Return pointer to string at .debug_str offset as read from BUF.
19582    BUF is assumed to be in a compilation unit described by CU_HEADER.
19583    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19584
19585 static const char *
19586 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19587                       const gdb_byte *buf,
19588                       const struct comp_unit_head *cu_header,
19589                       unsigned int *bytes_read_ptr)
19590 {
19591   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19592
19593   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19594 }
19595
19596 /* Return pointer to string at .debug_line_str offset as read from BUF.
19597    BUF is assumed to be in a compilation unit described by CU_HEADER.
19598    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19599
19600 static const char *
19601 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19602                            bfd *abfd, const gdb_byte *buf,
19603                            const struct comp_unit_head *cu_header,
19604                            unsigned int *bytes_read_ptr)
19605 {
19606   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19607
19608   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19609                                               str_offset);
19610 }
19611
19612 ULONGEST
19613 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19614                           unsigned int *bytes_read_ptr)
19615 {
19616   ULONGEST result;
19617   unsigned int num_read;
19618   int shift;
19619   unsigned char byte;
19620
19621   result = 0;
19622   shift = 0;
19623   num_read = 0;
19624   while (1)
19625     {
19626       byte = bfd_get_8 (abfd, buf);
19627       buf++;
19628       num_read++;
19629       result |= ((ULONGEST) (byte & 127) << shift);
19630       if ((byte & 128) == 0)
19631         {
19632           break;
19633         }
19634       shift += 7;
19635     }
19636   *bytes_read_ptr = num_read;
19637   return result;
19638 }
19639
19640 static LONGEST
19641 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19642                     unsigned int *bytes_read_ptr)
19643 {
19644   ULONGEST result;
19645   int shift, num_read;
19646   unsigned char byte;
19647
19648   result = 0;
19649   shift = 0;
19650   num_read = 0;
19651   while (1)
19652     {
19653       byte = bfd_get_8 (abfd, buf);
19654       buf++;
19655       num_read++;
19656       result |= ((ULONGEST) (byte & 127) << shift);
19657       shift += 7;
19658       if ((byte & 128) == 0)
19659         {
19660           break;
19661         }
19662     }
19663   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19664     result |= -(((ULONGEST) 1) << shift);
19665   *bytes_read_ptr = num_read;
19666   return result;
19667 }
19668
19669 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19670    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19671    ADDR_SIZE is the size of addresses from the CU header.  */
19672
19673 static CORE_ADDR
19674 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19675                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19676 {
19677   struct objfile *objfile = dwarf2_per_objfile->objfile;
19678   bfd *abfd = objfile->obfd;
19679   const gdb_byte *info_ptr;
19680
19681   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19682   if (dwarf2_per_objfile->addr.buffer == NULL)
19683     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19684            objfile_name (objfile));
19685   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19686     error (_("DW_FORM_addr_index pointing outside of "
19687              ".debug_addr section [in module %s]"),
19688            objfile_name (objfile));
19689   info_ptr = (dwarf2_per_objfile->addr.buffer
19690               + addr_base + addr_index * addr_size);
19691   if (addr_size == 4)
19692     return bfd_get_32 (abfd, info_ptr);
19693   else
19694     return bfd_get_64 (abfd, info_ptr);
19695 }
19696
19697 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19698
19699 static CORE_ADDR
19700 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19701 {
19702   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19703                             cu->addr_base, cu->header.addr_size);
19704 }
19705
19706 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19707
19708 static CORE_ADDR
19709 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19710                              unsigned int *bytes_read)
19711 {
19712   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19713   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19714
19715   return read_addr_index (cu, addr_index);
19716 }
19717
19718 /* Data structure to pass results from dwarf2_read_addr_index_reader
19719    back to dwarf2_read_addr_index.  */
19720
19721 struct dwarf2_read_addr_index_data
19722 {
19723   ULONGEST addr_base;
19724   int addr_size;
19725 };
19726
19727 /* die_reader_func for dwarf2_read_addr_index.  */
19728
19729 static void
19730 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19731                                const gdb_byte *info_ptr,
19732                                struct die_info *comp_unit_die,
19733                                int has_children,
19734                                void *data)
19735 {
19736   struct dwarf2_cu *cu = reader->cu;
19737   struct dwarf2_read_addr_index_data *aidata =
19738     (struct dwarf2_read_addr_index_data *) data;
19739
19740   aidata->addr_base = cu->addr_base;
19741   aidata->addr_size = cu->header.addr_size;
19742 }
19743
19744 /* Given an index in .debug_addr, fetch the value.
19745    NOTE: This can be called during dwarf expression evaluation,
19746    long after the debug information has been read, and thus per_cu->cu
19747    may no longer exist.  */
19748
19749 CORE_ADDR
19750 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19751                         unsigned int addr_index)
19752 {
19753   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19754   struct dwarf2_cu *cu = per_cu->cu;
19755   ULONGEST addr_base;
19756   int addr_size;
19757
19758   /* We need addr_base and addr_size.
19759      If we don't have PER_CU->cu, we have to get it.
19760      Nasty, but the alternative is storing the needed info in PER_CU,
19761      which at this point doesn't seem justified: it's not clear how frequently
19762      it would get used and it would increase the size of every PER_CU.
19763      Entry points like dwarf2_per_cu_addr_size do a similar thing
19764      so we're not in uncharted territory here.
19765      Alas we need to be a bit more complicated as addr_base is contained
19766      in the DIE.
19767
19768      We don't need to read the entire CU(/TU).
19769      We just need the header and top level die.
19770
19771      IWBN to use the aging mechanism to let us lazily later discard the CU.
19772      For now we skip this optimization.  */
19773
19774   if (cu != NULL)
19775     {
19776       addr_base = cu->addr_base;
19777       addr_size = cu->header.addr_size;
19778     }
19779   else
19780     {
19781       struct dwarf2_read_addr_index_data aidata;
19782
19783       /* Note: We can't use init_cutu_and_read_dies_simple here,
19784          we need addr_base.  */
19785       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19786                                dwarf2_read_addr_index_reader, &aidata);
19787       addr_base = aidata.addr_base;
19788       addr_size = aidata.addr_size;
19789     }
19790
19791   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19792                             addr_size);
19793 }
19794
19795 /* Given a DW_FORM_GNU_str_index, fetch the string.
19796    This is only used by the Fission support.  */
19797
19798 static const char *
19799 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19800 {
19801   struct dwarf2_cu *cu = reader->cu;
19802   struct dwarf2_per_objfile *dwarf2_per_objfile
19803     = cu->per_cu->dwarf2_per_objfile;
19804   struct objfile *objfile = dwarf2_per_objfile->objfile;
19805   const char *objf_name = objfile_name (objfile);
19806   bfd *abfd = objfile->obfd;
19807   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19808   struct dwarf2_section_info *str_offsets_section =
19809     &reader->dwo_file->sections.str_offsets;
19810   const gdb_byte *info_ptr;
19811   ULONGEST str_offset;
19812   static const char form_name[] = "DW_FORM_GNU_str_index";
19813
19814   dwarf2_read_section (objfile, str_section);
19815   dwarf2_read_section (objfile, str_offsets_section);
19816   if (str_section->buffer == NULL)
19817     error (_("%s used without .debug_str.dwo section"
19818              " in CU at offset %s [in module %s]"),
19819            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19820   if (str_offsets_section->buffer == NULL)
19821     error (_("%s used without .debug_str_offsets.dwo section"
19822              " in CU at offset %s [in module %s]"),
19823            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19824   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19825     error (_("%s pointing outside of .debug_str_offsets.dwo"
19826              " section in CU at offset %s [in module %s]"),
19827            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19828   info_ptr = (str_offsets_section->buffer
19829               + str_index * cu->header.offset_size);
19830   if (cu->header.offset_size == 4)
19831     str_offset = bfd_get_32 (abfd, info_ptr);
19832   else
19833     str_offset = bfd_get_64 (abfd, info_ptr);
19834   if (str_offset >= str_section->size)
19835     error (_("Offset from %s pointing outside of"
19836              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19837            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19838   return (const char *) (str_section->buffer + str_offset);
19839 }
19840
19841 /* Return the length of an LEB128 number in BUF.  */
19842
19843 static int
19844 leb128_size (const gdb_byte *buf)
19845 {
19846   const gdb_byte *begin = buf;
19847   gdb_byte byte;
19848
19849   while (1)
19850     {
19851       byte = *buf++;
19852       if ((byte & 128) == 0)
19853         return buf - begin;
19854     }
19855 }
19856
19857 static void
19858 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19859 {
19860   switch (lang)
19861     {
19862     case DW_LANG_C89:
19863     case DW_LANG_C99:
19864     case DW_LANG_C11:
19865     case DW_LANG_C:
19866     case DW_LANG_UPC:
19867       cu->language = language_c;
19868       break;
19869     case DW_LANG_Java:
19870     case DW_LANG_C_plus_plus:
19871     case DW_LANG_C_plus_plus_11:
19872     case DW_LANG_C_plus_plus_14:
19873       cu->language = language_cplus;
19874       break;
19875     case DW_LANG_D:
19876       cu->language = language_d;
19877       break;
19878     case DW_LANG_Fortran77:
19879     case DW_LANG_Fortran90:
19880     case DW_LANG_Fortran95:
19881     case DW_LANG_Fortran03:
19882     case DW_LANG_Fortran08:
19883       cu->language = language_fortran;
19884       break;
19885     case DW_LANG_Go:
19886       cu->language = language_go;
19887       break;
19888     case DW_LANG_Mips_Assembler:
19889       cu->language = language_asm;
19890       break;
19891     case DW_LANG_Ada83:
19892     case DW_LANG_Ada95:
19893       cu->language = language_ada;
19894       break;
19895     case DW_LANG_Modula2:
19896       cu->language = language_m2;
19897       break;
19898     case DW_LANG_Pascal83:
19899       cu->language = language_pascal;
19900       break;
19901     case DW_LANG_ObjC:
19902       cu->language = language_objc;
19903       break;
19904     case DW_LANG_Rust:
19905     case DW_LANG_Rust_old:
19906       cu->language = language_rust;
19907       break;
19908     case DW_LANG_Cobol74:
19909     case DW_LANG_Cobol85:
19910     default:
19911       cu->language = language_minimal;
19912       break;
19913     }
19914   cu->language_defn = language_def (cu->language);
19915 }
19916
19917 /* Return the named attribute or NULL if not there.  */
19918
19919 static struct attribute *
19920 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19921 {
19922   for (;;)
19923     {
19924       unsigned int i;
19925       struct attribute *spec = NULL;
19926
19927       for (i = 0; i < die->num_attrs; ++i)
19928         {
19929           if (die->attrs[i].name == name)
19930             return &die->attrs[i];
19931           if (die->attrs[i].name == DW_AT_specification
19932               || die->attrs[i].name == DW_AT_abstract_origin)
19933             spec = &die->attrs[i];
19934         }
19935
19936       if (!spec)
19937         break;
19938
19939       die = follow_die_ref (die, spec, &cu);
19940     }
19941
19942   return NULL;
19943 }
19944
19945 /* Return the named attribute or NULL if not there,
19946    but do not follow DW_AT_specification, etc.
19947    This is for use in contexts where we're reading .debug_types dies.
19948    Following DW_AT_specification, DW_AT_abstract_origin will take us
19949    back up the chain, and we want to go down.  */
19950
19951 static struct attribute *
19952 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19953 {
19954   unsigned int i;
19955
19956   for (i = 0; i < die->num_attrs; ++i)
19957     if (die->attrs[i].name == name)
19958       return &die->attrs[i];
19959
19960   return NULL;
19961 }
19962
19963 /* Return the string associated with a string-typed attribute, or NULL if it
19964    is either not found or is of an incorrect type.  */
19965
19966 static const char *
19967 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19968 {
19969   struct attribute *attr;
19970   const char *str = NULL;
19971
19972   attr = dwarf2_attr (die, name, cu);
19973
19974   if (attr != NULL)
19975     {
19976       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19977           || attr->form == DW_FORM_string
19978           || attr->form == DW_FORM_GNU_str_index
19979           || attr->form == DW_FORM_GNU_strp_alt)
19980         str = DW_STRING (attr);
19981       else
19982         complaint (_("string type expected for attribute %s for "
19983                      "DIE at %s in module %s"),
19984                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19985                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19986     }
19987
19988   return str;
19989 }
19990
19991 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19992    and holds a non-zero value.  This function should only be used for
19993    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19994
19995 static int
19996 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19997 {
19998   struct attribute *attr = dwarf2_attr (die, name, cu);
19999
20000   return (attr && DW_UNSND (attr));
20001 }
20002
20003 static int
20004 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
20005 {
20006   /* A DIE is a declaration if it has a DW_AT_declaration attribute
20007      which value is non-zero.  However, we have to be careful with
20008      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
20009      (via dwarf2_flag_true_p) follows this attribute.  So we may
20010      end up accidently finding a declaration attribute that belongs
20011      to a different DIE referenced by the specification attribute,
20012      even though the given DIE does not have a declaration attribute.  */
20013   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
20014           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
20015 }
20016
20017 /* Return the die giving the specification for DIE, if there is
20018    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20019    containing the return value on output.  If there is no
20020    specification, but there is an abstract origin, that is
20021    returned.  */
20022
20023 static struct die_info *
20024 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20025 {
20026   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20027                                              *spec_cu);
20028
20029   if (spec_attr == NULL)
20030     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20031
20032   if (spec_attr == NULL)
20033     return NULL;
20034   else
20035     return follow_die_ref (die, spec_attr, spec_cu);
20036 }
20037
20038 /* Stub for free_line_header to match void * callback types.  */
20039
20040 static void
20041 free_line_header_voidp (void *arg)
20042 {
20043   struct line_header *lh = (struct line_header *) arg;
20044
20045   delete lh;
20046 }
20047
20048 void
20049 line_header::add_include_dir (const char *include_dir)
20050 {
20051   if (dwarf_line_debug >= 2)
20052     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20053                         include_dirs.size () + 1, include_dir);
20054
20055   include_dirs.push_back (include_dir);
20056 }
20057
20058 void
20059 line_header::add_file_name (const char *name,
20060                             dir_index d_index,
20061                             unsigned int mod_time,
20062                             unsigned int length)
20063 {
20064   if (dwarf_line_debug >= 2)
20065     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20066                         (unsigned) file_names.size () + 1, name);
20067
20068   file_names.emplace_back (name, d_index, mod_time, length);
20069 }
20070
20071 /* A convenience function to find the proper .debug_line section for a CU.  */
20072
20073 static struct dwarf2_section_info *
20074 get_debug_line_section (struct dwarf2_cu *cu)
20075 {
20076   struct dwarf2_section_info *section;
20077   struct dwarf2_per_objfile *dwarf2_per_objfile
20078     = cu->per_cu->dwarf2_per_objfile;
20079
20080   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20081      DWO file.  */
20082   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20083     section = &cu->dwo_unit->dwo_file->sections.line;
20084   else if (cu->per_cu->is_dwz)
20085     {
20086       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20087
20088       section = &dwz->line;
20089     }
20090   else
20091     section = &dwarf2_per_objfile->line;
20092
20093   return section;
20094 }
20095
20096 /* Read directory or file name entry format, starting with byte of
20097    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20098    entries count and the entries themselves in the described entry
20099    format.  */
20100
20101 static void
20102 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20103                         bfd *abfd, const gdb_byte **bufp,
20104                         struct line_header *lh,
20105                         const struct comp_unit_head *cu_header,
20106                         void (*callback) (struct line_header *lh,
20107                                           const char *name,
20108                                           dir_index d_index,
20109                                           unsigned int mod_time,
20110                                           unsigned int length))
20111 {
20112   gdb_byte format_count, formati;
20113   ULONGEST data_count, datai;
20114   const gdb_byte *buf = *bufp;
20115   const gdb_byte *format_header_data;
20116   unsigned int bytes_read;
20117
20118   format_count = read_1_byte (abfd, buf);
20119   buf += 1;
20120   format_header_data = buf;
20121   for (formati = 0; formati < format_count; formati++)
20122     {
20123       read_unsigned_leb128 (abfd, buf, &bytes_read);
20124       buf += bytes_read;
20125       read_unsigned_leb128 (abfd, buf, &bytes_read);
20126       buf += bytes_read;
20127     }
20128
20129   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20130   buf += bytes_read;
20131   for (datai = 0; datai < data_count; datai++)
20132     {
20133       const gdb_byte *format = format_header_data;
20134       struct file_entry fe;
20135
20136       for (formati = 0; formati < format_count; formati++)
20137         {
20138           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20139           format += bytes_read;
20140
20141           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20142           format += bytes_read;
20143
20144           gdb::optional<const char *> string;
20145           gdb::optional<unsigned int> uint;
20146
20147           switch (form)
20148             {
20149             case DW_FORM_string:
20150               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20151               buf += bytes_read;
20152               break;
20153
20154             case DW_FORM_line_strp:
20155               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20156                                                          abfd, buf,
20157                                                          cu_header,
20158                                                          &bytes_read));
20159               buf += bytes_read;
20160               break;
20161
20162             case DW_FORM_data1:
20163               uint.emplace (read_1_byte (abfd, buf));
20164               buf += 1;
20165               break;
20166
20167             case DW_FORM_data2:
20168               uint.emplace (read_2_bytes (abfd, buf));
20169               buf += 2;
20170               break;
20171
20172             case DW_FORM_data4:
20173               uint.emplace (read_4_bytes (abfd, buf));
20174               buf += 4;
20175               break;
20176
20177             case DW_FORM_data8:
20178               uint.emplace (read_8_bytes (abfd, buf));
20179               buf += 8;
20180               break;
20181
20182             case DW_FORM_udata:
20183               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20184               buf += bytes_read;
20185               break;
20186
20187             case DW_FORM_block:
20188               /* It is valid only for DW_LNCT_timestamp which is ignored by
20189                  current GDB.  */
20190               break;
20191             }
20192
20193           switch (content_type)
20194             {
20195             case DW_LNCT_path:
20196               if (string.has_value ())
20197                 fe.name = *string;
20198               break;
20199             case DW_LNCT_directory_index:
20200               if (uint.has_value ())
20201                 fe.d_index = (dir_index) *uint;
20202               break;
20203             case DW_LNCT_timestamp:
20204               if (uint.has_value ())
20205                 fe.mod_time = *uint;
20206               break;
20207             case DW_LNCT_size:
20208               if (uint.has_value ())
20209                 fe.length = *uint;
20210               break;
20211             case DW_LNCT_MD5:
20212               break;
20213             default:
20214               complaint (_("Unknown format content type %s"),
20215                          pulongest (content_type));
20216             }
20217         }
20218
20219       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20220     }
20221
20222   *bufp = buf;
20223 }
20224
20225 /* Read the statement program header starting at OFFSET in
20226    .debug_line, or .debug_line.dwo.  Return a pointer
20227    to a struct line_header, allocated using xmalloc.
20228    Returns NULL if there is a problem reading the header, e.g., if it
20229    has a version we don't understand.
20230
20231    NOTE: the strings in the include directory and file name tables of
20232    the returned object point into the dwarf line section buffer,
20233    and must not be freed.  */
20234
20235 static line_header_up
20236 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20237 {
20238   const gdb_byte *line_ptr;
20239   unsigned int bytes_read, offset_size;
20240   int i;
20241   const char *cur_dir, *cur_file;
20242   struct dwarf2_section_info *section;
20243   bfd *abfd;
20244   struct dwarf2_per_objfile *dwarf2_per_objfile
20245     = cu->per_cu->dwarf2_per_objfile;
20246
20247   section = get_debug_line_section (cu);
20248   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20249   if (section->buffer == NULL)
20250     {
20251       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20252         complaint (_("missing .debug_line.dwo section"));
20253       else
20254         complaint (_("missing .debug_line section"));
20255       return 0;
20256     }
20257
20258   /* We can't do this until we know the section is non-empty.
20259      Only then do we know we have such a section.  */
20260   abfd = get_section_bfd_owner (section);
20261
20262   /* Make sure that at least there's room for the total_length field.
20263      That could be 12 bytes long, but we're just going to fudge that.  */
20264   if (to_underlying (sect_off) + 4 >= section->size)
20265     {
20266       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20267       return 0;
20268     }
20269
20270   line_header_up lh (new line_header ());
20271
20272   lh->sect_off = sect_off;
20273   lh->offset_in_dwz = cu->per_cu->is_dwz;
20274
20275   line_ptr = section->buffer + to_underlying (sect_off);
20276
20277   /* Read in the header.  */
20278   lh->total_length =
20279     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20280                                             &bytes_read, &offset_size);
20281   line_ptr += bytes_read;
20282   if (line_ptr + lh->total_length > (section->buffer + section->size))
20283     {
20284       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20285       return 0;
20286     }
20287   lh->statement_program_end = line_ptr + lh->total_length;
20288   lh->version = read_2_bytes (abfd, line_ptr);
20289   line_ptr += 2;
20290   if (lh->version > 5)
20291     {
20292       /* This is a version we don't understand.  The format could have
20293          changed in ways we don't handle properly so just punt.  */
20294       complaint (_("unsupported version in .debug_line section"));
20295       return NULL;
20296     }
20297   if (lh->version >= 5)
20298     {
20299       gdb_byte segment_selector_size;
20300
20301       /* Skip address size.  */
20302       read_1_byte (abfd, line_ptr);
20303       line_ptr += 1;
20304
20305       segment_selector_size = read_1_byte (abfd, line_ptr);
20306       line_ptr += 1;
20307       if (segment_selector_size != 0)
20308         {
20309           complaint (_("unsupported segment selector size %u "
20310                        "in .debug_line section"),
20311                      segment_selector_size);
20312           return NULL;
20313         }
20314     }
20315   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20316   line_ptr += offset_size;
20317   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20318   line_ptr += 1;
20319   if (lh->version >= 4)
20320     {
20321       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20322       line_ptr += 1;
20323     }
20324   else
20325     lh->maximum_ops_per_instruction = 1;
20326
20327   if (lh->maximum_ops_per_instruction == 0)
20328     {
20329       lh->maximum_ops_per_instruction = 1;
20330       complaint (_("invalid maximum_ops_per_instruction "
20331                    "in `.debug_line' section"));
20332     }
20333
20334   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20335   line_ptr += 1;
20336   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20337   line_ptr += 1;
20338   lh->line_range = read_1_byte (abfd, line_ptr);
20339   line_ptr += 1;
20340   lh->opcode_base = read_1_byte (abfd, line_ptr);
20341   line_ptr += 1;
20342   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20343
20344   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20345   for (i = 1; i < lh->opcode_base; ++i)
20346     {
20347       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20348       line_ptr += 1;
20349     }
20350
20351   if (lh->version >= 5)
20352     {
20353       /* Read directory table.  */
20354       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20355                               &cu->header,
20356                               [] (struct line_header *header, const char *name,
20357                                   dir_index d_index, unsigned int mod_time,
20358                                   unsigned int length)
20359         {
20360           header->add_include_dir (name);
20361         });
20362
20363       /* Read file name table.  */
20364       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20365                               &cu->header,
20366                               [] (struct line_header *header, const char *name,
20367                                   dir_index d_index, unsigned int mod_time,
20368                                   unsigned int length)
20369         {
20370           header->add_file_name (name, d_index, mod_time, length);
20371         });
20372     }
20373   else
20374     {
20375       /* Read directory table.  */
20376       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20377         {
20378           line_ptr += bytes_read;
20379           lh->add_include_dir (cur_dir);
20380         }
20381       line_ptr += bytes_read;
20382
20383       /* Read file name table.  */
20384       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20385         {
20386           unsigned int mod_time, length;
20387           dir_index d_index;
20388
20389           line_ptr += bytes_read;
20390           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20391           line_ptr += bytes_read;
20392           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20393           line_ptr += bytes_read;
20394           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20395           line_ptr += bytes_read;
20396
20397           lh->add_file_name (cur_file, d_index, mod_time, length);
20398         }
20399       line_ptr += bytes_read;
20400     }
20401   lh->statement_program_start = line_ptr;
20402
20403   if (line_ptr > (section->buffer + section->size))
20404     complaint (_("line number info header doesn't "
20405                  "fit in `.debug_line' section"));
20406
20407   return lh;
20408 }
20409
20410 /* Subroutine of dwarf_decode_lines to simplify it.
20411    Return the file name of the psymtab for included file FILE_INDEX
20412    in line header LH of PST.
20413    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20414    If space for the result is malloc'd, *NAME_HOLDER will be set.
20415    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20416
20417 static const char *
20418 psymtab_include_file_name (const struct line_header *lh, int file_index,
20419                            const struct partial_symtab *pst,
20420                            const char *comp_dir,
20421                            gdb::unique_xmalloc_ptr<char> *name_holder)
20422 {
20423   const file_entry &fe = lh->file_names[file_index];
20424   const char *include_name = fe.name;
20425   const char *include_name_to_compare = include_name;
20426   const char *pst_filename;
20427   int file_is_pst;
20428
20429   const char *dir_name = fe.include_dir (lh);
20430
20431   gdb::unique_xmalloc_ptr<char> hold_compare;
20432   if (!IS_ABSOLUTE_PATH (include_name)
20433       && (dir_name != NULL || comp_dir != NULL))
20434     {
20435       /* Avoid creating a duplicate psymtab for PST.
20436          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20437          Before we do the comparison, however, we need to account
20438          for DIR_NAME and COMP_DIR.
20439          First prepend dir_name (if non-NULL).  If we still don't
20440          have an absolute path prepend comp_dir (if non-NULL).
20441          However, the directory we record in the include-file's
20442          psymtab does not contain COMP_DIR (to match the
20443          corresponding symtab(s)).
20444
20445          Example:
20446
20447          bash$ cd /tmp
20448          bash$ gcc -g ./hello.c
20449          include_name = "hello.c"
20450          dir_name = "."
20451          DW_AT_comp_dir = comp_dir = "/tmp"
20452          DW_AT_name = "./hello.c"
20453
20454       */
20455
20456       if (dir_name != NULL)
20457         {
20458           name_holder->reset (concat (dir_name, SLASH_STRING,
20459                                       include_name, (char *) NULL));
20460           include_name = name_holder->get ();
20461           include_name_to_compare = include_name;
20462         }
20463       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20464         {
20465           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20466                                       include_name, (char *) NULL));
20467           include_name_to_compare = hold_compare.get ();
20468         }
20469     }
20470
20471   pst_filename = pst->filename;
20472   gdb::unique_xmalloc_ptr<char> copied_name;
20473   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20474     {
20475       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20476                                  pst_filename, (char *) NULL));
20477       pst_filename = copied_name.get ();
20478     }
20479
20480   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20481
20482   if (file_is_pst)
20483     return NULL;
20484   return include_name;
20485 }
20486
20487 /* State machine to track the state of the line number program.  */
20488
20489 class lnp_state_machine
20490 {
20491 public:
20492   /* Initialize a machine state for the start of a line number
20493      program.  */
20494   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20495                      bool record_lines_p);
20496
20497   file_entry *current_file ()
20498   {
20499     /* lh->file_names is 0-based, but the file name numbers in the
20500        statement program are 1-based.  */
20501     return m_line_header->file_name_at (m_file);
20502   }
20503
20504   /* Record the line in the state machine.  END_SEQUENCE is true if
20505      we're processing the end of a sequence.  */
20506   void record_line (bool end_sequence);
20507
20508   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20509      nop-out rest of the lines in this sequence.  */
20510   void check_line_address (struct dwarf2_cu *cu,
20511                            const gdb_byte *line_ptr,
20512                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20513
20514   void handle_set_discriminator (unsigned int discriminator)
20515   {
20516     m_discriminator = discriminator;
20517     m_line_has_non_zero_discriminator |= discriminator != 0;
20518   }
20519
20520   /* Handle DW_LNE_set_address.  */
20521   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20522   {
20523     m_op_index = 0;
20524     address += baseaddr;
20525     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20526   }
20527
20528   /* Handle DW_LNS_advance_pc.  */
20529   void handle_advance_pc (CORE_ADDR adjust);
20530
20531   /* Handle a special opcode.  */
20532   void handle_special_opcode (unsigned char op_code);
20533
20534   /* Handle DW_LNS_advance_line.  */
20535   void handle_advance_line (int line_delta)
20536   {
20537     advance_line (line_delta);
20538   }
20539
20540   /* Handle DW_LNS_set_file.  */
20541   void handle_set_file (file_name_index file);
20542
20543   /* Handle DW_LNS_negate_stmt.  */
20544   void handle_negate_stmt ()
20545   {
20546     m_is_stmt = !m_is_stmt;
20547   }
20548
20549   /* Handle DW_LNS_const_add_pc.  */
20550   void handle_const_add_pc ();
20551
20552   /* Handle DW_LNS_fixed_advance_pc.  */
20553   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20554   {
20555     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20556     m_op_index = 0;
20557   }
20558
20559   /* Handle DW_LNS_copy.  */
20560   void handle_copy ()
20561   {
20562     record_line (false);
20563     m_discriminator = 0;
20564   }
20565
20566   /* Handle DW_LNE_end_sequence.  */
20567   void handle_end_sequence ()
20568   {
20569     m_currently_recording_lines = true;
20570   }
20571
20572 private:
20573   /* Advance the line by LINE_DELTA.  */
20574   void advance_line (int line_delta)
20575   {
20576     m_line += line_delta;
20577
20578     if (line_delta != 0)
20579       m_line_has_non_zero_discriminator = m_discriminator != 0;
20580   }
20581
20582   struct dwarf2_cu *m_cu;
20583
20584   gdbarch *m_gdbarch;
20585
20586   /* True if we're recording lines.
20587      Otherwise we're building partial symtabs and are just interested in
20588      finding include files mentioned by the line number program.  */
20589   bool m_record_lines_p;
20590
20591   /* The line number header.  */
20592   line_header *m_line_header;
20593
20594   /* These are part of the standard DWARF line number state machine,
20595      and initialized according to the DWARF spec.  */
20596
20597   unsigned char m_op_index = 0;
20598   /* The line table index (1-based) of the current file.  */
20599   file_name_index m_file = (file_name_index) 1;
20600   unsigned int m_line = 1;
20601
20602   /* These are initialized in the constructor.  */
20603
20604   CORE_ADDR m_address;
20605   bool m_is_stmt;
20606   unsigned int m_discriminator;
20607
20608   /* Additional bits of state we need to track.  */
20609
20610   /* The last file that we called dwarf2_start_subfile for.
20611      This is only used for TLLs.  */
20612   unsigned int m_last_file = 0;
20613   /* The last file a line number was recorded for.  */
20614   struct subfile *m_last_subfile = NULL;
20615
20616   /* When true, record the lines we decode.  */
20617   bool m_currently_recording_lines = false;
20618
20619   /* The last line number that was recorded, used to coalesce
20620      consecutive entries for the same line.  This can happen, for
20621      example, when discriminators are present.  PR 17276.  */
20622   unsigned int m_last_line = 0;
20623   bool m_line_has_non_zero_discriminator = false;
20624 };
20625
20626 void
20627 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20628 {
20629   CORE_ADDR addr_adj = (((m_op_index + adjust)
20630                          / m_line_header->maximum_ops_per_instruction)
20631                         * m_line_header->minimum_instruction_length);
20632   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20633   m_op_index = ((m_op_index + adjust)
20634                 % m_line_header->maximum_ops_per_instruction);
20635 }
20636
20637 void
20638 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20639 {
20640   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20641   CORE_ADDR addr_adj = (((m_op_index
20642                           + (adj_opcode / m_line_header->line_range))
20643                          / m_line_header->maximum_ops_per_instruction)
20644                         * m_line_header->minimum_instruction_length);
20645   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20646   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20647                 % m_line_header->maximum_ops_per_instruction);
20648
20649   int line_delta = (m_line_header->line_base
20650                     + (adj_opcode % m_line_header->line_range));
20651   advance_line (line_delta);
20652   record_line (false);
20653   m_discriminator = 0;
20654 }
20655
20656 void
20657 lnp_state_machine::handle_set_file (file_name_index file)
20658 {
20659   m_file = file;
20660
20661   const file_entry *fe = current_file ();
20662   if (fe == NULL)
20663     dwarf2_debug_line_missing_file_complaint ();
20664   else if (m_record_lines_p)
20665     {
20666       const char *dir = fe->include_dir (m_line_header);
20667
20668       m_last_subfile = m_cu->builder->get_current_subfile ();
20669       m_line_has_non_zero_discriminator = m_discriminator != 0;
20670       dwarf2_start_subfile (m_cu, fe->name, dir);
20671     }
20672 }
20673
20674 void
20675 lnp_state_machine::handle_const_add_pc ()
20676 {
20677   CORE_ADDR adjust
20678     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20679
20680   CORE_ADDR addr_adj
20681     = (((m_op_index + adjust)
20682         / m_line_header->maximum_ops_per_instruction)
20683        * m_line_header->minimum_instruction_length);
20684
20685   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20686   m_op_index = ((m_op_index + adjust)
20687                 % m_line_header->maximum_ops_per_instruction);
20688 }
20689
20690 /* Return non-zero if we should add LINE to the line number table.
20691    LINE is the line to add, LAST_LINE is the last line that was added,
20692    LAST_SUBFILE is the subfile for LAST_LINE.
20693    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20694    had a non-zero discriminator.
20695
20696    We have to be careful in the presence of discriminators.
20697    E.g., for this line:
20698
20699      for (i = 0; i < 100000; i++);
20700
20701    clang can emit four line number entries for that one line,
20702    each with a different discriminator.
20703    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20704
20705    However, we want gdb to coalesce all four entries into one.
20706    Otherwise the user could stepi into the middle of the line and
20707    gdb would get confused about whether the pc really was in the
20708    middle of the line.
20709
20710    Things are further complicated by the fact that two consecutive
20711    line number entries for the same line is a heuristic used by gcc
20712    to denote the end of the prologue.  So we can't just discard duplicate
20713    entries, we have to be selective about it.  The heuristic we use is
20714    that we only collapse consecutive entries for the same line if at least
20715    one of those entries has a non-zero discriminator.  PR 17276.
20716
20717    Note: Addresses in the line number state machine can never go backwards
20718    within one sequence, thus this coalescing is ok.  */
20719
20720 static int
20721 dwarf_record_line_p (struct dwarf2_cu *cu,
20722                      unsigned int line, unsigned int last_line,
20723                      int line_has_non_zero_discriminator,
20724                      struct subfile *last_subfile)
20725 {
20726   if (cu->builder->get_current_subfile () != last_subfile)
20727     return 1;
20728   if (line != last_line)
20729     return 1;
20730   /* Same line for the same file that we've seen already.
20731      As a last check, for pr 17276, only record the line if the line
20732      has never had a non-zero discriminator.  */
20733   if (!line_has_non_zero_discriminator)
20734     return 1;
20735   return 0;
20736 }
20737
20738 /* Use the CU's builder to record line number LINE beginning at
20739    address ADDRESS in the line table of subfile SUBFILE.  */
20740
20741 static void
20742 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20743                      unsigned int line, CORE_ADDR address,
20744                      struct dwarf2_cu *cu)
20745 {
20746   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20747
20748   if (dwarf_line_debug)
20749     {
20750       fprintf_unfiltered (gdb_stdlog,
20751                           "Recording line %u, file %s, address %s\n",
20752                           line, lbasename (subfile->name),
20753                           paddress (gdbarch, address));
20754     }
20755
20756   if (cu != nullptr)
20757     cu->builder->record_line (subfile, line, addr);
20758 }
20759
20760 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20761    Mark the end of a set of line number records.
20762    The arguments are the same as for dwarf_record_line_1.
20763    If SUBFILE is NULL the request is ignored.  */
20764
20765 static void
20766 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20767                    CORE_ADDR address, struct dwarf2_cu *cu)
20768 {
20769   if (subfile == NULL)
20770     return;
20771
20772   if (dwarf_line_debug)
20773     {
20774       fprintf_unfiltered (gdb_stdlog,
20775                           "Finishing current line, file %s, address %s\n",
20776                           lbasename (subfile->name),
20777                           paddress (gdbarch, address));
20778     }
20779
20780   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20781 }
20782
20783 void
20784 lnp_state_machine::record_line (bool end_sequence)
20785 {
20786   if (dwarf_line_debug)
20787     {
20788       fprintf_unfiltered (gdb_stdlog,
20789                           "Processing actual line %u: file %u,"
20790                           " address %s, is_stmt %u, discrim %u\n",
20791                           m_line, to_underlying (m_file),
20792                           paddress (m_gdbarch, m_address),
20793                           m_is_stmt, m_discriminator);
20794     }
20795
20796   file_entry *fe = current_file ();
20797
20798   if (fe == NULL)
20799     dwarf2_debug_line_missing_file_complaint ();
20800   /* For now we ignore lines not starting on an instruction boundary.
20801      But not when processing end_sequence for compatibility with the
20802      previous version of the code.  */
20803   else if (m_op_index == 0 || end_sequence)
20804     {
20805       fe->included_p = 1;
20806       if (m_record_lines_p && (producer_is_codewarrior (m_cu) || m_is_stmt))
20807         {
20808           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20809               || end_sequence)
20810             {
20811               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20812                                  m_currently_recording_lines ? m_cu : nullptr);
20813             }
20814
20815           if (!end_sequence)
20816             {
20817               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20818                                        m_line_has_non_zero_discriminator,
20819                                        m_last_subfile))
20820                 {
20821                   dwarf_record_line_1 (m_gdbarch,
20822                                        m_cu->builder->get_current_subfile (),
20823                                        m_line, m_address,
20824                                        m_currently_recording_lines ? m_cu : nullptr);
20825                 }
20826               m_last_subfile = m_cu->builder->get_current_subfile ();
20827               m_last_line = m_line;
20828             }
20829         }
20830     }
20831 }
20832
20833 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20834                                       line_header *lh, bool record_lines_p)
20835 {
20836   m_cu = cu;
20837   m_gdbarch = arch;
20838   m_record_lines_p = record_lines_p;
20839   m_line_header = lh;
20840
20841   m_currently_recording_lines = true;
20842
20843   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20844      was a line entry for it so that the backend has a chance to adjust it
20845      and also record it in case it needs it.  This is currently used by MIPS
20846      code, cf. `mips_adjust_dwarf2_line'.  */
20847   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20848   m_is_stmt = lh->default_is_stmt;
20849   m_discriminator = 0;
20850 }
20851
20852 void
20853 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20854                                        const gdb_byte *line_ptr,
20855                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20856 {
20857   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20858      the pc range of the CU.  However, we restrict the test to only ADDRESS
20859      values of zero to preserve GDB's previous behaviour which is to handle
20860      the specific case of a function being GC'd by the linker.  */
20861
20862   if (address == 0 && address < unrelocated_lowpc)
20863     {
20864       /* This line table is for a function which has been
20865          GCd by the linker.  Ignore it.  PR gdb/12528 */
20866
20867       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20868       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20869
20870       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20871                  line_offset, objfile_name (objfile));
20872       m_currently_recording_lines = false;
20873       /* Note: m_currently_recording_lines is left as false until we see
20874          DW_LNE_end_sequence.  */
20875     }
20876 }
20877
20878 /* Subroutine of dwarf_decode_lines to simplify it.
20879    Process the line number information in LH.
20880    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20881    program in order to set included_p for every referenced header.  */
20882
20883 static void
20884 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20885                       const int decode_for_pst_p, CORE_ADDR lowpc)
20886 {
20887   const gdb_byte *line_ptr, *extended_end;
20888   const gdb_byte *line_end;
20889   unsigned int bytes_read, extended_len;
20890   unsigned char op_code, extended_op;
20891   CORE_ADDR baseaddr;
20892   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20893   bfd *abfd = objfile->obfd;
20894   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20895   /* True if we're recording line info (as opposed to building partial
20896      symtabs and just interested in finding include files mentioned by
20897      the line number program).  */
20898   bool record_lines_p = !decode_for_pst_p;
20899
20900   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20901
20902   line_ptr = lh->statement_program_start;
20903   line_end = lh->statement_program_end;
20904
20905   /* Read the statement sequences until there's nothing left.  */
20906   while (line_ptr < line_end)
20907     {
20908       /* The DWARF line number program state machine.  Reset the state
20909          machine at the start of each sequence.  */
20910       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20911       bool end_sequence = false;
20912
20913       if (record_lines_p)
20914         {
20915           /* Start a subfile for the current file of the state
20916              machine.  */
20917           const file_entry *fe = state_machine.current_file ();
20918
20919           if (fe != NULL)
20920             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20921         }
20922
20923       /* Decode the table.  */
20924       while (line_ptr < line_end && !end_sequence)
20925         {
20926           op_code = read_1_byte (abfd, line_ptr);
20927           line_ptr += 1;
20928
20929           if (op_code >= lh->opcode_base)
20930             {
20931               /* Special opcode.  */
20932               state_machine.handle_special_opcode (op_code);
20933             }
20934           else switch (op_code)
20935             {
20936             case DW_LNS_extended_op:
20937               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20938                                                    &bytes_read);
20939               line_ptr += bytes_read;
20940               extended_end = line_ptr + extended_len;
20941               extended_op = read_1_byte (abfd, line_ptr);
20942               line_ptr += 1;
20943               switch (extended_op)
20944                 {
20945                 case DW_LNE_end_sequence:
20946                   state_machine.handle_end_sequence ();
20947                   end_sequence = true;
20948                   break;
20949                 case DW_LNE_set_address:
20950                   {
20951                     CORE_ADDR address
20952                       = read_address (abfd, line_ptr, cu, &bytes_read);
20953                     line_ptr += bytes_read;
20954
20955                     state_machine.check_line_address (cu, line_ptr,
20956                                                       lowpc - baseaddr, address);
20957                     state_machine.handle_set_address (baseaddr, address);
20958                   }
20959                   break;
20960                 case DW_LNE_define_file:
20961                   {
20962                     const char *cur_file;
20963                     unsigned int mod_time, length;
20964                     dir_index dindex;
20965
20966                     cur_file = read_direct_string (abfd, line_ptr,
20967                                                    &bytes_read);
20968                     line_ptr += bytes_read;
20969                     dindex = (dir_index)
20970                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20971                     line_ptr += bytes_read;
20972                     mod_time =
20973                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20974                     line_ptr += bytes_read;
20975                     length =
20976                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20977                     line_ptr += bytes_read;
20978                     lh->add_file_name (cur_file, dindex, mod_time, length);
20979                   }
20980                   break;
20981                 case DW_LNE_set_discriminator:
20982                   {
20983                     /* The discriminator is not interesting to the
20984                        debugger; just ignore it.  We still need to
20985                        check its value though:
20986                        if there are consecutive entries for the same
20987                        (non-prologue) line we want to coalesce them.
20988                        PR 17276.  */
20989                     unsigned int discr
20990                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20991                     line_ptr += bytes_read;
20992
20993                     state_machine.handle_set_discriminator (discr);
20994                   }
20995                   break;
20996                 default:
20997                   complaint (_("mangled .debug_line section"));
20998                   return;
20999                 }
21000               /* Make sure that we parsed the extended op correctly.  If e.g.
21001                  we expected a different address size than the producer used,
21002                  we may have read the wrong number of bytes.  */
21003               if (line_ptr != extended_end)
21004                 {
21005                   complaint (_("mangled .debug_line section"));
21006                   return;
21007                 }
21008               break;
21009             case DW_LNS_copy:
21010               state_machine.handle_copy ();
21011               break;
21012             case DW_LNS_advance_pc:
21013               {
21014                 CORE_ADDR adjust
21015                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21016                 line_ptr += bytes_read;
21017
21018                 state_machine.handle_advance_pc (adjust);
21019               }
21020               break;
21021             case DW_LNS_advance_line:
21022               {
21023                 int line_delta
21024                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21025                 line_ptr += bytes_read;
21026
21027                 state_machine.handle_advance_line (line_delta);
21028               }
21029               break;
21030             case DW_LNS_set_file:
21031               {
21032                 file_name_index file
21033                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21034                                                             &bytes_read);
21035                 line_ptr += bytes_read;
21036
21037                 state_machine.handle_set_file (file);
21038               }
21039               break;
21040             case DW_LNS_set_column:
21041               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21042               line_ptr += bytes_read;
21043               break;
21044             case DW_LNS_negate_stmt:
21045               state_machine.handle_negate_stmt ();
21046               break;
21047             case DW_LNS_set_basic_block:
21048               break;
21049             /* Add to the address register of the state machine the
21050                address increment value corresponding to special opcode
21051                255.  I.e., this value is scaled by the minimum
21052                instruction length since special opcode 255 would have
21053                scaled the increment.  */
21054             case DW_LNS_const_add_pc:
21055               state_machine.handle_const_add_pc ();
21056               break;
21057             case DW_LNS_fixed_advance_pc:
21058               {
21059                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21060                 line_ptr += 2;
21061
21062                 state_machine.handle_fixed_advance_pc (addr_adj);
21063               }
21064               break;
21065             default:
21066               {
21067                 /* Unknown standard opcode, ignore it.  */
21068                 int i;
21069
21070                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21071                   {
21072                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21073                     line_ptr += bytes_read;
21074                   }
21075               }
21076             }
21077         }
21078
21079       if (!end_sequence)
21080         dwarf2_debug_line_missing_end_sequence_complaint ();
21081
21082       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21083          in which case we still finish recording the last line).  */
21084       state_machine.record_line (true);
21085     }
21086 }
21087
21088 /* Decode the Line Number Program (LNP) for the given line_header
21089    structure and CU.  The actual information extracted and the type
21090    of structures created from the LNP depends on the value of PST.
21091
21092    1. If PST is NULL, then this procedure uses the data from the program
21093       to create all necessary symbol tables, and their linetables.
21094
21095    2. If PST is not NULL, this procedure reads the program to determine
21096       the list of files included by the unit represented by PST, and
21097       builds all the associated partial symbol tables.
21098
21099    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21100    It is used for relative paths in the line table.
21101    NOTE: When processing partial symtabs (pst != NULL),
21102    comp_dir == pst->dirname.
21103
21104    NOTE: It is important that psymtabs have the same file name (via strcmp)
21105    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21106    symtab we don't use it in the name of the psymtabs we create.
21107    E.g. expand_line_sal requires this when finding psymtabs to expand.
21108    A good testcase for this is mb-inline.exp.
21109
21110    LOWPC is the lowest address in CU (or 0 if not known).
21111
21112    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21113    for its PC<->lines mapping information.  Otherwise only the filename
21114    table is read in.  */
21115
21116 static void
21117 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21118                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21119                     CORE_ADDR lowpc, int decode_mapping)
21120 {
21121   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21122   const int decode_for_pst_p = (pst != NULL);
21123
21124   if (decode_mapping)
21125     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21126
21127   if (decode_for_pst_p)
21128     {
21129       int file_index;
21130
21131       /* Now that we're done scanning the Line Header Program, we can
21132          create the psymtab of each included file.  */
21133       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21134         if (lh->file_names[file_index].included_p == 1)
21135           {
21136             gdb::unique_xmalloc_ptr<char> name_holder;
21137             const char *include_name =
21138               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21139                                          &name_holder);
21140             if (include_name != NULL)
21141               dwarf2_create_include_psymtab (include_name, pst, objfile);
21142           }
21143     }
21144   else
21145     {
21146       /* Make sure a symtab is created for every file, even files
21147          which contain only variables (i.e. no code with associated
21148          line numbers).  */
21149       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21150       int i;
21151
21152       for (i = 0; i < lh->file_names.size (); i++)
21153         {
21154           file_entry &fe = lh->file_names[i];
21155
21156           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21157
21158           if (cu->builder->get_current_subfile ()->symtab == NULL)
21159             {
21160               cu->builder->get_current_subfile ()->symtab
21161                 = allocate_symtab (cust,
21162                                    cu->builder->get_current_subfile ()->name);
21163             }
21164           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21165         }
21166     }
21167 }
21168
21169 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21170    DIRNAME the name of the source directory which contains FILENAME
21171    or NULL if not known.
21172    This routine tries to keep line numbers from identical absolute and
21173    relative file names in a common subfile.
21174
21175    Using the `list' example from the GDB testsuite, which resides in
21176    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21177    of /srcdir/list0.c yields the following debugging information for list0.c:
21178
21179    DW_AT_name:          /srcdir/list0.c
21180    DW_AT_comp_dir:      /compdir
21181    files.files[0].name: list0.h
21182    files.files[0].dir:  /srcdir
21183    files.files[1].name: list0.c
21184    files.files[1].dir:  /srcdir
21185
21186    The line number information for list0.c has to end up in a single
21187    subfile, so that `break /srcdir/list0.c:1' works as expected.
21188    start_subfile will ensure that this happens provided that we pass the
21189    concatenation of files.files[1].dir and files.files[1].name as the
21190    subfile's name.  */
21191
21192 static void
21193 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21194                       const char *dirname)
21195 {
21196   char *copy = NULL;
21197
21198   /* In order not to lose the line information directory,
21199      we concatenate it to the filename when it makes sense.
21200      Note that the Dwarf3 standard says (speaking of filenames in line
21201      information): ``The directory index is ignored for file names
21202      that represent full path names''.  Thus ignoring dirname in the
21203      `else' branch below isn't an issue.  */
21204
21205   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21206     {
21207       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21208       filename = copy;
21209     }
21210
21211   cu->builder->start_subfile (filename);
21212
21213   if (copy != NULL)
21214     xfree (copy);
21215 }
21216
21217 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21218    buildsym_compunit constructor.  */
21219
21220 static struct compunit_symtab *
21221 dwarf2_start_symtab (struct dwarf2_cu *cu,
21222                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21223 {
21224   gdb_assert (cu->builder == nullptr);
21225
21226   cu->builder.reset (new struct buildsym_compunit
21227                      (cu->per_cu->dwarf2_per_objfile->objfile,
21228                       name, comp_dir, cu->language, low_pc));
21229
21230   cu->list_in_scope = cu->builder->get_file_symbols ();
21231
21232   cu->builder->record_debugformat ("DWARF 2");
21233   cu->builder->record_producer (cu->producer);
21234
21235   cu->processing_has_namespace_info = 0;
21236
21237   return cu->builder->get_compunit_symtab ();
21238 }
21239
21240 static void
21241 var_decode_location (struct attribute *attr, struct symbol *sym,
21242                      struct dwarf2_cu *cu)
21243 {
21244   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21245   struct comp_unit_head *cu_header = &cu->header;
21246
21247   /* NOTE drow/2003-01-30: There used to be a comment and some special
21248      code here to turn a symbol with DW_AT_external and a
21249      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21250      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21251      with some versions of binutils) where shared libraries could have
21252      relocations against symbols in their debug information - the
21253      minimal symbol would have the right address, but the debug info
21254      would not.  It's no longer necessary, because we will explicitly
21255      apply relocations when we read in the debug information now.  */
21256
21257   /* A DW_AT_location attribute with no contents indicates that a
21258      variable has been optimized away.  */
21259   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21260     {
21261       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21262       return;
21263     }
21264
21265   /* Handle one degenerate form of location expression specially, to
21266      preserve GDB's previous behavior when section offsets are
21267      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21268      then mark this symbol as LOC_STATIC.  */
21269
21270   if (attr_form_is_block (attr)
21271       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21272            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21273           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21274               && (DW_BLOCK (attr)->size
21275                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21276     {
21277       unsigned int dummy;
21278
21279       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21280         SYMBOL_VALUE_ADDRESS (sym) =
21281           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21282       else
21283         SYMBOL_VALUE_ADDRESS (sym) =
21284           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21285       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21286       fixup_symbol_section (sym, objfile);
21287       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21288                                               SYMBOL_SECTION (sym));
21289       return;
21290     }
21291
21292   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21293      expression evaluator, and use LOC_COMPUTED only when necessary
21294      (i.e. when the value of a register or memory location is
21295      referenced, or a thread-local block, etc.).  Then again, it might
21296      not be worthwhile.  I'm assuming that it isn't unless performance
21297      or memory numbers show me otherwise.  */
21298
21299   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21300
21301   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21302     cu->has_loclist = 1;
21303 }
21304
21305 /* Given a pointer to a DWARF information entry, figure out if we need
21306    to make a symbol table entry for it, and if so, create a new entry
21307    and return a pointer to it.
21308    If TYPE is NULL, determine symbol type from the die, otherwise
21309    used the passed type.
21310    If SPACE is not NULL, use it to hold the new symbol.  If it is
21311    NULL, allocate a new symbol on the objfile's obstack.  */
21312
21313 static struct symbol *
21314 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21315             struct symbol *space)
21316 {
21317   struct dwarf2_per_objfile *dwarf2_per_objfile
21318     = cu->per_cu->dwarf2_per_objfile;
21319   struct objfile *objfile = dwarf2_per_objfile->objfile;
21320   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21321   struct symbol *sym = NULL;
21322   const char *name;
21323   struct attribute *attr = NULL;
21324   struct attribute *attr2 = NULL;
21325   CORE_ADDR baseaddr;
21326   struct pending **list_to_add = NULL;
21327
21328   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21329
21330   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21331
21332   name = dwarf2_name (die, cu);
21333   if (name)
21334     {
21335       const char *linkagename;
21336       int suppress_add = 0;
21337
21338       if (space)
21339         sym = space;
21340       else
21341         sym = allocate_symbol (objfile);
21342       OBJSTAT (objfile, n_syms++);
21343
21344       /* Cache this symbol's name and the name's demangled form (if any).  */
21345       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21346       linkagename = dwarf2_physname (name, die, cu);
21347       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21348
21349       /* Fortran does not have mangling standard and the mangling does differ
21350          between gfortran, iFort etc.  */
21351       if (cu->language == language_fortran
21352           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21353         symbol_set_demangled_name (&(sym->ginfo),
21354                                    dwarf2_full_name (name, die, cu),
21355                                    NULL);
21356
21357       /* Default assumptions.
21358          Use the passed type or decode it from the die.  */
21359       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21360       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21361       if (type != NULL)
21362         SYMBOL_TYPE (sym) = type;
21363       else
21364         SYMBOL_TYPE (sym) = die_type (die, cu);
21365       attr = dwarf2_attr (die,
21366                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21367                           cu);
21368       if (attr)
21369         {
21370           SYMBOL_LINE (sym) = DW_UNSND (attr);
21371         }
21372
21373       attr = dwarf2_attr (die,
21374                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21375                           cu);
21376       if (attr)
21377         {
21378           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21379           struct file_entry *fe;
21380
21381           if (cu->line_header != NULL)
21382             fe = cu->line_header->file_name_at (file_index);
21383           else
21384             fe = NULL;
21385
21386           if (fe == NULL)
21387             complaint (_("file index out of range"));
21388           else
21389             symbol_set_symtab (sym, fe->symtab);
21390         }
21391
21392       switch (die->tag)
21393         {
21394         case DW_TAG_label:
21395           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21396           if (attr)
21397             {
21398               CORE_ADDR addr;
21399
21400               addr = attr_value_as_address (attr);
21401               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21402               SYMBOL_VALUE_ADDRESS (sym) = addr;
21403             }
21404           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21405           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21406           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21407           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21408           break;
21409         case DW_TAG_subprogram:
21410           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21411              finish_block.  */
21412           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21413           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21414           if ((attr2 && (DW_UNSND (attr2) != 0))
21415               || cu->language == language_ada)
21416             {
21417               /* Subprograms marked external are stored as a global symbol.
21418                  Ada subprograms, whether marked external or not, are always
21419                  stored as a global symbol, because we want to be able to
21420                  access them globally.  For instance, we want to be able
21421                  to break on a nested subprogram without having to
21422                  specify the context.  */
21423               list_to_add = cu->builder->get_global_symbols ();
21424             }
21425           else
21426             {
21427               list_to_add = cu->list_in_scope;
21428             }
21429           break;
21430         case DW_TAG_inlined_subroutine:
21431           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21432              finish_block.  */
21433           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21434           SYMBOL_INLINED (sym) = 1;
21435           list_to_add = cu->list_in_scope;
21436           break;
21437         case DW_TAG_template_value_param:
21438           suppress_add = 1;
21439           /* Fall through.  */
21440         case DW_TAG_constant:
21441         case DW_TAG_variable:
21442         case DW_TAG_member:
21443           /* Compilation with minimal debug info may result in
21444              variables with missing type entries.  Change the
21445              misleading `void' type to something sensible.  */
21446           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21447             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21448
21449           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21450           /* In the case of DW_TAG_member, we should only be called for
21451              static const members.  */
21452           if (die->tag == DW_TAG_member)
21453             {
21454               /* dwarf2_add_field uses die_is_declaration,
21455                  so we do the same.  */
21456               gdb_assert (die_is_declaration (die, cu));
21457               gdb_assert (attr);
21458             }
21459           if (attr)
21460             {
21461               dwarf2_const_value (attr, sym, cu);
21462               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21463               if (!suppress_add)
21464                 {
21465                   if (attr2 && (DW_UNSND (attr2) != 0))
21466                     list_to_add = cu->builder->get_global_symbols ();
21467                   else
21468                     list_to_add = cu->list_in_scope;
21469                 }
21470               break;
21471             }
21472           attr = dwarf2_attr (die, DW_AT_location, cu);
21473           if (attr)
21474             {
21475               var_decode_location (attr, sym, cu);
21476               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21477
21478               /* Fortran explicitly imports any global symbols to the local
21479                  scope by DW_TAG_common_block.  */
21480               if (cu->language == language_fortran && die->parent
21481                   && die->parent->tag == DW_TAG_common_block)
21482                 attr2 = NULL;
21483
21484               if (SYMBOL_CLASS (sym) == LOC_STATIC
21485                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21486                   && !dwarf2_per_objfile->has_section_at_zero)
21487                 {
21488                   /* When a static variable is eliminated by the linker,
21489                      the corresponding debug information is not stripped
21490                      out, but the variable address is set to null;
21491                      do not add such variables into symbol table.  */
21492                 }
21493               else if (attr2 && (DW_UNSND (attr2) != 0))
21494                 {
21495                   /* Workaround gfortran PR debug/40040 - it uses
21496                      DW_AT_location for variables in -fPIC libraries which may
21497                      get overriden by other libraries/executable and get
21498                      a different address.  Resolve it by the minimal symbol
21499                      which may come from inferior's executable using copy
21500                      relocation.  Make this workaround only for gfortran as for
21501                      other compilers GDB cannot guess the minimal symbol
21502                      Fortran mangling kind.  */
21503                   if (cu->language == language_fortran && die->parent
21504                       && die->parent->tag == DW_TAG_module
21505                       && cu->producer
21506                       && startswith (cu->producer, "GNU Fortran"))
21507                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21508
21509                   /* A variable with DW_AT_external is never static,
21510                      but it may be block-scoped.  */
21511                   list_to_add
21512                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21513                        ? cu->builder->get_global_symbols ()
21514                        : cu->list_in_scope);
21515                 }
21516               else
21517                 list_to_add = cu->list_in_scope;
21518             }
21519           else
21520             {
21521               /* We do not know the address of this symbol.
21522                  If it is an external symbol and we have type information
21523                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21524                  The address of the variable will then be determined from
21525                  the minimal symbol table whenever the variable is
21526                  referenced.  */
21527               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21528
21529               /* Fortran explicitly imports any global symbols to the local
21530                  scope by DW_TAG_common_block.  */
21531               if (cu->language == language_fortran && die->parent
21532                   && die->parent->tag == DW_TAG_common_block)
21533                 {
21534                   /* SYMBOL_CLASS doesn't matter here because
21535                      read_common_block is going to reset it.  */
21536                   if (!suppress_add)
21537                     list_to_add = cu->list_in_scope;
21538                 }
21539               else if (attr2 && (DW_UNSND (attr2) != 0)
21540                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21541                 {
21542                   /* A variable with DW_AT_external is never static, but it
21543                      may be block-scoped.  */
21544                   list_to_add
21545                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21546                        ? cu->builder->get_global_symbols ()
21547                        : cu->list_in_scope);
21548
21549                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21550                 }
21551               else if (!die_is_declaration (die, cu))
21552                 {
21553                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21554                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21555                   if (!suppress_add)
21556                     list_to_add = cu->list_in_scope;
21557                 }
21558             }
21559           break;
21560         case DW_TAG_formal_parameter:
21561           {
21562             /* If we are inside a function, mark this as an argument.  If
21563                not, we might be looking at an argument to an inlined function
21564                when we do not have enough information to show inlined frames;
21565                pretend it's a local variable in that case so that the user can
21566                still see it.  */
21567             struct context_stack *curr
21568               = cu->builder->get_current_context_stack ();
21569             if (curr != nullptr && curr->name != nullptr)
21570               SYMBOL_IS_ARGUMENT (sym) = 1;
21571             attr = dwarf2_attr (die, DW_AT_location, cu);
21572             if (attr)
21573               {
21574                 var_decode_location (attr, sym, cu);
21575               }
21576             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21577             if (attr)
21578               {
21579                 dwarf2_const_value (attr, sym, cu);
21580               }
21581
21582             list_to_add = cu->list_in_scope;
21583           }
21584           break;
21585         case DW_TAG_unspecified_parameters:
21586           /* From varargs functions; gdb doesn't seem to have any
21587              interest in this information, so just ignore it for now.
21588              (FIXME?) */
21589           break;
21590         case DW_TAG_template_type_param:
21591           suppress_add = 1;
21592           /* Fall through.  */
21593         case DW_TAG_class_type:
21594         case DW_TAG_interface_type:
21595         case DW_TAG_structure_type:
21596         case DW_TAG_union_type:
21597         case DW_TAG_set_type:
21598         case DW_TAG_enumeration_type:
21599           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21600           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21601
21602           {
21603             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21604                really ever be static objects: otherwise, if you try
21605                to, say, break of a class's method and you're in a file
21606                which doesn't mention that class, it won't work unless
21607                the check for all static symbols in lookup_symbol_aux
21608                saves you.  See the OtherFileClass tests in
21609                gdb.c++/namespace.exp.  */
21610
21611             if (!suppress_add)
21612               {
21613                 list_to_add
21614                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21615                      && cu->language == language_cplus
21616                      ? cu->builder->get_global_symbols ()
21617                      : cu->list_in_scope);
21618
21619                 /* The semantics of C++ state that "struct foo {
21620                    ... }" also defines a typedef for "foo".  */
21621                 if (cu->language == language_cplus
21622                     || cu->language == language_ada
21623                     || cu->language == language_d
21624                     || cu->language == language_rust)
21625                   {
21626                     /* The symbol's name is already allocated along
21627                        with this objfile, so we don't need to
21628                        duplicate it for the type.  */
21629                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21630                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21631                   }
21632               }
21633           }
21634           break;
21635         case DW_TAG_typedef:
21636           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21637           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21638           list_to_add = cu->list_in_scope;
21639           break;
21640         case DW_TAG_base_type:
21641         case DW_TAG_subrange_type:
21642           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21643           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21644           list_to_add = cu->list_in_scope;
21645           break;
21646         case DW_TAG_enumerator:
21647           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21648           if (attr)
21649             {
21650               dwarf2_const_value (attr, sym, cu);
21651             }
21652           {
21653             /* NOTE: carlton/2003-11-10: See comment above in the
21654                DW_TAG_class_type, etc. block.  */
21655
21656             list_to_add
21657               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21658                  && cu->language == language_cplus
21659                  ? cu->builder->get_global_symbols ()
21660                  : cu->list_in_scope);
21661           }
21662           break;
21663         case DW_TAG_imported_declaration:
21664         case DW_TAG_namespace:
21665           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21666           list_to_add = cu->builder->get_global_symbols ();
21667           break;
21668         case DW_TAG_module:
21669           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21670           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21671           list_to_add = cu->builder->get_global_symbols ();
21672           break;
21673         case DW_TAG_common_block:
21674           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21675           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21676           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21677           break;
21678         default:
21679           /* Not a tag we recognize.  Hopefully we aren't processing
21680              trash data, but since we must specifically ignore things
21681              we don't recognize, there is nothing else we should do at
21682              this point.  */
21683           complaint (_("unsupported tag: '%s'"),
21684                      dwarf_tag_name (die->tag));
21685           break;
21686         }
21687
21688       if (suppress_add)
21689         {
21690           sym->hash_next = objfile->template_symbols;
21691           objfile->template_symbols = sym;
21692           list_to_add = NULL;
21693         }
21694
21695       if (list_to_add != NULL)
21696         dw2_add_symbol_to_list (sym, list_to_add);
21697
21698       /* For the benefit of old versions of GCC, check for anonymous
21699          namespaces based on the demangled name.  */
21700       if (!cu->processing_has_namespace_info
21701           && cu->language == language_cplus)
21702         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21703     }
21704   return (sym);
21705 }
21706
21707 /* Given an attr with a DW_FORM_dataN value in host byte order,
21708    zero-extend it as appropriate for the symbol's type.  The DWARF
21709    standard (v4) is not entirely clear about the meaning of using
21710    DW_FORM_dataN for a constant with a signed type, where the type is
21711    wider than the data.  The conclusion of a discussion on the DWARF
21712    list was that this is unspecified.  We choose to always zero-extend
21713    because that is the interpretation long in use by GCC.  */
21714
21715 static gdb_byte *
21716 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21717                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21718 {
21719   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21720   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21721                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21722   LONGEST l = DW_UNSND (attr);
21723
21724   if (bits < sizeof (*value) * 8)
21725     {
21726       l &= ((LONGEST) 1 << bits) - 1;
21727       *value = l;
21728     }
21729   else if (bits == sizeof (*value) * 8)
21730     *value = l;
21731   else
21732     {
21733       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21734       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21735       return bytes;
21736     }
21737
21738   return NULL;
21739 }
21740
21741 /* Read a constant value from an attribute.  Either set *VALUE, or if
21742    the value does not fit in *VALUE, set *BYTES - either already
21743    allocated on the objfile obstack, or newly allocated on OBSTACK,
21744    or, set *BATON, if we translated the constant to a location
21745    expression.  */
21746
21747 static void
21748 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21749                          const char *name, struct obstack *obstack,
21750                          struct dwarf2_cu *cu,
21751                          LONGEST *value, const gdb_byte **bytes,
21752                          struct dwarf2_locexpr_baton **baton)
21753 {
21754   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21755   struct comp_unit_head *cu_header = &cu->header;
21756   struct dwarf_block *blk;
21757   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21758                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21759
21760   *value = 0;
21761   *bytes = NULL;
21762   *baton = NULL;
21763
21764   switch (attr->form)
21765     {
21766     case DW_FORM_addr:
21767     case DW_FORM_GNU_addr_index:
21768       {
21769         gdb_byte *data;
21770
21771         if (TYPE_LENGTH (type) != cu_header->addr_size)
21772           dwarf2_const_value_length_mismatch_complaint (name,
21773                                                         cu_header->addr_size,
21774                                                         TYPE_LENGTH (type));
21775         /* Symbols of this form are reasonably rare, so we just
21776            piggyback on the existing location code rather than writing
21777            a new implementation of symbol_computed_ops.  */
21778         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21779         (*baton)->per_cu = cu->per_cu;
21780         gdb_assert ((*baton)->per_cu);
21781
21782         (*baton)->size = 2 + cu_header->addr_size;
21783         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21784         (*baton)->data = data;
21785
21786         data[0] = DW_OP_addr;
21787         store_unsigned_integer (&data[1], cu_header->addr_size,
21788                                 byte_order, DW_ADDR (attr));
21789         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21790       }
21791       break;
21792     case DW_FORM_string:
21793     case DW_FORM_strp:
21794     case DW_FORM_GNU_str_index:
21795     case DW_FORM_GNU_strp_alt:
21796       /* DW_STRING is already allocated on the objfile obstack, point
21797          directly to it.  */
21798       *bytes = (const gdb_byte *) DW_STRING (attr);
21799       break;
21800     case DW_FORM_block1:
21801     case DW_FORM_block2:
21802     case DW_FORM_block4:
21803     case DW_FORM_block:
21804     case DW_FORM_exprloc:
21805     case DW_FORM_data16:
21806       blk = DW_BLOCK (attr);
21807       if (TYPE_LENGTH (type) != blk->size)
21808         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21809                                                       TYPE_LENGTH (type));
21810       *bytes = blk->data;
21811       break;
21812
21813       /* The DW_AT_const_value attributes are supposed to carry the
21814          symbol's value "represented as it would be on the target
21815          architecture."  By the time we get here, it's already been
21816          converted to host endianness, so we just need to sign- or
21817          zero-extend it as appropriate.  */
21818     case DW_FORM_data1:
21819       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21820       break;
21821     case DW_FORM_data2:
21822       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21823       break;
21824     case DW_FORM_data4:
21825       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21826       break;
21827     case DW_FORM_data8:
21828       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21829       break;
21830
21831     case DW_FORM_sdata:
21832     case DW_FORM_implicit_const:
21833       *value = DW_SND (attr);
21834       break;
21835
21836     case DW_FORM_udata:
21837       *value = DW_UNSND (attr);
21838       break;
21839
21840     default:
21841       complaint (_("unsupported const value attribute form: '%s'"),
21842                  dwarf_form_name (attr->form));
21843       *value = 0;
21844       break;
21845     }
21846 }
21847
21848
21849 /* Copy constant value from an attribute to a symbol.  */
21850
21851 static void
21852 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21853                     struct dwarf2_cu *cu)
21854 {
21855   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21856   LONGEST value;
21857   const gdb_byte *bytes;
21858   struct dwarf2_locexpr_baton *baton;
21859
21860   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21861                            SYMBOL_PRINT_NAME (sym),
21862                            &objfile->objfile_obstack, cu,
21863                            &value, &bytes, &baton);
21864
21865   if (baton != NULL)
21866     {
21867       SYMBOL_LOCATION_BATON (sym) = baton;
21868       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21869     }
21870   else if (bytes != NULL)
21871      {
21872       SYMBOL_VALUE_BYTES (sym) = bytes;
21873       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21874     }
21875   else
21876     {
21877       SYMBOL_VALUE (sym) = value;
21878       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21879     }
21880 }
21881
21882 /* Return the type of the die in question using its DW_AT_type attribute.  */
21883
21884 static struct type *
21885 die_type (struct die_info *die, struct dwarf2_cu *cu)
21886 {
21887   struct attribute *type_attr;
21888
21889   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21890   if (!type_attr)
21891     {
21892       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21893       /* A missing DW_AT_type represents a void type.  */
21894       return objfile_type (objfile)->builtin_void;
21895     }
21896
21897   return lookup_die_type (die, type_attr, cu);
21898 }
21899
21900 /* True iff CU's producer generates GNAT Ada auxiliary information
21901    that allows to find parallel types through that information instead
21902    of having to do expensive parallel lookups by type name.  */
21903
21904 static int
21905 need_gnat_info (struct dwarf2_cu *cu)
21906 {
21907   /* Assume that the Ada compiler was GNAT, which always produces
21908      the auxiliary information.  */
21909   return (cu->language == language_ada);
21910 }
21911
21912 /* Return the auxiliary type of the die in question using its
21913    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21914    attribute is not present.  */
21915
21916 static struct type *
21917 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21918 {
21919   struct attribute *type_attr;
21920
21921   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21922   if (!type_attr)
21923     return NULL;
21924
21925   return lookup_die_type (die, type_attr, cu);
21926 }
21927
21928 /* If DIE has a descriptive_type attribute, then set the TYPE's
21929    descriptive type accordingly.  */
21930
21931 static void
21932 set_descriptive_type (struct type *type, struct die_info *die,
21933                       struct dwarf2_cu *cu)
21934 {
21935   struct type *descriptive_type = die_descriptive_type (die, cu);
21936
21937   if (descriptive_type)
21938     {
21939       ALLOCATE_GNAT_AUX_TYPE (type);
21940       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21941     }
21942 }
21943
21944 /* Return the containing type of the die in question using its
21945    DW_AT_containing_type attribute.  */
21946
21947 static struct type *
21948 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21949 {
21950   struct attribute *type_attr;
21951   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21952
21953   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21954   if (!type_attr)
21955     error (_("Dwarf Error: Problem turning containing type into gdb type "
21956              "[in module %s]"), objfile_name (objfile));
21957
21958   return lookup_die_type (die, type_attr, cu);
21959 }
21960
21961 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21962
21963 static struct type *
21964 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21965 {
21966   struct dwarf2_per_objfile *dwarf2_per_objfile
21967     = cu->per_cu->dwarf2_per_objfile;
21968   struct objfile *objfile = dwarf2_per_objfile->objfile;
21969   char *saved;
21970
21971   std::string message
21972     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21973                      objfile_name (objfile),
21974                      sect_offset_str (cu->header.sect_off),
21975                      sect_offset_str (die->sect_off));
21976   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21977                                   message.c_str (), message.length ());
21978
21979   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21980 }
21981
21982 /* Look up the type of DIE in CU using its type attribute ATTR.
21983    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21984    DW_AT_containing_type.
21985    If there is no type substitute an error marker.  */
21986
21987 static struct type *
21988 lookup_die_type (struct die_info *die, const struct attribute *attr,
21989                  struct dwarf2_cu *cu)
21990 {
21991   struct dwarf2_per_objfile *dwarf2_per_objfile
21992     = cu->per_cu->dwarf2_per_objfile;
21993   struct objfile *objfile = dwarf2_per_objfile->objfile;
21994   struct type *this_type;
21995
21996   gdb_assert (attr->name == DW_AT_type
21997               || attr->name == DW_AT_GNAT_descriptive_type
21998               || attr->name == DW_AT_containing_type);
21999
22000   /* First see if we have it cached.  */
22001
22002   if (attr->form == DW_FORM_GNU_ref_alt)
22003     {
22004       struct dwarf2_per_cu_data *per_cu;
22005       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22006
22007       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
22008                                                  dwarf2_per_objfile);
22009       this_type = get_die_type_at_offset (sect_off, per_cu);
22010     }
22011   else if (attr_form_is_ref (attr))
22012     {
22013       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22014
22015       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22016     }
22017   else if (attr->form == DW_FORM_ref_sig8)
22018     {
22019       ULONGEST signature = DW_SIGNATURE (attr);
22020
22021       return get_signatured_type (die, signature, cu);
22022     }
22023   else
22024     {
22025       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22026                    " at %s [in module %s]"),
22027                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22028                  objfile_name (objfile));
22029       return build_error_marker_type (cu, die);
22030     }
22031
22032   /* If not cached we need to read it in.  */
22033
22034   if (this_type == NULL)
22035     {
22036       struct die_info *type_die = NULL;
22037       struct dwarf2_cu *type_cu = cu;
22038
22039       if (attr_form_is_ref (attr))
22040         type_die = follow_die_ref (die, attr, &type_cu);
22041       if (type_die == NULL)
22042         return build_error_marker_type (cu, die);
22043       /* If we find the type now, it's probably because the type came
22044          from an inter-CU reference and the type's CU got expanded before
22045          ours.  */
22046       this_type = read_type_die (type_die, type_cu);
22047     }
22048
22049   /* If we still don't have a type use an error marker.  */
22050
22051   if (this_type == NULL)
22052     return build_error_marker_type (cu, die);
22053
22054   return this_type;
22055 }
22056
22057 /* Return the type in DIE, CU.
22058    Returns NULL for invalid types.
22059
22060    This first does a lookup in die_type_hash,
22061    and only reads the die in if necessary.
22062
22063    NOTE: This can be called when reading in partial or full symbols.  */
22064
22065 static struct type *
22066 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22067 {
22068   struct type *this_type;
22069
22070   this_type = get_die_type (die, cu);
22071   if (this_type)
22072     return this_type;
22073
22074   return read_type_die_1 (die, cu);
22075 }
22076
22077 /* Read the type in DIE, CU.
22078    Returns NULL for invalid types.  */
22079
22080 static struct type *
22081 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22082 {
22083   struct type *this_type = NULL;
22084
22085   switch (die->tag)
22086     {
22087     case DW_TAG_class_type:
22088     case DW_TAG_interface_type:
22089     case DW_TAG_structure_type:
22090     case DW_TAG_union_type:
22091       this_type = read_structure_type (die, cu);
22092       break;
22093     case DW_TAG_enumeration_type:
22094       this_type = read_enumeration_type (die, cu);
22095       break;
22096     case DW_TAG_subprogram:
22097     case DW_TAG_subroutine_type:
22098     case DW_TAG_inlined_subroutine:
22099       this_type = read_subroutine_type (die, cu);
22100       break;
22101     case DW_TAG_array_type:
22102       this_type = read_array_type (die, cu);
22103       break;
22104     case DW_TAG_set_type:
22105       this_type = read_set_type (die, cu);
22106       break;
22107     case DW_TAG_pointer_type:
22108       this_type = read_tag_pointer_type (die, cu);
22109       break;
22110     case DW_TAG_ptr_to_member_type:
22111       this_type = read_tag_ptr_to_member_type (die, cu);
22112       break;
22113     case DW_TAG_reference_type:
22114       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22115       break;
22116     case DW_TAG_rvalue_reference_type:
22117       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22118       break;
22119     case DW_TAG_const_type:
22120       this_type = read_tag_const_type (die, cu);
22121       break;
22122     case DW_TAG_volatile_type:
22123       this_type = read_tag_volatile_type (die, cu);
22124       break;
22125     case DW_TAG_restrict_type:
22126       this_type = read_tag_restrict_type (die, cu);
22127       break;
22128     case DW_TAG_string_type:
22129       this_type = read_tag_string_type (die, cu);
22130       break;
22131     case DW_TAG_typedef:
22132       this_type = read_typedef (die, cu);
22133       break;
22134     case DW_TAG_subrange_type:
22135       this_type = read_subrange_type (die, cu);
22136       break;
22137     case DW_TAG_base_type:
22138       this_type = read_base_type (die, cu);
22139       break;
22140     case DW_TAG_unspecified_type:
22141       this_type = read_unspecified_type (die, cu);
22142       break;
22143     case DW_TAG_namespace:
22144       this_type = read_namespace_type (die, cu);
22145       break;
22146     case DW_TAG_module:
22147       this_type = read_module_type (die, cu);
22148       break;
22149     case DW_TAG_atomic_type:
22150       this_type = read_tag_atomic_type (die, cu);
22151       break;
22152     default:
22153       complaint (_("unexpected tag in read_type_die: '%s'"),
22154                  dwarf_tag_name (die->tag));
22155       break;
22156     }
22157
22158   return this_type;
22159 }
22160
22161 /* See if we can figure out if the class lives in a namespace.  We do
22162    this by looking for a member function; its demangled name will
22163    contain namespace info, if there is any.
22164    Return the computed name or NULL.
22165    Space for the result is allocated on the objfile's obstack.
22166    This is the full-die version of guess_partial_die_structure_name.
22167    In this case we know DIE has no useful parent.  */
22168
22169 static char *
22170 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22171 {
22172   struct die_info *spec_die;
22173   struct dwarf2_cu *spec_cu;
22174   struct die_info *child;
22175   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22176
22177   spec_cu = cu;
22178   spec_die = die_specification (die, &spec_cu);
22179   if (spec_die != NULL)
22180     {
22181       die = spec_die;
22182       cu = spec_cu;
22183     }
22184
22185   for (child = die->child;
22186        child != NULL;
22187        child = child->sibling)
22188     {
22189       if (child->tag == DW_TAG_subprogram)
22190         {
22191           const char *linkage_name = dw2_linkage_name (child, cu);
22192
22193           if (linkage_name != NULL)
22194             {
22195               char *actual_name
22196                 = language_class_name_from_physname (cu->language_defn,
22197                                                      linkage_name);
22198               char *name = NULL;
22199
22200               if (actual_name != NULL)
22201                 {
22202                   const char *die_name = dwarf2_name (die, cu);
22203
22204                   if (die_name != NULL
22205                       && strcmp (die_name, actual_name) != 0)
22206                     {
22207                       /* Strip off the class name from the full name.
22208                          We want the prefix.  */
22209                       int die_name_len = strlen (die_name);
22210                       int actual_name_len = strlen (actual_name);
22211
22212                       /* Test for '::' as a sanity check.  */
22213                       if (actual_name_len > die_name_len + 2
22214                           && actual_name[actual_name_len
22215                                          - die_name_len - 1] == ':')
22216                         name = (char *) obstack_copy0 (
22217                           &objfile->per_bfd->storage_obstack,
22218                           actual_name, actual_name_len - die_name_len - 2);
22219                     }
22220                 }
22221               xfree (actual_name);
22222               return name;
22223             }
22224         }
22225     }
22226
22227   return NULL;
22228 }
22229
22230 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22231    prefix part in such case.  See
22232    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22233
22234 static const char *
22235 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22236 {
22237   struct attribute *attr;
22238   const char *base;
22239
22240   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22241       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22242     return NULL;
22243
22244   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22245     return NULL;
22246
22247   attr = dw2_linkage_name_attr (die, cu);
22248   if (attr == NULL || DW_STRING (attr) == NULL)
22249     return NULL;
22250
22251   /* dwarf2_name had to be already called.  */
22252   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22253
22254   /* Strip the base name, keep any leading namespaces/classes.  */
22255   base = strrchr (DW_STRING (attr), ':');
22256   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22257     return "";
22258
22259   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22260   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22261                                  DW_STRING (attr),
22262                                  &base[-1] - DW_STRING (attr));
22263 }
22264
22265 /* Return the name of the namespace/class that DIE is defined within,
22266    or "" if we can't tell.  The caller should not xfree the result.
22267
22268    For example, if we're within the method foo() in the following
22269    code:
22270
22271    namespace N {
22272      class C {
22273        void foo () {
22274        }
22275      };
22276    }
22277
22278    then determine_prefix on foo's die will return "N::C".  */
22279
22280 static const char *
22281 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22282 {
22283   struct dwarf2_per_objfile *dwarf2_per_objfile
22284     = cu->per_cu->dwarf2_per_objfile;
22285   struct die_info *parent, *spec_die;
22286   struct dwarf2_cu *spec_cu;
22287   struct type *parent_type;
22288   const char *retval;
22289
22290   if (cu->language != language_cplus
22291       && cu->language != language_fortran && cu->language != language_d
22292       && cu->language != language_rust)
22293     return "";
22294
22295   retval = anonymous_struct_prefix (die, cu);
22296   if (retval)
22297     return retval;
22298
22299   /* We have to be careful in the presence of DW_AT_specification.
22300      For example, with GCC 3.4, given the code
22301
22302      namespace N {
22303        void foo() {
22304          // Definition of N::foo.
22305        }
22306      }
22307
22308      then we'll have a tree of DIEs like this:
22309
22310      1: DW_TAG_compile_unit
22311        2: DW_TAG_namespace        // N
22312          3: DW_TAG_subprogram     // declaration of N::foo
22313        4: DW_TAG_subprogram       // definition of N::foo
22314             DW_AT_specification   // refers to die #3
22315
22316      Thus, when processing die #4, we have to pretend that we're in
22317      the context of its DW_AT_specification, namely the contex of die
22318      #3.  */
22319   spec_cu = cu;
22320   spec_die = die_specification (die, &spec_cu);
22321   if (spec_die == NULL)
22322     parent = die->parent;
22323   else
22324     {
22325       parent = spec_die->parent;
22326       cu = spec_cu;
22327     }
22328
22329   if (parent == NULL)
22330     return "";
22331   else if (parent->building_fullname)
22332     {
22333       const char *name;
22334       const char *parent_name;
22335
22336       /* It has been seen on RealView 2.2 built binaries,
22337          DW_TAG_template_type_param types actually _defined_ as
22338          children of the parent class:
22339
22340          enum E {};
22341          template class <class Enum> Class{};
22342          Class<enum E> class_e;
22343
22344          1: DW_TAG_class_type (Class)
22345            2: DW_TAG_enumeration_type (E)
22346              3: DW_TAG_enumerator (enum1:0)
22347              3: DW_TAG_enumerator (enum2:1)
22348              ...
22349            2: DW_TAG_template_type_param
22350               DW_AT_type  DW_FORM_ref_udata (E)
22351
22352          Besides being broken debug info, it can put GDB into an
22353          infinite loop.  Consider:
22354
22355          When we're building the full name for Class<E>, we'll start
22356          at Class, and go look over its template type parameters,
22357          finding E.  We'll then try to build the full name of E, and
22358          reach here.  We're now trying to build the full name of E,
22359          and look over the parent DIE for containing scope.  In the
22360          broken case, if we followed the parent DIE of E, we'd again
22361          find Class, and once again go look at its template type
22362          arguments, etc., etc.  Simply don't consider such parent die
22363          as source-level parent of this die (it can't be, the language
22364          doesn't allow it), and break the loop here.  */
22365       name = dwarf2_name (die, cu);
22366       parent_name = dwarf2_name (parent, cu);
22367       complaint (_("template param type '%s' defined within parent '%s'"),
22368                  name ? name : "<unknown>",
22369                  parent_name ? parent_name : "<unknown>");
22370       return "";
22371     }
22372   else
22373     switch (parent->tag)
22374       {
22375       case DW_TAG_namespace:
22376         parent_type = read_type_die (parent, cu);
22377         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22378            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22379            Work around this problem here.  */
22380         if (cu->language == language_cplus
22381             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22382           return "";
22383         /* We give a name to even anonymous namespaces.  */
22384         return TYPE_NAME (parent_type);
22385       case DW_TAG_class_type:
22386       case DW_TAG_interface_type:
22387       case DW_TAG_structure_type:
22388       case DW_TAG_union_type:
22389       case DW_TAG_module:
22390         parent_type = read_type_die (parent, cu);
22391         if (TYPE_NAME (parent_type) != NULL)
22392           return TYPE_NAME (parent_type);
22393         else
22394           /* An anonymous structure is only allowed non-static data
22395              members; no typedefs, no member functions, et cetera.
22396              So it does not need a prefix.  */
22397           return "";
22398       case DW_TAG_compile_unit:
22399       case DW_TAG_partial_unit:
22400         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22401         if (cu->language == language_cplus
22402             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22403             && die->child != NULL
22404             && (die->tag == DW_TAG_class_type
22405                 || die->tag == DW_TAG_structure_type
22406                 || die->tag == DW_TAG_union_type))
22407           {
22408             char *name = guess_full_die_structure_name (die, cu);
22409             if (name != NULL)
22410               return name;
22411           }
22412         return "";
22413       case DW_TAG_enumeration_type:
22414         parent_type = read_type_die (parent, cu);
22415         if (TYPE_DECLARED_CLASS (parent_type))
22416           {
22417             if (TYPE_NAME (parent_type) != NULL)
22418               return TYPE_NAME (parent_type);
22419             return "";
22420           }
22421         /* Fall through.  */
22422       default:
22423         return determine_prefix (parent, cu);
22424       }
22425 }
22426
22427 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22428    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22429    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22430    an obconcat, otherwise allocate storage for the result.  The CU argument is
22431    used to determine the language and hence, the appropriate separator.  */
22432
22433 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22434
22435 static char *
22436 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22437                  int physname, struct dwarf2_cu *cu)
22438 {
22439   const char *lead = "";
22440   const char *sep;
22441
22442   if (suffix == NULL || suffix[0] == '\0'
22443       || prefix == NULL || prefix[0] == '\0')
22444     sep = "";
22445   else if (cu->language == language_d)
22446     {
22447       /* For D, the 'main' function could be defined in any module, but it
22448          should never be prefixed.  */
22449       if (strcmp (suffix, "D main") == 0)
22450         {
22451           prefix = "";
22452           sep = "";
22453         }
22454       else
22455         sep = ".";
22456     }
22457   else if (cu->language == language_fortran && physname)
22458     {
22459       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22460          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22461
22462       lead = "__";
22463       sep = "_MOD_";
22464     }
22465   else
22466     sep = "::";
22467
22468   if (prefix == NULL)
22469     prefix = "";
22470   if (suffix == NULL)
22471     suffix = "";
22472
22473   if (obs == NULL)
22474     {
22475       char *retval
22476         = ((char *)
22477            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22478
22479       strcpy (retval, lead);
22480       strcat (retval, prefix);
22481       strcat (retval, sep);
22482       strcat (retval, suffix);
22483       return retval;
22484     }
22485   else
22486     {
22487       /* We have an obstack.  */
22488       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22489     }
22490 }
22491
22492 /* Return sibling of die, NULL if no sibling.  */
22493
22494 static struct die_info *
22495 sibling_die (struct die_info *die)
22496 {
22497   return die->sibling;
22498 }
22499
22500 /* Get name of a die, return NULL if not found.  */
22501
22502 static const char *
22503 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22504                           struct obstack *obstack)
22505 {
22506   if (name && cu->language == language_cplus)
22507     {
22508       std::string canon_name = cp_canonicalize_string (name);
22509
22510       if (!canon_name.empty ())
22511         {
22512           if (canon_name != name)
22513             name = (const char *) obstack_copy0 (obstack,
22514                                                  canon_name.c_str (),
22515                                                  canon_name.length ());
22516         }
22517     }
22518
22519   return name;
22520 }
22521
22522 /* Get name of a die, return NULL if not found.
22523    Anonymous namespaces are converted to their magic string.  */
22524
22525 static const char *
22526 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22527 {
22528   struct attribute *attr;
22529   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22530
22531   attr = dwarf2_attr (die, DW_AT_name, cu);
22532   if ((!attr || !DW_STRING (attr))
22533       && die->tag != DW_TAG_namespace
22534       && die->tag != DW_TAG_class_type
22535       && die->tag != DW_TAG_interface_type
22536       && die->tag != DW_TAG_structure_type
22537       && die->tag != DW_TAG_union_type)
22538     return NULL;
22539
22540   switch (die->tag)
22541     {
22542     case DW_TAG_compile_unit:
22543     case DW_TAG_partial_unit:
22544       /* Compilation units have a DW_AT_name that is a filename, not
22545          a source language identifier.  */
22546     case DW_TAG_enumeration_type:
22547     case DW_TAG_enumerator:
22548       /* These tags always have simple identifiers already; no need
22549          to canonicalize them.  */
22550       return DW_STRING (attr);
22551
22552     case DW_TAG_namespace:
22553       if (attr != NULL && DW_STRING (attr) != NULL)
22554         return DW_STRING (attr);
22555       return CP_ANONYMOUS_NAMESPACE_STR;
22556
22557     case DW_TAG_class_type:
22558     case DW_TAG_interface_type:
22559     case DW_TAG_structure_type:
22560     case DW_TAG_union_type:
22561       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22562          structures or unions.  These were of the form "._%d" in GCC 4.1,
22563          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22564          and GCC 4.4.  We work around this problem by ignoring these.  */
22565       if (attr && DW_STRING (attr)
22566           && (startswith (DW_STRING (attr), "._")
22567               || startswith (DW_STRING (attr), "<anonymous")))
22568         return NULL;
22569
22570       /* GCC might emit a nameless typedef that has a linkage name.  See
22571          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22572       if (!attr || DW_STRING (attr) == NULL)
22573         {
22574           char *demangled = NULL;
22575
22576           attr = dw2_linkage_name_attr (die, cu);
22577           if (attr == NULL || DW_STRING (attr) == NULL)
22578             return NULL;
22579
22580           /* Avoid demangling DW_STRING (attr) the second time on a second
22581              call for the same DIE.  */
22582           if (!DW_STRING_IS_CANONICAL (attr))
22583             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22584
22585           if (demangled)
22586             {
22587               const char *base;
22588
22589               /* FIXME: we already did this for the partial symbol... */
22590               DW_STRING (attr)
22591                 = ((const char *)
22592                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22593                                   demangled, strlen (demangled)));
22594               DW_STRING_IS_CANONICAL (attr) = 1;
22595               xfree (demangled);
22596
22597               /* Strip any leading namespaces/classes, keep only the base name.
22598                  DW_AT_name for named DIEs does not contain the prefixes.  */
22599               base = strrchr (DW_STRING (attr), ':');
22600               if (base && base > DW_STRING (attr) && base[-1] == ':')
22601                 return &base[1];
22602               else
22603                 return DW_STRING (attr);
22604             }
22605         }
22606       break;
22607
22608     default:
22609       break;
22610     }
22611
22612   if (!DW_STRING_IS_CANONICAL (attr))
22613     {
22614       DW_STRING (attr)
22615         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22616                                     &objfile->per_bfd->storage_obstack);
22617       DW_STRING_IS_CANONICAL (attr) = 1;
22618     }
22619   return DW_STRING (attr);
22620 }
22621
22622 /* Return the die that this die in an extension of, or NULL if there
22623    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22624    containing the return value on output.  */
22625
22626 static struct die_info *
22627 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22628 {
22629   struct attribute *attr;
22630
22631   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22632   if (attr == NULL)
22633     return NULL;
22634
22635   return follow_die_ref (die, attr, ext_cu);
22636 }
22637
22638 /* Convert a DIE tag into its string name.  */
22639
22640 static const char *
22641 dwarf_tag_name (unsigned tag)
22642 {
22643   const char *name = get_DW_TAG_name (tag);
22644
22645   if (name == NULL)
22646     return "DW_TAG_<unknown>";
22647
22648   return name;
22649 }
22650
22651 /* Convert a DWARF attribute code into its string name.  */
22652
22653 static const char *
22654 dwarf_attr_name (unsigned attr)
22655 {
22656   const char *name;
22657
22658 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22659   if (attr == DW_AT_MIPS_fde)
22660     return "DW_AT_MIPS_fde";
22661 #else
22662   if (attr == DW_AT_HP_block_index)
22663     return "DW_AT_HP_block_index";
22664 #endif
22665
22666   name = get_DW_AT_name (attr);
22667
22668   if (name == NULL)
22669     return "DW_AT_<unknown>";
22670
22671   return name;
22672 }
22673
22674 /* Convert a DWARF value form code into its string name.  */
22675
22676 static const char *
22677 dwarf_form_name (unsigned form)
22678 {
22679   const char *name = get_DW_FORM_name (form);
22680
22681   if (name == NULL)
22682     return "DW_FORM_<unknown>";
22683
22684   return name;
22685 }
22686
22687 static const char *
22688 dwarf_bool_name (unsigned mybool)
22689 {
22690   if (mybool)
22691     return "TRUE";
22692   else
22693     return "FALSE";
22694 }
22695
22696 /* Convert a DWARF type code into its string name.  */
22697
22698 static const char *
22699 dwarf_type_encoding_name (unsigned enc)
22700 {
22701   const char *name = get_DW_ATE_name (enc);
22702
22703   if (name == NULL)
22704     return "DW_ATE_<unknown>";
22705
22706   return name;
22707 }
22708
22709 static void
22710 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22711 {
22712   unsigned int i;
22713
22714   print_spaces (indent, f);
22715   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22716                       dwarf_tag_name (die->tag), die->abbrev,
22717                       sect_offset_str (die->sect_off));
22718
22719   if (die->parent != NULL)
22720     {
22721       print_spaces (indent, f);
22722       fprintf_unfiltered (f, "  parent at offset: %s\n",
22723                           sect_offset_str (die->parent->sect_off));
22724     }
22725
22726   print_spaces (indent, f);
22727   fprintf_unfiltered (f, "  has children: %s\n",
22728            dwarf_bool_name (die->child != NULL));
22729
22730   print_spaces (indent, f);
22731   fprintf_unfiltered (f, "  attributes:\n");
22732
22733   for (i = 0; i < die->num_attrs; ++i)
22734     {
22735       print_spaces (indent, f);
22736       fprintf_unfiltered (f, "    %s (%s) ",
22737                dwarf_attr_name (die->attrs[i].name),
22738                dwarf_form_name (die->attrs[i].form));
22739
22740       switch (die->attrs[i].form)
22741         {
22742         case DW_FORM_addr:
22743         case DW_FORM_GNU_addr_index:
22744           fprintf_unfiltered (f, "address: ");
22745           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22746           break;
22747         case DW_FORM_block2:
22748         case DW_FORM_block4:
22749         case DW_FORM_block:
22750         case DW_FORM_block1:
22751           fprintf_unfiltered (f, "block: size %s",
22752                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22753           break;
22754         case DW_FORM_exprloc:
22755           fprintf_unfiltered (f, "expression: size %s",
22756                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22757           break;
22758         case DW_FORM_data16:
22759           fprintf_unfiltered (f, "constant of 16 bytes");
22760           break;
22761         case DW_FORM_ref_addr:
22762           fprintf_unfiltered (f, "ref address: ");
22763           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22764           break;
22765         case DW_FORM_GNU_ref_alt:
22766           fprintf_unfiltered (f, "alt ref address: ");
22767           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22768           break;
22769         case DW_FORM_ref1:
22770         case DW_FORM_ref2:
22771         case DW_FORM_ref4:
22772         case DW_FORM_ref8:
22773         case DW_FORM_ref_udata:
22774           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22775                               (long) (DW_UNSND (&die->attrs[i])));
22776           break;
22777         case DW_FORM_data1:
22778         case DW_FORM_data2:
22779         case DW_FORM_data4:
22780         case DW_FORM_data8:
22781         case DW_FORM_udata:
22782         case DW_FORM_sdata:
22783           fprintf_unfiltered (f, "constant: %s",
22784                               pulongest (DW_UNSND (&die->attrs[i])));
22785           break;
22786         case DW_FORM_sec_offset:
22787           fprintf_unfiltered (f, "section offset: %s",
22788                               pulongest (DW_UNSND (&die->attrs[i])));
22789           break;
22790         case DW_FORM_ref_sig8:
22791           fprintf_unfiltered (f, "signature: %s",
22792                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22793           break;
22794         case DW_FORM_string:
22795         case DW_FORM_strp:
22796         case DW_FORM_line_strp:
22797         case DW_FORM_GNU_str_index:
22798         case DW_FORM_GNU_strp_alt:
22799           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22800                    DW_STRING (&die->attrs[i])
22801                    ? DW_STRING (&die->attrs[i]) : "",
22802                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22803           break;
22804         case DW_FORM_flag:
22805           if (DW_UNSND (&die->attrs[i]))
22806             fprintf_unfiltered (f, "flag: TRUE");
22807           else
22808             fprintf_unfiltered (f, "flag: FALSE");
22809           break;
22810         case DW_FORM_flag_present:
22811           fprintf_unfiltered (f, "flag: TRUE");
22812           break;
22813         case DW_FORM_indirect:
22814           /* The reader will have reduced the indirect form to
22815              the "base form" so this form should not occur.  */
22816           fprintf_unfiltered (f, 
22817                               "unexpected attribute form: DW_FORM_indirect");
22818           break;
22819         case DW_FORM_implicit_const:
22820           fprintf_unfiltered (f, "constant: %s",
22821                               plongest (DW_SND (&die->attrs[i])));
22822           break;
22823         default:
22824           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22825                    die->attrs[i].form);
22826           break;
22827         }
22828       fprintf_unfiltered (f, "\n");
22829     }
22830 }
22831
22832 static void
22833 dump_die_for_error (struct die_info *die)
22834 {
22835   dump_die_shallow (gdb_stderr, 0, die);
22836 }
22837
22838 static void
22839 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22840 {
22841   int indent = level * 4;
22842
22843   gdb_assert (die != NULL);
22844
22845   if (level >= max_level)
22846     return;
22847
22848   dump_die_shallow (f, indent, die);
22849
22850   if (die->child != NULL)
22851     {
22852       print_spaces (indent, f);
22853       fprintf_unfiltered (f, "  Children:");
22854       if (level + 1 < max_level)
22855         {
22856           fprintf_unfiltered (f, "\n");
22857           dump_die_1 (f, level + 1, max_level, die->child);
22858         }
22859       else
22860         {
22861           fprintf_unfiltered (f,
22862                               " [not printed, max nesting level reached]\n");
22863         }
22864     }
22865
22866   if (die->sibling != NULL && level > 0)
22867     {
22868       dump_die_1 (f, level, max_level, die->sibling);
22869     }
22870 }
22871
22872 /* This is called from the pdie macro in gdbinit.in.
22873    It's not static so gcc will keep a copy callable from gdb.  */
22874
22875 void
22876 dump_die (struct die_info *die, int max_level)
22877 {
22878   dump_die_1 (gdb_stdlog, 0, max_level, die);
22879 }
22880
22881 static void
22882 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22883 {
22884   void **slot;
22885
22886   slot = htab_find_slot_with_hash (cu->die_hash, die,
22887                                    to_underlying (die->sect_off),
22888                                    INSERT);
22889
22890   *slot = die;
22891 }
22892
22893 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22894    required kind.  */
22895
22896 static sect_offset
22897 dwarf2_get_ref_die_offset (const struct attribute *attr)
22898 {
22899   if (attr_form_is_ref (attr))
22900     return (sect_offset) DW_UNSND (attr);
22901
22902   complaint (_("unsupported die ref attribute form: '%s'"),
22903              dwarf_form_name (attr->form));
22904   return {};
22905 }
22906
22907 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22908  * the value held by the attribute is not constant.  */
22909
22910 static LONGEST
22911 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22912 {
22913   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22914     return DW_SND (attr);
22915   else if (attr->form == DW_FORM_udata
22916            || attr->form == DW_FORM_data1
22917            || attr->form == DW_FORM_data2
22918            || attr->form == DW_FORM_data4
22919            || attr->form == DW_FORM_data8)
22920     return DW_UNSND (attr);
22921   else
22922     {
22923       /* For DW_FORM_data16 see attr_form_is_constant.  */
22924       complaint (_("Attribute value is not a constant (%s)"),
22925                  dwarf_form_name (attr->form));
22926       return default_value;
22927     }
22928 }
22929
22930 /* Follow reference or signature attribute ATTR of SRC_DIE.
22931    On entry *REF_CU is the CU of SRC_DIE.
22932    On exit *REF_CU is the CU of the result.  */
22933
22934 static struct die_info *
22935 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22936                        struct dwarf2_cu **ref_cu)
22937 {
22938   struct die_info *die;
22939
22940   if (attr_form_is_ref (attr))
22941     die = follow_die_ref (src_die, attr, ref_cu);
22942   else if (attr->form == DW_FORM_ref_sig8)
22943     die = follow_die_sig (src_die, attr, ref_cu);
22944   else
22945     {
22946       dump_die_for_error (src_die);
22947       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22948              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22949     }
22950
22951   return die;
22952 }
22953
22954 /* Follow reference OFFSET.
22955    On entry *REF_CU is the CU of the source die referencing OFFSET.
22956    On exit *REF_CU is the CU of the result.
22957    Returns NULL if OFFSET is invalid.  */
22958
22959 static struct die_info *
22960 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22961                    struct dwarf2_cu **ref_cu)
22962 {
22963   struct die_info temp_die;
22964   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22965   struct dwarf2_per_objfile *dwarf2_per_objfile
22966     = cu->per_cu->dwarf2_per_objfile;
22967
22968   gdb_assert (cu->per_cu != NULL);
22969
22970   target_cu = cu;
22971
22972   if (cu->per_cu->is_debug_types)
22973     {
22974       /* .debug_types CUs cannot reference anything outside their CU.
22975          If they need to, they have to reference a signatured type via
22976          DW_FORM_ref_sig8.  */
22977       if (!offset_in_cu_p (&cu->header, sect_off))
22978         return NULL;
22979     }
22980   else if (offset_in_dwz != cu->per_cu->is_dwz
22981            || !offset_in_cu_p (&cu->header, sect_off))
22982     {
22983       struct dwarf2_per_cu_data *per_cu;
22984
22985       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22986                                                  dwarf2_per_objfile);
22987
22988       /* If necessary, add it to the queue and load its DIEs.  */
22989       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22990         load_full_comp_unit (per_cu, false, cu->language);
22991
22992       target_cu = per_cu->cu;
22993     }
22994   else if (cu->dies == NULL)
22995     {
22996       /* We're loading full DIEs during partial symbol reading.  */
22997       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22998       load_full_comp_unit (cu->per_cu, false, language_minimal);
22999     }
23000
23001   *ref_cu = target_cu;
23002   temp_die.sect_off = sect_off;
23003   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
23004                                                   &temp_die,
23005                                                   to_underlying (sect_off));
23006 }
23007
23008 /* Follow reference attribute ATTR of SRC_DIE.
23009    On entry *REF_CU is the CU of SRC_DIE.
23010    On exit *REF_CU is the CU of the result.  */
23011
23012 static struct die_info *
23013 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
23014                 struct dwarf2_cu **ref_cu)
23015 {
23016   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23017   struct dwarf2_cu *cu = *ref_cu;
23018   struct die_info *die;
23019
23020   die = follow_die_offset (sect_off,
23021                            (attr->form == DW_FORM_GNU_ref_alt
23022                             || cu->per_cu->is_dwz),
23023                            ref_cu);
23024   if (!die)
23025     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23026            "at %s [in module %s]"),
23027            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23028            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23029
23030   return die;
23031 }
23032
23033 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23034    Returned value is intended for DW_OP_call*.  Returned
23035    dwarf2_locexpr_baton->data has lifetime of
23036    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23037
23038 struct dwarf2_locexpr_baton
23039 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23040                                struct dwarf2_per_cu_data *per_cu,
23041                                CORE_ADDR (*get_frame_pc) (void *baton),
23042                                void *baton, bool resolve_abstract_p)
23043 {
23044   struct dwarf2_cu *cu;
23045   struct die_info *die;
23046   struct attribute *attr;
23047   struct dwarf2_locexpr_baton retval;
23048   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23049   struct objfile *objfile = dwarf2_per_objfile->objfile;
23050
23051   if (per_cu->cu == NULL)
23052     load_cu (per_cu, false);
23053   cu = per_cu->cu;
23054   if (cu == NULL)
23055     {
23056       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23057          Instead just throw an error, not much else we can do.  */
23058       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23059              sect_offset_str (sect_off), objfile_name (objfile));
23060     }
23061
23062   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23063   if (!die)
23064     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23065            sect_offset_str (sect_off), objfile_name (objfile));
23066
23067   attr = dwarf2_attr (die, DW_AT_location, cu);
23068   if (!attr && resolve_abstract_p
23069       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23070           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23071     {
23072       CORE_ADDR pc = (*get_frame_pc) (baton);
23073
23074       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23075         {
23076           if (!cand->parent
23077               || cand->parent->tag != DW_TAG_subprogram)
23078             continue;
23079
23080           CORE_ADDR pc_low, pc_high;
23081           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23082           if (pc_low == ((CORE_ADDR) -1)
23083               || !(pc_low <= pc && pc < pc_high))
23084             continue;
23085
23086           die = cand;
23087           attr = dwarf2_attr (die, DW_AT_location, cu);
23088           break;
23089         }
23090     }
23091
23092   if (!attr)
23093     {
23094       /* DWARF: "If there is no such attribute, then there is no effect.".
23095          DATA is ignored if SIZE is 0.  */
23096
23097       retval.data = NULL;
23098       retval.size = 0;
23099     }
23100   else if (attr_form_is_section_offset (attr))
23101     {
23102       struct dwarf2_loclist_baton loclist_baton;
23103       CORE_ADDR pc = (*get_frame_pc) (baton);
23104       size_t size;
23105
23106       fill_in_loclist_baton (cu, &loclist_baton, attr);
23107
23108       retval.data = dwarf2_find_location_expression (&loclist_baton,
23109                                                      &size, pc);
23110       retval.size = size;
23111     }
23112   else
23113     {
23114       if (!attr_form_is_block (attr))
23115         error (_("Dwarf Error: DIE at %s referenced in module %s "
23116                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23117                sect_offset_str (sect_off), objfile_name (objfile));
23118
23119       retval.data = DW_BLOCK (attr)->data;
23120       retval.size = DW_BLOCK (attr)->size;
23121     }
23122   retval.per_cu = cu->per_cu;
23123
23124   age_cached_comp_units (dwarf2_per_objfile);
23125
23126   return retval;
23127 }
23128
23129 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23130    offset.  */
23131
23132 struct dwarf2_locexpr_baton
23133 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23134                              struct dwarf2_per_cu_data *per_cu,
23135                              CORE_ADDR (*get_frame_pc) (void *baton),
23136                              void *baton)
23137 {
23138   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23139
23140   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23141 }
23142
23143 /* Write a constant of a given type as target-ordered bytes into
23144    OBSTACK.  */
23145
23146 static const gdb_byte *
23147 write_constant_as_bytes (struct obstack *obstack,
23148                          enum bfd_endian byte_order,
23149                          struct type *type,
23150                          ULONGEST value,
23151                          LONGEST *len)
23152 {
23153   gdb_byte *result;
23154
23155   *len = TYPE_LENGTH (type);
23156   result = (gdb_byte *) obstack_alloc (obstack, *len);
23157   store_unsigned_integer (result, *len, byte_order, value);
23158
23159   return result;
23160 }
23161
23162 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23163    pointer to the constant bytes and set LEN to the length of the
23164    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23165    does not have a DW_AT_const_value, return NULL.  */
23166
23167 const gdb_byte *
23168 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23169                              struct dwarf2_per_cu_data *per_cu,
23170                              struct obstack *obstack,
23171                              LONGEST *len)
23172 {
23173   struct dwarf2_cu *cu;
23174   struct die_info *die;
23175   struct attribute *attr;
23176   const gdb_byte *result = NULL;
23177   struct type *type;
23178   LONGEST value;
23179   enum bfd_endian byte_order;
23180   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23181
23182   if (per_cu->cu == NULL)
23183     load_cu (per_cu, false);
23184   cu = per_cu->cu;
23185   if (cu == NULL)
23186     {
23187       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23188          Instead just throw an error, not much else we can do.  */
23189       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23190              sect_offset_str (sect_off), objfile_name (objfile));
23191     }
23192
23193   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23194   if (!die)
23195     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23196            sect_offset_str (sect_off), objfile_name (objfile));
23197
23198   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23199   if (attr == NULL)
23200     return NULL;
23201
23202   byte_order = (bfd_big_endian (objfile->obfd)
23203                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23204
23205   switch (attr->form)
23206     {
23207     case DW_FORM_addr:
23208     case DW_FORM_GNU_addr_index:
23209       {
23210         gdb_byte *tem;
23211
23212         *len = cu->header.addr_size;
23213         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23214         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23215         result = tem;
23216       }
23217       break;
23218     case DW_FORM_string:
23219     case DW_FORM_strp:
23220     case DW_FORM_GNU_str_index:
23221     case DW_FORM_GNU_strp_alt:
23222       /* DW_STRING is already allocated on the objfile obstack, point
23223          directly to it.  */
23224       result = (const gdb_byte *) DW_STRING (attr);
23225       *len = strlen (DW_STRING (attr));
23226       break;
23227     case DW_FORM_block1:
23228     case DW_FORM_block2:
23229     case DW_FORM_block4:
23230     case DW_FORM_block:
23231     case DW_FORM_exprloc:
23232     case DW_FORM_data16:
23233       result = DW_BLOCK (attr)->data;
23234       *len = DW_BLOCK (attr)->size;
23235       break;
23236
23237       /* The DW_AT_const_value attributes are supposed to carry the
23238          symbol's value "represented as it would be on the target
23239          architecture."  By the time we get here, it's already been
23240          converted to host endianness, so we just need to sign- or
23241          zero-extend it as appropriate.  */
23242     case DW_FORM_data1:
23243       type = die_type (die, cu);
23244       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23245       if (result == NULL)
23246         result = write_constant_as_bytes (obstack, byte_order,
23247                                           type, value, len);
23248       break;
23249     case DW_FORM_data2:
23250       type = die_type (die, cu);
23251       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23252       if (result == NULL)
23253         result = write_constant_as_bytes (obstack, byte_order,
23254                                           type, value, len);
23255       break;
23256     case DW_FORM_data4:
23257       type = die_type (die, cu);
23258       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23259       if (result == NULL)
23260         result = write_constant_as_bytes (obstack, byte_order,
23261                                           type, value, len);
23262       break;
23263     case DW_FORM_data8:
23264       type = die_type (die, cu);
23265       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23266       if (result == NULL)
23267         result = write_constant_as_bytes (obstack, byte_order,
23268                                           type, value, len);
23269       break;
23270
23271     case DW_FORM_sdata:
23272     case DW_FORM_implicit_const:
23273       type = die_type (die, cu);
23274       result = write_constant_as_bytes (obstack, byte_order,
23275                                         type, DW_SND (attr), len);
23276       break;
23277
23278     case DW_FORM_udata:
23279       type = die_type (die, cu);
23280       result = write_constant_as_bytes (obstack, byte_order,
23281                                         type, DW_UNSND (attr), len);
23282       break;
23283
23284     default:
23285       complaint (_("unsupported const value attribute form: '%s'"),
23286                  dwarf_form_name (attr->form));
23287       break;
23288     }
23289
23290   return result;
23291 }
23292
23293 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23294    valid type for this die is found.  */
23295
23296 struct type *
23297 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23298                                 struct dwarf2_per_cu_data *per_cu)
23299 {
23300   struct dwarf2_cu *cu;
23301   struct die_info *die;
23302
23303   if (per_cu->cu == NULL)
23304     load_cu (per_cu, false);
23305   cu = per_cu->cu;
23306   if (!cu)
23307     return NULL;
23308
23309   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23310   if (!die)
23311     return NULL;
23312
23313   return die_type (die, cu);
23314 }
23315
23316 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23317    PER_CU.  */
23318
23319 struct type *
23320 dwarf2_get_die_type (cu_offset die_offset,
23321                      struct dwarf2_per_cu_data *per_cu)
23322 {
23323   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23324   return get_die_type_at_offset (die_offset_sect, per_cu);
23325 }
23326
23327 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23328    On entry *REF_CU is the CU of SRC_DIE.
23329    On exit *REF_CU is the CU of the result.
23330    Returns NULL if the referenced DIE isn't found.  */
23331
23332 static struct die_info *
23333 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23334                   struct dwarf2_cu **ref_cu)
23335 {
23336   struct die_info temp_die;
23337   struct dwarf2_cu *sig_cu;
23338   struct die_info *die;
23339
23340   /* While it might be nice to assert sig_type->type == NULL here,
23341      we can get here for DW_AT_imported_declaration where we need
23342      the DIE not the type.  */
23343
23344   /* If necessary, add it to the queue and load its DIEs.  */
23345
23346   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23347     read_signatured_type (sig_type);
23348
23349   sig_cu = sig_type->per_cu.cu;
23350   gdb_assert (sig_cu != NULL);
23351   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23352   temp_die.sect_off = sig_type->type_offset_in_section;
23353   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23354                                                  to_underlying (temp_die.sect_off));
23355   if (die)
23356     {
23357       struct dwarf2_per_objfile *dwarf2_per_objfile
23358         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23359
23360       /* For .gdb_index version 7 keep track of included TUs.
23361          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23362       if (dwarf2_per_objfile->index_table != NULL
23363           && dwarf2_per_objfile->index_table->version <= 7)
23364         {
23365           VEC_safe_push (dwarf2_per_cu_ptr,
23366                          (*ref_cu)->per_cu->imported_symtabs,
23367                          sig_cu->per_cu);
23368         }
23369
23370       *ref_cu = sig_cu;
23371       return die;
23372     }
23373
23374   return NULL;
23375 }
23376
23377 /* Follow signatured type referenced by ATTR in SRC_DIE.
23378    On entry *REF_CU is the CU of SRC_DIE.
23379    On exit *REF_CU is the CU of the result.
23380    The result is the DIE of the type.
23381    If the referenced type cannot be found an error is thrown.  */
23382
23383 static struct die_info *
23384 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23385                 struct dwarf2_cu **ref_cu)
23386 {
23387   ULONGEST signature = DW_SIGNATURE (attr);
23388   struct signatured_type *sig_type;
23389   struct die_info *die;
23390
23391   gdb_assert (attr->form == DW_FORM_ref_sig8);
23392
23393   sig_type = lookup_signatured_type (*ref_cu, signature);
23394   /* sig_type will be NULL if the signatured type is missing from
23395      the debug info.  */
23396   if (sig_type == NULL)
23397     {
23398       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23399                " from DIE at %s [in module %s]"),
23400              hex_string (signature), sect_offset_str (src_die->sect_off),
23401              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23402     }
23403
23404   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23405   if (die == NULL)
23406     {
23407       dump_die_for_error (src_die);
23408       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23409                " from DIE at %s [in module %s]"),
23410              hex_string (signature), sect_offset_str (src_die->sect_off),
23411              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23412     }
23413
23414   return die;
23415 }
23416
23417 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23418    reading in and processing the type unit if necessary.  */
23419
23420 static struct type *
23421 get_signatured_type (struct die_info *die, ULONGEST signature,
23422                      struct dwarf2_cu *cu)
23423 {
23424   struct dwarf2_per_objfile *dwarf2_per_objfile
23425     = cu->per_cu->dwarf2_per_objfile;
23426   struct signatured_type *sig_type;
23427   struct dwarf2_cu *type_cu;
23428   struct die_info *type_die;
23429   struct type *type;
23430
23431   sig_type = lookup_signatured_type (cu, signature);
23432   /* sig_type will be NULL if the signatured type is missing from
23433      the debug info.  */
23434   if (sig_type == NULL)
23435     {
23436       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23437                    " from DIE at %s [in module %s]"),
23438                  hex_string (signature), sect_offset_str (die->sect_off),
23439                  objfile_name (dwarf2_per_objfile->objfile));
23440       return build_error_marker_type (cu, die);
23441     }
23442
23443   /* If we already know the type we're done.  */
23444   if (sig_type->type != NULL)
23445     return sig_type->type;
23446
23447   type_cu = cu;
23448   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23449   if (type_die != NULL)
23450     {
23451       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23452          is created.  This is important, for example, because for c++ classes
23453          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23454       type = read_type_die (type_die, type_cu);
23455       if (type == NULL)
23456         {
23457           complaint (_("Dwarf Error: Cannot build signatured type %s"
23458                        " referenced from DIE at %s [in module %s]"),
23459                      hex_string (signature), sect_offset_str (die->sect_off),
23460                      objfile_name (dwarf2_per_objfile->objfile));
23461           type = build_error_marker_type (cu, die);
23462         }
23463     }
23464   else
23465     {
23466       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23467                    " from DIE at %s [in module %s]"),
23468                  hex_string (signature), sect_offset_str (die->sect_off),
23469                  objfile_name (dwarf2_per_objfile->objfile));
23470       type = build_error_marker_type (cu, die);
23471     }
23472   sig_type->type = type;
23473
23474   return type;
23475 }
23476
23477 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23478    reading in and processing the type unit if necessary.  */
23479
23480 static struct type *
23481 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23482                           struct dwarf2_cu *cu) /* ARI: editCase function */
23483 {
23484   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23485   if (attr_form_is_ref (attr))
23486     {
23487       struct dwarf2_cu *type_cu = cu;
23488       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23489
23490       return read_type_die (type_die, type_cu);
23491     }
23492   else if (attr->form == DW_FORM_ref_sig8)
23493     {
23494       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23495     }
23496   else
23497     {
23498       struct dwarf2_per_objfile *dwarf2_per_objfile
23499         = cu->per_cu->dwarf2_per_objfile;
23500
23501       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23502                    " at %s [in module %s]"),
23503                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23504                  objfile_name (dwarf2_per_objfile->objfile));
23505       return build_error_marker_type (cu, die);
23506     }
23507 }
23508
23509 /* Load the DIEs associated with type unit PER_CU into memory.  */
23510
23511 static void
23512 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23513 {
23514   struct signatured_type *sig_type;
23515
23516   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23517   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23518
23519   /* We have the per_cu, but we need the signatured_type.
23520      Fortunately this is an easy translation.  */
23521   gdb_assert (per_cu->is_debug_types);
23522   sig_type = (struct signatured_type *) per_cu;
23523
23524   gdb_assert (per_cu->cu == NULL);
23525
23526   read_signatured_type (sig_type);
23527
23528   gdb_assert (per_cu->cu != NULL);
23529 }
23530
23531 /* die_reader_func for read_signatured_type.
23532    This is identical to load_full_comp_unit_reader,
23533    but is kept separate for now.  */
23534
23535 static void
23536 read_signatured_type_reader (const struct die_reader_specs *reader,
23537                              const gdb_byte *info_ptr,
23538                              struct die_info *comp_unit_die,
23539                              int has_children,
23540                              void *data)
23541 {
23542   struct dwarf2_cu *cu = reader->cu;
23543
23544   gdb_assert (cu->die_hash == NULL);
23545   cu->die_hash =
23546     htab_create_alloc_ex (cu->header.length / 12,
23547                           die_hash,
23548                           die_eq,
23549                           NULL,
23550                           &cu->comp_unit_obstack,
23551                           hashtab_obstack_allocate,
23552                           dummy_obstack_deallocate);
23553
23554   if (has_children)
23555     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23556                                                   &info_ptr, comp_unit_die);
23557   cu->dies = comp_unit_die;
23558   /* comp_unit_die is not stored in die_hash, no need.  */
23559
23560   /* We try not to read any attributes in this function, because not
23561      all CUs needed for references have been loaded yet, and symbol
23562      table processing isn't initialized.  But we have to set the CU language,
23563      or we won't be able to build types correctly.
23564      Similarly, if we do not read the producer, we can not apply
23565      producer-specific interpretation.  */
23566   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23567 }
23568
23569 /* Read in a signatured type and build its CU and DIEs.
23570    If the type is a stub for the real type in a DWO file,
23571    read in the real type from the DWO file as well.  */
23572
23573 static void
23574 read_signatured_type (struct signatured_type *sig_type)
23575 {
23576   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23577
23578   gdb_assert (per_cu->is_debug_types);
23579   gdb_assert (per_cu->cu == NULL);
23580
23581   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23582                            read_signatured_type_reader, NULL);
23583   sig_type->per_cu.tu_read = 1;
23584 }
23585
23586 /* Decode simple location descriptions.
23587    Given a pointer to a dwarf block that defines a location, compute
23588    the location and return the value.
23589
23590    NOTE drow/2003-11-18: This function is called in two situations
23591    now: for the address of static or global variables (partial symbols
23592    only) and for offsets into structures which are expected to be
23593    (more or less) constant.  The partial symbol case should go away,
23594    and only the constant case should remain.  That will let this
23595    function complain more accurately.  A few special modes are allowed
23596    without complaint for global variables (for instance, global
23597    register values and thread-local values).
23598
23599    A location description containing no operations indicates that the
23600    object is optimized out.  The return value is 0 for that case.
23601    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23602    callers will only want a very basic result and this can become a
23603    complaint.
23604
23605    Note that stack[0] is unused except as a default error return.  */
23606
23607 static CORE_ADDR
23608 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23609 {
23610   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23611   size_t i;
23612   size_t size = blk->size;
23613   const gdb_byte *data = blk->data;
23614   CORE_ADDR stack[64];
23615   int stacki;
23616   unsigned int bytes_read, unsnd;
23617   gdb_byte op;
23618
23619   i = 0;
23620   stacki = 0;
23621   stack[stacki] = 0;
23622   stack[++stacki] = 0;
23623
23624   while (i < size)
23625     {
23626       op = data[i++];
23627       switch (op)
23628         {
23629         case DW_OP_lit0:
23630         case DW_OP_lit1:
23631         case DW_OP_lit2:
23632         case DW_OP_lit3:
23633         case DW_OP_lit4:
23634         case DW_OP_lit5:
23635         case DW_OP_lit6:
23636         case DW_OP_lit7:
23637         case DW_OP_lit8:
23638         case DW_OP_lit9:
23639         case DW_OP_lit10:
23640         case DW_OP_lit11:
23641         case DW_OP_lit12:
23642         case DW_OP_lit13:
23643         case DW_OP_lit14:
23644         case DW_OP_lit15:
23645         case DW_OP_lit16:
23646         case DW_OP_lit17:
23647         case DW_OP_lit18:
23648         case DW_OP_lit19:
23649         case DW_OP_lit20:
23650         case DW_OP_lit21:
23651         case DW_OP_lit22:
23652         case DW_OP_lit23:
23653         case DW_OP_lit24:
23654         case DW_OP_lit25:
23655         case DW_OP_lit26:
23656         case DW_OP_lit27:
23657         case DW_OP_lit28:
23658         case DW_OP_lit29:
23659         case DW_OP_lit30:
23660         case DW_OP_lit31:
23661           stack[++stacki] = op - DW_OP_lit0;
23662           break;
23663
23664         case DW_OP_reg0:
23665         case DW_OP_reg1:
23666         case DW_OP_reg2:
23667         case DW_OP_reg3:
23668         case DW_OP_reg4:
23669         case DW_OP_reg5:
23670         case DW_OP_reg6:
23671         case DW_OP_reg7:
23672         case DW_OP_reg8:
23673         case DW_OP_reg9:
23674         case DW_OP_reg10:
23675         case DW_OP_reg11:
23676         case DW_OP_reg12:
23677         case DW_OP_reg13:
23678         case DW_OP_reg14:
23679         case DW_OP_reg15:
23680         case DW_OP_reg16:
23681         case DW_OP_reg17:
23682         case DW_OP_reg18:
23683         case DW_OP_reg19:
23684         case DW_OP_reg20:
23685         case DW_OP_reg21:
23686         case DW_OP_reg22:
23687         case DW_OP_reg23:
23688         case DW_OP_reg24:
23689         case DW_OP_reg25:
23690         case DW_OP_reg26:
23691         case DW_OP_reg27:
23692         case DW_OP_reg28:
23693         case DW_OP_reg29:
23694         case DW_OP_reg30:
23695         case DW_OP_reg31:
23696           stack[++stacki] = op - DW_OP_reg0;
23697           if (i < size)
23698             dwarf2_complex_location_expr_complaint ();
23699           break;
23700
23701         case DW_OP_regx:
23702           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23703           i += bytes_read;
23704           stack[++stacki] = unsnd;
23705           if (i < size)
23706             dwarf2_complex_location_expr_complaint ();
23707           break;
23708
23709         case DW_OP_addr:
23710           stack[++stacki] = read_address (objfile->obfd, &data[i],
23711                                           cu, &bytes_read);
23712           i += bytes_read;
23713           break;
23714
23715         case DW_OP_const1u:
23716           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23717           i += 1;
23718           break;
23719
23720         case DW_OP_const1s:
23721           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23722           i += 1;
23723           break;
23724
23725         case DW_OP_const2u:
23726           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23727           i += 2;
23728           break;
23729
23730         case DW_OP_const2s:
23731           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23732           i += 2;
23733           break;
23734
23735         case DW_OP_const4u:
23736           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23737           i += 4;
23738           break;
23739
23740         case DW_OP_const4s:
23741           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23742           i += 4;
23743           break;
23744
23745         case DW_OP_const8u:
23746           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23747           i += 8;
23748           break;
23749
23750         case DW_OP_constu:
23751           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23752                                                   &bytes_read);
23753           i += bytes_read;
23754           break;
23755
23756         case DW_OP_consts:
23757           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23758           i += bytes_read;
23759           break;
23760
23761         case DW_OP_dup:
23762           stack[stacki + 1] = stack[stacki];
23763           stacki++;
23764           break;
23765
23766         case DW_OP_plus:
23767           stack[stacki - 1] += stack[stacki];
23768           stacki--;
23769           break;
23770
23771         case DW_OP_plus_uconst:
23772           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23773                                                  &bytes_read);
23774           i += bytes_read;
23775           break;
23776
23777         case DW_OP_minus:
23778           stack[stacki - 1] -= stack[stacki];
23779           stacki--;
23780           break;
23781
23782         case DW_OP_deref:
23783           /* If we're not the last op, then we definitely can't encode
23784              this using GDB's address_class enum.  This is valid for partial
23785              global symbols, although the variable's address will be bogus
23786              in the psymtab.  */
23787           if (i < size)
23788             dwarf2_complex_location_expr_complaint ();
23789           break;
23790
23791         case DW_OP_GNU_push_tls_address:
23792         case DW_OP_form_tls_address:
23793           /* The top of the stack has the offset from the beginning
23794              of the thread control block at which the variable is located.  */
23795           /* Nothing should follow this operator, so the top of stack would
23796              be returned.  */
23797           /* This is valid for partial global symbols, but the variable's
23798              address will be bogus in the psymtab.  Make it always at least
23799              non-zero to not look as a variable garbage collected by linker
23800              which have DW_OP_addr 0.  */
23801           if (i < size)
23802             dwarf2_complex_location_expr_complaint ();
23803           stack[stacki]++;
23804           break;
23805
23806         case DW_OP_GNU_uninit:
23807           break;
23808
23809         case DW_OP_GNU_addr_index:
23810         case DW_OP_GNU_const_index:
23811           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23812                                                          &bytes_read);
23813           i += bytes_read;
23814           break;
23815
23816         default:
23817           {
23818             const char *name = get_DW_OP_name (op);
23819
23820             if (name)
23821               complaint (_("unsupported stack op: '%s'"),
23822                          name);
23823             else
23824               complaint (_("unsupported stack op: '%02x'"),
23825                          op);
23826           }
23827
23828           return (stack[stacki]);
23829         }
23830
23831       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23832          outside of the allocated space.  Also enforce minimum>0.  */
23833       if (stacki >= ARRAY_SIZE (stack) - 1)
23834         {
23835           complaint (_("location description stack overflow"));
23836           return 0;
23837         }
23838
23839       if (stacki <= 0)
23840         {
23841           complaint (_("location description stack underflow"));
23842           return 0;
23843         }
23844     }
23845   return (stack[stacki]);
23846 }
23847
23848 /* memory allocation interface */
23849
23850 static struct dwarf_block *
23851 dwarf_alloc_block (struct dwarf2_cu *cu)
23852 {
23853   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23854 }
23855
23856 static struct die_info *
23857 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23858 {
23859   struct die_info *die;
23860   size_t size = sizeof (struct die_info);
23861
23862   if (num_attrs > 1)
23863     size += (num_attrs - 1) * sizeof (struct attribute);
23864
23865   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23866   memset (die, 0, sizeof (struct die_info));
23867   return (die);
23868 }
23869
23870 \f
23871 /* Macro support.  */
23872
23873 /* Return file name relative to the compilation directory of file number I in
23874    *LH's file name table.  The result is allocated using xmalloc; the caller is
23875    responsible for freeing it.  */
23876
23877 static char *
23878 file_file_name (int file, struct line_header *lh)
23879 {
23880   /* Is the file number a valid index into the line header's file name
23881      table?  Remember that file numbers start with one, not zero.  */
23882   if (1 <= file && file <= lh->file_names.size ())
23883     {
23884       const file_entry &fe = lh->file_names[file - 1];
23885
23886       if (!IS_ABSOLUTE_PATH (fe.name))
23887         {
23888           const char *dir = fe.include_dir (lh);
23889           if (dir != NULL)
23890             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23891         }
23892       return xstrdup (fe.name);
23893     }
23894   else
23895     {
23896       /* The compiler produced a bogus file number.  We can at least
23897          record the macro definitions made in the file, even if we
23898          won't be able to find the file by name.  */
23899       char fake_name[80];
23900
23901       xsnprintf (fake_name, sizeof (fake_name),
23902                  "<bad macro file number %d>", file);
23903
23904       complaint (_("bad file number in macro information (%d)"),
23905                  file);
23906
23907       return xstrdup (fake_name);
23908     }
23909 }
23910
23911 /* Return the full name of file number I in *LH's file name table.
23912    Use COMP_DIR as the name of the current directory of the
23913    compilation.  The result is allocated using xmalloc; the caller is
23914    responsible for freeing it.  */
23915 static char *
23916 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23917 {
23918   /* Is the file number a valid index into the line header's file name
23919      table?  Remember that file numbers start with one, not zero.  */
23920   if (1 <= file && file <= lh->file_names.size ())
23921     {
23922       char *relative = file_file_name (file, lh);
23923
23924       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23925         return relative;
23926       return reconcat (relative, comp_dir, SLASH_STRING,
23927                        relative, (char *) NULL);
23928     }
23929   else
23930     return file_file_name (file, lh);
23931 }
23932
23933
23934 static struct macro_source_file *
23935 macro_start_file (struct dwarf2_cu *cu,
23936                   int file, int line,
23937                   struct macro_source_file *current_file,
23938                   struct line_header *lh)
23939 {
23940   /* File name relative to the compilation directory of this source file.  */
23941   char *file_name = file_file_name (file, lh);
23942
23943   if (! current_file)
23944     {
23945       /* Note: We don't create a macro table for this compilation unit
23946          at all until we actually get a filename.  */
23947       struct macro_table *macro_table = cu->builder->get_macro_table ();
23948
23949       /* If we have no current file, then this must be the start_file
23950          directive for the compilation unit's main source file.  */
23951       current_file = macro_set_main (macro_table, file_name);
23952       macro_define_special (macro_table);
23953     }
23954   else
23955     current_file = macro_include (current_file, line, file_name);
23956
23957   xfree (file_name);
23958
23959   return current_file;
23960 }
23961
23962 static const char *
23963 consume_improper_spaces (const char *p, const char *body)
23964 {
23965   if (*p == ' ')
23966     {
23967       complaint (_("macro definition contains spaces "
23968                    "in formal argument list:\n`%s'"),
23969                  body);
23970
23971       while (*p == ' ')
23972         p++;
23973     }
23974
23975   return p;
23976 }
23977
23978
23979 static void
23980 parse_macro_definition (struct macro_source_file *file, int line,
23981                         const char *body)
23982 {
23983   const char *p;
23984
23985   /* The body string takes one of two forms.  For object-like macro
23986      definitions, it should be:
23987
23988         <macro name> " " <definition>
23989
23990      For function-like macro definitions, it should be:
23991
23992         <macro name> "() " <definition>
23993      or
23994         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23995
23996      Spaces may appear only where explicitly indicated, and in the
23997      <definition>.
23998
23999      The Dwarf 2 spec says that an object-like macro's name is always
24000      followed by a space, but versions of GCC around March 2002 omit
24001      the space when the macro's definition is the empty string.
24002
24003      The Dwarf 2 spec says that there should be no spaces between the
24004      formal arguments in a function-like macro's formal argument list,
24005      but versions of GCC around March 2002 include spaces after the
24006      commas.  */
24007
24008
24009   /* Find the extent of the macro name.  The macro name is terminated
24010      by either a space or null character (for an object-like macro) or
24011      an opening paren (for a function-like macro).  */
24012   for (p = body; *p; p++)
24013     if (*p == ' ' || *p == '(')
24014       break;
24015
24016   if (*p == ' ' || *p == '\0')
24017     {
24018       /* It's an object-like macro.  */
24019       int name_len = p - body;
24020       char *name = savestring (body, name_len);
24021       const char *replacement;
24022
24023       if (*p == ' ')
24024         replacement = body + name_len + 1;
24025       else
24026         {
24027           dwarf2_macro_malformed_definition_complaint (body);
24028           replacement = body + name_len;
24029         }
24030
24031       macro_define_object (file, line, name, replacement);
24032
24033       xfree (name);
24034     }
24035   else if (*p == '(')
24036     {
24037       /* It's a function-like macro.  */
24038       char *name = savestring (body, p - body);
24039       int argc = 0;
24040       int argv_size = 1;
24041       char **argv = XNEWVEC (char *, argv_size);
24042
24043       p++;
24044
24045       p = consume_improper_spaces (p, body);
24046
24047       /* Parse the formal argument list.  */
24048       while (*p && *p != ')')
24049         {
24050           /* Find the extent of the current argument name.  */
24051           const char *arg_start = p;
24052
24053           while (*p && *p != ',' && *p != ')' && *p != ' ')
24054             p++;
24055
24056           if (! *p || p == arg_start)
24057             dwarf2_macro_malformed_definition_complaint (body);
24058           else
24059             {
24060               /* Make sure argv has room for the new argument.  */
24061               if (argc >= argv_size)
24062                 {
24063                   argv_size *= 2;
24064                   argv = XRESIZEVEC (char *, argv, argv_size);
24065                 }
24066
24067               argv[argc++] = savestring (arg_start, p - arg_start);
24068             }
24069
24070           p = consume_improper_spaces (p, body);
24071
24072           /* Consume the comma, if present.  */
24073           if (*p == ',')
24074             {
24075               p++;
24076
24077               p = consume_improper_spaces (p, body);
24078             }
24079         }
24080
24081       if (*p == ')')
24082         {
24083           p++;
24084
24085           if (*p == ' ')
24086             /* Perfectly formed definition, no complaints.  */
24087             macro_define_function (file, line, name,
24088                                    argc, (const char **) argv,
24089                                    p + 1);
24090           else if (*p == '\0')
24091             {
24092               /* Complain, but do define it.  */
24093               dwarf2_macro_malformed_definition_complaint (body);
24094               macro_define_function (file, line, name,
24095                                      argc, (const char **) argv,
24096                                      p);
24097             }
24098           else
24099             /* Just complain.  */
24100             dwarf2_macro_malformed_definition_complaint (body);
24101         }
24102       else
24103         /* Just complain.  */
24104         dwarf2_macro_malformed_definition_complaint (body);
24105
24106       xfree (name);
24107       {
24108         int i;
24109
24110         for (i = 0; i < argc; i++)
24111           xfree (argv[i]);
24112       }
24113       xfree (argv);
24114     }
24115   else
24116     dwarf2_macro_malformed_definition_complaint (body);
24117 }
24118
24119 /* Skip some bytes from BYTES according to the form given in FORM.
24120    Returns the new pointer.  */
24121
24122 static const gdb_byte *
24123 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24124                  enum dwarf_form form,
24125                  unsigned int offset_size,
24126                  struct dwarf2_section_info *section)
24127 {
24128   unsigned int bytes_read;
24129
24130   switch (form)
24131     {
24132     case DW_FORM_data1:
24133     case DW_FORM_flag:
24134       ++bytes;
24135       break;
24136
24137     case DW_FORM_data2:
24138       bytes += 2;
24139       break;
24140
24141     case DW_FORM_data4:
24142       bytes += 4;
24143       break;
24144
24145     case DW_FORM_data8:
24146       bytes += 8;
24147       break;
24148
24149     case DW_FORM_data16:
24150       bytes += 16;
24151       break;
24152
24153     case DW_FORM_string:
24154       read_direct_string (abfd, bytes, &bytes_read);
24155       bytes += bytes_read;
24156       break;
24157
24158     case DW_FORM_sec_offset:
24159     case DW_FORM_strp:
24160     case DW_FORM_GNU_strp_alt:
24161       bytes += offset_size;
24162       break;
24163
24164     case DW_FORM_block:
24165       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24166       bytes += bytes_read;
24167       break;
24168
24169     case DW_FORM_block1:
24170       bytes += 1 + read_1_byte (abfd, bytes);
24171       break;
24172     case DW_FORM_block2:
24173       bytes += 2 + read_2_bytes (abfd, bytes);
24174       break;
24175     case DW_FORM_block4:
24176       bytes += 4 + read_4_bytes (abfd, bytes);
24177       break;
24178
24179     case DW_FORM_sdata:
24180     case DW_FORM_udata:
24181     case DW_FORM_GNU_addr_index:
24182     case DW_FORM_GNU_str_index:
24183       bytes = gdb_skip_leb128 (bytes, buffer_end);
24184       if (bytes == NULL)
24185         {
24186           dwarf2_section_buffer_overflow_complaint (section);
24187           return NULL;
24188         }
24189       break;
24190
24191     case DW_FORM_implicit_const:
24192       break;
24193
24194     default:
24195       {
24196         complaint (_("invalid form 0x%x in `%s'"),
24197                    form, get_section_name (section));
24198         return NULL;
24199       }
24200     }
24201
24202   return bytes;
24203 }
24204
24205 /* A helper for dwarf_decode_macros that handles skipping an unknown
24206    opcode.  Returns an updated pointer to the macro data buffer; or,
24207    on error, issues a complaint and returns NULL.  */
24208
24209 static const gdb_byte *
24210 skip_unknown_opcode (unsigned int opcode,
24211                      const gdb_byte **opcode_definitions,
24212                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24213                      bfd *abfd,
24214                      unsigned int offset_size,
24215                      struct dwarf2_section_info *section)
24216 {
24217   unsigned int bytes_read, i;
24218   unsigned long arg;
24219   const gdb_byte *defn;
24220
24221   if (opcode_definitions[opcode] == NULL)
24222     {
24223       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24224                  opcode);
24225       return NULL;
24226     }
24227
24228   defn = opcode_definitions[opcode];
24229   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24230   defn += bytes_read;
24231
24232   for (i = 0; i < arg; ++i)
24233     {
24234       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24235                                  (enum dwarf_form) defn[i], offset_size,
24236                                  section);
24237       if (mac_ptr == NULL)
24238         {
24239           /* skip_form_bytes already issued the complaint.  */
24240           return NULL;
24241         }
24242     }
24243
24244   return mac_ptr;
24245 }
24246
24247 /* A helper function which parses the header of a macro section.
24248    If the macro section is the extended (for now called "GNU") type,
24249    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24250    the header, or issues a complaint and returns NULL on error.  */
24251
24252 static const gdb_byte *
24253 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24254                           bfd *abfd,
24255                           const gdb_byte *mac_ptr,
24256                           unsigned int *offset_size,
24257                           int section_is_gnu)
24258 {
24259   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24260
24261   if (section_is_gnu)
24262     {
24263       unsigned int version, flags;
24264
24265       version = read_2_bytes (abfd, mac_ptr);
24266       if (version != 4 && version != 5)
24267         {
24268           complaint (_("unrecognized version `%d' in .debug_macro section"),
24269                      version);
24270           return NULL;
24271         }
24272       mac_ptr += 2;
24273
24274       flags = read_1_byte (abfd, mac_ptr);
24275       ++mac_ptr;
24276       *offset_size = (flags & 1) ? 8 : 4;
24277
24278       if ((flags & 2) != 0)
24279         /* We don't need the line table offset.  */
24280         mac_ptr += *offset_size;
24281
24282       /* Vendor opcode descriptions.  */
24283       if ((flags & 4) != 0)
24284         {
24285           unsigned int i, count;
24286
24287           count = read_1_byte (abfd, mac_ptr);
24288           ++mac_ptr;
24289           for (i = 0; i < count; ++i)
24290             {
24291               unsigned int opcode, bytes_read;
24292               unsigned long arg;
24293
24294               opcode = read_1_byte (abfd, mac_ptr);
24295               ++mac_ptr;
24296               opcode_definitions[opcode] = mac_ptr;
24297               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24298               mac_ptr += bytes_read;
24299               mac_ptr += arg;
24300             }
24301         }
24302     }
24303
24304   return mac_ptr;
24305 }
24306
24307 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24308    including DW_MACRO_import.  */
24309
24310 static void
24311 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24312                           bfd *abfd,
24313                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24314                           struct macro_source_file *current_file,
24315                           struct line_header *lh,
24316                           struct dwarf2_section_info *section,
24317                           int section_is_gnu, int section_is_dwz,
24318                           unsigned int offset_size,
24319                           htab_t include_hash)
24320 {
24321   struct dwarf2_per_objfile *dwarf2_per_objfile
24322     = cu->per_cu->dwarf2_per_objfile;
24323   struct objfile *objfile = dwarf2_per_objfile->objfile;
24324   enum dwarf_macro_record_type macinfo_type;
24325   int at_commandline;
24326   const gdb_byte *opcode_definitions[256];
24327
24328   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24329                                       &offset_size, section_is_gnu);
24330   if (mac_ptr == NULL)
24331     {
24332       /* We already issued a complaint.  */
24333       return;
24334     }
24335
24336   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24337      GDB is still reading the definitions from command line.  First
24338      DW_MACINFO_start_file will need to be ignored as it was already executed
24339      to create CURRENT_FILE for the main source holding also the command line
24340      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24341      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24342
24343   at_commandline = 1;
24344
24345   do
24346     {
24347       /* Do we at least have room for a macinfo type byte?  */
24348       if (mac_ptr >= mac_end)
24349         {
24350           dwarf2_section_buffer_overflow_complaint (section);
24351           break;
24352         }
24353
24354       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24355       mac_ptr++;
24356
24357       /* Note that we rely on the fact that the corresponding GNU and
24358          DWARF constants are the same.  */
24359       DIAGNOSTIC_PUSH
24360       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24361       switch (macinfo_type)
24362         {
24363           /* A zero macinfo type indicates the end of the macro
24364              information.  */
24365         case 0:
24366           break;
24367
24368         case DW_MACRO_define:
24369         case DW_MACRO_undef:
24370         case DW_MACRO_define_strp:
24371         case DW_MACRO_undef_strp:
24372         case DW_MACRO_define_sup:
24373         case DW_MACRO_undef_sup:
24374           {
24375             unsigned int bytes_read;
24376             int line;
24377             const char *body;
24378             int is_define;
24379
24380             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24381             mac_ptr += bytes_read;
24382
24383             if (macinfo_type == DW_MACRO_define
24384                 || macinfo_type == DW_MACRO_undef)
24385               {
24386                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24387                 mac_ptr += bytes_read;
24388               }
24389             else
24390               {
24391                 LONGEST str_offset;
24392
24393                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24394                 mac_ptr += offset_size;
24395
24396                 if (macinfo_type == DW_MACRO_define_sup
24397                     || macinfo_type == DW_MACRO_undef_sup
24398                     || section_is_dwz)
24399                   {
24400                     struct dwz_file *dwz
24401                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24402
24403                     body = read_indirect_string_from_dwz (objfile,
24404                                                           dwz, str_offset);
24405                   }
24406                 else
24407                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24408                                                          abfd, str_offset);
24409               }
24410
24411             is_define = (macinfo_type == DW_MACRO_define
24412                          || macinfo_type == DW_MACRO_define_strp
24413                          || macinfo_type == DW_MACRO_define_sup);
24414             if (! current_file)
24415               {
24416                 /* DWARF violation as no main source is present.  */
24417                 complaint (_("debug info with no main source gives macro %s "
24418                              "on line %d: %s"),
24419                            is_define ? _("definition") : _("undefinition"),
24420                            line, body);
24421                 break;
24422               }
24423             if ((line == 0 && !at_commandline)
24424                 || (line != 0 && at_commandline))
24425               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24426                          at_commandline ? _("command-line") : _("in-file"),
24427                          is_define ? _("definition") : _("undefinition"),
24428                          line == 0 ? _("zero") : _("non-zero"), line, body);
24429
24430             if (is_define)
24431               parse_macro_definition (current_file, line, body);
24432             else
24433               {
24434                 gdb_assert (macinfo_type == DW_MACRO_undef
24435                             || macinfo_type == DW_MACRO_undef_strp
24436                             || macinfo_type == DW_MACRO_undef_sup);
24437                 macro_undef (current_file, line, body);
24438               }
24439           }
24440           break;
24441
24442         case DW_MACRO_start_file:
24443           {
24444             unsigned int bytes_read;
24445             int line, file;
24446
24447             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24448             mac_ptr += bytes_read;
24449             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24450             mac_ptr += bytes_read;
24451
24452             if ((line == 0 && !at_commandline)
24453                 || (line != 0 && at_commandline))
24454               complaint (_("debug info gives source %d included "
24455                            "from %s at %s line %d"),
24456                          file, at_commandline ? _("command-line") : _("file"),
24457                          line == 0 ? _("zero") : _("non-zero"), line);
24458
24459             if (at_commandline)
24460               {
24461                 /* This DW_MACRO_start_file was executed in the
24462                    pass one.  */
24463                 at_commandline = 0;
24464               }
24465             else
24466               current_file = macro_start_file (cu, file, line, current_file,
24467                                                lh);
24468           }
24469           break;
24470
24471         case DW_MACRO_end_file:
24472           if (! current_file)
24473             complaint (_("macro debug info has an unmatched "
24474                          "`close_file' directive"));
24475           else
24476             {
24477               current_file = current_file->included_by;
24478               if (! current_file)
24479                 {
24480                   enum dwarf_macro_record_type next_type;
24481
24482                   /* GCC circa March 2002 doesn't produce the zero
24483                      type byte marking the end of the compilation
24484                      unit.  Complain if it's not there, but exit no
24485                      matter what.  */
24486
24487                   /* Do we at least have room for a macinfo type byte?  */
24488                   if (mac_ptr >= mac_end)
24489                     {
24490                       dwarf2_section_buffer_overflow_complaint (section);
24491                       return;
24492                     }
24493
24494                   /* We don't increment mac_ptr here, so this is just
24495                      a look-ahead.  */
24496                   next_type
24497                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24498                                                                   mac_ptr);
24499                   if (next_type != 0)
24500                     complaint (_("no terminating 0-type entry for "
24501                                  "macros in `.debug_macinfo' section"));
24502
24503                   return;
24504                 }
24505             }
24506           break;
24507
24508         case DW_MACRO_import:
24509         case DW_MACRO_import_sup:
24510           {
24511             LONGEST offset;
24512             void **slot;
24513             bfd *include_bfd = abfd;
24514             struct dwarf2_section_info *include_section = section;
24515             const gdb_byte *include_mac_end = mac_end;
24516             int is_dwz = section_is_dwz;
24517             const gdb_byte *new_mac_ptr;
24518
24519             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24520             mac_ptr += offset_size;
24521
24522             if (macinfo_type == DW_MACRO_import_sup)
24523               {
24524                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24525
24526                 dwarf2_read_section (objfile, &dwz->macro);
24527
24528                 include_section = &dwz->macro;
24529                 include_bfd = get_section_bfd_owner (include_section);
24530                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24531                 is_dwz = 1;
24532               }
24533
24534             new_mac_ptr = include_section->buffer + offset;
24535             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24536
24537             if (*slot != NULL)
24538               {
24539                 /* This has actually happened; see
24540                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24541                 complaint (_("recursive DW_MACRO_import in "
24542                              ".debug_macro section"));
24543               }
24544             else
24545               {
24546                 *slot = (void *) new_mac_ptr;
24547
24548                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24549                                           include_mac_end, current_file, lh,
24550                                           section, section_is_gnu, is_dwz,
24551                                           offset_size, include_hash);
24552
24553                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24554               }
24555           }
24556           break;
24557
24558         case DW_MACINFO_vendor_ext:
24559           if (!section_is_gnu)
24560             {
24561               unsigned int bytes_read;
24562
24563               /* This reads the constant, but since we don't recognize
24564                  any vendor extensions, we ignore it.  */
24565               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24566               mac_ptr += bytes_read;
24567               read_direct_string (abfd, mac_ptr, &bytes_read);
24568               mac_ptr += bytes_read;
24569
24570               /* We don't recognize any vendor extensions.  */
24571               break;
24572             }
24573           /* FALLTHROUGH */
24574
24575         default:
24576           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24577                                          mac_ptr, mac_end, abfd, offset_size,
24578                                          section);
24579           if (mac_ptr == NULL)
24580             return;
24581           break;
24582         }
24583       DIAGNOSTIC_POP
24584     } while (macinfo_type != 0);
24585 }
24586
24587 static void
24588 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24589                      int section_is_gnu)
24590 {
24591   struct dwarf2_per_objfile *dwarf2_per_objfile
24592     = cu->per_cu->dwarf2_per_objfile;
24593   struct objfile *objfile = dwarf2_per_objfile->objfile;
24594   struct line_header *lh = cu->line_header;
24595   bfd *abfd;
24596   const gdb_byte *mac_ptr, *mac_end;
24597   struct macro_source_file *current_file = 0;
24598   enum dwarf_macro_record_type macinfo_type;
24599   unsigned int offset_size = cu->header.offset_size;
24600   const gdb_byte *opcode_definitions[256];
24601   void **slot;
24602   struct dwarf2_section_info *section;
24603   const char *section_name;
24604
24605   if (cu->dwo_unit != NULL)
24606     {
24607       if (section_is_gnu)
24608         {
24609           section = &cu->dwo_unit->dwo_file->sections.macro;
24610           section_name = ".debug_macro.dwo";
24611         }
24612       else
24613         {
24614           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24615           section_name = ".debug_macinfo.dwo";
24616         }
24617     }
24618   else
24619     {
24620       if (section_is_gnu)
24621         {
24622           section = &dwarf2_per_objfile->macro;
24623           section_name = ".debug_macro";
24624         }
24625       else
24626         {
24627           section = &dwarf2_per_objfile->macinfo;
24628           section_name = ".debug_macinfo";
24629         }
24630     }
24631
24632   dwarf2_read_section (objfile, section);
24633   if (section->buffer == NULL)
24634     {
24635       complaint (_("missing %s section"), section_name);
24636       return;
24637     }
24638   abfd = get_section_bfd_owner (section);
24639
24640   /* First pass: Find the name of the base filename.
24641      This filename is needed in order to process all macros whose definition
24642      (or undefinition) comes from the command line.  These macros are defined
24643      before the first DW_MACINFO_start_file entry, and yet still need to be
24644      associated to the base file.
24645
24646      To determine the base file name, we scan the macro definitions until we
24647      reach the first DW_MACINFO_start_file entry.  We then initialize
24648      CURRENT_FILE accordingly so that any macro definition found before the
24649      first DW_MACINFO_start_file can still be associated to the base file.  */
24650
24651   mac_ptr = section->buffer + offset;
24652   mac_end = section->buffer + section->size;
24653
24654   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24655                                       &offset_size, section_is_gnu);
24656   if (mac_ptr == NULL)
24657     {
24658       /* We already issued a complaint.  */
24659       return;
24660     }
24661
24662   do
24663     {
24664       /* Do we at least have room for a macinfo type byte?  */
24665       if (mac_ptr >= mac_end)
24666         {
24667           /* Complaint is printed during the second pass as GDB will probably
24668              stop the first pass earlier upon finding
24669              DW_MACINFO_start_file.  */
24670           break;
24671         }
24672
24673       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24674       mac_ptr++;
24675
24676       /* Note that we rely on the fact that the corresponding GNU and
24677          DWARF constants are the same.  */
24678       DIAGNOSTIC_PUSH
24679       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24680       switch (macinfo_type)
24681         {
24682           /* A zero macinfo type indicates the end of the macro
24683              information.  */
24684         case 0:
24685           break;
24686
24687         case DW_MACRO_define:
24688         case DW_MACRO_undef:
24689           /* Only skip the data by MAC_PTR.  */
24690           {
24691             unsigned int bytes_read;
24692
24693             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24694             mac_ptr += bytes_read;
24695             read_direct_string (abfd, mac_ptr, &bytes_read);
24696             mac_ptr += bytes_read;
24697           }
24698           break;
24699
24700         case DW_MACRO_start_file:
24701           {
24702             unsigned int bytes_read;
24703             int line, file;
24704
24705             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24706             mac_ptr += bytes_read;
24707             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24708             mac_ptr += bytes_read;
24709
24710             current_file = macro_start_file (cu, file, line, current_file, lh);
24711           }
24712           break;
24713
24714         case DW_MACRO_end_file:
24715           /* No data to skip by MAC_PTR.  */
24716           break;
24717
24718         case DW_MACRO_define_strp:
24719         case DW_MACRO_undef_strp:
24720         case DW_MACRO_define_sup:
24721         case DW_MACRO_undef_sup:
24722           {
24723             unsigned int bytes_read;
24724
24725             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24726             mac_ptr += bytes_read;
24727             mac_ptr += offset_size;
24728           }
24729           break;
24730
24731         case DW_MACRO_import:
24732         case DW_MACRO_import_sup:
24733           /* Note that, according to the spec, a transparent include
24734              chain cannot call DW_MACRO_start_file.  So, we can just
24735              skip this opcode.  */
24736           mac_ptr += offset_size;
24737           break;
24738
24739         case DW_MACINFO_vendor_ext:
24740           /* Only skip the data by MAC_PTR.  */
24741           if (!section_is_gnu)
24742             {
24743               unsigned int bytes_read;
24744
24745               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24746               mac_ptr += bytes_read;
24747               read_direct_string (abfd, mac_ptr, &bytes_read);
24748               mac_ptr += bytes_read;
24749             }
24750           /* FALLTHROUGH */
24751
24752         default:
24753           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24754                                          mac_ptr, mac_end, abfd, offset_size,
24755                                          section);
24756           if (mac_ptr == NULL)
24757             return;
24758           break;
24759         }
24760       DIAGNOSTIC_POP
24761     } while (macinfo_type != 0 && current_file == NULL);
24762
24763   /* Second pass: Process all entries.
24764
24765      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24766      command-line macro definitions/undefinitions.  This flag is unset when we
24767      reach the first DW_MACINFO_start_file entry.  */
24768
24769   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24770                                            htab_eq_pointer,
24771                                            NULL, xcalloc, xfree));
24772   mac_ptr = section->buffer + offset;
24773   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24774   *slot = (void *) mac_ptr;
24775   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24776                             current_file, lh, section,
24777                             section_is_gnu, 0, offset_size,
24778                             include_hash.get ());
24779 }
24780
24781 /* Check if the attribute's form is a DW_FORM_block*
24782    if so return true else false.  */
24783
24784 static int
24785 attr_form_is_block (const struct attribute *attr)
24786 {
24787   return (attr == NULL ? 0 :
24788       attr->form == DW_FORM_block1
24789       || attr->form == DW_FORM_block2
24790       || attr->form == DW_FORM_block4
24791       || attr->form == DW_FORM_block
24792       || attr->form == DW_FORM_exprloc);
24793 }
24794
24795 /* Return non-zero if ATTR's value is a section offset --- classes
24796    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24797    You may use DW_UNSND (attr) to retrieve such offsets.
24798
24799    Section 7.5.4, "Attribute Encodings", explains that no attribute
24800    may have a value that belongs to more than one of these classes; it
24801    would be ambiguous if we did, because we use the same forms for all
24802    of them.  */
24803
24804 static int
24805 attr_form_is_section_offset (const struct attribute *attr)
24806 {
24807   return (attr->form == DW_FORM_data4
24808           || attr->form == DW_FORM_data8
24809           || attr->form == DW_FORM_sec_offset);
24810 }
24811
24812 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24813    zero otherwise.  When this function returns true, you can apply
24814    dwarf2_get_attr_constant_value to it.
24815
24816    However, note that for some attributes you must check
24817    attr_form_is_section_offset before using this test.  DW_FORM_data4
24818    and DW_FORM_data8 are members of both the constant class, and of
24819    the classes that contain offsets into other debug sections
24820    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24821    that, if an attribute's can be either a constant or one of the
24822    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24823    taken as section offsets, not constants.
24824
24825    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24826    cannot handle that.  */
24827
24828 static int
24829 attr_form_is_constant (const struct attribute *attr)
24830 {
24831   switch (attr->form)
24832     {
24833     case DW_FORM_sdata:
24834     case DW_FORM_udata:
24835     case DW_FORM_data1:
24836     case DW_FORM_data2:
24837     case DW_FORM_data4:
24838     case DW_FORM_data8:
24839     case DW_FORM_implicit_const:
24840       return 1;
24841     default:
24842       return 0;
24843     }
24844 }
24845
24846
24847 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24848    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24849
24850 static int
24851 attr_form_is_ref (const struct attribute *attr)
24852 {
24853   switch (attr->form)
24854     {
24855     case DW_FORM_ref_addr:
24856     case DW_FORM_ref1:
24857     case DW_FORM_ref2:
24858     case DW_FORM_ref4:
24859     case DW_FORM_ref8:
24860     case DW_FORM_ref_udata:
24861     case DW_FORM_GNU_ref_alt:
24862       return 1;
24863     default:
24864       return 0;
24865     }
24866 }
24867
24868 /* Return the .debug_loc section to use for CU.
24869    For DWO files use .debug_loc.dwo.  */
24870
24871 static struct dwarf2_section_info *
24872 cu_debug_loc_section (struct dwarf2_cu *cu)
24873 {
24874   struct dwarf2_per_objfile *dwarf2_per_objfile
24875     = cu->per_cu->dwarf2_per_objfile;
24876
24877   if (cu->dwo_unit)
24878     {
24879       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24880       
24881       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24882     }
24883   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24884                                   : &dwarf2_per_objfile->loc);
24885 }
24886
24887 /* A helper function that fills in a dwarf2_loclist_baton.  */
24888
24889 static void
24890 fill_in_loclist_baton (struct dwarf2_cu *cu,
24891                        struct dwarf2_loclist_baton *baton,
24892                        const struct attribute *attr)
24893 {
24894   struct dwarf2_per_objfile *dwarf2_per_objfile
24895     = cu->per_cu->dwarf2_per_objfile;
24896   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24897
24898   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24899
24900   baton->per_cu = cu->per_cu;
24901   gdb_assert (baton->per_cu);
24902   /* We don't know how long the location list is, but make sure we
24903      don't run off the edge of the section.  */
24904   baton->size = section->size - DW_UNSND (attr);
24905   baton->data = section->buffer + DW_UNSND (attr);
24906   baton->base_address = cu->base_address;
24907   baton->from_dwo = cu->dwo_unit != NULL;
24908 }
24909
24910 static void
24911 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24912                              struct dwarf2_cu *cu, int is_block)
24913 {
24914   struct dwarf2_per_objfile *dwarf2_per_objfile
24915     = cu->per_cu->dwarf2_per_objfile;
24916   struct objfile *objfile = dwarf2_per_objfile->objfile;
24917   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24918
24919   if (attr_form_is_section_offset (attr)
24920       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24921          the section.  If so, fall through to the complaint in the
24922          other branch.  */
24923       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24924     {
24925       struct dwarf2_loclist_baton *baton;
24926
24927       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24928
24929       fill_in_loclist_baton (cu, baton, attr);
24930
24931       if (cu->base_known == 0)
24932         complaint (_("Location list used without "
24933                      "specifying the CU base address."));
24934
24935       SYMBOL_ACLASS_INDEX (sym) = (is_block
24936                                    ? dwarf2_loclist_block_index
24937                                    : dwarf2_loclist_index);
24938       SYMBOL_LOCATION_BATON (sym) = baton;
24939     }
24940   else
24941     {
24942       struct dwarf2_locexpr_baton *baton;
24943
24944       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24945       baton->per_cu = cu->per_cu;
24946       gdb_assert (baton->per_cu);
24947
24948       if (attr_form_is_block (attr))
24949         {
24950           /* Note that we're just copying the block's data pointer
24951              here, not the actual data.  We're still pointing into the
24952              info_buffer for SYM's objfile; right now we never release
24953              that buffer, but when we do clean up properly this may
24954              need to change.  */
24955           baton->size = DW_BLOCK (attr)->size;
24956           baton->data = DW_BLOCK (attr)->data;
24957         }
24958       else
24959         {
24960           dwarf2_invalid_attrib_class_complaint ("location description",
24961                                                  SYMBOL_NATURAL_NAME (sym));
24962           baton->size = 0;
24963         }
24964
24965       SYMBOL_ACLASS_INDEX (sym) = (is_block
24966                                    ? dwarf2_locexpr_block_index
24967                                    : dwarf2_locexpr_index);
24968       SYMBOL_LOCATION_BATON (sym) = baton;
24969     }
24970 }
24971
24972 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24973    came from a separate debuginfo file, then the master objfile is
24974    returned.  */
24975
24976 struct objfile *
24977 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24978 {
24979   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24980
24981   /* Return the master objfile, so that we can report and look up the
24982      correct file containing this variable.  */
24983   if (objfile->separate_debug_objfile_backlink)
24984     objfile = objfile->separate_debug_objfile_backlink;
24985
24986   return objfile;
24987 }
24988
24989 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24990    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24991    CU_HEADERP first.  */
24992
24993 static const struct comp_unit_head *
24994 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24995                        struct dwarf2_per_cu_data *per_cu)
24996 {
24997   const gdb_byte *info_ptr;
24998
24999   if (per_cu->cu)
25000     return &per_cu->cu->header;
25001
25002   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
25003
25004   memset (cu_headerp, 0, sizeof (*cu_headerp));
25005   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
25006                        rcuh_kind::COMPILE);
25007
25008   return cu_headerp;
25009 }
25010
25011 /* Return the address size given in the compilation unit header for CU.  */
25012
25013 int
25014 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
25015 {
25016   struct comp_unit_head cu_header_local;
25017   const struct comp_unit_head *cu_headerp;
25018
25019   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25020
25021   return cu_headerp->addr_size;
25022 }
25023
25024 /* Return the offset size given in the compilation unit header for CU.  */
25025
25026 int
25027 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25028 {
25029   struct comp_unit_head cu_header_local;
25030   const struct comp_unit_head *cu_headerp;
25031
25032   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25033
25034   return cu_headerp->offset_size;
25035 }
25036
25037 /* See its dwarf2loc.h declaration.  */
25038
25039 int
25040 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25041 {
25042   struct comp_unit_head cu_header_local;
25043   const struct comp_unit_head *cu_headerp;
25044
25045   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25046
25047   if (cu_headerp->version == 2)
25048     return cu_headerp->addr_size;
25049   else
25050     return cu_headerp->offset_size;
25051 }
25052
25053 /* Return the text offset of the CU.  The returned offset comes from
25054    this CU's objfile.  If this objfile came from a separate debuginfo
25055    file, then the offset may be different from the corresponding
25056    offset in the parent objfile.  */
25057
25058 CORE_ADDR
25059 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25060 {
25061   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25062
25063   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25064 }
25065
25066 /* Return DWARF version number of PER_CU.  */
25067
25068 short
25069 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25070 {
25071   return per_cu->dwarf_version;
25072 }
25073
25074 /* Locate the .debug_info compilation unit from CU's objfile which contains
25075    the DIE at OFFSET.  Raises an error on failure.  */
25076
25077 static struct dwarf2_per_cu_data *
25078 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25079                                   unsigned int offset_in_dwz,
25080                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25081 {
25082   struct dwarf2_per_cu_data *this_cu;
25083   int low, high;
25084   const sect_offset *cu_off;
25085
25086   low = 0;
25087   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25088   while (high > low)
25089     {
25090       struct dwarf2_per_cu_data *mid_cu;
25091       int mid = low + (high - low) / 2;
25092
25093       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25094       cu_off = &mid_cu->sect_off;
25095       if (mid_cu->is_dwz > offset_in_dwz
25096           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25097         high = mid;
25098       else
25099         low = mid + 1;
25100     }
25101   gdb_assert (low == high);
25102   this_cu = dwarf2_per_objfile->all_comp_units[low];
25103   cu_off = &this_cu->sect_off;
25104   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25105     {
25106       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25107         error (_("Dwarf Error: could not find partial DIE containing "
25108                "offset %s [in module %s]"),
25109                sect_offset_str (sect_off),
25110                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25111
25112       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25113                   <= sect_off);
25114       return dwarf2_per_objfile->all_comp_units[low-1];
25115     }
25116   else
25117     {
25118       this_cu = dwarf2_per_objfile->all_comp_units[low];
25119       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25120           && sect_off >= this_cu->sect_off + this_cu->length)
25121         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25122       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25123       return this_cu;
25124     }
25125 }
25126
25127 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25128
25129 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25130   : per_cu (per_cu_),
25131     mark (0),
25132     has_loclist (0),
25133     checked_producer (0),
25134     producer_is_gxx_lt_4_6 (0),
25135     producer_is_gcc_lt_4_3 (0),
25136     producer_is_icc_lt_14 (0),
25137     producer_is_codewarrior (false),
25138     processing_has_namespace_info (0)
25139 {
25140   per_cu->cu = this;
25141 }
25142
25143 /* Destroy a dwarf2_cu.  */
25144
25145 dwarf2_cu::~dwarf2_cu ()
25146 {
25147   per_cu->cu = NULL;
25148 }
25149
25150 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25151
25152 static void
25153 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25154                        enum language pretend_language)
25155 {
25156   struct attribute *attr;
25157
25158   /* Set the language we're debugging.  */
25159   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25160   if (attr)
25161     set_cu_language (DW_UNSND (attr), cu);
25162   else
25163     {
25164       cu->language = pretend_language;
25165       cu->language_defn = language_def (cu->language);
25166     }
25167
25168   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25169 }
25170
25171 /* Increase the age counter on each cached compilation unit, and free
25172    any that are too old.  */
25173
25174 static void
25175 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25176 {
25177   struct dwarf2_per_cu_data *per_cu, **last_chain;
25178
25179   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25180   per_cu = dwarf2_per_objfile->read_in_chain;
25181   while (per_cu != NULL)
25182     {
25183       per_cu->cu->last_used ++;
25184       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25185         dwarf2_mark (per_cu->cu);
25186       per_cu = per_cu->cu->read_in_chain;
25187     }
25188
25189   per_cu = dwarf2_per_objfile->read_in_chain;
25190   last_chain = &dwarf2_per_objfile->read_in_chain;
25191   while (per_cu != NULL)
25192     {
25193       struct dwarf2_per_cu_data *next_cu;
25194
25195       next_cu = per_cu->cu->read_in_chain;
25196
25197       if (!per_cu->cu->mark)
25198         {
25199           delete per_cu->cu;
25200           *last_chain = next_cu;
25201         }
25202       else
25203         last_chain = &per_cu->cu->read_in_chain;
25204
25205       per_cu = next_cu;
25206     }
25207 }
25208
25209 /* Remove a single compilation unit from the cache.  */
25210
25211 static void
25212 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25213 {
25214   struct dwarf2_per_cu_data *per_cu, **last_chain;
25215   struct dwarf2_per_objfile *dwarf2_per_objfile
25216     = target_per_cu->dwarf2_per_objfile;
25217
25218   per_cu = dwarf2_per_objfile->read_in_chain;
25219   last_chain = &dwarf2_per_objfile->read_in_chain;
25220   while (per_cu != NULL)
25221     {
25222       struct dwarf2_per_cu_data *next_cu;
25223
25224       next_cu = per_cu->cu->read_in_chain;
25225
25226       if (per_cu == target_per_cu)
25227         {
25228           delete per_cu->cu;
25229           per_cu->cu = NULL;
25230           *last_chain = next_cu;
25231           break;
25232         }
25233       else
25234         last_chain = &per_cu->cu->read_in_chain;
25235
25236       per_cu = next_cu;
25237     }
25238 }
25239
25240 /* Cleanup function for the dwarf2_per_objfile data.  */
25241
25242 static void
25243 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25244 {
25245   struct dwarf2_per_objfile *dwarf2_per_objfile
25246     = static_cast<struct dwarf2_per_objfile *> (datum);
25247
25248   delete dwarf2_per_objfile;
25249 }
25250
25251 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25252    We store these in a hash table separate from the DIEs, and preserve them
25253    when the DIEs are flushed out of cache.
25254
25255    The CU "per_cu" pointer is needed because offset alone is not enough to
25256    uniquely identify the type.  A file may have multiple .debug_types sections,
25257    or the type may come from a DWO file.  Furthermore, while it's more logical
25258    to use per_cu->section+offset, with Fission the section with the data is in
25259    the DWO file but we don't know that section at the point we need it.
25260    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25261    because we can enter the lookup routine, get_die_type_at_offset, from
25262    outside this file, and thus won't necessarily have PER_CU->cu.
25263    Fortunately, PER_CU is stable for the life of the objfile.  */
25264
25265 struct dwarf2_per_cu_offset_and_type
25266 {
25267   const struct dwarf2_per_cu_data *per_cu;
25268   sect_offset sect_off;
25269   struct type *type;
25270 };
25271
25272 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25273
25274 static hashval_t
25275 per_cu_offset_and_type_hash (const void *item)
25276 {
25277   const struct dwarf2_per_cu_offset_and_type *ofs
25278     = (const struct dwarf2_per_cu_offset_and_type *) item;
25279
25280   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25281 }
25282
25283 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25284
25285 static int
25286 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25287 {
25288   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25289     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25290   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25291     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25292
25293   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25294           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25295 }
25296
25297 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25298    table if necessary.  For convenience, return TYPE.
25299
25300    The DIEs reading must have careful ordering to:
25301     * Not cause infite loops trying to read in DIEs as a prerequisite for
25302       reading current DIE.
25303     * Not trying to dereference contents of still incompletely read in types
25304       while reading in other DIEs.
25305     * Enable referencing still incompletely read in types just by a pointer to
25306       the type without accessing its fields.
25307
25308    Therefore caller should follow these rules:
25309      * Try to fetch any prerequisite types we may need to build this DIE type
25310        before building the type and calling set_die_type.
25311      * After building type call set_die_type for current DIE as soon as
25312        possible before fetching more types to complete the current type.
25313      * Make the type as complete as possible before fetching more types.  */
25314
25315 static struct type *
25316 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25317 {
25318   struct dwarf2_per_objfile *dwarf2_per_objfile
25319     = cu->per_cu->dwarf2_per_objfile;
25320   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25321   struct objfile *objfile = dwarf2_per_objfile->objfile;
25322   struct attribute *attr;
25323   struct dynamic_prop prop;
25324
25325   /* For Ada types, make sure that the gnat-specific data is always
25326      initialized (if not already set).  There are a few types where
25327      we should not be doing so, because the type-specific area is
25328      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25329      where the type-specific area is used to store the floatformat).
25330      But this is not a problem, because the gnat-specific information
25331      is actually not needed for these types.  */
25332   if (need_gnat_info (cu)
25333       && TYPE_CODE (type) != TYPE_CODE_FUNC
25334       && TYPE_CODE (type) != TYPE_CODE_FLT
25335       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25336       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25337       && TYPE_CODE (type) != TYPE_CODE_METHOD
25338       && !HAVE_GNAT_AUX_INFO (type))
25339     INIT_GNAT_SPECIFIC (type);
25340
25341   /* Read DW_AT_allocated and set in type.  */
25342   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25343   if (attr_form_is_block (attr))
25344     {
25345       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25346         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25347     }
25348   else if (attr != NULL)
25349     {
25350       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25351                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25352                  sect_offset_str (die->sect_off));
25353     }
25354
25355   /* Read DW_AT_associated and set in type.  */
25356   attr = dwarf2_attr (die, DW_AT_associated, cu);
25357   if (attr_form_is_block (attr))
25358     {
25359       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25360         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25361     }
25362   else if (attr != NULL)
25363     {
25364       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25365                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25366                  sect_offset_str (die->sect_off));
25367     }
25368
25369   /* Read DW_AT_data_location and set in type.  */
25370   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25371   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25372     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25373
25374   if (dwarf2_per_objfile->die_type_hash == NULL)
25375     {
25376       dwarf2_per_objfile->die_type_hash =
25377         htab_create_alloc_ex (127,
25378                               per_cu_offset_and_type_hash,
25379                               per_cu_offset_and_type_eq,
25380                               NULL,
25381                               &objfile->objfile_obstack,
25382                               hashtab_obstack_allocate,
25383                               dummy_obstack_deallocate);
25384     }
25385
25386   ofs.per_cu = cu->per_cu;
25387   ofs.sect_off = die->sect_off;
25388   ofs.type = type;
25389   slot = (struct dwarf2_per_cu_offset_and_type **)
25390     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25391   if (*slot)
25392     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25393                sect_offset_str (die->sect_off));
25394   *slot = XOBNEW (&objfile->objfile_obstack,
25395                   struct dwarf2_per_cu_offset_and_type);
25396   **slot = ofs;
25397   return type;
25398 }
25399
25400 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25401    or return NULL if the die does not have a saved type.  */
25402
25403 static struct type *
25404 get_die_type_at_offset (sect_offset sect_off,
25405                         struct dwarf2_per_cu_data *per_cu)
25406 {
25407   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25408   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25409
25410   if (dwarf2_per_objfile->die_type_hash == NULL)
25411     return NULL;
25412
25413   ofs.per_cu = per_cu;
25414   ofs.sect_off = sect_off;
25415   slot = ((struct dwarf2_per_cu_offset_and_type *)
25416           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25417   if (slot)
25418     return slot->type;
25419   else
25420     return NULL;
25421 }
25422
25423 /* Look up the type for DIE in CU in die_type_hash,
25424    or return NULL if DIE does not have a saved type.  */
25425
25426 static struct type *
25427 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25428 {
25429   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25430 }
25431
25432 /* Add a dependence relationship from CU to REF_PER_CU.  */
25433
25434 static void
25435 dwarf2_add_dependence (struct dwarf2_cu *cu,
25436                        struct dwarf2_per_cu_data *ref_per_cu)
25437 {
25438   void **slot;
25439
25440   if (cu->dependencies == NULL)
25441     cu->dependencies
25442       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25443                               NULL, &cu->comp_unit_obstack,
25444                               hashtab_obstack_allocate,
25445                               dummy_obstack_deallocate);
25446
25447   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25448   if (*slot == NULL)
25449     *slot = ref_per_cu;
25450 }
25451
25452 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25453    Set the mark field in every compilation unit in the
25454    cache that we must keep because we are keeping CU.  */
25455
25456 static int
25457 dwarf2_mark_helper (void **slot, void *data)
25458 {
25459   struct dwarf2_per_cu_data *per_cu;
25460
25461   per_cu = (struct dwarf2_per_cu_data *) *slot;
25462
25463   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25464      reading of the chain.  As such dependencies remain valid it is not much
25465      useful to track and undo them during QUIT cleanups.  */
25466   if (per_cu->cu == NULL)
25467     return 1;
25468
25469   if (per_cu->cu->mark)
25470     return 1;
25471   per_cu->cu->mark = 1;
25472
25473   if (per_cu->cu->dependencies != NULL)
25474     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25475
25476   return 1;
25477 }
25478
25479 /* Set the mark field in CU and in every other compilation unit in the
25480    cache that we must keep because we are keeping CU.  */
25481
25482 static void
25483 dwarf2_mark (struct dwarf2_cu *cu)
25484 {
25485   if (cu->mark)
25486     return;
25487   cu->mark = 1;
25488   if (cu->dependencies != NULL)
25489     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25490 }
25491
25492 static void
25493 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25494 {
25495   while (per_cu)
25496     {
25497       per_cu->cu->mark = 0;
25498       per_cu = per_cu->cu->read_in_chain;
25499     }
25500 }
25501
25502 /* Trivial hash function for partial_die_info: the hash value of a DIE
25503    is its offset in .debug_info for this objfile.  */
25504
25505 static hashval_t
25506 partial_die_hash (const void *item)
25507 {
25508   const struct partial_die_info *part_die
25509     = (const struct partial_die_info *) item;
25510
25511   return to_underlying (part_die->sect_off);
25512 }
25513
25514 /* Trivial comparison function for partial_die_info structures: two DIEs
25515    are equal if they have the same offset.  */
25516
25517 static int
25518 partial_die_eq (const void *item_lhs, const void *item_rhs)
25519 {
25520   const struct partial_die_info *part_die_lhs
25521     = (const struct partial_die_info *) item_lhs;
25522   const struct partial_die_info *part_die_rhs
25523     = (const struct partial_die_info *) item_rhs;
25524
25525   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25526 }
25527
25528 struct cmd_list_element *set_dwarf_cmdlist;
25529 struct cmd_list_element *show_dwarf_cmdlist;
25530
25531 static void
25532 set_dwarf_cmd (const char *args, int from_tty)
25533 {
25534   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25535              gdb_stdout);
25536 }
25537
25538 static void
25539 show_dwarf_cmd (const char *args, int from_tty)
25540 {
25541   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25542 }
25543
25544 int dwarf_always_disassemble;
25545
25546 static void
25547 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25548                                struct cmd_list_element *c, const char *value)
25549 {
25550   fprintf_filtered (file,
25551                     _("Whether to always disassemble "
25552                       "DWARF expressions is %s.\n"),
25553                     value);
25554 }
25555
25556 static void
25557 show_check_physname (struct ui_file *file, int from_tty,
25558                      struct cmd_list_element *c, const char *value)
25559 {
25560   fprintf_filtered (file,
25561                     _("Whether to check \"physname\" is %s.\n"),
25562                     value);
25563 }
25564
25565 void
25566 _initialize_dwarf2_read (void)
25567 {
25568   dwarf2_objfile_data_key
25569     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25570
25571   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25572 Set DWARF specific variables.\n\
25573 Configure DWARF variables such as the cache size"),
25574                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25575                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25576
25577   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25578 Show DWARF specific variables\n\
25579 Show DWARF variables such as the cache size"),
25580                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25581                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25582
25583   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25584                             &dwarf_max_cache_age, _("\
25585 Set the upper bound on the age of cached DWARF compilation units."), _("\
25586 Show the upper bound on the age of cached DWARF compilation units."), _("\
25587 A higher limit means that cached compilation units will be stored\n\
25588 in memory longer, and more total memory will be used.  Zero disables\n\
25589 caching, which can slow down startup."),
25590                             NULL,
25591                             show_dwarf_max_cache_age,
25592                             &set_dwarf_cmdlist,
25593                             &show_dwarf_cmdlist);
25594
25595   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25596                            &dwarf_always_disassemble, _("\
25597 Set whether `info address' always disassembles DWARF expressions."), _("\
25598 Show whether `info address' always disassembles DWARF expressions."), _("\
25599 When enabled, DWARF expressions are always printed in an assembly-like\n\
25600 syntax.  When disabled, expressions will be printed in a more\n\
25601 conversational style, when possible."),
25602                            NULL,
25603                            show_dwarf_always_disassemble,
25604                            &set_dwarf_cmdlist,
25605                            &show_dwarf_cmdlist);
25606
25607   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25608 Set debugging of the DWARF reader."), _("\
25609 Show debugging of the DWARF reader."), _("\
25610 When enabled (non-zero), debugging messages are printed during DWARF\n\
25611 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25612 information.  A value greater than 1 provides more verbose information."),
25613                             NULL,
25614                             NULL,
25615                             &setdebuglist, &showdebuglist);
25616
25617   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25618 Set debugging of the DWARF DIE reader."), _("\
25619 Show debugging of the DWARF DIE reader."), _("\
25620 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25621 The value is the maximum depth to print."),
25622                              NULL,
25623                              NULL,
25624                              &setdebuglist, &showdebuglist);
25625
25626   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25627 Set debugging of the dwarf line reader."), _("\
25628 Show debugging of the dwarf line reader."), _("\
25629 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25630 A value of 1 (one) provides basic information.\n\
25631 A value greater than 1 provides more verbose information."),
25632                              NULL,
25633                              NULL,
25634                              &setdebuglist, &showdebuglist);
25635
25636   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25637 Set cross-checking of \"physname\" code against demangler."), _("\
25638 Show cross-checking of \"physname\" code against demangler."), _("\
25639 When enabled, GDB's internal \"physname\" code is checked against\n\
25640 the demangler."),
25641                            NULL, show_check_physname,
25642                            &setdebuglist, &showdebuglist);
25643
25644   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25645                            no_class, &use_deprecated_index_sections, _("\
25646 Set whether to use deprecated gdb_index sections."), _("\
25647 Show whether to use deprecated gdb_index sections."), _("\
25648 When enabled, deprecated .gdb_index sections are used anyway.\n\
25649 Normally they are ignored either because of a missing feature or\n\
25650 performance issue.\n\
25651 Warning: This option must be enabled before gdb reads the file."),
25652                            NULL,
25653                            NULL,
25654                            &setlist, &showlist);
25655
25656   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25657                                                         &dwarf2_locexpr_funcs);
25658   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25659                                                         &dwarf2_loclist_funcs);
25660
25661   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25662                                         &dwarf2_block_frame_base_locexpr_funcs);
25663   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25664                                         &dwarf2_block_frame_base_loclist_funcs);
25665
25666 #if GDB_SELF_TEST
25667   selftests::register_test ("dw2_expand_symtabs_matching",
25668                             selftests::dw2_expand_symtabs_matching::run_test);
25669 #endif
25670 }