Simple -Wshadow=local fixes
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2018 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "dwarf2read.h"
33 #include "dwarf-index-cache.h"
34 #include "dwarf-index-common.h"
35 #include "bfd.h"
36 #include "elf-bfd.h"
37 #include "symtab.h"
38 #include "gdbtypes.h"
39 #include "objfiles.h"
40 #include "dwarf2.h"
41 #include "buildsym.h"
42 #include "demangle.h"
43 #include "gdb-demangle.h"
44 #include "expression.h"
45 #include "filenames.h"  /* for DOSish file names */
46 #include "macrotab.h"
47 #include "language.h"
48 #include "complaints.h"
49 #include "bcache.h"
50 #include "dwarf2expr.h"
51 #include "dwarf2loc.h"
52 #include "cp-support.h"
53 #include "hashtab.h"
54 #include "command.h"
55 #include "gdbcmd.h"
56 #include "block.h"
57 #include "addrmap.h"
58 #include "typeprint.h"
59 #include "psympriv.h"
60 #include <sys/stat.h>
61 #include "completer.h"
62 #include "vec.h"
63 #include "c-lang.h"
64 #include "go-lang.h"
65 #include "valprint.h"
66 #include "gdbcore.h" /* for gnutarget */
67 #include "gdb/gdb-index.h"
68 #include <ctype.h>
69 #include "gdb_bfd.h"
70 #include "f-lang.h"
71 #include "source.h"
72 #include "filestuff.h"
73 #include "build-id.h"
74 #include "namespace.h"
75 #include "common/gdb_unlinker.h"
76 #include "common/function-view.h"
77 #include "common/gdb_optional.h"
78 #include "common/underlying.h"
79 #include "common/byte-vector.h"
80 #include "common/hash_enum.h"
81 #include "filename-seen-cache.h"
82 #include "producer.h"
83 #include <fcntl.h>
84 #include <sys/types.h>
85 #include <algorithm>
86 #include <unordered_set>
87 #include <unordered_map>
88 #include "selftest.h"
89 #include <cmath>
90 #include <set>
91 #include <forward_list>
92 #include "rust-lang.h"
93 #include "common/pathstuff.h"
94
95 /* When == 1, print basic high level tracing messages.
96    When > 1, be more verbose.
97    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
98 static unsigned int dwarf_read_debug = 0;
99
100 /* When non-zero, dump DIEs after they are read in.  */
101 static unsigned int dwarf_die_debug = 0;
102
103 /* When non-zero, dump line number entries as they are read in.  */
104 static unsigned int dwarf_line_debug = 0;
105
106 /* When non-zero, cross-check physname against demangler.  */
107 static int check_physname = 0;
108
109 /* When non-zero, do not reject deprecated .gdb_index sections.  */
110 static int use_deprecated_index_sections = 0;
111
112 static const struct objfile_data *dwarf2_objfile_data_key;
113
114 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
115
116 static int dwarf2_locexpr_index;
117 static int dwarf2_loclist_index;
118 static int dwarf2_locexpr_block_index;
119 static int dwarf2_loclist_block_index;
120
121 /* An index into a (C++) symbol name component in a symbol name as
122    recorded in the mapped_index's symbol table.  For each C++ symbol
123    in the symbol table, we record one entry for the start of each
124    component in the symbol in a table of name components, and then
125    sort the table, in order to be able to binary search symbol names,
126    ignoring leading namespaces, both completion and regular look up.
127    For example, for symbol "A::B::C", we'll have an entry that points
128    to "A::B::C", another that points to "B::C", and another for "C".
129    Note that function symbols in GDB index have no parameter
130    information, just the function/method names.  You can convert a
131    name_component to a "const char *" using the
132    'mapped_index::symbol_name_at(offset_type)' method.  */
133
134 struct name_component
135 {
136   /* Offset in the symbol name where the component starts.  Stored as
137      a (32-bit) offset instead of a pointer to save memory and improve
138      locality on 64-bit architectures.  */
139   offset_type name_offset;
140
141   /* The symbol's index in the symbol and constant pool tables of a
142      mapped_index.  */
143   offset_type idx;
144 };
145
146 /* Base class containing bits shared by both .gdb_index and
147    .debug_name indexes.  */
148
149 struct mapped_index_base
150 {
151   mapped_index_base () = default;
152   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
153
154   /* The name_component table (a sorted vector).  See name_component's
155      description above.  */
156   std::vector<name_component> name_components;
157
158   /* How NAME_COMPONENTS is sorted.  */
159   enum case_sensitivity name_components_casing;
160
161   /* Return the number of names in the symbol table.  */
162   virtual size_t symbol_name_count () const = 0;
163
164   /* Get the name of the symbol at IDX in the symbol table.  */
165   virtual const char *symbol_name_at (offset_type idx) const = 0;
166
167   /* Return whether the name at IDX in the symbol table should be
168      ignored.  */
169   virtual bool symbol_name_slot_invalid (offset_type idx) const
170   {
171     return false;
172   }
173
174   /* Build the symbol name component sorted vector, if we haven't
175      yet.  */
176   void build_name_components ();
177
178   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
179      possible matches for LN_NO_PARAMS in the name component
180      vector.  */
181   std::pair<std::vector<name_component>::const_iterator,
182             std::vector<name_component>::const_iterator>
183     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
184
185   /* Prevent deleting/destroying via a base class pointer.  */
186 protected:
187   ~mapped_index_base() = default;
188 };
189
190 /* A description of the mapped index.  The file format is described in
191    a comment by the code that writes the index.  */
192 struct mapped_index final : public mapped_index_base
193 {
194   /* A slot/bucket in the symbol table hash.  */
195   struct symbol_table_slot
196   {
197     const offset_type name;
198     const offset_type vec;
199   };
200
201   /* Index data format version.  */
202   int version = 0;
203
204   /* The address table data.  */
205   gdb::array_view<const gdb_byte> address_table;
206
207   /* The symbol table, implemented as a hash table.  */
208   gdb::array_view<symbol_table_slot> symbol_table;
209
210   /* A pointer to the constant pool.  */
211   const char *constant_pool = nullptr;
212
213   bool symbol_name_slot_invalid (offset_type idx) const override
214   {
215     const auto &bucket = this->symbol_table[idx];
216     return bucket.name == 0 && bucket.vec;
217   }
218
219   /* Convenience method to get at the name of the symbol at IDX in the
220      symbol table.  */
221   const char *symbol_name_at (offset_type idx) const override
222   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
223
224   size_t symbol_name_count () const override
225   { return this->symbol_table.size (); }
226 };
227
228 /* A description of the mapped .debug_names.
229    Uninitialized map has CU_COUNT 0.  */
230 struct mapped_debug_names final : public mapped_index_base
231 {
232   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
233   : dwarf2_per_objfile (dwarf2_per_objfile_)
234   {}
235
236   struct dwarf2_per_objfile *dwarf2_per_objfile;
237   bfd_endian dwarf5_byte_order;
238   bool dwarf5_is_dwarf64;
239   bool augmentation_is_gdb;
240   uint8_t offset_size;
241   uint32_t cu_count = 0;
242   uint32_t tu_count, bucket_count, name_count;
243   const gdb_byte *cu_table_reordered, *tu_table_reordered;
244   const uint32_t *bucket_table_reordered, *hash_table_reordered;
245   const gdb_byte *name_table_string_offs_reordered;
246   const gdb_byte *name_table_entry_offs_reordered;
247   const gdb_byte *entry_pool;
248
249   struct index_val
250   {
251     ULONGEST dwarf_tag;
252     struct attr
253     {
254       /* Attribute name DW_IDX_*.  */
255       ULONGEST dw_idx;
256
257       /* Attribute form DW_FORM_*.  */
258       ULONGEST form;
259
260       /* Value if FORM is DW_FORM_implicit_const.  */
261       LONGEST implicit_const;
262     };
263     std::vector<attr> attr_vec;
264   };
265
266   std::unordered_map<ULONGEST, index_val> abbrev_map;
267
268   const char *namei_to_name (uint32_t namei) const;
269
270   /* Implementation of the mapped_index_base virtual interface, for
271      the name_components cache.  */
272
273   const char *symbol_name_at (offset_type idx) const override
274   { return namei_to_name (idx); }
275
276   size_t symbol_name_count () const override
277   { return this->name_count; }
278 };
279
280 /* See dwarf2read.h.  */
281
282 dwarf2_per_objfile *
283 get_dwarf2_per_objfile (struct objfile *objfile)
284 {
285   return ((struct dwarf2_per_objfile *)
286           objfile_data (objfile, dwarf2_objfile_data_key));
287 }
288
289 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
290
291 void
292 set_dwarf2_per_objfile (struct objfile *objfile,
293                         struct dwarf2_per_objfile *dwarf2_per_objfile)
294 {
295   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
296   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
297 }
298
299 /* Default names of the debugging sections.  */
300
301 /* Note that if the debugging section has been compressed, it might
302    have a name like .zdebug_info.  */
303
304 static const struct dwarf2_debug_sections dwarf2_elf_names =
305 {
306   { ".debug_info", ".zdebug_info" },
307   { ".debug_abbrev", ".zdebug_abbrev" },
308   { ".debug_line", ".zdebug_line" },
309   { ".debug_loc", ".zdebug_loc" },
310   { ".debug_loclists", ".zdebug_loclists" },
311   { ".debug_macinfo", ".zdebug_macinfo" },
312   { ".debug_macro", ".zdebug_macro" },
313   { ".debug_str", ".zdebug_str" },
314   { ".debug_line_str", ".zdebug_line_str" },
315   { ".debug_ranges", ".zdebug_ranges" },
316   { ".debug_rnglists", ".zdebug_rnglists" },
317   { ".debug_types", ".zdebug_types" },
318   { ".debug_addr", ".zdebug_addr" },
319   { ".debug_frame", ".zdebug_frame" },
320   { ".eh_frame", NULL },
321   { ".gdb_index", ".zgdb_index" },
322   { ".debug_names", ".zdebug_names" },
323   { ".debug_aranges", ".zdebug_aranges" },
324   23
325 };
326
327 /* List of DWO/DWP sections.  */
328
329 static const struct dwop_section_names
330 {
331   struct dwarf2_section_names abbrev_dwo;
332   struct dwarf2_section_names info_dwo;
333   struct dwarf2_section_names line_dwo;
334   struct dwarf2_section_names loc_dwo;
335   struct dwarf2_section_names loclists_dwo;
336   struct dwarf2_section_names macinfo_dwo;
337   struct dwarf2_section_names macro_dwo;
338   struct dwarf2_section_names str_dwo;
339   struct dwarf2_section_names str_offsets_dwo;
340   struct dwarf2_section_names types_dwo;
341   struct dwarf2_section_names cu_index;
342   struct dwarf2_section_names tu_index;
343 }
344 dwop_section_names =
345 {
346   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
347   { ".debug_info.dwo", ".zdebug_info.dwo" },
348   { ".debug_line.dwo", ".zdebug_line.dwo" },
349   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
350   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
351   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
352   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
353   { ".debug_str.dwo", ".zdebug_str.dwo" },
354   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
355   { ".debug_types.dwo", ".zdebug_types.dwo" },
356   { ".debug_cu_index", ".zdebug_cu_index" },
357   { ".debug_tu_index", ".zdebug_tu_index" },
358 };
359
360 /* local data types */
361
362 /* The data in a compilation unit header, after target2host
363    translation, looks like this.  */
364 struct comp_unit_head
365 {
366   unsigned int length;
367   short version;
368   unsigned char addr_size;
369   unsigned char signed_addr_p;
370   sect_offset abbrev_sect_off;
371
372   /* Size of file offsets; either 4 or 8.  */
373   unsigned int offset_size;
374
375   /* Size of the length field; either 4 or 12.  */
376   unsigned int initial_length_size;
377
378   enum dwarf_unit_type unit_type;
379
380   /* Offset to the first byte of this compilation unit header in the
381      .debug_info section, for resolving relative reference dies.  */
382   sect_offset sect_off;
383
384   /* Offset to first die in this cu from the start of the cu.
385      This will be the first byte following the compilation unit header.  */
386   cu_offset first_die_cu_offset;
387
388   /* 64-bit signature of this type unit - it is valid only for
389      UNIT_TYPE DW_UT_type.  */
390   ULONGEST signature;
391
392   /* For types, offset in the type's DIE of the type defined by this TU.  */
393   cu_offset type_cu_offset_in_tu;
394 };
395
396 /* Type used for delaying computation of method physnames.
397    See comments for compute_delayed_physnames.  */
398 struct delayed_method_info
399 {
400   /* The type to which the method is attached, i.e., its parent class.  */
401   struct type *type;
402
403   /* The index of the method in the type's function fieldlists.  */
404   int fnfield_index;
405
406   /* The index of the method in the fieldlist.  */
407   int index;
408
409   /* The name of the DIE.  */
410   const char *name;
411
412   /*  The DIE associated with this method.  */
413   struct die_info *die;
414 };
415
416 /* Internal state when decoding a particular compilation unit.  */
417 struct dwarf2_cu
418 {
419   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
420   ~dwarf2_cu ();
421
422   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
423
424   /* The header of the compilation unit.  */
425   struct comp_unit_head header {};
426
427   /* Base address of this compilation unit.  */
428   CORE_ADDR base_address = 0;
429
430   /* Non-zero if base_address has been set.  */
431   int base_known = 0;
432
433   /* The language we are debugging.  */
434   enum language language = language_unknown;
435   const struct language_defn *language_defn = nullptr;
436
437   const char *producer = nullptr;
438
439   /* The symtab builder for this CU.  This is only non-NULL when full
440      symbols are being read.  */
441   std::unique_ptr<buildsym_compunit> builder;
442
443   /* The generic symbol table building routines have separate lists for
444      file scope symbols and all all other scopes (local scopes).  So
445      we need to select the right one to pass to add_symbol_to_list().
446      We do it by keeping a pointer to the correct list in list_in_scope.
447
448      FIXME: The original dwarf code just treated the file scope as the
449      first local scope, and all other local scopes as nested local
450      scopes, and worked fine.  Check to see if we really need to
451      distinguish these in buildsym.c.  */
452   struct pending **list_in_scope = nullptr;
453
454   /* Hash table holding all the loaded partial DIEs
455      with partial_die->offset.SECT_OFF as hash.  */
456   htab_t partial_dies = nullptr;
457
458   /* Storage for things with the same lifetime as this read-in compilation
459      unit, including partial DIEs.  */
460   auto_obstack comp_unit_obstack;
461
462   /* When multiple dwarf2_cu structures are living in memory, this field
463      chains them all together, so that they can be released efficiently.
464      We will probably also want a generation counter so that most-recently-used
465      compilation units are cached...  */
466   struct dwarf2_per_cu_data *read_in_chain = nullptr;
467
468   /* Backlink to our per_cu entry.  */
469   struct dwarf2_per_cu_data *per_cu;
470
471   /* How many compilation units ago was this CU last referenced?  */
472   int last_used = 0;
473
474   /* A hash table of DIE cu_offset for following references with
475      die_info->offset.sect_off as hash.  */
476   htab_t die_hash = nullptr;
477
478   /* Full DIEs if read in.  */
479   struct die_info *dies = nullptr;
480
481   /* A set of pointers to dwarf2_per_cu_data objects for compilation
482      units referenced by this one.  Only set during full symbol processing;
483      partial symbol tables do not have dependencies.  */
484   htab_t dependencies = nullptr;
485
486   /* Header data from the line table, during full symbol processing.  */
487   struct line_header *line_header = nullptr;
488   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
489      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
490      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
491      to the line header as long as this DIE is being processed.  See
492      process_die_scope.  */
493   die_info *line_header_die_owner = nullptr;
494
495   /* A list of methods which need to have physnames computed
496      after all type information has been read.  */
497   std::vector<delayed_method_info> method_list;
498
499   /* To be copied to symtab->call_site_htab.  */
500   htab_t call_site_htab = nullptr;
501
502   /* Non-NULL if this CU came from a DWO file.
503      There is an invariant here that is important to remember:
504      Except for attributes copied from the top level DIE in the "main"
505      (or "stub") file in preparation for reading the DWO file
506      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
507      Either there isn't a DWO file (in which case this is NULL and the point
508      is moot), or there is and either we're not going to read it (in which
509      case this is NULL) or there is and we are reading it (in which case this
510      is non-NULL).  */
511   struct dwo_unit *dwo_unit = nullptr;
512
513   /* The DW_AT_addr_base attribute if present, zero otherwise
514      (zero is a valid value though).
515      Note this value comes from the Fission stub CU/TU's DIE.  */
516   ULONGEST addr_base = 0;
517
518   /* The DW_AT_ranges_base attribute if present, zero otherwise
519      (zero is a valid value though).
520      Note this value comes from the Fission stub CU/TU's DIE.
521      Also note that the value is zero in the non-DWO case so this value can
522      be used without needing to know whether DWO files are in use or not.
523      N.B. This does not apply to DW_AT_ranges appearing in
524      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
525      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
526      DW_AT_ranges_base *would* have to be applied, and we'd have to care
527      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
528   ULONGEST ranges_base = 0;
529
530   /* When reading debug info generated by older versions of rustc, we
531      have to rewrite some union types to be struct types with a
532      variant part.  This rewriting must be done after the CU is fully
533      read in, because otherwise at the point of rewriting some struct
534      type might not have been fully processed.  So, we keep a list of
535      all such types here and process them after expansion.  */
536   std::vector<struct type *> rust_unions;
537
538   /* Mark used when releasing cached dies.  */
539   unsigned int mark : 1;
540
541   /* This CU references .debug_loc.  See the symtab->locations_valid field.
542      This test is imperfect as there may exist optimized debug code not using
543      any location list and still facing inlining issues if handled as
544      unoptimized code.  For a future better test see GCC PR other/32998.  */
545   unsigned int has_loclist : 1;
546
547   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
548      if all the producer_is_* fields are valid.  This information is cached
549      because profiling CU expansion showed excessive time spent in
550      producer_is_gxx_lt_4_6.  */
551   unsigned int checked_producer : 1;
552   unsigned int producer_is_gxx_lt_4_6 : 1;
553   unsigned int producer_is_gcc_lt_4_3 : 1;
554   unsigned int producer_is_icc_lt_14 : 1;
555
556   /* When set, the file that we're processing is known to have
557      debugging info for C++ namespaces.  GCC 3.3.x did not produce
558      this information, but later versions do.  */
559
560   unsigned int processing_has_namespace_info : 1;
561
562   struct partial_die_info *find_partial_die (sect_offset sect_off);
563 };
564
565 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
566    This includes type_unit_group and quick_file_names.  */
567
568 struct stmt_list_hash
569 {
570   /* The DWO unit this table is from or NULL if there is none.  */
571   struct dwo_unit *dwo_unit;
572
573   /* Offset in .debug_line or .debug_line.dwo.  */
574   sect_offset line_sect_off;
575 };
576
577 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
578    an object of this type.  */
579
580 struct type_unit_group
581 {
582   /* dwarf2read.c's main "handle" on a TU symtab.
583      To simplify things we create an artificial CU that "includes" all the
584      type units using this stmt_list so that the rest of the code still has
585      a "per_cu" handle on the symtab.
586      This PER_CU is recognized by having no section.  */
587 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
588   struct dwarf2_per_cu_data per_cu;
589
590   /* The TUs that share this DW_AT_stmt_list entry.
591      This is added to while parsing type units to build partial symtabs,
592      and is deleted afterwards and not used again.  */
593   VEC (sig_type_ptr) *tus;
594
595   /* The compunit symtab.
596      Type units in a group needn't all be defined in the same source file,
597      so we create an essentially anonymous symtab as the compunit symtab.  */
598   struct compunit_symtab *compunit_symtab;
599
600   /* The data used to construct the hash key.  */
601   struct stmt_list_hash hash;
602
603   /* The number of symtabs from the line header.
604      The value here must match line_header.num_file_names.  */
605   unsigned int num_symtabs;
606
607   /* The symbol tables for this TU (obtained from the files listed in
608      DW_AT_stmt_list).
609      WARNING: The order of entries here must match the order of entries
610      in the line header.  After the first TU using this type_unit_group, the
611      line header for the subsequent TUs is recreated from this.  This is done
612      because we need to use the same symtabs for each TU using the same
613      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
614      there's no guarantee the line header doesn't have duplicate entries.  */
615   struct symtab **symtabs;
616 };
617
618 /* These sections are what may appear in a (real or virtual) DWO file.  */
619
620 struct dwo_sections
621 {
622   struct dwarf2_section_info abbrev;
623   struct dwarf2_section_info line;
624   struct dwarf2_section_info loc;
625   struct dwarf2_section_info loclists;
626   struct dwarf2_section_info macinfo;
627   struct dwarf2_section_info macro;
628   struct dwarf2_section_info str;
629   struct dwarf2_section_info str_offsets;
630   /* In the case of a virtual DWO file, these two are unused.  */
631   struct dwarf2_section_info info;
632   VEC (dwarf2_section_info_def) *types;
633 };
634
635 /* CUs/TUs in DWP/DWO files.  */
636
637 struct dwo_unit
638 {
639   /* Backlink to the containing struct dwo_file.  */
640   struct dwo_file *dwo_file;
641
642   /* The "id" that distinguishes this CU/TU.
643      .debug_info calls this "dwo_id", .debug_types calls this "signature".
644      Since signatures came first, we stick with it for consistency.  */
645   ULONGEST signature;
646
647   /* The section this CU/TU lives in, in the DWO file.  */
648   struct dwarf2_section_info *section;
649
650   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
651   sect_offset sect_off;
652   unsigned int length;
653
654   /* For types, offset in the type's DIE of the type defined by this TU.  */
655   cu_offset type_offset_in_tu;
656 };
657
658 /* include/dwarf2.h defines the DWP section codes.
659    It defines a max value but it doesn't define a min value, which we
660    use for error checking, so provide one.  */
661
662 enum dwp_v2_section_ids
663 {
664   DW_SECT_MIN = 1
665 };
666
667 /* Data for one DWO file.
668
669    This includes virtual DWO files (a virtual DWO file is a DWO file as it
670    appears in a DWP file).  DWP files don't really have DWO files per se -
671    comdat folding of types "loses" the DWO file they came from, and from
672    a high level view DWP files appear to contain a mass of random types.
673    However, to maintain consistency with the non-DWP case we pretend DWP
674    files contain virtual DWO files, and we assign each TU with one virtual
675    DWO file (generally based on the line and abbrev section offsets -
676    a heuristic that seems to work in practice).  */
677
678 struct dwo_file
679 {
680   /* The DW_AT_GNU_dwo_name attribute.
681      For virtual DWO files the name is constructed from the section offsets
682      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
683      from related CU+TUs.  */
684   const char *dwo_name;
685
686   /* The DW_AT_comp_dir attribute.  */
687   const char *comp_dir;
688
689   /* The bfd, when the file is open.  Otherwise this is NULL.
690      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
691   bfd *dbfd;
692
693   /* The sections that make up this DWO file.
694      Remember that for virtual DWO files in DWP V2, these are virtual
695      sections (for lack of a better name).  */
696   struct dwo_sections sections;
697
698   /* The CUs in the file.
699      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
700      an extension to handle LLVM's Link Time Optimization output (where
701      multiple source files may be compiled into a single object/dwo pair). */
702   htab_t cus;
703
704   /* Table of TUs in the file.
705      Each element is a struct dwo_unit.  */
706   htab_t tus;
707 };
708
709 /* These sections are what may appear in a DWP file.  */
710
711 struct dwp_sections
712 {
713   /* These are used by both DWP version 1 and 2.  */
714   struct dwarf2_section_info str;
715   struct dwarf2_section_info cu_index;
716   struct dwarf2_section_info tu_index;
717
718   /* These are only used by DWP version 2 files.
719      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
720      sections are referenced by section number, and are not recorded here.
721      In DWP version 2 there is at most one copy of all these sections, each
722      section being (effectively) comprised of the concatenation of all of the
723      individual sections that exist in the version 1 format.
724      To keep the code simple we treat each of these concatenated pieces as a
725      section itself (a virtual section?).  */
726   struct dwarf2_section_info abbrev;
727   struct dwarf2_section_info info;
728   struct dwarf2_section_info line;
729   struct dwarf2_section_info loc;
730   struct dwarf2_section_info macinfo;
731   struct dwarf2_section_info macro;
732   struct dwarf2_section_info str_offsets;
733   struct dwarf2_section_info types;
734 };
735
736 /* These sections are what may appear in a virtual DWO file in DWP version 1.
737    A virtual DWO file is a DWO file as it appears in a DWP file.  */
738
739 struct virtual_v1_dwo_sections
740 {
741   struct dwarf2_section_info abbrev;
742   struct dwarf2_section_info line;
743   struct dwarf2_section_info loc;
744   struct dwarf2_section_info macinfo;
745   struct dwarf2_section_info macro;
746   struct dwarf2_section_info str_offsets;
747   /* Each DWP hash table entry records one CU or one TU.
748      That is recorded here, and copied to dwo_unit.section.  */
749   struct dwarf2_section_info info_or_types;
750 };
751
752 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
753    In version 2, the sections of the DWO files are concatenated together
754    and stored in one section of that name.  Thus each ELF section contains
755    several "virtual" sections.  */
756
757 struct virtual_v2_dwo_sections
758 {
759   bfd_size_type abbrev_offset;
760   bfd_size_type abbrev_size;
761
762   bfd_size_type line_offset;
763   bfd_size_type line_size;
764
765   bfd_size_type loc_offset;
766   bfd_size_type loc_size;
767
768   bfd_size_type macinfo_offset;
769   bfd_size_type macinfo_size;
770
771   bfd_size_type macro_offset;
772   bfd_size_type macro_size;
773
774   bfd_size_type str_offsets_offset;
775   bfd_size_type str_offsets_size;
776
777   /* Each DWP hash table entry records one CU or one TU.
778      That is recorded here, and copied to dwo_unit.section.  */
779   bfd_size_type info_or_types_offset;
780   bfd_size_type info_or_types_size;
781 };
782
783 /* Contents of DWP hash tables.  */
784
785 struct dwp_hash_table
786 {
787   uint32_t version, nr_columns;
788   uint32_t nr_units, nr_slots;
789   const gdb_byte *hash_table, *unit_table;
790   union
791   {
792     struct
793     {
794       const gdb_byte *indices;
795     } v1;
796     struct
797     {
798       /* This is indexed by column number and gives the id of the section
799          in that column.  */
800 #define MAX_NR_V2_DWO_SECTIONS \
801   (1 /* .debug_info or .debug_types */ \
802    + 1 /* .debug_abbrev */ \
803    + 1 /* .debug_line */ \
804    + 1 /* .debug_loc */ \
805    + 1 /* .debug_str_offsets */ \
806    + 1 /* .debug_macro or .debug_macinfo */)
807       int section_ids[MAX_NR_V2_DWO_SECTIONS];
808       const gdb_byte *offsets;
809       const gdb_byte *sizes;
810     } v2;
811   } section_pool;
812 };
813
814 /* Data for one DWP file.  */
815
816 struct dwp_file
817 {
818   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
819     : name (name_),
820       dbfd (std::move (abfd))
821   {
822   }
823
824   /* Name of the file.  */
825   const char *name;
826
827   /* File format version.  */
828   int version = 0;
829
830   /* The bfd.  */
831   gdb_bfd_ref_ptr dbfd;
832
833   /* Section info for this file.  */
834   struct dwp_sections sections {};
835
836   /* Table of CUs in the file.  */
837   const struct dwp_hash_table *cus = nullptr;
838
839   /* Table of TUs in the file.  */
840   const struct dwp_hash_table *tus = nullptr;
841
842   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
843   htab_t loaded_cus {};
844   htab_t loaded_tus {};
845
846   /* Table to map ELF section numbers to their sections.
847      This is only needed for the DWP V1 file format.  */
848   unsigned int num_sections = 0;
849   asection **elf_sections = nullptr;
850 };
851
852 /* This represents a '.dwz' file.  */
853
854 struct dwz_file
855 {
856   dwz_file (gdb_bfd_ref_ptr &&bfd)
857     : dwz_bfd (std::move (bfd))
858   {
859   }
860
861   /* A dwz file can only contain a few sections.  */
862   struct dwarf2_section_info abbrev {};
863   struct dwarf2_section_info info {};
864   struct dwarf2_section_info str {};
865   struct dwarf2_section_info line {};
866   struct dwarf2_section_info macro {};
867   struct dwarf2_section_info gdb_index {};
868   struct dwarf2_section_info debug_names {};
869
870   /* The dwz's BFD.  */
871   gdb_bfd_ref_ptr dwz_bfd;
872
873   /* If we loaded the index from an external file, this contains the
874      resources associated to the open file, memory mapping, etc.  */
875   std::unique_ptr<index_cache_resource> index_cache_res;
876 };
877
878 /* Struct used to pass misc. parameters to read_die_and_children, et
879    al.  which are used for both .debug_info and .debug_types dies.
880    All parameters here are unchanging for the life of the call.  This
881    struct exists to abstract away the constant parameters of die reading.  */
882
883 struct die_reader_specs
884 {
885   /* The bfd of die_section.  */
886   bfd* abfd;
887
888   /* The CU of the DIE we are parsing.  */
889   struct dwarf2_cu *cu;
890
891   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
892   struct dwo_file *dwo_file;
893
894   /* The section the die comes from.
895      This is either .debug_info or .debug_types, or the .dwo variants.  */
896   struct dwarf2_section_info *die_section;
897
898   /* die_section->buffer.  */
899   const gdb_byte *buffer;
900
901   /* The end of the buffer.  */
902   const gdb_byte *buffer_end;
903
904   /* The value of the DW_AT_comp_dir attribute.  */
905   const char *comp_dir;
906
907   /* The abbreviation table to use when reading the DIEs.  */
908   struct abbrev_table *abbrev_table;
909 };
910
911 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
912 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
913                                       const gdb_byte *info_ptr,
914                                       struct die_info *comp_unit_die,
915                                       int has_children,
916                                       void *data);
917
918 /* A 1-based directory index.  This is a strong typedef to prevent
919    accidentally using a directory index as a 0-based index into an
920    array/vector.  */
921 enum class dir_index : unsigned int {};
922
923 /* Likewise, a 1-based file name index.  */
924 enum class file_name_index : unsigned int {};
925
926 struct file_entry
927 {
928   file_entry () = default;
929
930   file_entry (const char *name_, dir_index d_index_,
931               unsigned int mod_time_, unsigned int length_)
932     : name (name_),
933       d_index (d_index_),
934       mod_time (mod_time_),
935       length (length_)
936   {}
937
938   /* Return the include directory at D_INDEX stored in LH.  Returns
939      NULL if D_INDEX is out of bounds.  */
940   const char *include_dir (const line_header *lh) const;
941
942   /* The file name.  Note this is an observing pointer.  The memory is
943      owned by debug_line_buffer.  */
944   const char *name {};
945
946   /* The directory index (1-based).  */
947   dir_index d_index {};
948
949   unsigned int mod_time {};
950
951   unsigned int length {};
952
953   /* True if referenced by the Line Number Program.  */
954   bool included_p {};
955
956   /* The associated symbol table, if any.  */
957   struct symtab *symtab {};
958 };
959
960 /* The line number information for a compilation unit (found in the
961    .debug_line section) begins with a "statement program header",
962    which contains the following information.  */
963 struct line_header
964 {
965   line_header ()
966     : offset_in_dwz {}
967   {}
968
969   /* Add an entry to the include directory table.  */
970   void add_include_dir (const char *include_dir);
971
972   /* Add an entry to the file name table.  */
973   void add_file_name (const char *name, dir_index d_index,
974                       unsigned int mod_time, unsigned int length);
975
976   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
977      is out of bounds.  */
978   const char *include_dir_at (dir_index index) const
979   {
980     /* Convert directory index number (1-based) to vector index
981        (0-based).  */
982     size_t vec_index = to_underlying (index) - 1;
983
984     if (vec_index >= include_dirs.size ())
985       return NULL;
986     return include_dirs[vec_index];
987   }
988
989   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
990      is out of bounds.  */
991   file_entry *file_name_at (file_name_index index)
992   {
993     /* Convert file name index number (1-based) to vector index
994        (0-based).  */
995     size_t vec_index = to_underlying (index) - 1;
996
997     if (vec_index >= file_names.size ())
998       return NULL;
999     return &file_names[vec_index];
1000   }
1001
1002   /* Const version of the above.  */
1003   const file_entry *file_name_at (unsigned int index) const
1004   {
1005     if (index >= file_names.size ())
1006       return NULL;
1007     return &file_names[index];
1008   }
1009
1010   /* Offset of line number information in .debug_line section.  */
1011   sect_offset sect_off {};
1012
1013   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1014   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1015
1016   unsigned int total_length {};
1017   unsigned short version {};
1018   unsigned int header_length {};
1019   unsigned char minimum_instruction_length {};
1020   unsigned char maximum_ops_per_instruction {};
1021   unsigned char default_is_stmt {};
1022   int line_base {};
1023   unsigned char line_range {};
1024   unsigned char opcode_base {};
1025
1026   /* standard_opcode_lengths[i] is the number of operands for the
1027      standard opcode whose value is i.  This means that
1028      standard_opcode_lengths[0] is unused, and the last meaningful
1029      element is standard_opcode_lengths[opcode_base - 1].  */
1030   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1031
1032   /* The include_directories table.  Note these are observing
1033      pointers.  The memory is owned by debug_line_buffer.  */
1034   std::vector<const char *> include_dirs;
1035
1036   /* The file_names table.  */
1037   std::vector<file_entry> file_names;
1038
1039   /* The start and end of the statement program following this
1040      header.  These point into dwarf2_per_objfile->line_buffer.  */
1041   const gdb_byte *statement_program_start {}, *statement_program_end {};
1042 };
1043
1044 typedef std::unique_ptr<line_header> line_header_up;
1045
1046 const char *
1047 file_entry::include_dir (const line_header *lh) const
1048 {
1049   return lh->include_dir_at (d_index);
1050 }
1051
1052 /* When we construct a partial symbol table entry we only
1053    need this much information.  */
1054 struct partial_die_info : public allocate_on_obstack
1055   {
1056     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1057
1058     /* Disable assign but still keep copy ctor, which is needed
1059        load_partial_dies.   */
1060     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1061
1062     /* Adjust the partial die before generating a symbol for it.  This
1063        function may set the is_external flag or change the DIE's
1064        name.  */
1065     void fixup (struct dwarf2_cu *cu);
1066
1067     /* Read a minimal amount of information into the minimal die
1068        structure.  */
1069     const gdb_byte *read (const struct die_reader_specs *reader,
1070                           const struct abbrev_info &abbrev,
1071                           const gdb_byte *info_ptr);
1072
1073     /* Offset of this DIE.  */
1074     const sect_offset sect_off;
1075
1076     /* DWARF-2 tag for this DIE.  */
1077     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1078
1079     /* Assorted flags describing the data found in this DIE.  */
1080     const unsigned int has_children : 1;
1081
1082     unsigned int is_external : 1;
1083     unsigned int is_declaration : 1;
1084     unsigned int has_type : 1;
1085     unsigned int has_specification : 1;
1086     unsigned int has_pc_info : 1;
1087     unsigned int may_be_inlined : 1;
1088
1089     /* This DIE has been marked DW_AT_main_subprogram.  */
1090     unsigned int main_subprogram : 1;
1091
1092     /* Flag set if the SCOPE field of this structure has been
1093        computed.  */
1094     unsigned int scope_set : 1;
1095
1096     /* Flag set if the DIE has a byte_size attribute.  */
1097     unsigned int has_byte_size : 1;
1098
1099     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1100     unsigned int has_const_value : 1;
1101
1102     /* Flag set if any of the DIE's children are template arguments.  */
1103     unsigned int has_template_arguments : 1;
1104
1105     /* Flag set if fixup has been called on this die.  */
1106     unsigned int fixup_called : 1;
1107
1108     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1109     unsigned int is_dwz : 1;
1110
1111     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1112     unsigned int spec_is_dwz : 1;
1113
1114     /* The name of this DIE.  Normally the value of DW_AT_name, but
1115        sometimes a default name for unnamed DIEs.  */
1116     const char *name = nullptr;
1117
1118     /* The linkage name, if present.  */
1119     const char *linkage_name = nullptr;
1120
1121     /* The scope to prepend to our children.  This is generally
1122        allocated on the comp_unit_obstack, so will disappear
1123        when this compilation unit leaves the cache.  */
1124     const char *scope = nullptr;
1125
1126     /* Some data associated with the partial DIE.  The tag determines
1127        which field is live.  */
1128     union
1129     {
1130       /* The location description associated with this DIE, if any.  */
1131       struct dwarf_block *locdesc;
1132       /* The offset of an import, for DW_TAG_imported_unit.  */
1133       sect_offset sect_off;
1134     } d {};
1135
1136     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1137     CORE_ADDR lowpc = 0;
1138     CORE_ADDR highpc = 0;
1139
1140     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1141        DW_AT_sibling, if any.  */
1142     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1143        could return DW_AT_sibling values to its caller load_partial_dies.  */
1144     const gdb_byte *sibling = nullptr;
1145
1146     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1147        DW_AT_specification (or DW_AT_abstract_origin or
1148        DW_AT_extension).  */
1149     sect_offset spec_offset {};
1150
1151     /* Pointers to this DIE's parent, first child, and next sibling,
1152        if any.  */
1153     struct partial_die_info *die_parent = nullptr;
1154     struct partial_die_info *die_child = nullptr;
1155     struct partial_die_info *die_sibling = nullptr;
1156
1157     friend struct partial_die_info *
1158     dwarf2_cu::find_partial_die (sect_offset sect_off);
1159
1160   private:
1161     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1162     partial_die_info (sect_offset sect_off)
1163       : partial_die_info (sect_off, DW_TAG_padding, 0)
1164     {
1165     }
1166
1167     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1168                       int has_children_)
1169       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1170     {
1171       is_external = 0;
1172       is_declaration = 0;
1173       has_type = 0;
1174       has_specification = 0;
1175       has_pc_info = 0;
1176       may_be_inlined = 0;
1177       main_subprogram = 0;
1178       scope_set = 0;
1179       has_byte_size = 0;
1180       has_const_value = 0;
1181       has_template_arguments = 0;
1182       fixup_called = 0;
1183       is_dwz = 0;
1184       spec_is_dwz = 0;
1185     }
1186   };
1187
1188 /* This data structure holds the information of an abbrev.  */
1189 struct abbrev_info
1190   {
1191     unsigned int number;        /* number identifying abbrev */
1192     enum dwarf_tag tag;         /* dwarf tag */
1193     unsigned short has_children;                /* boolean */
1194     unsigned short num_attrs;   /* number of attributes */
1195     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1196     struct abbrev_info *next;   /* next in chain */
1197   };
1198
1199 struct attr_abbrev
1200   {
1201     ENUM_BITFIELD(dwarf_attribute) name : 16;
1202     ENUM_BITFIELD(dwarf_form) form : 16;
1203
1204     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1205     LONGEST implicit_const;
1206   };
1207
1208 /* Size of abbrev_table.abbrev_hash_table.  */
1209 #define ABBREV_HASH_SIZE 121
1210
1211 /* Top level data structure to contain an abbreviation table.  */
1212
1213 struct abbrev_table
1214 {
1215   explicit abbrev_table (sect_offset off)
1216     : sect_off (off)
1217   {
1218     m_abbrevs =
1219       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1220     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1221   }
1222
1223   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1224
1225   /* Allocate space for a struct abbrev_info object in
1226      ABBREV_TABLE.  */
1227   struct abbrev_info *alloc_abbrev ();
1228
1229   /* Add an abbreviation to the table.  */
1230   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1231
1232   /* Look up an abbrev in the table.
1233      Returns NULL if the abbrev is not found.  */
1234
1235   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1236
1237
1238   /* Where the abbrev table came from.
1239      This is used as a sanity check when the table is used.  */
1240   const sect_offset sect_off;
1241
1242   /* Storage for the abbrev table.  */
1243   auto_obstack abbrev_obstack;
1244
1245 private:
1246
1247   /* Hash table of abbrevs.
1248      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1249      It could be statically allocated, but the previous code didn't so we
1250      don't either.  */
1251   struct abbrev_info **m_abbrevs;
1252 };
1253
1254 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1255
1256 /* Attributes have a name and a value.  */
1257 struct attribute
1258   {
1259     ENUM_BITFIELD(dwarf_attribute) name : 16;
1260     ENUM_BITFIELD(dwarf_form) form : 15;
1261
1262     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1263        field should be in u.str (existing only for DW_STRING) but it is kept
1264        here for better struct attribute alignment.  */
1265     unsigned int string_is_canonical : 1;
1266
1267     union
1268       {
1269         const char *str;
1270         struct dwarf_block *blk;
1271         ULONGEST unsnd;
1272         LONGEST snd;
1273         CORE_ADDR addr;
1274         ULONGEST signature;
1275       }
1276     u;
1277   };
1278
1279 /* This data structure holds a complete die structure.  */
1280 struct die_info
1281   {
1282     /* DWARF-2 tag for this DIE.  */
1283     ENUM_BITFIELD(dwarf_tag) tag : 16;
1284
1285     /* Number of attributes */
1286     unsigned char num_attrs;
1287
1288     /* True if we're presently building the full type name for the
1289        type derived from this DIE.  */
1290     unsigned char building_fullname : 1;
1291
1292     /* True if this die is in process.  PR 16581.  */
1293     unsigned char in_process : 1;
1294
1295     /* Abbrev number */
1296     unsigned int abbrev;
1297
1298     /* Offset in .debug_info or .debug_types section.  */
1299     sect_offset sect_off;
1300
1301     /* The dies in a compilation unit form an n-ary tree.  PARENT
1302        points to this die's parent; CHILD points to the first child of
1303        this node; and all the children of a given node are chained
1304        together via their SIBLING fields.  */
1305     struct die_info *child;     /* Its first child, if any.  */
1306     struct die_info *sibling;   /* Its next sibling, if any.  */
1307     struct die_info *parent;    /* Its parent, if any.  */
1308
1309     /* An array of attributes, with NUM_ATTRS elements.  There may be
1310        zero, but it's not common and zero-sized arrays are not
1311        sufficiently portable C.  */
1312     struct attribute attrs[1];
1313   };
1314
1315 /* Get at parts of an attribute structure.  */
1316
1317 #define DW_STRING(attr)    ((attr)->u.str)
1318 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1319 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1320 #define DW_BLOCK(attr)     ((attr)->u.blk)
1321 #define DW_SND(attr)       ((attr)->u.snd)
1322 #define DW_ADDR(attr)      ((attr)->u.addr)
1323 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1324
1325 /* Blocks are a bunch of untyped bytes.  */
1326 struct dwarf_block
1327   {
1328     size_t size;
1329
1330     /* Valid only if SIZE is not zero.  */
1331     const gdb_byte *data;
1332   };
1333
1334 #ifndef ATTR_ALLOC_CHUNK
1335 #define ATTR_ALLOC_CHUNK 4
1336 #endif
1337
1338 /* Allocate fields for structs, unions and enums in this size.  */
1339 #ifndef DW_FIELD_ALLOC_CHUNK
1340 #define DW_FIELD_ALLOC_CHUNK 4
1341 #endif
1342
1343 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1344    but this would require a corresponding change in unpack_field_as_long
1345    and friends.  */
1346 static int bits_per_byte = 8;
1347
1348 /* When reading a variant or variant part, we track a bit more
1349    information about the field, and store it in an object of this
1350    type.  */
1351
1352 struct variant_field
1353 {
1354   /* If we see a DW_TAG_variant, then this will be the discriminant
1355      value.  */
1356   ULONGEST discriminant_value;
1357   /* If we see a DW_TAG_variant, then this will be set if this is the
1358      default branch.  */
1359   bool default_branch;
1360   /* While reading a DW_TAG_variant_part, this will be set if this
1361      field is the discriminant.  */
1362   bool is_discriminant;
1363 };
1364
1365 struct nextfield
1366 {
1367   int accessibility = 0;
1368   int virtuality = 0;
1369   /* Extra information to describe a variant or variant part.  */
1370   struct variant_field variant {};
1371   struct field field {};
1372 };
1373
1374 struct fnfieldlist
1375 {
1376   const char *name = nullptr;
1377   std::vector<struct fn_field> fnfields;
1378 };
1379
1380 /* The routines that read and process dies for a C struct or C++ class
1381    pass lists of data member fields and lists of member function fields
1382    in an instance of a field_info structure, as defined below.  */
1383 struct field_info
1384   {
1385     /* List of data member and baseclasses fields.  */
1386     std::vector<struct nextfield> fields;
1387     std::vector<struct nextfield> baseclasses;
1388
1389     /* Number of fields (including baseclasses).  */
1390     int nfields = 0;
1391
1392     /* Set if the accesibility of one of the fields is not public.  */
1393     int non_public_fields = 0;
1394
1395     /* Member function fieldlist array, contains name of possibly overloaded
1396        member function, number of overloaded member functions and a pointer
1397        to the head of the member function field chain.  */
1398     std::vector<struct fnfieldlist> fnfieldlists;
1399
1400     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1401        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1402     std::vector<struct decl_field> typedef_field_list;
1403
1404     /* Nested types defined by this class and the number of elements in this
1405        list.  */
1406     std::vector<struct decl_field> nested_types_list;
1407   };
1408
1409 /* One item on the queue of compilation units to read in full symbols
1410    for.  */
1411 struct dwarf2_queue_item
1412 {
1413   struct dwarf2_per_cu_data *per_cu;
1414   enum language pretend_language;
1415   struct dwarf2_queue_item *next;
1416 };
1417
1418 /* The current queue.  */
1419 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1420
1421 /* Loaded secondary compilation units are kept in memory until they
1422    have not been referenced for the processing of this many
1423    compilation units.  Set this to zero to disable caching.  Cache
1424    sizes of up to at least twenty will improve startup time for
1425    typical inter-CU-reference binaries, at an obvious memory cost.  */
1426 static int dwarf_max_cache_age = 5;
1427 static void
1428 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1429                           struct cmd_list_element *c, const char *value)
1430 {
1431   fprintf_filtered (file, _("The upper bound on the age of cached "
1432                             "DWARF compilation units is %s.\n"),
1433                     value);
1434 }
1435 \f
1436 /* local function prototypes */
1437
1438 static const char *get_section_name (const struct dwarf2_section_info *);
1439
1440 static const char *get_section_file_name (const struct dwarf2_section_info *);
1441
1442 static void dwarf2_find_base_address (struct die_info *die,
1443                                       struct dwarf2_cu *cu);
1444
1445 static struct partial_symtab *create_partial_symtab
1446   (struct dwarf2_per_cu_data *per_cu, const char *name);
1447
1448 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1449                                         const gdb_byte *info_ptr,
1450                                         struct die_info *type_unit_die,
1451                                         int has_children, void *data);
1452
1453 static void dwarf2_build_psymtabs_hard
1454   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1455
1456 static void scan_partial_symbols (struct partial_die_info *,
1457                                   CORE_ADDR *, CORE_ADDR *,
1458                                   int, struct dwarf2_cu *);
1459
1460 static void add_partial_symbol (struct partial_die_info *,
1461                                 struct dwarf2_cu *);
1462
1463 static void add_partial_namespace (struct partial_die_info *pdi,
1464                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1465                                    int set_addrmap, struct dwarf2_cu *cu);
1466
1467 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1468                                 CORE_ADDR *highpc, int set_addrmap,
1469                                 struct dwarf2_cu *cu);
1470
1471 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1472                                      struct dwarf2_cu *cu);
1473
1474 static void add_partial_subprogram (struct partial_die_info *pdi,
1475                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1476                                     int need_pc, struct dwarf2_cu *cu);
1477
1478 static void dwarf2_read_symtab (struct partial_symtab *,
1479                                 struct objfile *);
1480
1481 static void psymtab_to_symtab_1 (struct partial_symtab *);
1482
1483 static abbrev_table_up abbrev_table_read_table
1484   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1485    sect_offset);
1486
1487 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1488
1489 static struct partial_die_info *load_partial_dies
1490   (const struct die_reader_specs *, const gdb_byte *, int);
1491
1492 static struct partial_die_info *find_partial_die (sect_offset, int,
1493                                                   struct dwarf2_cu *);
1494
1495 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1496                                        struct attribute *, struct attr_abbrev *,
1497                                        const gdb_byte *);
1498
1499 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1500
1501 static int read_1_signed_byte (bfd *, const gdb_byte *);
1502
1503 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1504
1505 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1506
1507 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1508
1509 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1510                                unsigned int *);
1511
1512 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1513
1514 static LONGEST read_checked_initial_length_and_offset
1515   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1516    unsigned int *, unsigned int *);
1517
1518 static LONGEST read_offset (bfd *, const gdb_byte *,
1519                             const struct comp_unit_head *,
1520                             unsigned int *);
1521
1522 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1523
1524 static sect_offset read_abbrev_offset
1525   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1526    struct dwarf2_section_info *, sect_offset);
1527
1528 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1529
1530 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1531
1532 static const char *read_indirect_string
1533   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1534    const struct comp_unit_head *, unsigned int *);
1535
1536 static const char *read_indirect_line_string
1537   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1538    const struct comp_unit_head *, unsigned int *);
1539
1540 static const char *read_indirect_string_at_offset
1541   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1542    LONGEST str_offset);
1543
1544 static const char *read_indirect_string_from_dwz
1545   (struct objfile *objfile, struct dwz_file *, LONGEST);
1546
1547 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1548
1549 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1550                                               const gdb_byte *,
1551                                               unsigned int *);
1552
1553 static const char *read_str_index (const struct die_reader_specs *reader,
1554                                    ULONGEST str_index);
1555
1556 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1557
1558 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1559                                       struct dwarf2_cu *);
1560
1561 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1562                                                 unsigned int);
1563
1564 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1565                                        struct dwarf2_cu *cu);
1566
1567 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1568                                struct dwarf2_cu *cu);
1569
1570 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1571
1572 static struct die_info *die_specification (struct die_info *die,
1573                                            struct dwarf2_cu **);
1574
1575 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1576                                                 struct dwarf2_cu *cu);
1577
1578 static void dwarf_decode_lines (struct line_header *, const char *,
1579                                 struct dwarf2_cu *, struct partial_symtab *,
1580                                 CORE_ADDR, int decode_mapping);
1581
1582 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1583                                   const char *);
1584
1585 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1586                                                     const char *, const char *,
1587                                                     CORE_ADDR);
1588
1589 static struct symbol *new_symbol (struct die_info *, struct type *,
1590                                   struct dwarf2_cu *, struct symbol * = NULL);
1591
1592 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1593                                 struct dwarf2_cu *);
1594
1595 static void dwarf2_const_value_attr (const struct attribute *attr,
1596                                      struct type *type,
1597                                      const char *name,
1598                                      struct obstack *obstack,
1599                                      struct dwarf2_cu *cu, LONGEST *value,
1600                                      const gdb_byte **bytes,
1601                                      struct dwarf2_locexpr_baton **baton);
1602
1603 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1604
1605 static int need_gnat_info (struct dwarf2_cu *);
1606
1607 static struct type *die_descriptive_type (struct die_info *,
1608                                           struct dwarf2_cu *);
1609
1610 static void set_descriptive_type (struct type *, struct die_info *,
1611                                   struct dwarf2_cu *);
1612
1613 static struct type *die_containing_type (struct die_info *,
1614                                          struct dwarf2_cu *);
1615
1616 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1617                                      struct dwarf2_cu *);
1618
1619 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1620
1621 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1622
1623 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1624
1625 static char *typename_concat (struct obstack *obs, const char *prefix,
1626                               const char *suffix, int physname,
1627                               struct dwarf2_cu *cu);
1628
1629 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1630
1631 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1632
1633 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1634
1635 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1636
1637 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1638
1639 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1640
1641 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1642                                struct dwarf2_cu *, struct partial_symtab *);
1643
1644 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1645    values.  Keep the items ordered with increasing constraints compliance.  */
1646 enum pc_bounds_kind
1647 {
1648   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1649   PC_BOUNDS_NOT_PRESENT,
1650
1651   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1652      were present but they do not form a valid range of PC addresses.  */
1653   PC_BOUNDS_INVALID,
1654
1655   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1656   PC_BOUNDS_RANGES,
1657
1658   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1659   PC_BOUNDS_HIGH_LOW,
1660 };
1661
1662 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1663                                                  CORE_ADDR *, CORE_ADDR *,
1664                                                  struct dwarf2_cu *,
1665                                                  struct partial_symtab *);
1666
1667 static void get_scope_pc_bounds (struct die_info *,
1668                                  CORE_ADDR *, CORE_ADDR *,
1669                                  struct dwarf2_cu *);
1670
1671 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1672                                         CORE_ADDR, struct dwarf2_cu *);
1673
1674 static void dwarf2_add_field (struct field_info *, struct die_info *,
1675                               struct dwarf2_cu *);
1676
1677 static void dwarf2_attach_fields_to_type (struct field_info *,
1678                                           struct type *, struct dwarf2_cu *);
1679
1680 static void dwarf2_add_member_fn (struct field_info *,
1681                                   struct die_info *, struct type *,
1682                                   struct dwarf2_cu *);
1683
1684 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1685                                              struct type *,
1686                                              struct dwarf2_cu *);
1687
1688 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1689
1690 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1691
1692 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1693
1694 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1695
1696 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1697
1698 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1699
1700 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1701
1702 static struct type *read_module_type (struct die_info *die,
1703                                       struct dwarf2_cu *cu);
1704
1705 static const char *namespace_name (struct die_info *die,
1706                                    int *is_anonymous, struct dwarf2_cu *);
1707
1708 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1709
1710 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1711
1712 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1713                                                        struct dwarf2_cu *);
1714
1715 static struct die_info *read_die_and_siblings_1
1716   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1717    struct die_info *);
1718
1719 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1720                                                const gdb_byte *info_ptr,
1721                                                const gdb_byte **new_info_ptr,
1722                                                struct die_info *parent);
1723
1724 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1725                                         struct die_info **, const gdb_byte *,
1726                                         int *, int);
1727
1728 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1729                                       struct die_info **, const gdb_byte *,
1730                                       int *);
1731
1732 static void process_die (struct die_info *, struct dwarf2_cu *);
1733
1734 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1735                                              struct obstack *);
1736
1737 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1738
1739 static const char *dwarf2_full_name (const char *name,
1740                                      struct die_info *die,
1741                                      struct dwarf2_cu *cu);
1742
1743 static const char *dwarf2_physname (const char *name, struct die_info *die,
1744                                     struct dwarf2_cu *cu);
1745
1746 static struct die_info *dwarf2_extension (struct die_info *die,
1747                                           struct dwarf2_cu **);
1748
1749 static const char *dwarf_tag_name (unsigned int);
1750
1751 static const char *dwarf_attr_name (unsigned int);
1752
1753 static const char *dwarf_form_name (unsigned int);
1754
1755 static const char *dwarf_bool_name (unsigned int);
1756
1757 static const char *dwarf_type_encoding_name (unsigned int);
1758
1759 static struct die_info *sibling_die (struct die_info *);
1760
1761 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1762
1763 static void dump_die_for_error (struct die_info *);
1764
1765 static void dump_die_1 (struct ui_file *, int level, int max_level,
1766                         struct die_info *);
1767
1768 /*static*/ void dump_die (struct die_info *, int max_level);
1769
1770 static void store_in_ref_table (struct die_info *,
1771                                 struct dwarf2_cu *);
1772
1773 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1774
1775 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1776
1777 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1778                                                const struct attribute *,
1779                                                struct dwarf2_cu **);
1780
1781 static struct die_info *follow_die_ref (struct die_info *,
1782                                         const struct attribute *,
1783                                         struct dwarf2_cu **);
1784
1785 static struct die_info *follow_die_sig (struct die_info *,
1786                                         const struct attribute *,
1787                                         struct dwarf2_cu **);
1788
1789 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1790                                          struct dwarf2_cu *);
1791
1792 static struct type *get_DW_AT_signature_type (struct die_info *,
1793                                               const struct attribute *,
1794                                               struct dwarf2_cu *);
1795
1796 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1797
1798 static void read_signatured_type (struct signatured_type *);
1799
1800 static int attr_to_dynamic_prop (const struct attribute *attr,
1801                                  struct die_info *die, struct dwarf2_cu *cu,
1802                                  struct dynamic_prop *prop);
1803
1804 /* memory allocation interface */
1805
1806 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1807
1808 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1809
1810 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1811
1812 static int attr_form_is_block (const struct attribute *);
1813
1814 static int attr_form_is_section_offset (const struct attribute *);
1815
1816 static int attr_form_is_constant (const struct attribute *);
1817
1818 static int attr_form_is_ref (const struct attribute *);
1819
1820 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1821                                    struct dwarf2_loclist_baton *baton,
1822                                    const struct attribute *attr);
1823
1824 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1825                                          struct symbol *sym,
1826                                          struct dwarf2_cu *cu,
1827                                          int is_block);
1828
1829 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1830                                      const gdb_byte *info_ptr,
1831                                      struct abbrev_info *abbrev);
1832
1833 static hashval_t partial_die_hash (const void *item);
1834
1835 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1836
1837 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1838   (sect_offset sect_off, unsigned int offset_in_dwz,
1839    struct dwarf2_per_objfile *dwarf2_per_objfile);
1840
1841 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1842                                    struct die_info *comp_unit_die,
1843                                    enum language pretend_language);
1844
1845 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1846
1847 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1848
1849 static struct type *set_die_type (struct die_info *, struct type *,
1850                                   struct dwarf2_cu *);
1851
1852 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1853
1854 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1855
1856 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1857                                  enum language);
1858
1859 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1860                                     enum language);
1861
1862 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1863                                     enum language);
1864
1865 static void dwarf2_add_dependence (struct dwarf2_cu *,
1866                                    struct dwarf2_per_cu_data *);
1867
1868 static void dwarf2_mark (struct dwarf2_cu *);
1869
1870 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1871
1872 static struct type *get_die_type_at_offset (sect_offset,
1873                                             struct dwarf2_per_cu_data *);
1874
1875 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1876
1877 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1878                              enum language pretend_language);
1879
1880 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1881
1882 /* Class, the destructor of which frees all allocated queue entries.  This
1883    will only have work to do if an error was thrown while processing the
1884    dwarf.  If no error was thrown then the queue entries should have all
1885    been processed, and freed, as we went along.  */
1886
1887 class dwarf2_queue_guard
1888 {
1889 public:
1890   dwarf2_queue_guard () = default;
1891
1892   /* Free any entries remaining on the queue.  There should only be
1893      entries left if we hit an error while processing the dwarf.  */
1894   ~dwarf2_queue_guard ()
1895   {
1896     struct dwarf2_queue_item *item, *last;
1897
1898     item = dwarf2_queue;
1899     while (item)
1900       {
1901         /* Anything still marked queued is likely to be in an
1902            inconsistent state, so discard it.  */
1903         if (item->per_cu->queued)
1904           {
1905             if (item->per_cu->cu != NULL)
1906               free_one_cached_comp_unit (item->per_cu);
1907             item->per_cu->queued = 0;
1908           }
1909
1910         last = item;
1911         item = item->next;
1912         xfree (last);
1913       }
1914
1915     dwarf2_queue = dwarf2_queue_tail = NULL;
1916   }
1917 };
1918
1919 /* The return type of find_file_and_directory.  Note, the enclosed
1920    string pointers are only valid while this object is valid.  */
1921
1922 struct file_and_directory
1923 {
1924   /* The filename.  This is never NULL.  */
1925   const char *name;
1926
1927   /* The compilation directory.  NULL if not known.  If we needed to
1928      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1929      points directly to the DW_AT_comp_dir string attribute owned by
1930      the obstack that owns the DIE.  */
1931   const char *comp_dir;
1932
1933   /* If we needed to build a new string for comp_dir, this is what
1934      owns the storage.  */
1935   std::string comp_dir_storage;
1936 };
1937
1938 static file_and_directory find_file_and_directory (struct die_info *die,
1939                                                    struct dwarf2_cu *cu);
1940
1941 static char *file_full_name (int file, struct line_header *lh,
1942                              const char *comp_dir);
1943
1944 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1945 enum class rcuh_kind { COMPILE, TYPE };
1946
1947 static const gdb_byte *read_and_check_comp_unit_head
1948   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1949    struct comp_unit_head *header,
1950    struct dwarf2_section_info *section,
1951    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1952    rcuh_kind section_kind);
1953
1954 static void init_cutu_and_read_dies
1955   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1956    int use_existing_cu, int keep, bool skip_partial,
1957    die_reader_func_ftype *die_reader_func, void *data);
1958
1959 static void init_cutu_and_read_dies_simple
1960   (struct dwarf2_per_cu_data *this_cu,
1961    die_reader_func_ftype *die_reader_func, void *data);
1962
1963 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1964
1965 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1966
1967 static struct dwo_unit *lookup_dwo_unit_in_dwp
1968   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1969    struct dwp_file *dwp_file, const char *comp_dir,
1970    ULONGEST signature, int is_debug_types);
1971
1972 static struct dwp_file *get_dwp_file
1973   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1974
1975 static struct dwo_unit *lookup_dwo_comp_unit
1976   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1977
1978 static struct dwo_unit *lookup_dwo_type_unit
1979   (struct signatured_type *, const char *, const char *);
1980
1981 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1982
1983 static void free_dwo_file (struct dwo_file *);
1984
1985 /* A unique_ptr helper to free a dwo_file.  */
1986
1987 struct dwo_file_deleter
1988 {
1989   void operator() (struct dwo_file *df) const
1990   {
1991     free_dwo_file (df);
1992   }
1993 };
1994
1995 /* A unique pointer to a dwo_file.  */
1996
1997 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1998
1999 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2000
2001 static void check_producer (struct dwarf2_cu *cu);
2002
2003 static void free_line_header_voidp (void *arg);
2004 \f
2005 /* Various complaints about symbol reading that don't abort the process.  */
2006
2007 static void
2008 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2009 {
2010   complaint (_("statement list doesn't fit in .debug_line section"));
2011 }
2012
2013 static void
2014 dwarf2_debug_line_missing_file_complaint (void)
2015 {
2016   complaint (_(".debug_line section has line data without a file"));
2017 }
2018
2019 static void
2020 dwarf2_debug_line_missing_end_sequence_complaint (void)
2021 {
2022   complaint (_(".debug_line section has line "
2023                "program sequence without an end"));
2024 }
2025
2026 static void
2027 dwarf2_complex_location_expr_complaint (void)
2028 {
2029   complaint (_("location expression too complex"));
2030 }
2031
2032 static void
2033 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2034                                               int arg3)
2035 {
2036   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2037              arg1, arg2, arg3);
2038 }
2039
2040 static void
2041 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2042 {
2043   complaint (_("debug info runs off end of %s section"
2044                " [in module %s]"),
2045              get_section_name (section),
2046              get_section_file_name (section));
2047 }
2048
2049 static void
2050 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2051 {
2052   complaint (_("macro debug info contains a "
2053                "malformed macro definition:\n`%s'"),
2054              arg1);
2055 }
2056
2057 static void
2058 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2059 {
2060   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2061              arg1, arg2);
2062 }
2063
2064 /* Hash function for line_header_hash.  */
2065
2066 static hashval_t
2067 line_header_hash (const struct line_header *ofs)
2068 {
2069   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2070 }
2071
2072 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2073
2074 static hashval_t
2075 line_header_hash_voidp (const void *item)
2076 {
2077   const struct line_header *ofs = (const struct line_header *) item;
2078
2079   return line_header_hash (ofs);
2080 }
2081
2082 /* Equality function for line_header_hash.  */
2083
2084 static int
2085 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2086 {
2087   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2088   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2089
2090   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2091           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2092 }
2093
2094 \f
2095
2096 /* Read the given attribute value as an address, taking the attribute's
2097    form into account.  */
2098
2099 static CORE_ADDR
2100 attr_value_as_address (struct attribute *attr)
2101 {
2102   CORE_ADDR addr;
2103
2104   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2105     {
2106       /* Aside from a few clearly defined exceptions, attributes that
2107          contain an address must always be in DW_FORM_addr form.
2108          Unfortunately, some compilers happen to be violating this
2109          requirement by encoding addresses using other forms, such
2110          as DW_FORM_data4 for example.  For those broken compilers,
2111          we try to do our best, without any guarantee of success,
2112          to interpret the address correctly.  It would also be nice
2113          to generate a complaint, but that would require us to maintain
2114          a list of legitimate cases where a non-address form is allowed,
2115          as well as update callers to pass in at least the CU's DWARF
2116          version.  This is more overhead than what we're willing to
2117          expand for a pretty rare case.  */
2118       addr = DW_UNSND (attr);
2119     }
2120   else
2121     addr = DW_ADDR (attr);
2122
2123   return addr;
2124 }
2125
2126 /* See declaration.  */
2127
2128 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2129                                         const dwarf2_debug_sections *names)
2130   : objfile (objfile_)
2131 {
2132   if (names == NULL)
2133     names = &dwarf2_elf_names;
2134
2135   bfd *obfd = objfile->obfd;
2136
2137   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2138     locate_sections (obfd, sec, *names);
2139 }
2140
2141 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2142
2143 dwarf2_per_objfile::~dwarf2_per_objfile ()
2144 {
2145   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2146   free_cached_comp_units ();
2147
2148   if (quick_file_names_table)
2149     htab_delete (quick_file_names_table);
2150
2151   if (line_header_hash)
2152     htab_delete (line_header_hash);
2153
2154   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2155     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2156
2157   for (signatured_type *sig_type : all_type_units)
2158     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2159
2160   VEC_free (dwarf2_section_info_def, types);
2161
2162   if (dwo_files != NULL)
2163     free_dwo_files (dwo_files, objfile);
2164
2165   /* Everything else should be on the objfile obstack.  */
2166 }
2167
2168 /* See declaration.  */
2169
2170 void
2171 dwarf2_per_objfile::free_cached_comp_units ()
2172 {
2173   dwarf2_per_cu_data *per_cu = read_in_chain;
2174   dwarf2_per_cu_data **last_chain = &read_in_chain;
2175   while (per_cu != NULL)
2176     {
2177       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2178
2179       delete per_cu->cu;
2180       *last_chain = next_cu;
2181       per_cu = next_cu;
2182     }
2183 }
2184
2185 /* A helper class that calls free_cached_comp_units on
2186    destruction.  */
2187
2188 class free_cached_comp_units
2189 {
2190 public:
2191
2192   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2193     : m_per_objfile (per_objfile)
2194   {
2195   }
2196
2197   ~free_cached_comp_units ()
2198   {
2199     m_per_objfile->free_cached_comp_units ();
2200   }
2201
2202   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2203
2204 private:
2205
2206   dwarf2_per_objfile *m_per_objfile;
2207 };
2208
2209 /* Try to locate the sections we need for DWARF 2 debugging
2210    information and return true if we have enough to do something.
2211    NAMES points to the dwarf2 section names, or is NULL if the standard
2212    ELF names are used.  */
2213
2214 int
2215 dwarf2_has_info (struct objfile *objfile,
2216                  const struct dwarf2_debug_sections *names)
2217 {
2218   if (objfile->flags & OBJF_READNEVER)
2219     return 0;
2220
2221   struct dwarf2_per_objfile *dwarf2_per_objfile
2222     = get_dwarf2_per_objfile (objfile);
2223
2224   if (dwarf2_per_objfile == NULL)
2225     {
2226       /* Initialize per-objfile state.  */
2227       dwarf2_per_objfile
2228         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2229                                                                      names);
2230       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2231     }
2232   return (!dwarf2_per_objfile->info.is_virtual
2233           && dwarf2_per_objfile->info.s.section != NULL
2234           && !dwarf2_per_objfile->abbrev.is_virtual
2235           && dwarf2_per_objfile->abbrev.s.section != NULL);
2236 }
2237
2238 /* Return the containing section of virtual section SECTION.  */
2239
2240 static struct dwarf2_section_info *
2241 get_containing_section (const struct dwarf2_section_info *section)
2242 {
2243   gdb_assert (section->is_virtual);
2244   return section->s.containing_section;
2245 }
2246
2247 /* Return the bfd owner of SECTION.  */
2248
2249 static struct bfd *
2250 get_section_bfd_owner (const struct dwarf2_section_info *section)
2251 {
2252   if (section->is_virtual)
2253     {
2254       section = get_containing_section (section);
2255       gdb_assert (!section->is_virtual);
2256     }
2257   return section->s.section->owner;
2258 }
2259
2260 /* Return the bfd section of SECTION.
2261    Returns NULL if the section is not present.  */
2262
2263 static asection *
2264 get_section_bfd_section (const struct dwarf2_section_info *section)
2265 {
2266   if (section->is_virtual)
2267     {
2268       section = get_containing_section (section);
2269       gdb_assert (!section->is_virtual);
2270     }
2271   return section->s.section;
2272 }
2273
2274 /* Return the name of SECTION.  */
2275
2276 static const char *
2277 get_section_name (const struct dwarf2_section_info *section)
2278 {
2279   asection *sectp = get_section_bfd_section (section);
2280
2281   gdb_assert (sectp != NULL);
2282   return bfd_section_name (get_section_bfd_owner (section), sectp);
2283 }
2284
2285 /* Return the name of the file SECTION is in.  */
2286
2287 static const char *
2288 get_section_file_name (const struct dwarf2_section_info *section)
2289 {
2290   bfd *abfd = get_section_bfd_owner (section);
2291
2292   return bfd_get_filename (abfd);
2293 }
2294
2295 /* Return the id of SECTION.
2296    Returns 0 if SECTION doesn't exist.  */
2297
2298 static int
2299 get_section_id (const struct dwarf2_section_info *section)
2300 {
2301   asection *sectp = get_section_bfd_section (section);
2302
2303   if (sectp == NULL)
2304     return 0;
2305   return sectp->id;
2306 }
2307
2308 /* Return the flags of SECTION.
2309    SECTION (or containing section if this is a virtual section) must exist.  */
2310
2311 static int
2312 get_section_flags (const struct dwarf2_section_info *section)
2313 {
2314   asection *sectp = get_section_bfd_section (section);
2315
2316   gdb_assert (sectp != NULL);
2317   return bfd_get_section_flags (sectp->owner, sectp);
2318 }
2319
2320 /* When loading sections, we look either for uncompressed section or for
2321    compressed section names.  */
2322
2323 static int
2324 section_is_p (const char *section_name,
2325               const struct dwarf2_section_names *names)
2326 {
2327   if (names->normal != NULL
2328       && strcmp (section_name, names->normal) == 0)
2329     return 1;
2330   if (names->compressed != NULL
2331       && strcmp (section_name, names->compressed) == 0)
2332     return 1;
2333   return 0;
2334 }
2335
2336 /* See declaration.  */
2337
2338 void
2339 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2340                                      const dwarf2_debug_sections &names)
2341 {
2342   flagword aflag = bfd_get_section_flags (abfd, sectp);
2343
2344   if ((aflag & SEC_HAS_CONTENTS) == 0)
2345     {
2346     }
2347   else if (section_is_p (sectp->name, &names.info))
2348     {
2349       this->info.s.section = sectp;
2350       this->info.size = bfd_get_section_size (sectp);
2351     }
2352   else if (section_is_p (sectp->name, &names.abbrev))
2353     {
2354       this->abbrev.s.section = sectp;
2355       this->abbrev.size = bfd_get_section_size (sectp);
2356     }
2357   else if (section_is_p (sectp->name, &names.line))
2358     {
2359       this->line.s.section = sectp;
2360       this->line.size = bfd_get_section_size (sectp);
2361     }
2362   else if (section_is_p (sectp->name, &names.loc))
2363     {
2364       this->loc.s.section = sectp;
2365       this->loc.size = bfd_get_section_size (sectp);
2366     }
2367   else if (section_is_p (sectp->name, &names.loclists))
2368     {
2369       this->loclists.s.section = sectp;
2370       this->loclists.size = bfd_get_section_size (sectp);
2371     }
2372   else if (section_is_p (sectp->name, &names.macinfo))
2373     {
2374       this->macinfo.s.section = sectp;
2375       this->macinfo.size = bfd_get_section_size (sectp);
2376     }
2377   else if (section_is_p (sectp->name, &names.macro))
2378     {
2379       this->macro.s.section = sectp;
2380       this->macro.size = bfd_get_section_size (sectp);
2381     }
2382   else if (section_is_p (sectp->name, &names.str))
2383     {
2384       this->str.s.section = sectp;
2385       this->str.size = bfd_get_section_size (sectp);
2386     }
2387   else if (section_is_p (sectp->name, &names.line_str))
2388     {
2389       this->line_str.s.section = sectp;
2390       this->line_str.size = bfd_get_section_size (sectp);
2391     }
2392   else if (section_is_p (sectp->name, &names.addr))
2393     {
2394       this->addr.s.section = sectp;
2395       this->addr.size = bfd_get_section_size (sectp);
2396     }
2397   else if (section_is_p (sectp->name, &names.frame))
2398     {
2399       this->frame.s.section = sectp;
2400       this->frame.size = bfd_get_section_size (sectp);
2401     }
2402   else if (section_is_p (sectp->name, &names.eh_frame))
2403     {
2404       this->eh_frame.s.section = sectp;
2405       this->eh_frame.size = bfd_get_section_size (sectp);
2406     }
2407   else if (section_is_p (sectp->name, &names.ranges))
2408     {
2409       this->ranges.s.section = sectp;
2410       this->ranges.size = bfd_get_section_size (sectp);
2411     }
2412   else if (section_is_p (sectp->name, &names.rnglists))
2413     {
2414       this->rnglists.s.section = sectp;
2415       this->rnglists.size = bfd_get_section_size (sectp);
2416     }
2417   else if (section_is_p (sectp->name, &names.types))
2418     {
2419       struct dwarf2_section_info type_section;
2420
2421       memset (&type_section, 0, sizeof (type_section));
2422       type_section.s.section = sectp;
2423       type_section.size = bfd_get_section_size (sectp);
2424
2425       VEC_safe_push (dwarf2_section_info_def, this->types,
2426                      &type_section);
2427     }
2428   else if (section_is_p (sectp->name, &names.gdb_index))
2429     {
2430       this->gdb_index.s.section = sectp;
2431       this->gdb_index.size = bfd_get_section_size (sectp);
2432     }
2433   else if (section_is_p (sectp->name, &names.debug_names))
2434     {
2435       this->debug_names.s.section = sectp;
2436       this->debug_names.size = bfd_get_section_size (sectp);
2437     }
2438   else if (section_is_p (sectp->name, &names.debug_aranges))
2439     {
2440       this->debug_aranges.s.section = sectp;
2441       this->debug_aranges.size = bfd_get_section_size (sectp);
2442     }
2443
2444   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2445       && bfd_section_vma (abfd, sectp) == 0)
2446     this->has_section_at_zero = true;
2447 }
2448
2449 /* A helper function that decides whether a section is empty,
2450    or not present.  */
2451
2452 static int
2453 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2454 {
2455   if (section->is_virtual)
2456     return section->size == 0;
2457   return section->s.section == NULL || section->size == 0;
2458 }
2459
2460 /* See dwarf2read.h.  */
2461
2462 void
2463 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2464 {
2465   asection *sectp;
2466   bfd *abfd;
2467   gdb_byte *buf, *retbuf;
2468
2469   if (info->readin)
2470     return;
2471   info->buffer = NULL;
2472   info->readin = 1;
2473
2474   if (dwarf2_section_empty_p (info))
2475     return;
2476
2477   sectp = get_section_bfd_section (info);
2478
2479   /* If this is a virtual section we need to read in the real one first.  */
2480   if (info->is_virtual)
2481     {
2482       struct dwarf2_section_info *containing_section =
2483         get_containing_section (info);
2484
2485       gdb_assert (sectp != NULL);
2486       if ((sectp->flags & SEC_RELOC) != 0)
2487         {
2488           error (_("Dwarf Error: DWP format V2 with relocations is not"
2489                    " supported in section %s [in module %s]"),
2490                  get_section_name (info), get_section_file_name (info));
2491         }
2492       dwarf2_read_section (objfile, containing_section);
2493       /* Other code should have already caught virtual sections that don't
2494          fit.  */
2495       gdb_assert (info->virtual_offset + info->size
2496                   <= containing_section->size);
2497       /* If the real section is empty or there was a problem reading the
2498          section we shouldn't get here.  */
2499       gdb_assert (containing_section->buffer != NULL);
2500       info->buffer = containing_section->buffer + info->virtual_offset;
2501       return;
2502     }
2503
2504   /* If the section has relocations, we must read it ourselves.
2505      Otherwise we attach it to the BFD.  */
2506   if ((sectp->flags & SEC_RELOC) == 0)
2507     {
2508       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2509       return;
2510     }
2511
2512   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2513   info->buffer = buf;
2514
2515   /* When debugging .o files, we may need to apply relocations; see
2516      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2517      We never compress sections in .o files, so we only need to
2518      try this when the section is not compressed.  */
2519   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2520   if (retbuf != NULL)
2521     {
2522       info->buffer = retbuf;
2523       return;
2524     }
2525
2526   abfd = get_section_bfd_owner (info);
2527   gdb_assert (abfd != NULL);
2528
2529   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2530       || bfd_bread (buf, info->size, abfd) != info->size)
2531     {
2532       error (_("Dwarf Error: Can't read DWARF data"
2533                " in section %s [in module %s]"),
2534              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2535     }
2536 }
2537
2538 /* A helper function that returns the size of a section in a safe way.
2539    If you are positive that the section has been read before using the
2540    size, then it is safe to refer to the dwarf2_section_info object's
2541    "size" field directly.  In other cases, you must call this
2542    function, because for compressed sections the size field is not set
2543    correctly until the section has been read.  */
2544
2545 static bfd_size_type
2546 dwarf2_section_size (struct objfile *objfile,
2547                      struct dwarf2_section_info *info)
2548 {
2549   if (!info->readin)
2550     dwarf2_read_section (objfile, info);
2551   return info->size;
2552 }
2553
2554 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2555    SECTION_NAME.  */
2556
2557 void
2558 dwarf2_get_section_info (struct objfile *objfile,
2559                          enum dwarf2_section_enum sect,
2560                          asection **sectp, const gdb_byte **bufp,
2561                          bfd_size_type *sizep)
2562 {
2563   struct dwarf2_per_objfile *data
2564     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2565                                                   dwarf2_objfile_data_key);
2566   struct dwarf2_section_info *info;
2567
2568   /* We may see an objfile without any DWARF, in which case we just
2569      return nothing.  */
2570   if (data == NULL)
2571     {
2572       *sectp = NULL;
2573       *bufp = NULL;
2574       *sizep = 0;
2575       return;
2576     }
2577   switch (sect)
2578     {
2579     case DWARF2_DEBUG_FRAME:
2580       info = &data->frame;
2581       break;
2582     case DWARF2_EH_FRAME:
2583       info = &data->eh_frame;
2584       break;
2585     default:
2586       gdb_assert_not_reached ("unexpected section");
2587     }
2588
2589   dwarf2_read_section (objfile, info);
2590
2591   *sectp = get_section_bfd_section (info);
2592   *bufp = info->buffer;
2593   *sizep = info->size;
2594 }
2595
2596 /* A helper function to find the sections for a .dwz file.  */
2597
2598 static void
2599 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2600 {
2601   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2602
2603   /* Note that we only support the standard ELF names, because .dwz
2604      is ELF-only (at the time of writing).  */
2605   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2606     {
2607       dwz_file->abbrev.s.section = sectp;
2608       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2609     }
2610   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2611     {
2612       dwz_file->info.s.section = sectp;
2613       dwz_file->info.size = bfd_get_section_size (sectp);
2614     }
2615   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2616     {
2617       dwz_file->str.s.section = sectp;
2618       dwz_file->str.size = bfd_get_section_size (sectp);
2619     }
2620   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2621     {
2622       dwz_file->line.s.section = sectp;
2623       dwz_file->line.size = bfd_get_section_size (sectp);
2624     }
2625   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2626     {
2627       dwz_file->macro.s.section = sectp;
2628       dwz_file->macro.size = bfd_get_section_size (sectp);
2629     }
2630   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2631     {
2632       dwz_file->gdb_index.s.section = sectp;
2633       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2634     }
2635   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2636     {
2637       dwz_file->debug_names.s.section = sectp;
2638       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2639     }
2640 }
2641
2642 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2643    there is no .gnu_debugaltlink section in the file.  Error if there
2644    is such a section but the file cannot be found.  */
2645
2646 static struct dwz_file *
2647 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2648 {
2649   const char *filename;
2650   bfd_size_type buildid_len_arg;
2651   size_t buildid_len;
2652   bfd_byte *buildid;
2653
2654   if (dwarf2_per_objfile->dwz_file != NULL)
2655     return dwarf2_per_objfile->dwz_file.get ();
2656
2657   bfd_set_error (bfd_error_no_error);
2658   gdb::unique_xmalloc_ptr<char> data
2659     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2660                                   &buildid_len_arg, &buildid));
2661   if (data == NULL)
2662     {
2663       if (bfd_get_error () == bfd_error_no_error)
2664         return NULL;
2665       error (_("could not read '.gnu_debugaltlink' section: %s"),
2666              bfd_errmsg (bfd_get_error ()));
2667     }
2668
2669   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2670
2671   buildid_len = (size_t) buildid_len_arg;
2672
2673   filename = data.get ();
2674
2675   std::string abs_storage;
2676   if (!IS_ABSOLUTE_PATH (filename))
2677     {
2678       gdb::unique_xmalloc_ptr<char> abs
2679         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2680
2681       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2682       filename = abs_storage.c_str ();
2683     }
2684
2685   /* First try the file name given in the section.  If that doesn't
2686      work, try to use the build-id instead.  */
2687   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2688   if (dwz_bfd != NULL)
2689     {
2690       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2691         dwz_bfd.release ();
2692     }
2693
2694   if (dwz_bfd == NULL)
2695     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2696
2697   if (dwz_bfd == NULL)
2698     error (_("could not find '.gnu_debugaltlink' file for %s"),
2699            objfile_name (dwarf2_per_objfile->objfile));
2700
2701   std::unique_ptr<struct dwz_file> result
2702     (new struct dwz_file (std::move (dwz_bfd)));
2703
2704   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2705                          result.get ());
2706
2707   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2708                             result->dwz_bfd.get ());
2709   dwarf2_per_objfile->dwz_file = std::move (result);
2710   return dwarf2_per_objfile->dwz_file.get ();
2711 }
2712 \f
2713 /* DWARF quick_symbols_functions support.  */
2714
2715 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2716    unique line tables, so we maintain a separate table of all .debug_line
2717    derived entries to support the sharing.
2718    All the quick functions need is the list of file names.  We discard the
2719    line_header when we're done and don't need to record it here.  */
2720 struct quick_file_names
2721 {
2722   /* The data used to construct the hash key.  */
2723   struct stmt_list_hash hash;
2724
2725   /* The number of entries in file_names, real_names.  */
2726   unsigned int num_file_names;
2727
2728   /* The file names from the line table, after being run through
2729      file_full_name.  */
2730   const char **file_names;
2731
2732   /* The file names from the line table after being run through
2733      gdb_realpath.  These are computed lazily.  */
2734   const char **real_names;
2735 };
2736
2737 /* When using the index (and thus not using psymtabs), each CU has an
2738    object of this type.  This is used to hold information needed by
2739    the various "quick" methods.  */
2740 struct dwarf2_per_cu_quick_data
2741 {
2742   /* The file table.  This can be NULL if there was no file table
2743      or it's currently not read in.
2744      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2745   struct quick_file_names *file_names;
2746
2747   /* The corresponding symbol table.  This is NULL if symbols for this
2748      CU have not yet been read.  */
2749   struct compunit_symtab *compunit_symtab;
2750
2751   /* A temporary mark bit used when iterating over all CUs in
2752      expand_symtabs_matching.  */
2753   unsigned int mark : 1;
2754
2755   /* True if we've tried to read the file table and found there isn't one.
2756      There will be no point in trying to read it again next time.  */
2757   unsigned int no_file_data : 1;
2758 };
2759
2760 /* Utility hash function for a stmt_list_hash.  */
2761
2762 static hashval_t
2763 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2764 {
2765   hashval_t v = 0;
2766
2767   if (stmt_list_hash->dwo_unit != NULL)
2768     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2769   v += to_underlying (stmt_list_hash->line_sect_off);
2770   return v;
2771 }
2772
2773 /* Utility equality function for a stmt_list_hash.  */
2774
2775 static int
2776 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2777                     const struct stmt_list_hash *rhs)
2778 {
2779   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2780     return 0;
2781   if (lhs->dwo_unit != NULL
2782       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2783     return 0;
2784
2785   return lhs->line_sect_off == rhs->line_sect_off;
2786 }
2787
2788 /* Hash function for a quick_file_names.  */
2789
2790 static hashval_t
2791 hash_file_name_entry (const void *e)
2792 {
2793   const struct quick_file_names *file_data
2794     = (const struct quick_file_names *) e;
2795
2796   return hash_stmt_list_entry (&file_data->hash);
2797 }
2798
2799 /* Equality function for a quick_file_names.  */
2800
2801 static int
2802 eq_file_name_entry (const void *a, const void *b)
2803 {
2804   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2805   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2806
2807   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2808 }
2809
2810 /* Delete function for a quick_file_names.  */
2811
2812 static void
2813 delete_file_name_entry (void *e)
2814 {
2815   struct quick_file_names *file_data = (struct quick_file_names *) e;
2816   int i;
2817
2818   for (i = 0; i < file_data->num_file_names; ++i)
2819     {
2820       xfree ((void*) file_data->file_names[i]);
2821       if (file_data->real_names)
2822         xfree ((void*) file_data->real_names[i]);
2823     }
2824
2825   /* The space for the struct itself lives on objfile_obstack,
2826      so we don't free it here.  */
2827 }
2828
2829 /* Create a quick_file_names hash table.  */
2830
2831 static htab_t
2832 create_quick_file_names_table (unsigned int nr_initial_entries)
2833 {
2834   return htab_create_alloc (nr_initial_entries,
2835                             hash_file_name_entry, eq_file_name_entry,
2836                             delete_file_name_entry, xcalloc, xfree);
2837 }
2838
2839 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2840    have to be created afterwards.  You should call age_cached_comp_units after
2841    processing PER_CU->CU.  dw2_setup must have been already called.  */
2842
2843 static void
2844 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2845 {
2846   if (per_cu->is_debug_types)
2847     load_full_type_unit (per_cu);
2848   else
2849     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2850
2851   if (per_cu->cu == NULL)
2852     return;  /* Dummy CU.  */
2853
2854   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2855 }
2856
2857 /* Read in the symbols for PER_CU.  */
2858
2859 static void
2860 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2861 {
2862   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2863
2864   /* Skip type_unit_groups, reading the type units they contain
2865      is handled elsewhere.  */
2866   if (IS_TYPE_UNIT_GROUP (per_cu))
2867     return;
2868
2869   /* The destructor of dwarf2_queue_guard frees any entries left on
2870      the queue.  After this point we're guaranteed to leave this function
2871      with the dwarf queue empty.  */
2872   dwarf2_queue_guard q_guard;
2873
2874   if (dwarf2_per_objfile->using_index
2875       ? per_cu->v.quick->compunit_symtab == NULL
2876       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2877     {
2878       queue_comp_unit (per_cu, language_minimal);
2879       load_cu (per_cu, skip_partial);
2880
2881       /* If we just loaded a CU from a DWO, and we're working with an index
2882          that may badly handle TUs, load all the TUs in that DWO as well.
2883          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2884       if (!per_cu->is_debug_types
2885           && per_cu->cu != NULL
2886           && per_cu->cu->dwo_unit != NULL
2887           && dwarf2_per_objfile->index_table != NULL
2888           && dwarf2_per_objfile->index_table->version <= 7
2889           /* DWP files aren't supported yet.  */
2890           && get_dwp_file (dwarf2_per_objfile) == NULL)
2891         queue_and_load_all_dwo_tus (per_cu);
2892     }
2893
2894   process_queue (dwarf2_per_objfile);
2895
2896   /* Age the cache, releasing compilation units that have not
2897      been used recently.  */
2898   age_cached_comp_units (dwarf2_per_objfile);
2899 }
2900
2901 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2902    the objfile from which this CU came.  Returns the resulting symbol
2903    table.  */
2904
2905 static struct compunit_symtab *
2906 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2907 {
2908   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2909
2910   gdb_assert (dwarf2_per_objfile->using_index);
2911   if (!per_cu->v.quick->compunit_symtab)
2912     {
2913       free_cached_comp_units freer (dwarf2_per_objfile);
2914       scoped_restore decrementer = increment_reading_symtab ();
2915       dw2_do_instantiate_symtab (per_cu, skip_partial);
2916       process_cu_includes (dwarf2_per_objfile);
2917     }
2918
2919   return per_cu->v.quick->compunit_symtab;
2920 }
2921
2922 /* See declaration.  */
2923
2924 dwarf2_per_cu_data *
2925 dwarf2_per_objfile::get_cutu (int index)
2926 {
2927   if (index >= this->all_comp_units.size ())
2928     {
2929       index -= this->all_comp_units.size ();
2930       gdb_assert (index < this->all_type_units.size ());
2931       return &this->all_type_units[index]->per_cu;
2932     }
2933
2934   return this->all_comp_units[index];
2935 }
2936
2937 /* See declaration.  */
2938
2939 dwarf2_per_cu_data *
2940 dwarf2_per_objfile::get_cu (int index)
2941 {
2942   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2943
2944   return this->all_comp_units[index];
2945 }
2946
2947 /* See declaration.  */
2948
2949 signatured_type *
2950 dwarf2_per_objfile::get_tu (int index)
2951 {
2952   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2953
2954   return this->all_type_units[index];
2955 }
2956
2957 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2958    objfile_obstack, and constructed with the specified field
2959    values.  */
2960
2961 static dwarf2_per_cu_data *
2962 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2963                           struct dwarf2_section_info *section,
2964                           int is_dwz,
2965                           sect_offset sect_off, ULONGEST length)
2966 {
2967   struct objfile *objfile = dwarf2_per_objfile->objfile;
2968   dwarf2_per_cu_data *the_cu
2969     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970                      struct dwarf2_per_cu_data);
2971   the_cu->sect_off = sect_off;
2972   the_cu->length = length;
2973   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2974   the_cu->section = section;
2975   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2976                                    struct dwarf2_per_cu_quick_data);
2977   the_cu->is_dwz = is_dwz;
2978   return the_cu;
2979 }
2980
2981 /* A helper for create_cus_from_index that handles a given list of
2982    CUs.  */
2983
2984 static void
2985 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2986                             const gdb_byte *cu_list, offset_type n_elements,
2987                             struct dwarf2_section_info *section,
2988                             int is_dwz)
2989 {
2990   for (offset_type i = 0; i < n_elements; i += 2)
2991     {
2992       gdb_static_assert (sizeof (ULONGEST) >= 8);
2993
2994       sect_offset sect_off
2995         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2996       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2997       cu_list += 2 * 8;
2998
2999       dwarf2_per_cu_data *per_cu
3000         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3001                                      sect_off, length);
3002       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3003     }
3004 }
3005
3006 /* Read the CU list from the mapped index, and use it to create all
3007    the CU objects for this objfile.  */
3008
3009 static void
3010 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3011                        const gdb_byte *cu_list, offset_type cu_list_elements,
3012                        const gdb_byte *dwz_list, offset_type dwz_elements)
3013 {
3014   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3015   dwarf2_per_objfile->all_comp_units.reserve
3016     ((cu_list_elements + dwz_elements) / 2);
3017
3018   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3019                               &dwarf2_per_objfile->info, 0);
3020
3021   if (dwz_elements == 0)
3022     return;
3023
3024   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3025   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3026                               &dwz->info, 1);
3027 }
3028
3029 /* Create the signatured type hash table from the index.  */
3030
3031 static void
3032 create_signatured_type_table_from_index
3033   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3034    struct dwarf2_section_info *section,
3035    const gdb_byte *bytes,
3036    offset_type elements)
3037 {
3038   struct objfile *objfile = dwarf2_per_objfile->objfile;
3039
3040   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3041   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3042
3043   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3044
3045   for (offset_type i = 0; i < elements; i += 3)
3046     {
3047       struct signatured_type *sig_type;
3048       ULONGEST signature;
3049       void **slot;
3050       cu_offset type_offset_in_tu;
3051
3052       gdb_static_assert (sizeof (ULONGEST) >= 8);
3053       sect_offset sect_off
3054         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3055       type_offset_in_tu
3056         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3057                                                 BFD_ENDIAN_LITTLE);
3058       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3059       bytes += 3 * 8;
3060
3061       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3062                                  struct signatured_type);
3063       sig_type->signature = signature;
3064       sig_type->type_offset_in_tu = type_offset_in_tu;
3065       sig_type->per_cu.is_debug_types = 1;
3066       sig_type->per_cu.section = section;
3067       sig_type->per_cu.sect_off = sect_off;
3068       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3069       sig_type->per_cu.v.quick
3070         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3071                           struct dwarf2_per_cu_quick_data);
3072
3073       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3074       *slot = sig_type;
3075
3076       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3077     }
3078
3079   dwarf2_per_objfile->signatured_types = sig_types_hash;
3080 }
3081
3082 /* Create the signatured type hash table from .debug_names.  */
3083
3084 static void
3085 create_signatured_type_table_from_debug_names
3086   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3087    const mapped_debug_names &map,
3088    struct dwarf2_section_info *section,
3089    struct dwarf2_section_info *abbrev_section)
3090 {
3091   struct objfile *objfile = dwarf2_per_objfile->objfile;
3092
3093   dwarf2_read_section (objfile, section);
3094   dwarf2_read_section (objfile, abbrev_section);
3095
3096   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3097   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3098
3099   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3100
3101   for (uint32_t i = 0; i < map.tu_count; ++i)
3102     {
3103       struct signatured_type *sig_type;
3104       void **slot;
3105
3106       sect_offset sect_off
3107         = (sect_offset) (extract_unsigned_integer
3108                          (map.tu_table_reordered + i * map.offset_size,
3109                           map.offset_size,
3110                           map.dwarf5_byte_order));
3111
3112       comp_unit_head cu_header;
3113       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3114                                      abbrev_section,
3115                                      section->buffer + to_underlying (sect_off),
3116                                      rcuh_kind::TYPE);
3117
3118       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3119                                  struct signatured_type);
3120       sig_type->signature = cu_header.signature;
3121       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3122       sig_type->per_cu.is_debug_types = 1;
3123       sig_type->per_cu.section = section;
3124       sig_type->per_cu.sect_off = sect_off;
3125       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3126       sig_type->per_cu.v.quick
3127         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3128                           struct dwarf2_per_cu_quick_data);
3129
3130       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3131       *slot = sig_type;
3132
3133       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3134     }
3135
3136   dwarf2_per_objfile->signatured_types = sig_types_hash;
3137 }
3138
3139 /* Read the address map data from the mapped index, and use it to
3140    populate the objfile's psymtabs_addrmap.  */
3141
3142 static void
3143 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3144                            struct mapped_index *index)
3145 {
3146   struct objfile *objfile = dwarf2_per_objfile->objfile;
3147   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3148   const gdb_byte *iter, *end;
3149   struct addrmap *mutable_map;
3150   CORE_ADDR baseaddr;
3151
3152   auto_obstack temp_obstack;
3153
3154   mutable_map = addrmap_create_mutable (&temp_obstack);
3155
3156   iter = index->address_table.data ();
3157   end = iter + index->address_table.size ();
3158
3159   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3160
3161   while (iter < end)
3162     {
3163       ULONGEST hi, lo, cu_index;
3164       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3165       iter += 8;
3166       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3167       iter += 8;
3168       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3169       iter += 4;
3170
3171       if (lo > hi)
3172         {
3173           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3174                      hex_string (lo), hex_string (hi));
3175           continue;
3176         }
3177
3178       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3179         {
3180           complaint (_(".gdb_index address table has invalid CU number %u"),
3181                      (unsigned) cu_index);
3182           continue;
3183         }
3184
3185       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3186       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3187       addrmap_set_empty (mutable_map, lo, hi - 1,
3188                          dwarf2_per_objfile->get_cu (cu_index));
3189     }
3190
3191   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3192                                                     &objfile->objfile_obstack);
3193 }
3194
3195 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3196    populate the objfile's psymtabs_addrmap.  */
3197
3198 static void
3199 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3200                              struct dwarf2_section_info *section)
3201 {
3202   struct objfile *objfile = dwarf2_per_objfile->objfile;
3203   bfd *abfd = objfile->obfd;
3204   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3205   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3206                                        SECT_OFF_TEXT (objfile));
3207
3208   auto_obstack temp_obstack;
3209   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3210
3211   std::unordered_map<sect_offset,
3212                      dwarf2_per_cu_data *,
3213                      gdb::hash_enum<sect_offset>>
3214     debug_info_offset_to_per_cu;
3215   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3216     {
3217       const auto insertpair
3218         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3219       if (!insertpair.second)
3220         {
3221           warning (_("Section .debug_aranges in %s has duplicate "
3222                      "debug_info_offset %s, ignoring .debug_aranges."),
3223                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3224           return;
3225         }
3226     }
3227
3228   dwarf2_read_section (objfile, section);
3229
3230   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3231
3232   const gdb_byte *addr = section->buffer;
3233
3234   while (addr < section->buffer + section->size)
3235     {
3236       const gdb_byte *const entry_addr = addr;
3237       unsigned int bytes_read;
3238
3239       const LONGEST entry_length = read_initial_length (abfd, addr,
3240                                                         &bytes_read);
3241       addr += bytes_read;
3242
3243       const gdb_byte *const entry_end = addr + entry_length;
3244       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3245       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3246       if (addr + entry_length > section->buffer + section->size)
3247         {
3248           warning (_("Section .debug_aranges in %s entry at offset %zu "
3249                      "length %s exceeds section length %s, "
3250                      "ignoring .debug_aranges."),
3251                    objfile_name (objfile), entry_addr - section->buffer,
3252                    plongest (bytes_read + entry_length),
3253                    pulongest (section->size));
3254           return;
3255         }
3256
3257       /* The version number.  */
3258       const uint16_t version = read_2_bytes (abfd, addr);
3259       addr += 2;
3260       if (version != 2)
3261         {
3262           warning (_("Section .debug_aranges in %s entry at offset %zu "
3263                      "has unsupported version %d, ignoring .debug_aranges."),
3264                    objfile_name (objfile), entry_addr - section->buffer,
3265                    version);
3266           return;
3267         }
3268
3269       const uint64_t debug_info_offset
3270         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3271       addr += offset_size;
3272       const auto per_cu_it
3273         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3274       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3275         {
3276           warning (_("Section .debug_aranges in %s entry at offset %zu "
3277                      "debug_info_offset %s does not exists, "
3278                      "ignoring .debug_aranges."),
3279                    objfile_name (objfile), entry_addr - section->buffer,
3280                    pulongest (debug_info_offset));
3281           return;
3282         }
3283       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3284
3285       const uint8_t address_size = *addr++;
3286       if (address_size < 1 || address_size > 8)
3287         {
3288           warning (_("Section .debug_aranges in %s entry at offset %zu "
3289                      "address_size %u is invalid, ignoring .debug_aranges."),
3290                    objfile_name (objfile), entry_addr - section->buffer,
3291                    address_size);
3292           return;
3293         }
3294
3295       const uint8_t segment_selector_size = *addr++;
3296       if (segment_selector_size != 0)
3297         {
3298           warning (_("Section .debug_aranges in %s entry at offset %zu "
3299                      "segment_selector_size %u is not supported, "
3300                      "ignoring .debug_aranges."),
3301                    objfile_name (objfile), entry_addr - section->buffer,
3302                    segment_selector_size);
3303           return;
3304         }
3305
3306       /* Must pad to an alignment boundary that is twice the address
3307          size.  It is undocumented by the DWARF standard but GCC does
3308          use it.  */
3309       for (size_t padding = ((-(addr - section->buffer))
3310                              & (2 * address_size - 1));
3311            padding > 0; padding--)
3312         if (*addr++ != 0)
3313           {
3314             warning (_("Section .debug_aranges in %s entry at offset %zu "
3315                        "padding is not zero, ignoring .debug_aranges."),
3316                      objfile_name (objfile), entry_addr - section->buffer);
3317             return;
3318           }
3319
3320       for (;;)
3321         {
3322           if (addr + 2 * address_size > entry_end)
3323             {
3324               warning (_("Section .debug_aranges in %s entry at offset %zu "
3325                          "address list is not properly terminated, "
3326                          "ignoring .debug_aranges."),
3327                        objfile_name (objfile), entry_addr - section->buffer);
3328               return;
3329             }
3330           ULONGEST start = extract_unsigned_integer (addr, address_size,
3331                                                      dwarf5_byte_order);
3332           addr += address_size;
3333           ULONGEST length = extract_unsigned_integer (addr, address_size,
3334                                                       dwarf5_byte_order);
3335           addr += address_size;
3336           if (start == 0 && length == 0)
3337             break;
3338           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3339             {
3340               /* Symbol was eliminated due to a COMDAT group.  */
3341               continue;
3342             }
3343           ULONGEST end = start + length;
3344           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3345                    - baseaddr);
3346           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3347                  - baseaddr);
3348           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3349         }
3350     }
3351
3352   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3353                                                     &objfile->objfile_obstack);
3354 }
3355
3356 /* Find a slot in the mapped index INDEX for the object named NAME.
3357    If NAME is found, set *VEC_OUT to point to the CU vector in the
3358    constant pool and return true.  If NAME cannot be found, return
3359    false.  */
3360
3361 static bool
3362 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3363                           offset_type **vec_out)
3364 {
3365   offset_type hash;
3366   offset_type slot, step;
3367   int (*cmp) (const char *, const char *);
3368
3369   gdb::unique_xmalloc_ptr<char> without_params;
3370   if (current_language->la_language == language_cplus
3371       || current_language->la_language == language_fortran
3372       || current_language->la_language == language_d)
3373     {
3374       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3375          not contain any.  */
3376
3377       if (strchr (name, '(') != NULL)
3378         {
3379           without_params = cp_remove_params (name);
3380
3381           if (without_params != NULL)
3382             name = without_params.get ();
3383         }
3384     }
3385
3386   /* Index version 4 did not support case insensitive searches.  But the
3387      indices for case insensitive languages are built in lowercase, therefore
3388      simulate our NAME being searched is also lowercased.  */
3389   hash = mapped_index_string_hash ((index->version == 4
3390                                     && case_sensitivity == case_sensitive_off
3391                                     ? 5 : index->version),
3392                                    name);
3393
3394   slot = hash & (index->symbol_table.size () - 1);
3395   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3396   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3397
3398   for (;;)
3399     {
3400       const char *str;
3401
3402       const auto &bucket = index->symbol_table[slot];
3403       if (bucket.name == 0 && bucket.vec == 0)
3404         return false;
3405
3406       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3407       if (!cmp (name, str))
3408         {
3409           *vec_out = (offset_type *) (index->constant_pool
3410                                       + MAYBE_SWAP (bucket.vec));
3411           return true;
3412         }
3413
3414       slot = (slot + step) & (index->symbol_table.size () - 1);
3415     }
3416 }
3417
3418 /* A helper function that reads the .gdb_index from BUFFER and fills
3419    in MAP.  FILENAME is the name of the file containing the data;
3420    it is used for error reporting.  DEPRECATED_OK is true if it is
3421    ok to use deprecated sections.
3422
3423    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3424    out parameters that are filled in with information about the CU and
3425    TU lists in the section.
3426
3427    Returns true if all went well, false otherwise.  */
3428
3429 static bool
3430 read_gdb_index_from_buffer (struct objfile *objfile,
3431                             const char *filename,
3432                             bool deprecated_ok,
3433                             gdb::array_view<const gdb_byte> buffer,
3434                             struct mapped_index *map,
3435                             const gdb_byte **cu_list,
3436                             offset_type *cu_list_elements,
3437                             const gdb_byte **types_list,
3438                             offset_type *types_list_elements)
3439 {
3440   const gdb_byte *addr = &buffer[0];
3441
3442   /* Version check.  */
3443   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3444   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3445      causes the index to behave very poorly for certain requests.  Version 3
3446      contained incomplete addrmap.  So, it seems better to just ignore such
3447      indices.  */
3448   if (version < 4)
3449     {
3450       static int warning_printed = 0;
3451       if (!warning_printed)
3452         {
3453           warning (_("Skipping obsolete .gdb_index section in %s."),
3454                    filename);
3455           warning_printed = 1;
3456         }
3457       return 0;
3458     }
3459   /* Index version 4 uses a different hash function than index version
3460      5 and later.
3461
3462      Versions earlier than 6 did not emit psymbols for inlined
3463      functions.  Using these files will cause GDB not to be able to
3464      set breakpoints on inlined functions by name, so we ignore these
3465      indices unless the user has done
3466      "set use-deprecated-index-sections on".  */
3467   if (version < 6 && !deprecated_ok)
3468     {
3469       static int warning_printed = 0;
3470       if (!warning_printed)
3471         {
3472           warning (_("\
3473 Skipping deprecated .gdb_index section in %s.\n\
3474 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3475 to use the section anyway."),
3476                    filename);
3477           warning_printed = 1;
3478         }
3479       return 0;
3480     }
3481   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3482      of the TU (for symbols coming from TUs),
3483      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3484      Plus gold-generated indices can have duplicate entries for global symbols,
3485      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3486      These are just performance bugs, and we can't distinguish gdb-generated
3487      indices from gold-generated ones, so issue no warning here.  */
3488
3489   /* Indexes with higher version than the one supported by GDB may be no
3490      longer backward compatible.  */
3491   if (version > 8)
3492     return 0;
3493
3494   map->version = version;
3495
3496   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3497
3498   int i = 0;
3499   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3500   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3501                        / 8);
3502   ++i;
3503
3504   *types_list = addr + MAYBE_SWAP (metadata[i]);
3505   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3506                            - MAYBE_SWAP (metadata[i]))
3507                           / 8);
3508   ++i;
3509
3510   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3511   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3512   map->address_table
3513     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3514   ++i;
3515
3516   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3517   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3518   map->symbol_table
3519     = gdb::array_view<mapped_index::symbol_table_slot>
3520        ((mapped_index::symbol_table_slot *) symbol_table,
3521         (mapped_index::symbol_table_slot *) symbol_table_end);
3522
3523   ++i;
3524   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3525
3526   return 1;
3527 }
3528
3529 /* Callback types for dwarf2_read_gdb_index.  */
3530
3531 typedef gdb::function_view
3532     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3533     get_gdb_index_contents_ftype;
3534 typedef gdb::function_view
3535     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3536     get_gdb_index_contents_dwz_ftype;
3537
3538 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3539    elements of all the CUs and return 1.  Otherwise, return 0.  */
3540
3541 static int
3542 dwarf2_read_gdb_index
3543   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3544    get_gdb_index_contents_ftype get_gdb_index_contents,
3545    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3546 {
3547   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3548   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3549   struct dwz_file *dwz;
3550   struct objfile *objfile = dwarf2_per_objfile->objfile;
3551
3552   gdb::array_view<const gdb_byte> main_index_contents
3553     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3554
3555   if (main_index_contents.empty ())
3556     return 0;
3557
3558   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3559   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3560                                    use_deprecated_index_sections,
3561                                    main_index_contents, map.get (), &cu_list,
3562                                    &cu_list_elements, &types_list,
3563                                    &types_list_elements))
3564     return 0;
3565
3566   /* Don't use the index if it's empty.  */
3567   if (map->symbol_table.empty ())
3568     return 0;
3569
3570   /* If there is a .dwz file, read it so we can get its CU list as
3571      well.  */
3572   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3573   if (dwz != NULL)
3574     {
3575       struct mapped_index dwz_map;
3576       const gdb_byte *dwz_types_ignore;
3577       offset_type dwz_types_elements_ignore;
3578
3579       gdb::array_view<const gdb_byte> dwz_index_content
3580         = get_gdb_index_contents_dwz (objfile, dwz);
3581
3582       if (dwz_index_content.empty ())
3583         return 0;
3584
3585       if (!read_gdb_index_from_buffer (objfile,
3586                                        bfd_get_filename (dwz->dwz_bfd), 1,
3587                                        dwz_index_content, &dwz_map,
3588                                        &dwz_list, &dwz_list_elements,
3589                                        &dwz_types_ignore,
3590                                        &dwz_types_elements_ignore))
3591         {
3592           warning (_("could not read '.gdb_index' section from %s; skipping"),
3593                    bfd_get_filename (dwz->dwz_bfd));
3594           return 0;
3595         }
3596     }
3597
3598   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3599                          dwz_list, dwz_list_elements);
3600
3601   if (types_list_elements)
3602     {
3603       struct dwarf2_section_info *section;
3604
3605       /* We can only handle a single .debug_types when we have an
3606          index.  */
3607       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3608         return 0;
3609
3610       section = VEC_index (dwarf2_section_info_def,
3611                            dwarf2_per_objfile->types, 0);
3612
3613       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3614                                                types_list, types_list_elements);
3615     }
3616
3617   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3618
3619   dwarf2_per_objfile->index_table = std::move (map);
3620   dwarf2_per_objfile->using_index = 1;
3621   dwarf2_per_objfile->quick_file_names_table =
3622     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3623
3624   return 1;
3625 }
3626
3627 /* die_reader_func for dw2_get_file_names.  */
3628
3629 static void
3630 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3631                            const gdb_byte *info_ptr,
3632                            struct die_info *comp_unit_die,
3633                            int has_children,
3634                            void *data)
3635 {
3636   struct dwarf2_cu *cu = reader->cu;
3637   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3638   struct dwarf2_per_objfile *dwarf2_per_objfile
3639     = cu->per_cu->dwarf2_per_objfile;
3640   struct objfile *objfile = dwarf2_per_objfile->objfile;
3641   struct dwarf2_per_cu_data *lh_cu;
3642   struct attribute *attr;
3643   int i;
3644   void **slot;
3645   struct quick_file_names *qfn;
3646
3647   gdb_assert (! this_cu->is_debug_types);
3648
3649   /* Our callers never want to match partial units -- instead they
3650      will match the enclosing full CU.  */
3651   if (comp_unit_die->tag == DW_TAG_partial_unit)
3652     {
3653       this_cu->v.quick->no_file_data = 1;
3654       return;
3655     }
3656
3657   lh_cu = this_cu;
3658   slot = NULL;
3659
3660   line_header_up lh;
3661   sect_offset line_offset {};
3662
3663   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3664   if (attr)
3665     {
3666       struct quick_file_names find_entry;
3667
3668       line_offset = (sect_offset) DW_UNSND (attr);
3669
3670       /* We may have already read in this line header (TU line header sharing).
3671          If we have we're done.  */
3672       find_entry.hash.dwo_unit = cu->dwo_unit;
3673       find_entry.hash.line_sect_off = line_offset;
3674       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3675                              &find_entry, INSERT);
3676       if (*slot != NULL)
3677         {
3678           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3679           return;
3680         }
3681
3682       lh = dwarf_decode_line_header (line_offset, cu);
3683     }
3684   if (lh == NULL)
3685     {
3686       lh_cu->v.quick->no_file_data = 1;
3687       return;
3688     }
3689
3690   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3691   qfn->hash.dwo_unit = cu->dwo_unit;
3692   qfn->hash.line_sect_off = line_offset;
3693   gdb_assert (slot != NULL);
3694   *slot = qfn;
3695
3696   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3697
3698   qfn->num_file_names = lh->file_names.size ();
3699   qfn->file_names =
3700     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3701   for (i = 0; i < lh->file_names.size (); ++i)
3702     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3703   qfn->real_names = NULL;
3704
3705   lh_cu->v.quick->file_names = qfn;
3706 }
3707
3708 /* A helper for the "quick" functions which attempts to read the line
3709    table for THIS_CU.  */
3710
3711 static struct quick_file_names *
3712 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3713 {
3714   /* This should never be called for TUs.  */
3715   gdb_assert (! this_cu->is_debug_types);
3716   /* Nor type unit groups.  */
3717   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3718
3719   if (this_cu->v.quick->file_names != NULL)
3720     return this_cu->v.quick->file_names;
3721   /* If we know there is no line data, no point in looking again.  */
3722   if (this_cu->v.quick->no_file_data)
3723     return NULL;
3724
3725   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3726
3727   if (this_cu->v.quick->no_file_data)
3728     return NULL;
3729   return this_cu->v.quick->file_names;
3730 }
3731
3732 /* A helper for the "quick" functions which computes and caches the
3733    real path for a given file name from the line table.  */
3734
3735 static const char *
3736 dw2_get_real_path (struct objfile *objfile,
3737                    struct quick_file_names *qfn, int index)
3738 {
3739   if (qfn->real_names == NULL)
3740     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3741                                       qfn->num_file_names, const char *);
3742
3743   if (qfn->real_names[index] == NULL)
3744     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3745
3746   return qfn->real_names[index];
3747 }
3748
3749 static struct symtab *
3750 dw2_find_last_source_symtab (struct objfile *objfile)
3751 {
3752   struct dwarf2_per_objfile *dwarf2_per_objfile
3753     = get_dwarf2_per_objfile (objfile);
3754   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3755   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3756
3757   if (cust == NULL)
3758     return NULL;
3759
3760   return compunit_primary_filetab (cust);
3761 }
3762
3763 /* Traversal function for dw2_forget_cached_source_info.  */
3764
3765 static int
3766 dw2_free_cached_file_names (void **slot, void *info)
3767 {
3768   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3769
3770   if (file_data->real_names)
3771     {
3772       int i;
3773
3774       for (i = 0; i < file_data->num_file_names; ++i)
3775         {
3776           xfree ((void*) file_data->real_names[i]);
3777           file_data->real_names[i] = NULL;
3778         }
3779     }
3780
3781   return 1;
3782 }
3783
3784 static void
3785 dw2_forget_cached_source_info (struct objfile *objfile)
3786 {
3787   struct dwarf2_per_objfile *dwarf2_per_objfile
3788     = get_dwarf2_per_objfile (objfile);
3789
3790   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3791                           dw2_free_cached_file_names, NULL);
3792 }
3793
3794 /* Helper function for dw2_map_symtabs_matching_filename that expands
3795    the symtabs and calls the iterator.  */
3796
3797 static int
3798 dw2_map_expand_apply (struct objfile *objfile,
3799                       struct dwarf2_per_cu_data *per_cu,
3800                       const char *name, const char *real_path,
3801                       gdb::function_view<bool (symtab *)> callback)
3802 {
3803   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3804
3805   /* Don't visit already-expanded CUs.  */
3806   if (per_cu->v.quick->compunit_symtab)
3807     return 0;
3808
3809   /* This may expand more than one symtab, and we want to iterate over
3810      all of them.  */
3811   dw2_instantiate_symtab (per_cu, false);
3812
3813   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3814                                     last_made, callback);
3815 }
3816
3817 /* Implementation of the map_symtabs_matching_filename method.  */
3818
3819 static bool
3820 dw2_map_symtabs_matching_filename
3821   (struct objfile *objfile, const char *name, const char *real_path,
3822    gdb::function_view<bool (symtab *)> callback)
3823 {
3824   const char *name_basename = lbasename (name);
3825   struct dwarf2_per_objfile *dwarf2_per_objfile
3826     = get_dwarf2_per_objfile (objfile);
3827
3828   /* The rule is CUs specify all the files, including those used by
3829      any TU, so there's no need to scan TUs here.  */
3830
3831   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3832     {
3833       /* We only need to look at symtabs not already expanded.  */
3834       if (per_cu->v.quick->compunit_symtab)
3835         continue;
3836
3837       quick_file_names *file_data = dw2_get_file_names (per_cu);
3838       if (file_data == NULL)
3839         continue;
3840
3841       for (int j = 0; j < file_data->num_file_names; ++j)
3842         {
3843           const char *this_name = file_data->file_names[j];
3844           const char *this_real_name;
3845
3846           if (compare_filenames_for_search (this_name, name))
3847             {
3848               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3849                                         callback))
3850                 return true;
3851               continue;
3852             }
3853
3854           /* Before we invoke realpath, which can get expensive when many
3855              files are involved, do a quick comparison of the basenames.  */
3856           if (! basenames_may_differ
3857               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3858             continue;
3859
3860           this_real_name = dw2_get_real_path (objfile, file_data, j);
3861           if (compare_filenames_for_search (this_real_name, name))
3862             {
3863               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3864                                         callback))
3865                 return true;
3866               continue;
3867             }
3868
3869           if (real_path != NULL)
3870             {
3871               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3872               gdb_assert (IS_ABSOLUTE_PATH (name));
3873               if (this_real_name != NULL
3874                   && FILENAME_CMP (real_path, this_real_name) == 0)
3875                 {
3876                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3877                                             callback))
3878                     return true;
3879                   continue;
3880                 }
3881             }
3882         }
3883     }
3884
3885   return false;
3886 }
3887
3888 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3889
3890 struct dw2_symtab_iterator
3891 {
3892   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3893   struct dwarf2_per_objfile *dwarf2_per_objfile;
3894   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3895   int want_specific_block;
3896   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3897      Unused if !WANT_SPECIFIC_BLOCK.  */
3898   int block_index;
3899   /* The kind of symbol we're looking for.  */
3900   domain_enum domain;
3901   /* The list of CUs from the index entry of the symbol,
3902      or NULL if not found.  */
3903   offset_type *vec;
3904   /* The next element in VEC to look at.  */
3905   int next;
3906   /* The number of elements in VEC, or zero if there is no match.  */
3907   int length;
3908   /* Have we seen a global version of the symbol?
3909      If so we can ignore all further global instances.
3910      This is to work around gold/15646, inefficient gold-generated
3911      indices.  */
3912   int global_seen;
3913 };
3914
3915 /* Initialize the index symtab iterator ITER.
3916    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3917    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3918
3919 static void
3920 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3921                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3922                       int want_specific_block,
3923                       int block_index,
3924                       domain_enum domain,
3925                       const char *name)
3926 {
3927   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3928   iter->want_specific_block = want_specific_block;
3929   iter->block_index = block_index;
3930   iter->domain = domain;
3931   iter->next = 0;
3932   iter->global_seen = 0;
3933
3934   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3935
3936   /* index is NULL if OBJF_READNOW.  */
3937   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3938     iter->length = MAYBE_SWAP (*iter->vec);
3939   else
3940     {
3941       iter->vec = NULL;
3942       iter->length = 0;
3943     }
3944 }
3945
3946 /* Return the next matching CU or NULL if there are no more.  */
3947
3948 static struct dwarf2_per_cu_data *
3949 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3950 {
3951   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3952
3953   for ( ; iter->next < iter->length; ++iter->next)
3954     {
3955       offset_type cu_index_and_attrs =
3956         MAYBE_SWAP (iter->vec[iter->next + 1]);
3957       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3958       int want_static = iter->block_index != GLOBAL_BLOCK;
3959       /* This value is only valid for index versions >= 7.  */
3960       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3961       gdb_index_symbol_kind symbol_kind =
3962         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3963       /* Only check the symbol attributes if they're present.
3964          Indices prior to version 7 don't record them,
3965          and indices >= 7 may elide them for certain symbols
3966          (gold does this).  */
3967       int attrs_valid =
3968         (dwarf2_per_objfile->index_table->version >= 7
3969          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3970
3971       /* Don't crash on bad data.  */
3972       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3973                        + dwarf2_per_objfile->all_type_units.size ()))
3974         {
3975           complaint (_(".gdb_index entry has bad CU index"
3976                        " [in module %s]"),
3977                      objfile_name (dwarf2_per_objfile->objfile));
3978           continue;
3979         }
3980
3981       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3982
3983       /* Skip if already read in.  */
3984       if (per_cu->v.quick->compunit_symtab)
3985         continue;
3986
3987       /* Check static vs global.  */
3988       if (attrs_valid)
3989         {
3990           if (iter->want_specific_block
3991               && want_static != is_static)
3992             continue;
3993           /* Work around gold/15646.  */
3994           if (!is_static && iter->global_seen)
3995             continue;
3996           if (!is_static)
3997             iter->global_seen = 1;
3998         }
3999
4000       /* Only check the symbol's kind if it has one.  */
4001       if (attrs_valid)
4002         {
4003           switch (iter->domain)
4004             {
4005             case VAR_DOMAIN:
4006               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4007                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4008                   /* Some types are also in VAR_DOMAIN.  */
4009                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4010                 continue;
4011               break;
4012             case STRUCT_DOMAIN:
4013               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4014                 continue;
4015               break;
4016             case LABEL_DOMAIN:
4017               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4018                 continue;
4019               break;
4020             default:
4021               break;
4022             }
4023         }
4024
4025       ++iter->next;
4026       return per_cu;
4027     }
4028
4029   return NULL;
4030 }
4031
4032 static struct compunit_symtab *
4033 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4034                    const char *name, domain_enum domain)
4035 {
4036   struct compunit_symtab *stab_best = NULL;
4037   struct dwarf2_per_objfile *dwarf2_per_objfile
4038     = get_dwarf2_per_objfile (objfile);
4039
4040   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4041
4042   struct dw2_symtab_iterator iter;
4043   struct dwarf2_per_cu_data *per_cu;
4044
4045   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4046
4047   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4048     {
4049       struct symbol *sym, *with_opaque = NULL;
4050       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4051       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4052       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4053
4054       sym = block_find_symbol (block, name, domain,
4055                                block_find_non_opaque_type_preferred,
4056                                &with_opaque);
4057
4058       /* Some caution must be observed with overloaded functions
4059          and methods, since the index will not contain any overload
4060          information (but NAME might contain it).  */
4061
4062       if (sym != NULL
4063           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4064         return stab;
4065       if (with_opaque != NULL
4066           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4067         stab_best = stab;
4068
4069       /* Keep looking through other CUs.  */
4070     }
4071
4072   return stab_best;
4073 }
4074
4075 static void
4076 dw2_print_stats (struct objfile *objfile)
4077 {
4078   struct dwarf2_per_objfile *dwarf2_per_objfile
4079     = get_dwarf2_per_objfile (objfile);
4080   int total = (dwarf2_per_objfile->all_comp_units.size ()
4081                + dwarf2_per_objfile->all_type_units.size ());
4082   int count = 0;
4083
4084   for (int i = 0; i < total; ++i)
4085     {
4086       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4087
4088       if (!per_cu->v.quick->compunit_symtab)
4089         ++count;
4090     }
4091   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4092   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4093 }
4094
4095 /* This dumps minimal information about the index.
4096    It is called via "mt print objfiles".
4097    One use is to verify .gdb_index has been loaded by the
4098    gdb.dwarf2/gdb-index.exp testcase.  */
4099
4100 static void
4101 dw2_dump (struct objfile *objfile)
4102 {
4103   struct dwarf2_per_objfile *dwarf2_per_objfile
4104     = get_dwarf2_per_objfile (objfile);
4105
4106   gdb_assert (dwarf2_per_objfile->using_index);
4107   printf_filtered (".gdb_index:");
4108   if (dwarf2_per_objfile->index_table != NULL)
4109     {
4110       printf_filtered (" version %d\n",
4111                        dwarf2_per_objfile->index_table->version);
4112     }
4113   else
4114     printf_filtered (" faked for \"readnow\"\n");
4115   printf_filtered ("\n");
4116 }
4117
4118 static void
4119 dw2_expand_symtabs_for_function (struct objfile *objfile,
4120                                  const char *func_name)
4121 {
4122   struct dwarf2_per_objfile *dwarf2_per_objfile
4123     = get_dwarf2_per_objfile (objfile);
4124
4125   struct dw2_symtab_iterator iter;
4126   struct dwarf2_per_cu_data *per_cu;
4127
4128   /* Note: It doesn't matter what we pass for block_index here.  */
4129   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4130                         func_name);
4131
4132   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4133     dw2_instantiate_symtab (per_cu, false);
4134
4135 }
4136
4137 static void
4138 dw2_expand_all_symtabs (struct objfile *objfile)
4139 {
4140   struct dwarf2_per_objfile *dwarf2_per_objfile
4141     = get_dwarf2_per_objfile (objfile);
4142   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4143                      + dwarf2_per_objfile->all_type_units.size ());
4144
4145   for (int i = 0; i < total_units; ++i)
4146     {
4147       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4148
4149       /* We don't want to directly expand a partial CU, because if we
4150          read it with the wrong language, then assertion failures can
4151          be triggered later on.  See PR symtab/23010.  So, tell
4152          dw2_instantiate_symtab to skip partial CUs -- any important
4153          partial CU will be read via DW_TAG_imported_unit anyway.  */
4154       dw2_instantiate_symtab (per_cu, true);
4155     }
4156 }
4157
4158 static void
4159 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4160                                   const char *fullname)
4161 {
4162   struct dwarf2_per_objfile *dwarf2_per_objfile
4163     = get_dwarf2_per_objfile (objfile);
4164
4165   /* We don't need to consider type units here.
4166      This is only called for examining code, e.g. expand_line_sal.
4167      There can be an order of magnitude (or more) more type units
4168      than comp units, and we avoid them if we can.  */
4169
4170   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4171     {
4172       /* We only need to look at symtabs not already expanded.  */
4173       if (per_cu->v.quick->compunit_symtab)
4174         continue;
4175
4176       quick_file_names *file_data = dw2_get_file_names (per_cu);
4177       if (file_data == NULL)
4178         continue;
4179
4180       for (int j = 0; j < file_data->num_file_names; ++j)
4181         {
4182           const char *this_fullname = file_data->file_names[j];
4183
4184           if (filename_cmp (this_fullname, fullname) == 0)
4185             {
4186               dw2_instantiate_symtab (per_cu, false);
4187               break;
4188             }
4189         }
4190     }
4191 }
4192
4193 static void
4194 dw2_map_matching_symbols (struct objfile *objfile,
4195                           const char * name, domain_enum domain,
4196                           int global,
4197                           int (*callback) (struct block *,
4198                                            struct symbol *, void *),
4199                           void *data, symbol_name_match_type match,
4200                           symbol_compare_ftype *ordered_compare)
4201 {
4202   /* Currently unimplemented; used for Ada.  The function can be called if the
4203      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4204      does not look for non-Ada symbols this function should just return.  */
4205 }
4206
4207 /* Symbol name matcher for .gdb_index names.
4208
4209    Symbol names in .gdb_index have a few particularities:
4210
4211    - There's no indication of which is the language of each symbol.
4212
4213      Since each language has its own symbol name matching algorithm,
4214      and we don't know which language is the right one, we must match
4215      each symbol against all languages.  This would be a potential
4216      performance problem if it were not mitigated by the
4217      mapped_index::name_components lookup table, which significantly
4218      reduces the number of times we need to call into this matcher,
4219      making it a non-issue.
4220
4221    - Symbol names in the index have no overload (parameter)
4222      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4223      appear as "foo" in the index, for example.
4224
4225      This means that the lookup names passed to the symbol name
4226      matcher functions must have no parameter information either
4227      because (e.g.) symbol search name "foo" does not match
4228      lookup-name "foo(int)" [while swapping search name for lookup
4229      name would match].
4230 */
4231 class gdb_index_symbol_name_matcher
4232 {
4233 public:
4234   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4235   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4236
4237   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4238      Returns true if any matcher matches.  */
4239   bool matches (const char *symbol_name);
4240
4241 private:
4242   /* A reference to the lookup name we're matching against.  */
4243   const lookup_name_info &m_lookup_name;
4244
4245   /* A vector holding all the different symbol name matchers, for all
4246      languages.  */
4247   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4248 };
4249
4250 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4251   (const lookup_name_info &lookup_name)
4252     : m_lookup_name (lookup_name)
4253 {
4254   /* Prepare the vector of comparison functions upfront, to avoid
4255      doing the same work for each symbol.  Care is taken to avoid
4256      matching with the same matcher more than once if/when multiple
4257      languages use the same matcher function.  */
4258   auto &matchers = m_symbol_name_matcher_funcs;
4259   matchers.reserve (nr_languages);
4260
4261   matchers.push_back (default_symbol_name_matcher);
4262
4263   for (int i = 0; i < nr_languages; i++)
4264     {
4265       const language_defn *lang = language_def ((enum language) i);
4266       symbol_name_matcher_ftype *name_matcher
4267         = get_symbol_name_matcher (lang, m_lookup_name);
4268
4269       /* Don't insert the same comparison routine more than once.
4270          Note that we do this linear walk instead of a seemingly
4271          cheaper sorted insert, or use a std::set or something like
4272          that, because relative order of function addresses is not
4273          stable.  This is not a problem in practice because the number
4274          of supported languages is low, and the cost here is tiny
4275          compared to the number of searches we'll do afterwards using
4276          this object.  */
4277       if (name_matcher != default_symbol_name_matcher
4278           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4279               == matchers.end ()))
4280         matchers.push_back (name_matcher);
4281     }
4282 }
4283
4284 bool
4285 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4286 {
4287   for (auto matches_name : m_symbol_name_matcher_funcs)
4288     if (matches_name (symbol_name, m_lookup_name, NULL))
4289       return true;
4290
4291   return false;
4292 }
4293
4294 /* Starting from a search name, return the string that finds the upper
4295    bound of all strings that start with SEARCH_NAME in a sorted name
4296    list.  Returns the empty string to indicate that the upper bound is
4297    the end of the list.  */
4298
4299 static std::string
4300 make_sort_after_prefix_name (const char *search_name)
4301 {
4302   /* When looking to complete "func", we find the upper bound of all
4303      symbols that start with "func" by looking for where we'd insert
4304      the closest string that would follow "func" in lexicographical
4305      order.  Usually, that's "func"-with-last-character-incremented,
4306      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4307      will be UTF-8 multi-byte sequences, but we can't be certain.
4308      Especially mind the 0xff character, which is a valid character in
4309      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4310      rule out compilers allowing it in identifiers.  Note that
4311      conveniently, strcmp/strcasecmp are specified to compare
4312      characters interpreted as unsigned char.  So what we do is treat
4313      the whole string as a base 256 number composed of a sequence of
4314      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4315      to 0, and carries 1 to the following more-significant position.
4316      If the very first character in SEARCH_NAME ends up incremented
4317      and carries/overflows, then the upper bound is the end of the
4318      list.  The string after the empty string is also the empty
4319      string.
4320
4321      Some examples of this operation:
4322
4323        SEARCH_NAME  => "+1" RESULT
4324
4325        "abc"              => "abd"
4326        "ab\xff"           => "ac"
4327        "\xff" "a" "\xff"  => "\xff" "b"
4328        "\xff"             => ""
4329        "\xff\xff"         => ""
4330        ""                 => ""
4331
4332      Then, with these symbols for example:
4333
4334       func
4335       func1
4336       fund
4337
4338      completing "func" looks for symbols between "func" and
4339      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4340      which finds "func" and "func1", but not "fund".
4341
4342      And with:
4343
4344       funcÿ     (Latin1 'ÿ' [0xff])
4345       funcÿ1
4346       fund
4347
4348      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4349      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4350
4351      And with:
4352
4353       ÿÿ        (Latin1 'ÿ' [0xff])
4354       ÿÿ1
4355
4356      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4357      the end of the list.
4358   */
4359   std::string after = search_name;
4360   while (!after.empty () && (unsigned char) after.back () == 0xff)
4361     after.pop_back ();
4362   if (!after.empty ())
4363     after.back () = (unsigned char) after.back () + 1;
4364   return after;
4365 }
4366
4367 /* See declaration.  */
4368
4369 std::pair<std::vector<name_component>::const_iterator,
4370           std::vector<name_component>::const_iterator>
4371 mapped_index_base::find_name_components_bounds
4372   (const lookup_name_info &lookup_name_without_params) const
4373 {
4374   auto *name_cmp
4375     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4376
4377   const char *cplus
4378     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4379
4380   /* Comparison function object for lower_bound that matches against a
4381      given symbol name.  */
4382   auto lookup_compare_lower = [&] (const name_component &elem,
4383                                    const char *name)
4384     {
4385       const char *elem_qualified = this->symbol_name_at (elem.idx);
4386       const char *elem_name = elem_qualified + elem.name_offset;
4387       return name_cmp (elem_name, name) < 0;
4388     };
4389
4390   /* Comparison function object for upper_bound that matches against a
4391      given symbol name.  */
4392   auto lookup_compare_upper = [&] (const char *name,
4393                                    const name_component &elem)
4394     {
4395       const char *elem_qualified = this->symbol_name_at (elem.idx);
4396       const char *elem_name = elem_qualified + elem.name_offset;
4397       return name_cmp (name, elem_name) < 0;
4398     };
4399
4400   auto begin = this->name_components.begin ();
4401   auto end = this->name_components.end ();
4402
4403   /* Find the lower bound.  */
4404   auto lower = [&] ()
4405     {
4406       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4407         return begin;
4408       else
4409         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4410     } ();
4411
4412   /* Find the upper bound.  */
4413   auto upper = [&] ()
4414     {
4415       if (lookup_name_without_params.completion_mode ())
4416         {
4417           /* In completion mode, we want UPPER to point past all
4418              symbols names that have the same prefix.  I.e., with
4419              these symbols, and completing "func":
4420
4421               function        << lower bound
4422               function1
4423               other_function  << upper bound
4424
4425              We find the upper bound by looking for the insertion
4426              point of "func"-with-last-character-incremented,
4427              i.e. "fund".  */
4428           std::string after = make_sort_after_prefix_name (cplus);
4429           if (after.empty ())
4430             return end;
4431           return std::lower_bound (lower, end, after.c_str (),
4432                                    lookup_compare_lower);
4433         }
4434       else
4435         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4436     } ();
4437
4438   return {lower, upper};
4439 }
4440
4441 /* See declaration.  */
4442
4443 void
4444 mapped_index_base::build_name_components ()
4445 {
4446   if (!this->name_components.empty ())
4447     return;
4448
4449   this->name_components_casing = case_sensitivity;
4450   auto *name_cmp
4451     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4452
4453   /* The code below only knows how to break apart components of C++
4454      symbol names (and other languages that use '::' as
4455      namespace/module separator).  If we add support for wild matching
4456      to some language that uses some other operator (E.g., Ada, Go and
4457      D use '.'), then we'll need to try splitting the symbol name
4458      according to that language too.  Note that Ada does support wild
4459      matching, but doesn't currently support .gdb_index.  */
4460   auto count = this->symbol_name_count ();
4461   for (offset_type idx = 0; idx < count; idx++)
4462     {
4463       if (this->symbol_name_slot_invalid (idx))
4464         continue;
4465
4466       const char *name = this->symbol_name_at (idx);
4467
4468       /* Add each name component to the name component table.  */
4469       unsigned int previous_len = 0;
4470       for (unsigned int current_len = cp_find_first_component (name);
4471            name[current_len] != '\0';
4472            current_len += cp_find_first_component (name + current_len))
4473         {
4474           gdb_assert (name[current_len] == ':');
4475           this->name_components.push_back ({previous_len, idx});
4476           /* Skip the '::'.  */
4477           current_len += 2;
4478           previous_len = current_len;
4479         }
4480       this->name_components.push_back ({previous_len, idx});
4481     }
4482
4483   /* Sort name_components elements by name.  */
4484   auto name_comp_compare = [&] (const name_component &left,
4485                                 const name_component &right)
4486     {
4487       const char *left_qualified = this->symbol_name_at (left.idx);
4488       const char *right_qualified = this->symbol_name_at (right.idx);
4489
4490       const char *left_name = left_qualified + left.name_offset;
4491       const char *right_name = right_qualified + right.name_offset;
4492
4493       return name_cmp (left_name, right_name) < 0;
4494     };
4495
4496   std::sort (this->name_components.begin (),
4497              this->name_components.end (),
4498              name_comp_compare);
4499 }
4500
4501 /* Helper for dw2_expand_symtabs_matching that works with a
4502    mapped_index_base instead of the containing objfile.  This is split
4503    to a separate function in order to be able to unit test the
4504    name_components matching using a mock mapped_index_base.  For each
4505    symbol name that matches, calls MATCH_CALLBACK, passing it the
4506    symbol's index in the mapped_index_base symbol table.  */
4507
4508 static void
4509 dw2_expand_symtabs_matching_symbol
4510   (mapped_index_base &index,
4511    const lookup_name_info &lookup_name_in,
4512    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4513    enum search_domain kind,
4514    gdb::function_view<void (offset_type)> match_callback)
4515 {
4516   lookup_name_info lookup_name_without_params
4517     = lookup_name_in.make_ignore_params ();
4518   gdb_index_symbol_name_matcher lookup_name_matcher
4519     (lookup_name_without_params);
4520
4521   /* Build the symbol name component sorted vector, if we haven't
4522      yet.  */
4523   index.build_name_components ();
4524
4525   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4526
4527   /* Now for each symbol name in range, check to see if we have a name
4528      match, and if so, call the MATCH_CALLBACK callback.  */
4529
4530   /* The same symbol may appear more than once in the range though.
4531      E.g., if we're looking for symbols that complete "w", and we have
4532      a symbol named "w1::w2", we'll find the two name components for
4533      that same symbol in the range.  To be sure we only call the
4534      callback once per symbol, we first collect the symbol name
4535      indexes that matched in a temporary vector and ignore
4536      duplicates.  */
4537   std::vector<offset_type> matches;
4538   matches.reserve (std::distance (bounds.first, bounds.second));
4539
4540   for (; bounds.first != bounds.second; ++bounds.first)
4541     {
4542       const char *qualified = index.symbol_name_at (bounds.first->idx);
4543
4544       if (!lookup_name_matcher.matches (qualified)
4545           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4546         continue;
4547
4548       matches.push_back (bounds.first->idx);
4549     }
4550
4551   std::sort (matches.begin (), matches.end ());
4552
4553   /* Finally call the callback, once per match.  */
4554   ULONGEST prev = -1;
4555   for (offset_type idx : matches)
4556     {
4557       if (prev != idx)
4558         {
4559           match_callback (idx);
4560           prev = idx;
4561         }
4562     }
4563
4564   /* Above we use a type wider than idx's for 'prev', since 0 and
4565      (offset_type)-1 are both possible values.  */
4566   static_assert (sizeof (prev) > sizeof (offset_type), "");
4567 }
4568
4569 #if GDB_SELF_TEST
4570
4571 namespace selftests { namespace dw2_expand_symtabs_matching {
4572
4573 /* A mock .gdb_index/.debug_names-like name index table, enough to
4574    exercise dw2_expand_symtabs_matching_symbol, which works with the
4575    mapped_index_base interface.  Builds an index from the symbol list
4576    passed as parameter to the constructor.  */
4577 class mock_mapped_index : public mapped_index_base
4578 {
4579 public:
4580   mock_mapped_index (gdb::array_view<const char *> symbols)
4581     : m_symbol_table (symbols)
4582   {}
4583
4584   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4585
4586   /* Return the number of names in the symbol table.  */
4587   size_t symbol_name_count () const override
4588   {
4589     return m_symbol_table.size ();
4590   }
4591
4592   /* Get the name of the symbol at IDX in the symbol table.  */
4593   const char *symbol_name_at (offset_type idx) const override
4594   {
4595     return m_symbol_table[idx];
4596   }
4597
4598 private:
4599   gdb::array_view<const char *> m_symbol_table;
4600 };
4601
4602 /* Convenience function that converts a NULL pointer to a "<null>"
4603    string, to pass to print routines.  */
4604
4605 static const char *
4606 string_or_null (const char *str)
4607 {
4608   return str != NULL ? str : "<null>";
4609 }
4610
4611 /* Check if a lookup_name_info built from
4612    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4613    index.  EXPECTED_LIST is the list of expected matches, in expected
4614    matching order.  If no match expected, then an empty list is
4615    specified.  Returns true on success.  On failure prints a warning
4616    indicating the file:line that failed, and returns false.  */
4617
4618 static bool
4619 check_match (const char *file, int line,
4620              mock_mapped_index &mock_index,
4621              const char *name, symbol_name_match_type match_type,
4622              bool completion_mode,
4623              std::initializer_list<const char *> expected_list)
4624 {
4625   lookup_name_info lookup_name (name, match_type, completion_mode);
4626
4627   bool matched = true;
4628
4629   auto mismatch = [&] (const char *expected_str,
4630                        const char *got)
4631   {
4632     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4633                "expected=\"%s\", got=\"%s\"\n"),
4634              file, line,
4635              (match_type == symbol_name_match_type::FULL
4636               ? "FULL" : "WILD"),
4637              name, string_or_null (expected_str), string_or_null (got));
4638     matched = false;
4639   };
4640
4641   auto expected_it = expected_list.begin ();
4642   auto expected_end = expected_list.end ();
4643
4644   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4645                                       NULL, ALL_DOMAIN,
4646                                       [&] (offset_type idx)
4647   {
4648     const char *matched_name = mock_index.symbol_name_at (idx);
4649     const char *expected_str
4650       = expected_it == expected_end ? NULL : *expected_it++;
4651
4652     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4653       mismatch (expected_str, matched_name);
4654   });
4655
4656   const char *expected_str
4657   = expected_it == expected_end ? NULL : *expected_it++;
4658   if (expected_str != NULL)
4659     mismatch (expected_str, NULL);
4660
4661   return matched;
4662 }
4663
4664 /* The symbols added to the mock mapped_index for testing (in
4665    canonical form).  */
4666 static const char *test_symbols[] = {
4667   "function",
4668   "std::bar",
4669   "std::zfunction",
4670   "std::zfunction2",
4671   "w1::w2",
4672   "ns::foo<char*>",
4673   "ns::foo<int>",
4674   "ns::foo<long>",
4675   "ns2::tmpl<int>::foo2",
4676   "(anonymous namespace)::A::B::C",
4677
4678   /* These are used to check that the increment-last-char in the
4679      matching algorithm for completion doesn't match "t1_fund" when
4680      completing "t1_func".  */
4681   "t1_func",
4682   "t1_func1",
4683   "t1_fund",
4684   "t1_fund1",
4685
4686   /* A UTF-8 name with multi-byte sequences to make sure that
4687      cp-name-parser understands this as a single identifier ("função"
4688      is "function" in PT).  */
4689   u8"u8função",
4690
4691   /* \377 (0xff) is Latin1 'ÿ'.  */
4692   "yfunc\377",
4693
4694   /* \377 (0xff) is Latin1 'ÿ'.  */
4695   "\377",
4696   "\377\377123",
4697
4698   /* A name with all sorts of complications.  Starts with "z" to make
4699      it easier for the completion tests below.  */
4700 #define Z_SYM_NAME \
4701   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4702     "::tuple<(anonymous namespace)::ui*, " \
4703     "std::default_delete<(anonymous namespace)::ui>, void>"
4704
4705   Z_SYM_NAME
4706 };
4707
4708 /* Returns true if the mapped_index_base::find_name_component_bounds
4709    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4710    in completion mode.  */
4711
4712 static bool
4713 check_find_bounds_finds (mapped_index_base &index,
4714                          const char *search_name,
4715                          gdb::array_view<const char *> expected_syms)
4716 {
4717   lookup_name_info lookup_name (search_name,
4718                                 symbol_name_match_type::FULL, true);
4719
4720   auto bounds = index.find_name_components_bounds (lookup_name);
4721
4722   size_t distance = std::distance (bounds.first, bounds.second);
4723   if (distance != expected_syms.size ())
4724     return false;
4725
4726   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4727     {
4728       auto nc_elem = bounds.first + exp_elem;
4729       const char *qualified = index.symbol_name_at (nc_elem->idx);
4730       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4731         return false;
4732     }
4733
4734   return true;
4735 }
4736
4737 /* Test the lower-level mapped_index::find_name_component_bounds
4738    method.  */
4739
4740 static void
4741 test_mapped_index_find_name_component_bounds ()
4742 {
4743   mock_mapped_index mock_index (test_symbols);
4744
4745   mock_index.build_name_components ();
4746
4747   /* Test the lower-level mapped_index::find_name_component_bounds
4748      method in completion mode.  */
4749   {
4750     static const char *expected_syms[] = {
4751       "t1_func",
4752       "t1_func1",
4753     };
4754
4755     SELF_CHECK (check_find_bounds_finds (mock_index,
4756                                          "t1_func", expected_syms));
4757   }
4758
4759   /* Check that the increment-last-char in the name matching algorithm
4760      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4761   {
4762     static const char *expected_syms1[] = {
4763       "\377",
4764       "\377\377123",
4765     };
4766     SELF_CHECK (check_find_bounds_finds (mock_index,
4767                                          "\377", expected_syms1));
4768
4769     static const char *expected_syms2[] = {
4770       "\377\377123",
4771     };
4772     SELF_CHECK (check_find_bounds_finds (mock_index,
4773                                          "\377\377", expected_syms2));
4774   }
4775 }
4776
4777 /* Test dw2_expand_symtabs_matching_symbol.  */
4778
4779 static void
4780 test_dw2_expand_symtabs_matching_symbol ()
4781 {
4782   mock_mapped_index mock_index (test_symbols);
4783
4784   /* We let all tests run until the end even if some fails, for debug
4785      convenience.  */
4786   bool any_mismatch = false;
4787
4788   /* Create the expected symbols list (an initializer_list).  Needed
4789      because lists have commas, and we need to pass them to CHECK,
4790      which is a macro.  */
4791 #define EXPECT(...) { __VA_ARGS__ }
4792
4793   /* Wrapper for check_match that passes down the current
4794      __FILE__/__LINE__.  */
4795 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4796   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4797                                 mock_index,                             \
4798                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4799                                 EXPECTED_LIST)
4800
4801   /* Identity checks.  */
4802   for (const char *sym : test_symbols)
4803     {
4804       /* Should be able to match all existing symbols.  */
4805       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4806                    EXPECT (sym));
4807
4808       /* Should be able to match all existing symbols with
4809          parameters.  */
4810       std::string with_params = std::string (sym) + "(int)";
4811       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4812                    EXPECT (sym));
4813
4814       /* Should be able to match all existing symbols with
4815          parameters and qualifiers.  */
4816       with_params = std::string (sym) + " ( int ) const";
4817       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4818                    EXPECT (sym));
4819
4820       /* This should really find sym, but cp-name-parser.y doesn't
4821          know about lvalue/rvalue qualifiers yet.  */
4822       with_params = std::string (sym) + " ( int ) &&";
4823       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4824                    {});
4825     }
4826
4827   /* Check that the name matching algorithm for completion doesn't get
4828      confused with Latin1 'ÿ' / 0xff.  */
4829   {
4830     static const char str[] = "\377";
4831     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4832                  EXPECT ("\377", "\377\377123"));
4833   }
4834
4835   /* Check that the increment-last-char in the matching algorithm for
4836      completion doesn't match "t1_fund" when completing "t1_func".  */
4837   {
4838     static const char str[] = "t1_func";
4839     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4840                  EXPECT ("t1_func", "t1_func1"));
4841   }
4842
4843   /* Check that completion mode works at each prefix of the expected
4844      symbol name.  */
4845   {
4846     static const char str[] = "function(int)";
4847     size_t len = strlen (str);
4848     std::string lookup;
4849
4850     for (size_t i = 1; i < len; i++)
4851       {
4852         lookup.assign (str, i);
4853         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4854                      EXPECT ("function"));
4855       }
4856   }
4857
4858   /* While "w" is a prefix of both components, the match function
4859      should still only be called once.  */
4860   {
4861     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4862                  EXPECT ("w1::w2"));
4863     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4864                  EXPECT ("w1::w2"));
4865   }
4866
4867   /* Same, with a "complicated" symbol.  */
4868   {
4869     static const char str[] = Z_SYM_NAME;
4870     size_t len = strlen (str);
4871     std::string lookup;
4872
4873     for (size_t i = 1; i < len; i++)
4874       {
4875         lookup.assign (str, i);
4876         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4877                      EXPECT (Z_SYM_NAME));
4878       }
4879   }
4880
4881   /* In FULL mode, an incomplete symbol doesn't match.  */
4882   {
4883     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4884                  {});
4885   }
4886
4887   /* A complete symbol with parameters matches any overload, since the
4888      index has no overload info.  */
4889   {
4890     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4891                  EXPECT ("std::zfunction", "std::zfunction2"));
4892     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4893                  EXPECT ("std::zfunction", "std::zfunction2"));
4894     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4895                  EXPECT ("std::zfunction", "std::zfunction2"));
4896   }
4897
4898   /* Check that whitespace is ignored appropriately.  A symbol with a
4899      template argument list. */
4900   {
4901     static const char expected[] = "ns::foo<int>";
4902     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4903                  EXPECT (expected));
4904     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4905                  EXPECT (expected));
4906   }
4907
4908   /* Check that whitespace is ignored appropriately.  A symbol with a
4909      template argument list that includes a pointer.  */
4910   {
4911     static const char expected[] = "ns::foo<char*>";
4912     /* Try both completion and non-completion modes.  */
4913     static const bool completion_mode[2] = {false, true};
4914     for (size_t i = 0; i < 2; i++)
4915       {
4916         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4917                      completion_mode[i], EXPECT (expected));
4918         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4919                      completion_mode[i], EXPECT (expected));
4920
4921         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4922                      completion_mode[i], EXPECT (expected));
4923         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4924                      completion_mode[i], EXPECT (expected));
4925       }
4926   }
4927
4928   {
4929     /* Check method qualifiers are ignored.  */
4930     static const char expected[] = "ns::foo<char*>";
4931     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4932                  symbol_name_match_type::FULL, true, EXPECT (expected));
4933     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4934                  symbol_name_match_type::FULL, true, EXPECT (expected));
4935     CHECK_MATCH ("foo < char * >  ( int ) const",
4936                  symbol_name_match_type::WILD, true, EXPECT (expected));
4937     CHECK_MATCH ("foo < char * >  ( int ) &&",
4938                  symbol_name_match_type::WILD, true, EXPECT (expected));
4939   }
4940
4941   /* Test lookup names that don't match anything.  */
4942   {
4943     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4944                  {});
4945
4946     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4947                  {});
4948   }
4949
4950   /* Some wild matching tests, exercising "(anonymous namespace)",
4951      which should not be confused with a parameter list.  */
4952   {
4953     static const char *syms[] = {
4954       "A::B::C",
4955       "B::C",
4956       "C",
4957       "A :: B :: C ( int )",
4958       "B :: C ( int )",
4959       "C ( int )",
4960     };
4961
4962     for (const char *s : syms)
4963       {
4964         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4965                      EXPECT ("(anonymous namespace)::A::B::C"));
4966       }
4967   }
4968
4969   {
4970     static const char expected[] = "ns2::tmpl<int>::foo2";
4971     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4972                  EXPECT (expected));
4973     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4974                  EXPECT (expected));
4975   }
4976
4977   SELF_CHECK (!any_mismatch);
4978
4979 #undef EXPECT
4980 #undef CHECK_MATCH
4981 }
4982
4983 static void
4984 run_test ()
4985 {
4986   test_mapped_index_find_name_component_bounds ();
4987   test_dw2_expand_symtabs_matching_symbol ();
4988 }
4989
4990 }} // namespace selftests::dw2_expand_symtabs_matching
4991
4992 #endif /* GDB_SELF_TEST */
4993
4994 /* If FILE_MATCHER is NULL or if PER_CU has
4995    dwarf2_per_cu_quick_data::MARK set (see
4996    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4997    EXPANSION_NOTIFY on it.  */
4998
4999 static void
5000 dw2_expand_symtabs_matching_one
5001   (struct dwarf2_per_cu_data *per_cu,
5002    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5003    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5004 {
5005   if (file_matcher == NULL || per_cu->v.quick->mark)
5006     {
5007       bool symtab_was_null
5008         = (per_cu->v.quick->compunit_symtab == NULL);
5009
5010       dw2_instantiate_symtab (per_cu, false);
5011
5012       if (expansion_notify != NULL
5013           && symtab_was_null
5014           && per_cu->v.quick->compunit_symtab != NULL)
5015         expansion_notify (per_cu->v.quick->compunit_symtab);
5016     }
5017 }
5018
5019 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5020    matched, to expand corresponding CUs that were marked.  IDX is the
5021    index of the symbol name that matched.  */
5022
5023 static void
5024 dw2_expand_marked_cus
5025   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5026    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5027    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5028    search_domain kind)
5029 {
5030   offset_type *vec, vec_len, vec_idx;
5031   bool global_seen = false;
5032   mapped_index &index = *dwarf2_per_objfile->index_table;
5033
5034   vec = (offset_type *) (index.constant_pool
5035                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5036   vec_len = MAYBE_SWAP (vec[0]);
5037   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5038     {
5039       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5040       /* This value is only valid for index versions >= 7.  */
5041       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5042       gdb_index_symbol_kind symbol_kind =
5043         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5044       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5045       /* Only check the symbol attributes if they're present.
5046          Indices prior to version 7 don't record them,
5047          and indices >= 7 may elide them for certain symbols
5048          (gold does this).  */
5049       int attrs_valid =
5050         (index.version >= 7
5051          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5052
5053       /* Work around gold/15646.  */
5054       if (attrs_valid)
5055         {
5056           if (!is_static && global_seen)
5057             continue;
5058           if (!is_static)
5059             global_seen = true;
5060         }
5061
5062       /* Only check the symbol's kind if it has one.  */
5063       if (attrs_valid)
5064         {
5065           switch (kind)
5066             {
5067             case VARIABLES_DOMAIN:
5068               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5069                 continue;
5070               break;
5071             case FUNCTIONS_DOMAIN:
5072               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5073                 continue;
5074               break;
5075             case TYPES_DOMAIN:
5076               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5077                 continue;
5078               break;
5079             default:
5080               break;
5081             }
5082         }
5083
5084       /* Don't crash on bad data.  */
5085       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5086                        + dwarf2_per_objfile->all_type_units.size ()))
5087         {
5088           complaint (_(".gdb_index entry has bad CU index"
5089                        " [in module %s]"),
5090                        objfile_name (dwarf2_per_objfile->objfile));
5091           continue;
5092         }
5093
5094       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5095       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5096                                        expansion_notify);
5097     }
5098 }
5099
5100 /* If FILE_MATCHER is non-NULL, set all the
5101    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5102    that match FILE_MATCHER.  */
5103
5104 static void
5105 dw_expand_symtabs_matching_file_matcher
5106   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5107    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5108 {
5109   if (file_matcher == NULL)
5110     return;
5111
5112   objfile *const objfile = dwarf2_per_objfile->objfile;
5113
5114   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5115                                             htab_eq_pointer,
5116                                             NULL, xcalloc, xfree));
5117   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5118                                                 htab_eq_pointer,
5119                                                 NULL, xcalloc, xfree));
5120
5121   /* The rule is CUs specify all the files, including those used by
5122      any TU, so there's no need to scan TUs here.  */
5123
5124   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5125     {
5126       QUIT;
5127
5128       per_cu->v.quick->mark = 0;
5129
5130       /* We only need to look at symtabs not already expanded.  */
5131       if (per_cu->v.quick->compunit_symtab)
5132         continue;
5133
5134       quick_file_names *file_data = dw2_get_file_names (per_cu);
5135       if (file_data == NULL)
5136         continue;
5137
5138       if (htab_find (visited_not_found.get (), file_data) != NULL)
5139         continue;
5140       else if (htab_find (visited_found.get (), file_data) != NULL)
5141         {
5142           per_cu->v.quick->mark = 1;
5143           continue;
5144         }
5145
5146       for (int j = 0; j < file_data->num_file_names; ++j)
5147         {
5148           const char *this_real_name;
5149
5150           if (file_matcher (file_data->file_names[j], false))
5151             {
5152               per_cu->v.quick->mark = 1;
5153               break;
5154             }
5155
5156           /* Before we invoke realpath, which can get expensive when many
5157              files are involved, do a quick comparison of the basenames.  */
5158           if (!basenames_may_differ
5159               && !file_matcher (lbasename (file_data->file_names[j]),
5160                                 true))
5161             continue;
5162
5163           this_real_name = dw2_get_real_path (objfile, file_data, j);
5164           if (file_matcher (this_real_name, false))
5165             {
5166               per_cu->v.quick->mark = 1;
5167               break;
5168             }
5169         }
5170
5171       void **slot = htab_find_slot (per_cu->v.quick->mark
5172                                     ? visited_found.get ()
5173                                     : visited_not_found.get (),
5174                                     file_data, INSERT);
5175       *slot = file_data;
5176     }
5177 }
5178
5179 static void
5180 dw2_expand_symtabs_matching
5181   (struct objfile *objfile,
5182    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5183    const lookup_name_info &lookup_name,
5184    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5185    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5186    enum search_domain kind)
5187 {
5188   struct dwarf2_per_objfile *dwarf2_per_objfile
5189     = get_dwarf2_per_objfile (objfile);
5190
5191   /* index_table is NULL if OBJF_READNOW.  */
5192   if (!dwarf2_per_objfile->index_table)
5193     return;
5194
5195   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5196
5197   mapped_index &index = *dwarf2_per_objfile->index_table;
5198
5199   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5200                                       symbol_matcher,
5201                                       kind, [&] (offset_type idx)
5202     {
5203       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5204                              expansion_notify, kind);
5205     });
5206 }
5207
5208 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5209    symtab.  */
5210
5211 static struct compunit_symtab *
5212 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5213                                           CORE_ADDR pc)
5214 {
5215   int i;
5216
5217   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5218       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5219     return cust;
5220
5221   if (cust->includes == NULL)
5222     return NULL;
5223
5224   for (i = 0; cust->includes[i]; ++i)
5225     {
5226       struct compunit_symtab *s = cust->includes[i];
5227
5228       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5229       if (s != NULL)
5230         return s;
5231     }
5232
5233   return NULL;
5234 }
5235
5236 static struct compunit_symtab *
5237 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5238                                   struct bound_minimal_symbol msymbol,
5239                                   CORE_ADDR pc,
5240                                   struct obj_section *section,
5241                                   int warn_if_readin)
5242 {
5243   struct dwarf2_per_cu_data *data;
5244   struct compunit_symtab *result;
5245
5246   if (!objfile->psymtabs_addrmap)
5247     return NULL;
5248
5249   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5250                                  SECT_OFF_TEXT (objfile));
5251   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5252                                                      pc - baseaddr);
5253   if (!data)
5254     return NULL;
5255
5256   if (warn_if_readin && data->v.quick->compunit_symtab)
5257     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5258              paddress (get_objfile_arch (objfile), pc));
5259
5260   result
5261     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5262                                                                         false),
5263                                                 pc);
5264   gdb_assert (result != NULL);
5265   return result;
5266 }
5267
5268 static void
5269 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5270                           void *data, int need_fullname)
5271 {
5272   struct dwarf2_per_objfile *dwarf2_per_objfile
5273     = get_dwarf2_per_objfile (objfile);
5274
5275   if (!dwarf2_per_objfile->filenames_cache)
5276     {
5277       dwarf2_per_objfile->filenames_cache.emplace ();
5278
5279       htab_up visited (htab_create_alloc (10,
5280                                           htab_hash_pointer, htab_eq_pointer,
5281                                           NULL, xcalloc, xfree));
5282
5283       /* The rule is CUs specify all the files, including those used
5284          by any TU, so there's no need to scan TUs here.  We can
5285          ignore file names coming from already-expanded CUs.  */
5286
5287       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5288         {
5289           if (per_cu->v.quick->compunit_symtab)
5290             {
5291               void **slot = htab_find_slot (visited.get (),
5292                                             per_cu->v.quick->file_names,
5293                                             INSERT);
5294
5295               *slot = per_cu->v.quick->file_names;
5296             }
5297         }
5298
5299       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5300         {
5301           /* We only need to look at symtabs not already expanded.  */
5302           if (per_cu->v.quick->compunit_symtab)
5303             continue;
5304
5305           quick_file_names *file_data = dw2_get_file_names (per_cu);
5306           if (file_data == NULL)
5307             continue;
5308
5309           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5310           if (*slot)
5311             {
5312               /* Already visited.  */
5313               continue;
5314             }
5315           *slot = file_data;
5316
5317           for (int j = 0; j < file_data->num_file_names; ++j)
5318             {
5319               const char *filename = file_data->file_names[j];
5320               dwarf2_per_objfile->filenames_cache->seen (filename);
5321             }
5322         }
5323     }
5324
5325   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5326     {
5327       gdb::unique_xmalloc_ptr<char> this_real_name;
5328
5329       if (need_fullname)
5330         this_real_name = gdb_realpath (filename);
5331       (*fun) (filename, this_real_name.get (), data);
5332     });
5333 }
5334
5335 static int
5336 dw2_has_symbols (struct objfile *objfile)
5337 {
5338   return 1;
5339 }
5340
5341 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5342 {
5343   dw2_has_symbols,
5344   dw2_find_last_source_symtab,
5345   dw2_forget_cached_source_info,
5346   dw2_map_symtabs_matching_filename,
5347   dw2_lookup_symbol,
5348   dw2_print_stats,
5349   dw2_dump,
5350   dw2_expand_symtabs_for_function,
5351   dw2_expand_all_symtabs,
5352   dw2_expand_symtabs_with_fullname,
5353   dw2_map_matching_symbols,
5354   dw2_expand_symtabs_matching,
5355   dw2_find_pc_sect_compunit_symtab,
5356   NULL,
5357   dw2_map_symbol_filenames
5358 };
5359
5360 /* DWARF-5 debug_names reader.  */
5361
5362 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5363 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5364
5365 /* A helper function that reads the .debug_names section in SECTION
5366    and fills in MAP.  FILENAME is the name of the file containing the
5367    section; it is used for error reporting.
5368
5369    Returns true if all went well, false otherwise.  */
5370
5371 static bool
5372 read_debug_names_from_section (struct objfile *objfile,
5373                                const char *filename,
5374                                struct dwarf2_section_info *section,
5375                                mapped_debug_names &map)
5376 {
5377   if (dwarf2_section_empty_p (section))
5378     return false;
5379
5380   /* Older elfutils strip versions could keep the section in the main
5381      executable while splitting it for the separate debug info file.  */
5382   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5383     return false;
5384
5385   dwarf2_read_section (objfile, section);
5386
5387   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5388
5389   const gdb_byte *addr = section->buffer;
5390
5391   bfd *const abfd = get_section_bfd_owner (section);
5392
5393   unsigned int bytes_read;
5394   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5395   addr += bytes_read;
5396
5397   map.dwarf5_is_dwarf64 = bytes_read != 4;
5398   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5399   if (bytes_read + length != section->size)
5400     {
5401       /* There may be multiple per-CU indices.  */
5402       warning (_("Section .debug_names in %s length %s does not match "
5403                  "section length %s, ignoring .debug_names."),
5404                filename, plongest (bytes_read + length),
5405                pulongest (section->size));
5406       return false;
5407     }
5408
5409   /* The version number.  */
5410   uint16_t version = read_2_bytes (abfd, addr);
5411   addr += 2;
5412   if (version != 5)
5413     {
5414       warning (_("Section .debug_names in %s has unsupported version %d, "
5415                  "ignoring .debug_names."),
5416                filename, version);
5417       return false;
5418     }
5419
5420   /* Padding.  */
5421   uint16_t padding = read_2_bytes (abfd, addr);
5422   addr += 2;
5423   if (padding != 0)
5424     {
5425       warning (_("Section .debug_names in %s has unsupported padding %d, "
5426                  "ignoring .debug_names."),
5427                filename, padding);
5428       return false;
5429     }
5430
5431   /* comp_unit_count - The number of CUs in the CU list.  */
5432   map.cu_count = read_4_bytes (abfd, addr);
5433   addr += 4;
5434
5435   /* local_type_unit_count - The number of TUs in the local TU
5436      list.  */
5437   map.tu_count = read_4_bytes (abfd, addr);
5438   addr += 4;
5439
5440   /* foreign_type_unit_count - The number of TUs in the foreign TU
5441      list.  */
5442   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5443   addr += 4;
5444   if (foreign_tu_count != 0)
5445     {
5446       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5447                  "ignoring .debug_names."),
5448                filename, static_cast<unsigned long> (foreign_tu_count));
5449       return false;
5450     }
5451
5452   /* bucket_count - The number of hash buckets in the hash lookup
5453      table.  */
5454   map.bucket_count = read_4_bytes (abfd, addr);
5455   addr += 4;
5456
5457   /* name_count - The number of unique names in the index.  */
5458   map.name_count = read_4_bytes (abfd, addr);
5459   addr += 4;
5460
5461   /* abbrev_table_size - The size in bytes of the abbreviations
5462      table.  */
5463   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5464   addr += 4;
5465
5466   /* augmentation_string_size - The size in bytes of the augmentation
5467      string.  This value is rounded up to a multiple of 4.  */
5468   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5469   addr += 4;
5470   map.augmentation_is_gdb = ((augmentation_string_size
5471                               == sizeof (dwarf5_augmentation))
5472                              && memcmp (addr, dwarf5_augmentation,
5473                                         sizeof (dwarf5_augmentation)) == 0);
5474   augmentation_string_size += (-augmentation_string_size) & 3;
5475   addr += augmentation_string_size;
5476
5477   /* List of CUs */
5478   map.cu_table_reordered = addr;
5479   addr += map.cu_count * map.offset_size;
5480
5481   /* List of Local TUs */
5482   map.tu_table_reordered = addr;
5483   addr += map.tu_count * map.offset_size;
5484
5485   /* Hash Lookup Table */
5486   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5487   addr += map.bucket_count * 4;
5488   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5489   addr += map.name_count * 4;
5490
5491   /* Name Table */
5492   map.name_table_string_offs_reordered = addr;
5493   addr += map.name_count * map.offset_size;
5494   map.name_table_entry_offs_reordered = addr;
5495   addr += map.name_count * map.offset_size;
5496
5497   const gdb_byte *abbrev_table_start = addr;
5498   for (;;)
5499     {
5500       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5501       addr += bytes_read;
5502       if (index_num == 0)
5503         break;
5504
5505       const auto insertpair
5506         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5507       if (!insertpair.second)
5508         {
5509           warning (_("Section .debug_names in %s has duplicate index %s, "
5510                      "ignoring .debug_names."),
5511                    filename, pulongest (index_num));
5512           return false;
5513         }
5514       mapped_debug_names::index_val &indexval = insertpair.first->second;
5515       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5516       addr += bytes_read;
5517
5518       for (;;)
5519         {
5520           mapped_debug_names::index_val::attr attr;
5521           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5522           addr += bytes_read;
5523           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5524           addr += bytes_read;
5525           if (attr.form == DW_FORM_implicit_const)
5526             {
5527               attr.implicit_const = read_signed_leb128 (abfd, addr,
5528                                                         &bytes_read);
5529               addr += bytes_read;
5530             }
5531           if (attr.dw_idx == 0 && attr.form == 0)
5532             break;
5533           indexval.attr_vec.push_back (std::move (attr));
5534         }
5535     }
5536   if (addr != abbrev_table_start + abbrev_table_size)
5537     {
5538       warning (_("Section .debug_names in %s has abbreviation_table "
5539                  "of size %zu vs. written as %u, ignoring .debug_names."),
5540                filename, addr - abbrev_table_start, abbrev_table_size);
5541       return false;
5542     }
5543   map.entry_pool = addr;
5544
5545   return true;
5546 }
5547
5548 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5549    list.  */
5550
5551 static void
5552 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5553                                   const mapped_debug_names &map,
5554                                   dwarf2_section_info &section,
5555                                   bool is_dwz)
5556 {
5557   sect_offset sect_off_prev;
5558   for (uint32_t i = 0; i <= map.cu_count; ++i)
5559     {
5560       sect_offset sect_off_next;
5561       if (i < map.cu_count)
5562         {
5563           sect_off_next
5564             = (sect_offset) (extract_unsigned_integer
5565                              (map.cu_table_reordered + i * map.offset_size,
5566                               map.offset_size,
5567                               map.dwarf5_byte_order));
5568         }
5569       else
5570         sect_off_next = (sect_offset) section.size;
5571       if (i >= 1)
5572         {
5573           const ULONGEST length = sect_off_next - sect_off_prev;
5574           dwarf2_per_cu_data *per_cu
5575             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5576                                          sect_off_prev, length);
5577           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5578         }
5579       sect_off_prev = sect_off_next;
5580     }
5581 }
5582
5583 /* Read the CU list from the mapped index, and use it to create all
5584    the CU objects for this dwarf2_per_objfile.  */
5585
5586 static void
5587 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5588                              const mapped_debug_names &map,
5589                              const mapped_debug_names &dwz_map)
5590 {
5591   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5592   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5593
5594   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5595                                     dwarf2_per_objfile->info,
5596                                     false /* is_dwz */);
5597
5598   if (dwz_map.cu_count == 0)
5599     return;
5600
5601   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5602   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5603                                     true /* is_dwz */);
5604 }
5605
5606 /* Read .debug_names.  If everything went ok, initialize the "quick"
5607    elements of all the CUs and return true.  Otherwise, return false.  */
5608
5609 static bool
5610 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5611 {
5612   std::unique_ptr<mapped_debug_names> map
5613     (new mapped_debug_names (dwarf2_per_objfile));
5614   mapped_debug_names dwz_map (dwarf2_per_objfile);
5615   struct objfile *objfile = dwarf2_per_objfile->objfile;
5616
5617   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5618                                       &dwarf2_per_objfile->debug_names,
5619                                       *map))
5620     return false;
5621
5622   /* Don't use the index if it's empty.  */
5623   if (map->name_count == 0)
5624     return false;
5625
5626   /* If there is a .dwz file, read it so we can get its CU list as
5627      well.  */
5628   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5629   if (dwz != NULL)
5630     {
5631       if (!read_debug_names_from_section (objfile,
5632                                           bfd_get_filename (dwz->dwz_bfd),
5633                                           &dwz->debug_names, dwz_map))
5634         {
5635           warning (_("could not read '.debug_names' section from %s; skipping"),
5636                    bfd_get_filename (dwz->dwz_bfd));
5637           return false;
5638         }
5639     }
5640
5641   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5642
5643   if (map->tu_count != 0)
5644     {
5645       /* We can only handle a single .debug_types when we have an
5646          index.  */
5647       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5648         return false;
5649
5650       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5651                                                 dwarf2_per_objfile->types, 0);
5652
5653       create_signatured_type_table_from_debug_names
5654         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5655     }
5656
5657   create_addrmap_from_aranges (dwarf2_per_objfile,
5658                                &dwarf2_per_objfile->debug_aranges);
5659
5660   dwarf2_per_objfile->debug_names_table = std::move (map);
5661   dwarf2_per_objfile->using_index = 1;
5662   dwarf2_per_objfile->quick_file_names_table =
5663     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5664
5665   return true;
5666 }
5667
5668 /* Type used to manage iterating over all CUs looking for a symbol for
5669    .debug_names.  */
5670
5671 class dw2_debug_names_iterator
5672 {
5673 public:
5674   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5675      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5676   dw2_debug_names_iterator (const mapped_debug_names &map,
5677                             bool want_specific_block,
5678                             block_enum block_index, domain_enum domain,
5679                             const char *name)
5680     : m_map (map), m_want_specific_block (want_specific_block),
5681       m_block_index (block_index), m_domain (domain),
5682       m_addr (find_vec_in_debug_names (map, name))
5683   {}
5684
5685   dw2_debug_names_iterator (const mapped_debug_names &map,
5686                             search_domain search, uint32_t namei)
5687     : m_map (map),
5688       m_search (search),
5689       m_addr (find_vec_in_debug_names (map, namei))
5690   {}
5691
5692   /* Return the next matching CU or NULL if there are no more.  */
5693   dwarf2_per_cu_data *next ();
5694
5695 private:
5696   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5697                                                   const char *name);
5698   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5699                                                   uint32_t namei);
5700
5701   /* The internalized form of .debug_names.  */
5702   const mapped_debug_names &m_map;
5703
5704   /* If true, only look for symbols that match BLOCK_INDEX.  */
5705   const bool m_want_specific_block = false;
5706
5707   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5708      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5709      value.  */
5710   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5711
5712   /* The kind of symbol we're looking for.  */
5713   const domain_enum m_domain = UNDEF_DOMAIN;
5714   const search_domain m_search = ALL_DOMAIN;
5715
5716   /* The list of CUs from the index entry of the symbol, or NULL if
5717      not found.  */
5718   const gdb_byte *m_addr;
5719 };
5720
5721 const char *
5722 mapped_debug_names::namei_to_name (uint32_t namei) const
5723 {
5724   const ULONGEST namei_string_offs
5725     = extract_unsigned_integer ((name_table_string_offs_reordered
5726                                  + namei * offset_size),
5727                                 offset_size,
5728                                 dwarf5_byte_order);
5729   return read_indirect_string_at_offset
5730     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5731 }
5732
5733 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5734    found, return pointer to its pool data.  If NAME cannot be found,
5735    return NULL.  */
5736
5737 const gdb_byte *
5738 dw2_debug_names_iterator::find_vec_in_debug_names
5739   (const mapped_debug_names &map, const char *name)
5740 {
5741   int (*cmp) (const char *, const char *);
5742
5743   if (current_language->la_language == language_cplus
5744       || current_language->la_language == language_fortran
5745       || current_language->la_language == language_d)
5746     {
5747       /* NAME is already canonical.  Drop any qualifiers as
5748          .debug_names does not contain any.  */
5749
5750       if (strchr (name, '(') != NULL)
5751         {
5752           gdb::unique_xmalloc_ptr<char> without_params
5753             = cp_remove_params (name);
5754
5755           if (without_params != NULL)
5756             {
5757               name = without_params.get();
5758             }
5759         }
5760     }
5761
5762   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5763
5764   const uint32_t full_hash = dwarf5_djb_hash (name);
5765   uint32_t namei
5766     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5767                                 (map.bucket_table_reordered
5768                                  + (full_hash % map.bucket_count)), 4,
5769                                 map.dwarf5_byte_order);
5770   if (namei == 0)
5771     return NULL;
5772   --namei;
5773   if (namei >= map.name_count)
5774     {
5775       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5776                    "[in module %s]"),
5777                  namei, map.name_count,
5778                  objfile_name (map.dwarf2_per_objfile->objfile));
5779       return NULL;
5780     }
5781
5782   for (;;)
5783     {
5784       const uint32_t namei_full_hash
5785         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5786                                     (map.hash_table_reordered + namei), 4,
5787                                     map.dwarf5_byte_order);
5788       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5789         return NULL;
5790
5791       if (full_hash == namei_full_hash)
5792         {
5793           const char *const namei_string = map.namei_to_name (namei);
5794
5795 #if 0 /* An expensive sanity check.  */
5796           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5797             {
5798               complaint (_("Wrong .debug_names hash for string at index %u "
5799                            "[in module %s]"),
5800                          namei, objfile_name (dwarf2_per_objfile->objfile));
5801               return NULL;
5802             }
5803 #endif
5804
5805           if (cmp (namei_string, name) == 0)
5806             {
5807               const ULONGEST namei_entry_offs
5808                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5809                                              + namei * map.offset_size),
5810                                             map.offset_size, map.dwarf5_byte_order);
5811               return map.entry_pool + namei_entry_offs;
5812             }
5813         }
5814
5815       ++namei;
5816       if (namei >= map.name_count)
5817         return NULL;
5818     }
5819 }
5820
5821 const gdb_byte *
5822 dw2_debug_names_iterator::find_vec_in_debug_names
5823   (const mapped_debug_names &map, uint32_t namei)
5824 {
5825   if (namei >= map.name_count)
5826     {
5827       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5828                    "[in module %s]"),
5829                  namei, map.name_count,
5830                  objfile_name (map.dwarf2_per_objfile->objfile));
5831       return NULL;
5832     }
5833
5834   const ULONGEST namei_entry_offs
5835     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5836                                  + namei * map.offset_size),
5837                                 map.offset_size, map.dwarf5_byte_order);
5838   return map.entry_pool + namei_entry_offs;
5839 }
5840
5841 /* See dw2_debug_names_iterator.  */
5842
5843 dwarf2_per_cu_data *
5844 dw2_debug_names_iterator::next ()
5845 {
5846   if (m_addr == NULL)
5847     return NULL;
5848
5849   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5850   struct objfile *objfile = dwarf2_per_objfile->objfile;
5851   bfd *const abfd = objfile->obfd;
5852
5853  again:
5854
5855   unsigned int bytes_read;
5856   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5857   m_addr += bytes_read;
5858   if (abbrev == 0)
5859     return NULL;
5860
5861   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5862   if (indexval_it == m_map.abbrev_map.cend ())
5863     {
5864       complaint (_("Wrong .debug_names undefined abbrev code %s "
5865                    "[in module %s]"),
5866                  pulongest (abbrev), objfile_name (objfile));
5867       return NULL;
5868     }
5869   const mapped_debug_names::index_val &indexval = indexval_it->second;
5870   bool have_is_static = false;
5871   bool is_static;
5872   dwarf2_per_cu_data *per_cu = NULL;
5873   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5874     {
5875       ULONGEST ull;
5876       switch (attr.form)
5877         {
5878         case DW_FORM_implicit_const:
5879           ull = attr.implicit_const;
5880           break;
5881         case DW_FORM_flag_present:
5882           ull = 1;
5883           break;
5884         case DW_FORM_udata:
5885           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5886           m_addr += bytes_read;
5887           break;
5888         default:
5889           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5890                      dwarf_form_name (attr.form),
5891                      objfile_name (objfile));
5892           return NULL;
5893         }
5894       switch (attr.dw_idx)
5895         {
5896         case DW_IDX_compile_unit:
5897           /* Don't crash on bad data.  */
5898           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5899             {
5900               complaint (_(".debug_names entry has bad CU index %s"
5901                            " [in module %s]"),
5902                          pulongest (ull),
5903                          objfile_name (dwarf2_per_objfile->objfile));
5904               continue;
5905             }
5906           per_cu = dwarf2_per_objfile->get_cutu (ull);
5907           break;
5908         case DW_IDX_type_unit:
5909           /* Don't crash on bad data.  */
5910           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5911             {
5912               complaint (_(".debug_names entry has bad TU index %s"
5913                            " [in module %s]"),
5914                          pulongest (ull),
5915                          objfile_name (dwarf2_per_objfile->objfile));
5916               continue;
5917             }
5918           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5919           break;
5920         case DW_IDX_GNU_internal:
5921           if (!m_map.augmentation_is_gdb)
5922             break;
5923           have_is_static = true;
5924           is_static = true;
5925           break;
5926         case DW_IDX_GNU_external:
5927           if (!m_map.augmentation_is_gdb)
5928             break;
5929           have_is_static = true;
5930           is_static = false;
5931           break;
5932         }
5933     }
5934
5935   /* Skip if already read in.  */
5936   if (per_cu->v.quick->compunit_symtab)
5937     goto again;
5938
5939   /* Check static vs global.  */
5940   if (have_is_static)
5941     {
5942       const bool want_static = m_block_index != GLOBAL_BLOCK;
5943       if (m_want_specific_block && want_static != is_static)
5944         goto again;
5945     }
5946
5947   /* Match dw2_symtab_iter_next, symbol_kind
5948      and debug_names::psymbol_tag.  */
5949   switch (m_domain)
5950     {
5951     case VAR_DOMAIN:
5952       switch (indexval.dwarf_tag)
5953         {
5954         case DW_TAG_variable:
5955         case DW_TAG_subprogram:
5956         /* Some types are also in VAR_DOMAIN.  */
5957         case DW_TAG_typedef:
5958         case DW_TAG_structure_type:
5959           break;
5960         default:
5961           goto again;
5962         }
5963       break;
5964     case STRUCT_DOMAIN:
5965       switch (indexval.dwarf_tag)
5966         {
5967         case DW_TAG_typedef:
5968         case DW_TAG_structure_type:
5969           break;
5970         default:
5971           goto again;
5972         }
5973       break;
5974     case LABEL_DOMAIN:
5975       switch (indexval.dwarf_tag)
5976         {
5977         case 0:
5978         case DW_TAG_variable:
5979           break;
5980         default:
5981           goto again;
5982         }
5983       break;
5984     default:
5985       break;
5986     }
5987
5988   /* Match dw2_expand_symtabs_matching, symbol_kind and
5989      debug_names::psymbol_tag.  */
5990   switch (m_search)
5991     {
5992     case VARIABLES_DOMAIN:
5993       switch (indexval.dwarf_tag)
5994         {
5995         case DW_TAG_variable:
5996           break;
5997         default:
5998           goto again;
5999         }
6000       break;
6001     case FUNCTIONS_DOMAIN:
6002       switch (indexval.dwarf_tag)
6003         {
6004         case DW_TAG_subprogram:
6005           break;
6006         default:
6007           goto again;
6008         }
6009       break;
6010     case TYPES_DOMAIN:
6011       switch (indexval.dwarf_tag)
6012         {
6013         case DW_TAG_typedef:
6014         case DW_TAG_structure_type:
6015           break;
6016         default:
6017           goto again;
6018         }
6019       break;
6020     default:
6021       break;
6022     }
6023
6024   return per_cu;
6025 }
6026
6027 static struct compunit_symtab *
6028 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6029                                const char *name, domain_enum domain)
6030 {
6031   const block_enum block_index = static_cast<block_enum> (block_index_int);
6032   struct dwarf2_per_objfile *dwarf2_per_objfile
6033     = get_dwarf2_per_objfile (objfile);
6034
6035   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6036   if (!mapp)
6037     {
6038       /* index is NULL if OBJF_READNOW.  */
6039       return NULL;
6040     }
6041   const auto &map = *mapp;
6042
6043   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6044                                  block_index, domain, name);
6045
6046   struct compunit_symtab *stab_best = NULL;
6047   struct dwarf2_per_cu_data *per_cu;
6048   while ((per_cu = iter.next ()) != NULL)
6049     {
6050       struct symbol *sym, *with_opaque = NULL;
6051       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6052       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6053       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6054
6055       sym = block_find_symbol (block, name, domain,
6056                                block_find_non_opaque_type_preferred,
6057                                &with_opaque);
6058
6059       /* Some caution must be observed with overloaded functions and
6060          methods, since the index will not contain any overload
6061          information (but NAME might contain it).  */
6062
6063       if (sym != NULL
6064           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6065         return stab;
6066       if (with_opaque != NULL
6067           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6068         stab_best = stab;
6069
6070       /* Keep looking through other CUs.  */
6071     }
6072
6073   return stab_best;
6074 }
6075
6076 /* This dumps minimal information about .debug_names.  It is called
6077    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6078    uses this to verify that .debug_names has been loaded.  */
6079
6080 static void
6081 dw2_debug_names_dump (struct objfile *objfile)
6082 {
6083   struct dwarf2_per_objfile *dwarf2_per_objfile
6084     = get_dwarf2_per_objfile (objfile);
6085
6086   gdb_assert (dwarf2_per_objfile->using_index);
6087   printf_filtered (".debug_names:");
6088   if (dwarf2_per_objfile->debug_names_table)
6089     printf_filtered (" exists\n");
6090   else
6091     printf_filtered (" faked for \"readnow\"\n");
6092   printf_filtered ("\n");
6093 }
6094
6095 static void
6096 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6097                                              const char *func_name)
6098 {
6099   struct dwarf2_per_objfile *dwarf2_per_objfile
6100     = get_dwarf2_per_objfile (objfile);
6101
6102   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6103   if (dwarf2_per_objfile->debug_names_table)
6104     {
6105       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6106
6107       /* Note: It doesn't matter what we pass for block_index here.  */
6108       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6109                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6110
6111       struct dwarf2_per_cu_data *per_cu;
6112       while ((per_cu = iter.next ()) != NULL)
6113         dw2_instantiate_symtab (per_cu, false);
6114     }
6115 }
6116
6117 static void
6118 dw2_debug_names_expand_symtabs_matching
6119   (struct objfile *objfile,
6120    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6121    const lookup_name_info &lookup_name,
6122    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6123    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6124    enum search_domain kind)
6125 {
6126   struct dwarf2_per_objfile *dwarf2_per_objfile
6127     = get_dwarf2_per_objfile (objfile);
6128
6129   /* debug_names_table is NULL if OBJF_READNOW.  */
6130   if (!dwarf2_per_objfile->debug_names_table)
6131     return;
6132
6133   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6134
6135   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6136
6137   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6138                                       symbol_matcher,
6139                                       kind, [&] (offset_type namei)
6140     {
6141       /* The name was matched, now expand corresponding CUs that were
6142          marked.  */
6143       dw2_debug_names_iterator iter (map, kind, namei);
6144
6145       struct dwarf2_per_cu_data *per_cu;
6146       while ((per_cu = iter.next ()) != NULL)
6147         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6148                                          expansion_notify);
6149     });
6150 }
6151
6152 const struct quick_symbol_functions dwarf2_debug_names_functions =
6153 {
6154   dw2_has_symbols,
6155   dw2_find_last_source_symtab,
6156   dw2_forget_cached_source_info,
6157   dw2_map_symtabs_matching_filename,
6158   dw2_debug_names_lookup_symbol,
6159   dw2_print_stats,
6160   dw2_debug_names_dump,
6161   dw2_debug_names_expand_symtabs_for_function,
6162   dw2_expand_all_symtabs,
6163   dw2_expand_symtabs_with_fullname,
6164   dw2_map_matching_symbols,
6165   dw2_debug_names_expand_symtabs_matching,
6166   dw2_find_pc_sect_compunit_symtab,
6167   NULL,
6168   dw2_map_symbol_filenames
6169 };
6170
6171 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6172    to either a dwarf2_per_objfile or dwz_file object.  */
6173
6174 template <typename T>
6175 static gdb::array_view<const gdb_byte>
6176 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6177 {
6178   dwarf2_section_info *section = &section_owner->gdb_index;
6179
6180   if (dwarf2_section_empty_p (section))
6181     return {};
6182
6183   /* Older elfutils strip versions could keep the section in the main
6184      executable while splitting it for the separate debug info file.  */
6185   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6186     return {};
6187
6188   dwarf2_read_section (obj, section);
6189
6190   return {section->buffer, section->size};
6191 }
6192
6193 /* Lookup the index cache for the contents of the index associated to
6194    DWARF2_OBJ.  */
6195
6196 static gdb::array_view<const gdb_byte>
6197 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6198 {
6199   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6200   if (build_id == nullptr)
6201     return {};
6202
6203   return global_index_cache.lookup_gdb_index (build_id,
6204                                               &dwarf2_obj->index_cache_res);
6205 }
6206
6207 /* Same as the above, but for DWZ.  */
6208
6209 static gdb::array_view<const gdb_byte>
6210 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6211 {
6212   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6213   if (build_id == nullptr)
6214     return {};
6215
6216   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6217 }
6218
6219 /* See symfile.h.  */
6220
6221 bool
6222 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6223 {
6224   struct dwarf2_per_objfile *dwarf2_per_objfile
6225     = get_dwarf2_per_objfile (objfile);
6226
6227   /* If we're about to read full symbols, don't bother with the
6228      indices.  In this case we also don't care if some other debug
6229      format is making psymtabs, because they are all about to be
6230      expanded anyway.  */
6231   if ((objfile->flags & OBJF_READNOW))
6232     {
6233       dwarf2_per_objfile->using_index = 1;
6234       create_all_comp_units (dwarf2_per_objfile);
6235       create_all_type_units (dwarf2_per_objfile);
6236       dwarf2_per_objfile->quick_file_names_table
6237         = create_quick_file_names_table
6238             (dwarf2_per_objfile->all_comp_units.size ());
6239
6240       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6241                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6242         {
6243           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6244
6245           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6246                                             struct dwarf2_per_cu_quick_data);
6247         }
6248
6249       /* Return 1 so that gdb sees the "quick" functions.  However,
6250          these functions will be no-ops because we will have expanded
6251          all symtabs.  */
6252       *index_kind = dw_index_kind::GDB_INDEX;
6253       return true;
6254     }
6255
6256   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6257     {
6258       *index_kind = dw_index_kind::DEBUG_NAMES;
6259       return true;
6260     }
6261
6262   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6263                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6264                              get_gdb_index_contents_from_section<dwz_file>))
6265     {
6266       *index_kind = dw_index_kind::GDB_INDEX;
6267       return true;
6268     }
6269
6270   /* ... otherwise, try to find the index in the index cache.  */
6271   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6272                              get_gdb_index_contents_from_cache,
6273                              get_gdb_index_contents_from_cache_dwz))
6274     {
6275       global_index_cache.hit ();
6276       *index_kind = dw_index_kind::GDB_INDEX;
6277       return true;
6278     }
6279
6280   global_index_cache.miss ();
6281   return false;
6282 }
6283
6284 \f
6285
6286 /* Build a partial symbol table.  */
6287
6288 void
6289 dwarf2_build_psymtabs (struct objfile *objfile)
6290 {
6291   struct dwarf2_per_objfile *dwarf2_per_objfile
6292     = get_dwarf2_per_objfile (objfile);
6293
6294   if (objfile->global_psymbols.capacity () == 0
6295       && objfile->static_psymbols.capacity () == 0)
6296     init_psymbol_list (objfile, 1024);
6297
6298   TRY
6299     {
6300       /* This isn't really ideal: all the data we allocate on the
6301          objfile's obstack is still uselessly kept around.  However,
6302          freeing it seems unsafe.  */
6303       psymtab_discarder psymtabs (objfile);
6304       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6305       psymtabs.keep ();
6306
6307       /* (maybe) store an index in the cache.  */
6308       global_index_cache.store (dwarf2_per_objfile);
6309     }
6310   CATCH (except, RETURN_MASK_ERROR)
6311     {
6312       exception_print (gdb_stderr, except);
6313     }
6314   END_CATCH
6315 }
6316
6317 /* Return the total length of the CU described by HEADER.  */
6318
6319 static unsigned int
6320 get_cu_length (const struct comp_unit_head *header)
6321 {
6322   return header->initial_length_size + header->length;
6323 }
6324
6325 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6326
6327 static inline bool
6328 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6329 {
6330   sect_offset bottom = cu_header->sect_off;
6331   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6332
6333   return sect_off >= bottom && sect_off < top;
6334 }
6335
6336 /* Find the base address of the compilation unit for range lists and
6337    location lists.  It will normally be specified by DW_AT_low_pc.
6338    In DWARF-3 draft 4, the base address could be overridden by
6339    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6340    compilation units with discontinuous ranges.  */
6341
6342 static void
6343 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6344 {
6345   struct attribute *attr;
6346
6347   cu->base_known = 0;
6348   cu->base_address = 0;
6349
6350   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6351   if (attr)
6352     {
6353       cu->base_address = attr_value_as_address (attr);
6354       cu->base_known = 1;
6355     }
6356   else
6357     {
6358       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6359       if (attr)
6360         {
6361           cu->base_address = attr_value_as_address (attr);
6362           cu->base_known = 1;
6363         }
6364     }
6365 }
6366
6367 /* Read in the comp unit header information from the debug_info at info_ptr.
6368    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6369    NOTE: This leaves members offset, first_die_offset to be filled in
6370    by the caller.  */
6371
6372 static const gdb_byte *
6373 read_comp_unit_head (struct comp_unit_head *cu_header,
6374                      const gdb_byte *info_ptr,
6375                      struct dwarf2_section_info *section,
6376                      rcuh_kind section_kind)
6377 {
6378   int signed_addr;
6379   unsigned int bytes_read;
6380   const char *filename = get_section_file_name (section);
6381   bfd *abfd = get_section_bfd_owner (section);
6382
6383   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6384   cu_header->initial_length_size = bytes_read;
6385   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6386   info_ptr += bytes_read;
6387   cu_header->version = read_2_bytes (abfd, info_ptr);
6388   if (cu_header->version < 2 || cu_header->version > 5)
6389     error (_("Dwarf Error: wrong version in compilation unit header "
6390            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6391            cu_header->version, filename);
6392   info_ptr += 2;
6393   if (cu_header->version < 5)
6394     switch (section_kind)
6395       {
6396       case rcuh_kind::COMPILE:
6397         cu_header->unit_type = DW_UT_compile;
6398         break;
6399       case rcuh_kind::TYPE:
6400         cu_header->unit_type = DW_UT_type;
6401         break;
6402       default:
6403         internal_error (__FILE__, __LINE__,
6404                         _("read_comp_unit_head: invalid section_kind"));
6405       }
6406   else
6407     {
6408       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6409                                                  (read_1_byte (abfd, info_ptr));
6410       info_ptr += 1;
6411       switch (cu_header->unit_type)
6412         {
6413         case DW_UT_compile:
6414           if (section_kind != rcuh_kind::COMPILE)
6415             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6416                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6417                    filename);
6418           break;
6419         case DW_UT_type:
6420           section_kind = rcuh_kind::TYPE;
6421           break;
6422         default:
6423           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6424                  "(is %d, should be %d or %d) [in module %s]"),
6425                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6426         }
6427
6428       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6429       info_ptr += 1;
6430     }
6431   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6432                                                           cu_header,
6433                                                           &bytes_read);
6434   info_ptr += bytes_read;
6435   if (cu_header->version < 5)
6436     {
6437       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6438       info_ptr += 1;
6439     }
6440   signed_addr = bfd_get_sign_extend_vma (abfd);
6441   if (signed_addr < 0)
6442     internal_error (__FILE__, __LINE__,
6443                     _("read_comp_unit_head: dwarf from non elf file"));
6444   cu_header->signed_addr_p = signed_addr;
6445
6446   if (section_kind == rcuh_kind::TYPE)
6447     {
6448       LONGEST type_offset;
6449
6450       cu_header->signature = read_8_bytes (abfd, info_ptr);
6451       info_ptr += 8;
6452
6453       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6454       info_ptr += bytes_read;
6455       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6456       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6457         error (_("Dwarf Error: Too big type_offset in compilation unit "
6458                "header (is %s) [in module %s]"), plongest (type_offset),
6459                filename);
6460     }
6461
6462   return info_ptr;
6463 }
6464
6465 /* Helper function that returns the proper abbrev section for
6466    THIS_CU.  */
6467
6468 static struct dwarf2_section_info *
6469 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6470 {
6471   struct dwarf2_section_info *abbrev;
6472   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6473
6474   if (this_cu->is_dwz)
6475     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6476   else
6477     abbrev = &dwarf2_per_objfile->abbrev;
6478
6479   return abbrev;
6480 }
6481
6482 /* Subroutine of read_and_check_comp_unit_head and
6483    read_and_check_type_unit_head to simplify them.
6484    Perform various error checking on the header.  */
6485
6486 static void
6487 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6488                             struct comp_unit_head *header,
6489                             struct dwarf2_section_info *section,
6490                             struct dwarf2_section_info *abbrev_section)
6491 {
6492   const char *filename = get_section_file_name (section);
6493
6494   if (to_underlying (header->abbrev_sect_off)
6495       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6496     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6497            "(offset %s + 6) [in module %s]"),
6498            sect_offset_str (header->abbrev_sect_off),
6499            sect_offset_str (header->sect_off),
6500            filename);
6501
6502   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6503      avoid potential 32-bit overflow.  */
6504   if (((ULONGEST) header->sect_off + get_cu_length (header))
6505       > section->size)
6506     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6507            "(offset %s + 0) [in module %s]"),
6508            header->length, sect_offset_str (header->sect_off),
6509            filename);
6510 }
6511
6512 /* Read in a CU/TU header and perform some basic error checking.
6513    The contents of the header are stored in HEADER.
6514    The result is a pointer to the start of the first DIE.  */
6515
6516 static const gdb_byte *
6517 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6518                                struct comp_unit_head *header,
6519                                struct dwarf2_section_info *section,
6520                                struct dwarf2_section_info *abbrev_section,
6521                                const gdb_byte *info_ptr,
6522                                rcuh_kind section_kind)
6523 {
6524   const gdb_byte *beg_of_comp_unit = info_ptr;
6525
6526   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6527
6528   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6529
6530   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6531
6532   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6533                               abbrev_section);
6534
6535   return info_ptr;
6536 }
6537
6538 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6539
6540 static sect_offset
6541 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6542                     struct dwarf2_section_info *section,
6543                     sect_offset sect_off)
6544 {
6545   bfd *abfd = get_section_bfd_owner (section);
6546   const gdb_byte *info_ptr;
6547   unsigned int initial_length_size, offset_size;
6548   uint16_t version;
6549
6550   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6551   info_ptr = section->buffer + to_underlying (sect_off);
6552   read_initial_length (abfd, info_ptr, &initial_length_size);
6553   offset_size = initial_length_size == 4 ? 4 : 8;
6554   info_ptr += initial_length_size;
6555
6556   version = read_2_bytes (abfd, info_ptr);
6557   info_ptr += 2;
6558   if (version >= 5)
6559     {
6560       /* Skip unit type and address size.  */
6561       info_ptr += 2;
6562     }
6563
6564   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6565 }
6566
6567 /* Allocate a new partial symtab for file named NAME and mark this new
6568    partial symtab as being an include of PST.  */
6569
6570 static void
6571 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6572                                struct objfile *objfile)
6573 {
6574   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6575
6576   if (!IS_ABSOLUTE_PATH (subpst->filename))
6577     {
6578       /* It shares objfile->objfile_obstack.  */
6579       subpst->dirname = pst->dirname;
6580     }
6581
6582   subpst->dependencies
6583     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6584   subpst->dependencies[0] = pst;
6585   subpst->number_of_dependencies = 1;
6586
6587   subpst->globals_offset = 0;
6588   subpst->n_global_syms = 0;
6589   subpst->statics_offset = 0;
6590   subpst->n_static_syms = 0;
6591   subpst->compunit_symtab = NULL;
6592   subpst->read_symtab = pst->read_symtab;
6593   subpst->readin = 0;
6594
6595   /* No private part is necessary for include psymtabs.  This property
6596      can be used to differentiate between such include psymtabs and
6597      the regular ones.  */
6598   subpst->read_symtab_private = NULL;
6599 }
6600
6601 /* Read the Line Number Program data and extract the list of files
6602    included by the source file represented by PST.  Build an include
6603    partial symtab for each of these included files.  */
6604
6605 static void
6606 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6607                                struct die_info *die,
6608                                struct partial_symtab *pst)
6609 {
6610   line_header_up lh;
6611   struct attribute *attr;
6612
6613   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6614   if (attr)
6615     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6616   if (lh == NULL)
6617     return;  /* No linetable, so no includes.  */
6618
6619   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6620      that we pass in the raw text_low here; that is ok because we're
6621      only decoding the line table to make include partial symtabs, and
6622      so the addresses aren't really used.  */
6623   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6624                       pst->raw_text_low (), 1);
6625 }
6626
6627 static hashval_t
6628 hash_signatured_type (const void *item)
6629 {
6630   const struct signatured_type *sig_type
6631     = (const struct signatured_type *) item;
6632
6633   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6634   return sig_type->signature;
6635 }
6636
6637 static int
6638 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6639 {
6640   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6641   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6642
6643   return lhs->signature == rhs->signature;
6644 }
6645
6646 /* Allocate a hash table for signatured types.  */
6647
6648 static htab_t
6649 allocate_signatured_type_table (struct objfile *objfile)
6650 {
6651   return htab_create_alloc_ex (41,
6652                                hash_signatured_type,
6653                                eq_signatured_type,
6654                                NULL,
6655                                &objfile->objfile_obstack,
6656                                hashtab_obstack_allocate,
6657                                dummy_obstack_deallocate);
6658 }
6659
6660 /* A helper function to add a signatured type CU to a table.  */
6661
6662 static int
6663 add_signatured_type_cu_to_table (void **slot, void *datum)
6664 {
6665   struct signatured_type *sigt = (struct signatured_type *) *slot;
6666   std::vector<signatured_type *> *all_type_units
6667     = (std::vector<signatured_type *> *) datum;
6668
6669   all_type_units->push_back (sigt);
6670
6671   return 1;
6672 }
6673
6674 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6675    and fill them into TYPES_HTAB.  It will process only type units,
6676    therefore DW_UT_type.  */
6677
6678 static void
6679 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6680                               struct dwo_file *dwo_file,
6681                               dwarf2_section_info *section, htab_t &types_htab,
6682                               rcuh_kind section_kind)
6683 {
6684   struct objfile *objfile = dwarf2_per_objfile->objfile;
6685   struct dwarf2_section_info *abbrev_section;
6686   bfd *abfd;
6687   const gdb_byte *info_ptr, *end_ptr;
6688
6689   abbrev_section = (dwo_file != NULL
6690                     ? &dwo_file->sections.abbrev
6691                     : &dwarf2_per_objfile->abbrev);
6692
6693   if (dwarf_read_debug)
6694     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6695                         get_section_name (section),
6696                         get_section_file_name (abbrev_section));
6697
6698   dwarf2_read_section (objfile, section);
6699   info_ptr = section->buffer;
6700
6701   if (info_ptr == NULL)
6702     return;
6703
6704   /* We can't set abfd until now because the section may be empty or
6705      not present, in which case the bfd is unknown.  */
6706   abfd = get_section_bfd_owner (section);
6707
6708   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6709      because we don't need to read any dies: the signature is in the
6710      header.  */
6711
6712   end_ptr = info_ptr + section->size;
6713   while (info_ptr < end_ptr)
6714     {
6715       struct signatured_type *sig_type;
6716       struct dwo_unit *dwo_tu;
6717       void **slot;
6718       const gdb_byte *ptr = info_ptr;
6719       struct comp_unit_head header;
6720       unsigned int length;
6721
6722       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6723
6724       /* Initialize it due to a false compiler warning.  */
6725       header.signature = -1;
6726       header.type_cu_offset_in_tu = (cu_offset) -1;
6727
6728       /* We need to read the type's signature in order to build the hash
6729          table, but we don't need anything else just yet.  */
6730
6731       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6732                                            abbrev_section, ptr, section_kind);
6733
6734       length = get_cu_length (&header);
6735
6736       /* Skip dummy type units.  */
6737       if (ptr >= info_ptr + length
6738           || peek_abbrev_code (abfd, ptr) == 0
6739           || header.unit_type != DW_UT_type)
6740         {
6741           info_ptr += length;
6742           continue;
6743         }
6744
6745       if (types_htab == NULL)
6746         {
6747           if (dwo_file)
6748             types_htab = allocate_dwo_unit_table (objfile);
6749           else
6750             types_htab = allocate_signatured_type_table (objfile);
6751         }
6752
6753       if (dwo_file)
6754         {
6755           sig_type = NULL;
6756           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6757                                    struct dwo_unit);
6758           dwo_tu->dwo_file = dwo_file;
6759           dwo_tu->signature = header.signature;
6760           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6761           dwo_tu->section = section;
6762           dwo_tu->sect_off = sect_off;
6763           dwo_tu->length = length;
6764         }
6765       else
6766         {
6767           /* N.B.: type_offset is not usable if this type uses a DWO file.
6768              The real type_offset is in the DWO file.  */
6769           dwo_tu = NULL;
6770           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6771                                      struct signatured_type);
6772           sig_type->signature = header.signature;
6773           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6774           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6775           sig_type->per_cu.is_debug_types = 1;
6776           sig_type->per_cu.section = section;
6777           sig_type->per_cu.sect_off = sect_off;
6778           sig_type->per_cu.length = length;
6779         }
6780
6781       slot = htab_find_slot (types_htab,
6782                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6783                              INSERT);
6784       gdb_assert (slot != NULL);
6785       if (*slot != NULL)
6786         {
6787           sect_offset dup_sect_off;
6788
6789           if (dwo_file)
6790             {
6791               const struct dwo_unit *dup_tu
6792                 = (const struct dwo_unit *) *slot;
6793
6794               dup_sect_off = dup_tu->sect_off;
6795             }
6796           else
6797             {
6798               const struct signatured_type *dup_tu
6799                 = (const struct signatured_type *) *slot;
6800
6801               dup_sect_off = dup_tu->per_cu.sect_off;
6802             }
6803
6804           complaint (_("debug type entry at offset %s is duplicate to"
6805                        " the entry at offset %s, signature %s"),
6806                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6807                      hex_string (header.signature));
6808         }
6809       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6810
6811       if (dwarf_read_debug > 1)
6812         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6813                             sect_offset_str (sect_off),
6814                             hex_string (header.signature));
6815
6816       info_ptr += length;
6817     }
6818 }
6819
6820 /* Create the hash table of all entries in the .debug_types
6821    (or .debug_types.dwo) section(s).
6822    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6823    otherwise it is NULL.
6824
6825    The result is a pointer to the hash table or NULL if there are no types.
6826
6827    Note: This function processes DWO files only, not DWP files.  */
6828
6829 static void
6830 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6831                                struct dwo_file *dwo_file,
6832                                VEC (dwarf2_section_info_def) *types,
6833                                htab_t &types_htab)
6834 {
6835   int ix;
6836   struct dwarf2_section_info *section;
6837
6838   if (VEC_empty (dwarf2_section_info_def, types))
6839     return;
6840
6841   for (ix = 0;
6842        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6843        ++ix)
6844     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6845                                   types_htab, rcuh_kind::TYPE);
6846 }
6847
6848 /* Create the hash table of all entries in the .debug_types section,
6849    and initialize all_type_units.
6850    The result is zero if there is an error (e.g. missing .debug_types section),
6851    otherwise non-zero.  */
6852
6853 static int
6854 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6855 {
6856   htab_t types_htab = NULL;
6857
6858   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6859                                 &dwarf2_per_objfile->info, types_htab,
6860                                 rcuh_kind::COMPILE);
6861   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6862                                  dwarf2_per_objfile->types, types_htab);
6863   if (types_htab == NULL)
6864     {
6865       dwarf2_per_objfile->signatured_types = NULL;
6866       return 0;
6867     }
6868
6869   dwarf2_per_objfile->signatured_types = types_htab;
6870
6871   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6872   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6873
6874   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6875                           &dwarf2_per_objfile->all_type_units);
6876
6877   return 1;
6878 }
6879
6880 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6881    If SLOT is non-NULL, it is the entry to use in the hash table.
6882    Otherwise we find one.  */
6883
6884 static struct signatured_type *
6885 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6886                void **slot)
6887 {
6888   struct objfile *objfile = dwarf2_per_objfile->objfile;
6889
6890   if (dwarf2_per_objfile->all_type_units.size ()
6891       == dwarf2_per_objfile->all_type_units.capacity ())
6892     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6893
6894   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6895                                               struct signatured_type);
6896
6897   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6898   sig_type->signature = sig;
6899   sig_type->per_cu.is_debug_types = 1;
6900   if (dwarf2_per_objfile->using_index)
6901     {
6902       sig_type->per_cu.v.quick =
6903         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6904                         struct dwarf2_per_cu_quick_data);
6905     }
6906
6907   if (slot == NULL)
6908     {
6909       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6910                              sig_type, INSERT);
6911     }
6912   gdb_assert (*slot == NULL);
6913   *slot = sig_type;
6914   /* The rest of sig_type must be filled in by the caller.  */
6915   return sig_type;
6916 }
6917
6918 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6919    Fill in SIG_ENTRY with DWO_ENTRY.  */
6920
6921 static void
6922 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6923                                   struct signatured_type *sig_entry,
6924                                   struct dwo_unit *dwo_entry)
6925 {
6926   /* Make sure we're not clobbering something we don't expect to.  */
6927   gdb_assert (! sig_entry->per_cu.queued);
6928   gdb_assert (sig_entry->per_cu.cu == NULL);
6929   if (dwarf2_per_objfile->using_index)
6930     {
6931       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6932       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6933     }
6934   else
6935       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6936   gdb_assert (sig_entry->signature == dwo_entry->signature);
6937   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6938   gdb_assert (sig_entry->type_unit_group == NULL);
6939   gdb_assert (sig_entry->dwo_unit == NULL);
6940
6941   sig_entry->per_cu.section = dwo_entry->section;
6942   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6943   sig_entry->per_cu.length = dwo_entry->length;
6944   sig_entry->per_cu.reading_dwo_directly = 1;
6945   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6946   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6947   sig_entry->dwo_unit = dwo_entry;
6948 }
6949
6950 /* Subroutine of lookup_signatured_type.
6951    If we haven't read the TU yet, create the signatured_type data structure
6952    for a TU to be read in directly from a DWO file, bypassing the stub.
6953    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6954    using .gdb_index, then when reading a CU we want to stay in the DWO file
6955    containing that CU.  Otherwise we could end up reading several other DWO
6956    files (due to comdat folding) to process the transitive closure of all the
6957    mentioned TUs, and that can be slow.  The current DWO file will have every
6958    type signature that it needs.
6959    We only do this for .gdb_index because in the psymtab case we already have
6960    to read all the DWOs to build the type unit groups.  */
6961
6962 static struct signatured_type *
6963 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6964 {
6965   struct dwarf2_per_objfile *dwarf2_per_objfile
6966     = cu->per_cu->dwarf2_per_objfile;
6967   struct objfile *objfile = dwarf2_per_objfile->objfile;
6968   struct dwo_file *dwo_file;
6969   struct dwo_unit find_dwo_entry, *dwo_entry;
6970   struct signatured_type find_sig_entry, *sig_entry;
6971   void **slot;
6972
6973   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6974
6975   /* If TU skeletons have been removed then we may not have read in any
6976      TUs yet.  */
6977   if (dwarf2_per_objfile->signatured_types == NULL)
6978     {
6979       dwarf2_per_objfile->signatured_types
6980         = allocate_signatured_type_table (objfile);
6981     }
6982
6983   /* We only ever need to read in one copy of a signatured type.
6984      Use the global signatured_types array to do our own comdat-folding
6985      of types.  If this is the first time we're reading this TU, and
6986      the TU has an entry in .gdb_index, replace the recorded data from
6987      .gdb_index with this TU.  */
6988
6989   find_sig_entry.signature = sig;
6990   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6991                          &find_sig_entry, INSERT);
6992   sig_entry = (struct signatured_type *) *slot;
6993
6994   /* We can get here with the TU already read, *or* in the process of being
6995      read.  Don't reassign the global entry to point to this DWO if that's
6996      the case.  Also note that if the TU is already being read, it may not
6997      have come from a DWO, the program may be a mix of Fission-compiled
6998      code and non-Fission-compiled code.  */
6999
7000   /* Have we already tried to read this TU?
7001      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7002      needn't exist in the global table yet).  */
7003   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7004     return sig_entry;
7005
7006   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7007      dwo_unit of the TU itself.  */
7008   dwo_file = cu->dwo_unit->dwo_file;
7009
7010   /* Ok, this is the first time we're reading this TU.  */
7011   if (dwo_file->tus == NULL)
7012     return NULL;
7013   find_dwo_entry.signature = sig;
7014   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7015   if (dwo_entry == NULL)
7016     return NULL;
7017
7018   /* If the global table doesn't have an entry for this TU, add one.  */
7019   if (sig_entry == NULL)
7020     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7021
7022   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7023   sig_entry->per_cu.tu_read = 1;
7024   return sig_entry;
7025 }
7026
7027 /* Subroutine of lookup_signatured_type.
7028    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7029    then try the DWP file.  If the TU stub (skeleton) has been removed then
7030    it won't be in .gdb_index.  */
7031
7032 static struct signatured_type *
7033 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7034 {
7035   struct dwarf2_per_objfile *dwarf2_per_objfile
7036     = cu->per_cu->dwarf2_per_objfile;
7037   struct objfile *objfile = dwarf2_per_objfile->objfile;
7038   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7039   struct dwo_unit *dwo_entry;
7040   struct signatured_type find_sig_entry, *sig_entry;
7041   void **slot;
7042
7043   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7044   gdb_assert (dwp_file != NULL);
7045
7046   /* If TU skeletons have been removed then we may not have read in any
7047      TUs yet.  */
7048   if (dwarf2_per_objfile->signatured_types == NULL)
7049     {
7050       dwarf2_per_objfile->signatured_types
7051         = allocate_signatured_type_table (objfile);
7052     }
7053
7054   find_sig_entry.signature = sig;
7055   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7056                          &find_sig_entry, INSERT);
7057   sig_entry = (struct signatured_type *) *slot;
7058
7059   /* Have we already tried to read this TU?
7060      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7061      needn't exist in the global table yet).  */
7062   if (sig_entry != NULL)
7063     return sig_entry;
7064
7065   if (dwp_file->tus == NULL)
7066     return NULL;
7067   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7068                                       sig, 1 /* is_debug_types */);
7069   if (dwo_entry == NULL)
7070     return NULL;
7071
7072   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7073   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7074
7075   return sig_entry;
7076 }
7077
7078 /* Lookup a signature based type for DW_FORM_ref_sig8.
7079    Returns NULL if signature SIG is not present in the table.
7080    It is up to the caller to complain about this.  */
7081
7082 static struct signatured_type *
7083 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7084 {
7085   struct dwarf2_per_objfile *dwarf2_per_objfile
7086     = cu->per_cu->dwarf2_per_objfile;
7087
7088   if (cu->dwo_unit
7089       && dwarf2_per_objfile->using_index)
7090     {
7091       /* We're in a DWO/DWP file, and we're using .gdb_index.
7092          These cases require special processing.  */
7093       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7094         return lookup_dwo_signatured_type (cu, sig);
7095       else
7096         return lookup_dwp_signatured_type (cu, sig);
7097     }
7098   else
7099     {
7100       struct signatured_type find_entry, *entry;
7101
7102       if (dwarf2_per_objfile->signatured_types == NULL)
7103         return NULL;
7104       find_entry.signature = sig;
7105       entry = ((struct signatured_type *)
7106                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7107       return entry;
7108     }
7109 }
7110 \f
7111 /* Low level DIE reading support.  */
7112
7113 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7114
7115 static void
7116 init_cu_die_reader (struct die_reader_specs *reader,
7117                     struct dwarf2_cu *cu,
7118                     struct dwarf2_section_info *section,
7119                     struct dwo_file *dwo_file,
7120                     struct abbrev_table *abbrev_table)
7121 {
7122   gdb_assert (section->readin && section->buffer != NULL);
7123   reader->abfd = get_section_bfd_owner (section);
7124   reader->cu = cu;
7125   reader->dwo_file = dwo_file;
7126   reader->die_section = section;
7127   reader->buffer = section->buffer;
7128   reader->buffer_end = section->buffer + section->size;
7129   reader->comp_dir = NULL;
7130   reader->abbrev_table = abbrev_table;
7131 }
7132
7133 /* Subroutine of init_cutu_and_read_dies to simplify it.
7134    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7135    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7136    already.
7137
7138    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7139    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7140    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7141    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7142    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7143    STUB_COMP_DIR may be non-NULL.
7144    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7145    are filled in with the info of the DIE from the DWO file.
7146    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7147    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7148    kept around for at least as long as *RESULT_READER.
7149
7150    The result is non-zero if a valid (non-dummy) DIE was found.  */
7151
7152 static int
7153 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7154                         struct dwo_unit *dwo_unit,
7155                         struct die_info *stub_comp_unit_die,
7156                         const char *stub_comp_dir,
7157                         struct die_reader_specs *result_reader,
7158                         const gdb_byte **result_info_ptr,
7159                         struct die_info **result_comp_unit_die,
7160                         int *result_has_children,
7161                         abbrev_table_up *result_dwo_abbrev_table)
7162 {
7163   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7164   struct objfile *objfile = dwarf2_per_objfile->objfile;
7165   struct dwarf2_cu *cu = this_cu->cu;
7166   bfd *abfd;
7167   const gdb_byte *begin_info_ptr, *info_ptr;
7168   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7169   int i,num_extra_attrs;
7170   struct dwarf2_section_info *dwo_abbrev_section;
7171   struct attribute *attr;
7172   struct die_info *comp_unit_die;
7173
7174   /* At most one of these may be provided.  */
7175   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7176
7177   /* These attributes aren't processed until later:
7178      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7179      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7180      referenced later.  However, these attributes are found in the stub
7181      which we won't have later.  In order to not impose this complication
7182      on the rest of the code, we read them here and copy them to the
7183      DWO CU/TU die.  */
7184
7185   stmt_list = NULL;
7186   low_pc = NULL;
7187   high_pc = NULL;
7188   ranges = NULL;
7189   comp_dir = NULL;
7190
7191   if (stub_comp_unit_die != NULL)
7192     {
7193       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7194          DWO file.  */
7195       if (! this_cu->is_debug_types)
7196         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7197       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7198       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7199       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7200       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7201
7202       /* There should be a DW_AT_addr_base attribute here (if needed).
7203          We need the value before we can process DW_FORM_GNU_addr_index.  */
7204       cu->addr_base = 0;
7205       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7206       if (attr)
7207         cu->addr_base = DW_UNSND (attr);
7208
7209       /* There should be a DW_AT_ranges_base attribute here (if needed).
7210          We need the value before we can process DW_AT_ranges.  */
7211       cu->ranges_base = 0;
7212       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7213       if (attr)
7214         cu->ranges_base = DW_UNSND (attr);
7215     }
7216   else if (stub_comp_dir != NULL)
7217     {
7218       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7219       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7220       comp_dir->name = DW_AT_comp_dir;
7221       comp_dir->form = DW_FORM_string;
7222       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7223       DW_STRING (comp_dir) = stub_comp_dir;
7224     }
7225
7226   /* Set up for reading the DWO CU/TU.  */
7227   cu->dwo_unit = dwo_unit;
7228   dwarf2_section_info *section = dwo_unit->section;
7229   dwarf2_read_section (objfile, section);
7230   abfd = get_section_bfd_owner (section);
7231   begin_info_ptr = info_ptr = (section->buffer
7232                                + to_underlying (dwo_unit->sect_off));
7233   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7234
7235   if (this_cu->is_debug_types)
7236     {
7237       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7238
7239       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7240                                                 &cu->header, section,
7241                                                 dwo_abbrev_section,
7242                                                 info_ptr, rcuh_kind::TYPE);
7243       /* This is not an assert because it can be caused by bad debug info.  */
7244       if (sig_type->signature != cu->header.signature)
7245         {
7246           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7247                    " TU at offset %s [in module %s]"),
7248                  hex_string (sig_type->signature),
7249                  hex_string (cu->header.signature),
7250                  sect_offset_str (dwo_unit->sect_off),
7251                  bfd_get_filename (abfd));
7252         }
7253       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7254       /* For DWOs coming from DWP files, we don't know the CU length
7255          nor the type's offset in the TU until now.  */
7256       dwo_unit->length = get_cu_length (&cu->header);
7257       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7258
7259       /* Establish the type offset that can be used to lookup the type.
7260          For DWO files, we don't know it until now.  */
7261       sig_type->type_offset_in_section
7262         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7263     }
7264   else
7265     {
7266       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7267                                                 &cu->header, section,
7268                                                 dwo_abbrev_section,
7269                                                 info_ptr, rcuh_kind::COMPILE);
7270       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7271       /* For DWOs coming from DWP files, we don't know the CU length
7272          until now.  */
7273       dwo_unit->length = get_cu_length (&cu->header);
7274     }
7275
7276   *result_dwo_abbrev_table
7277     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7278                                cu->header.abbrev_sect_off);
7279   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7280                       result_dwo_abbrev_table->get ());
7281
7282   /* Read in the die, but leave space to copy over the attributes
7283      from the stub.  This has the benefit of simplifying the rest of
7284      the code - all the work to maintain the illusion of a single
7285      DW_TAG_{compile,type}_unit DIE is done here.  */
7286   num_extra_attrs = ((stmt_list != NULL)
7287                      + (low_pc != NULL)
7288                      + (high_pc != NULL)
7289                      + (ranges != NULL)
7290                      + (comp_dir != NULL));
7291   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7292                               result_has_children, num_extra_attrs);
7293
7294   /* Copy over the attributes from the stub to the DIE we just read in.  */
7295   comp_unit_die = *result_comp_unit_die;
7296   i = comp_unit_die->num_attrs;
7297   if (stmt_list != NULL)
7298     comp_unit_die->attrs[i++] = *stmt_list;
7299   if (low_pc != NULL)
7300     comp_unit_die->attrs[i++] = *low_pc;
7301   if (high_pc != NULL)
7302     comp_unit_die->attrs[i++] = *high_pc;
7303   if (ranges != NULL)
7304     comp_unit_die->attrs[i++] = *ranges;
7305   if (comp_dir != NULL)
7306     comp_unit_die->attrs[i++] = *comp_dir;
7307   comp_unit_die->num_attrs += num_extra_attrs;
7308
7309   if (dwarf_die_debug)
7310     {
7311       fprintf_unfiltered (gdb_stdlog,
7312                           "Read die from %s@0x%x of %s:\n",
7313                           get_section_name (section),
7314                           (unsigned) (begin_info_ptr - section->buffer),
7315                           bfd_get_filename (abfd));
7316       dump_die (comp_unit_die, dwarf_die_debug);
7317     }
7318
7319   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7320      TUs by skipping the stub and going directly to the entry in the DWO file.
7321      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7322      to get it via circuitous means.  Blech.  */
7323   if (comp_dir != NULL)
7324     result_reader->comp_dir = DW_STRING (comp_dir);
7325
7326   /* Skip dummy compilation units.  */
7327   if (info_ptr >= begin_info_ptr + dwo_unit->length
7328       || peek_abbrev_code (abfd, info_ptr) == 0)
7329     return 0;
7330
7331   *result_info_ptr = info_ptr;
7332   return 1;
7333 }
7334
7335 /* Subroutine of init_cutu_and_read_dies to simplify it.
7336    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7337    Returns NULL if the specified DWO unit cannot be found.  */
7338
7339 static struct dwo_unit *
7340 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7341                  struct die_info *comp_unit_die)
7342 {
7343   struct dwarf2_cu *cu = this_cu->cu;
7344   ULONGEST signature;
7345   struct dwo_unit *dwo_unit;
7346   const char *comp_dir, *dwo_name;
7347
7348   gdb_assert (cu != NULL);
7349
7350   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7351   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7352   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7353
7354   if (this_cu->is_debug_types)
7355     {
7356       struct signatured_type *sig_type;
7357
7358       /* Since this_cu is the first member of struct signatured_type,
7359          we can go from a pointer to one to a pointer to the other.  */
7360       sig_type = (struct signatured_type *) this_cu;
7361       signature = sig_type->signature;
7362       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7363     }
7364   else
7365     {
7366       struct attribute *attr;
7367
7368       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7369       if (! attr)
7370         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7371                  " [in module %s]"),
7372                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7373       signature = DW_UNSND (attr);
7374       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7375                                        signature);
7376     }
7377
7378   return dwo_unit;
7379 }
7380
7381 /* Subroutine of init_cutu_and_read_dies to simplify it.
7382    See it for a description of the parameters.
7383    Read a TU directly from a DWO file, bypassing the stub.  */
7384
7385 static void
7386 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7387                            int use_existing_cu, int keep,
7388                            die_reader_func_ftype *die_reader_func,
7389                            void *data)
7390 {
7391   std::unique_ptr<dwarf2_cu> new_cu;
7392   struct signatured_type *sig_type;
7393   struct die_reader_specs reader;
7394   const gdb_byte *info_ptr;
7395   struct die_info *comp_unit_die;
7396   int has_children;
7397   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7398
7399   /* Verify we can do the following downcast, and that we have the
7400      data we need.  */
7401   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7402   sig_type = (struct signatured_type *) this_cu;
7403   gdb_assert (sig_type->dwo_unit != NULL);
7404
7405   if (use_existing_cu && this_cu->cu != NULL)
7406     {
7407       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7408       /* There's no need to do the rereading_dwo_cu handling that
7409          init_cutu_and_read_dies does since we don't read the stub.  */
7410     }
7411   else
7412     {
7413       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7414       gdb_assert (this_cu->cu == NULL);
7415       new_cu.reset (new dwarf2_cu (this_cu));
7416     }
7417
7418   /* A future optimization, if needed, would be to use an existing
7419      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7420      could share abbrev tables.  */
7421
7422   /* The abbreviation table used by READER, this must live at least as long as
7423      READER.  */
7424   abbrev_table_up dwo_abbrev_table;
7425
7426   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7427                               NULL /* stub_comp_unit_die */,
7428                               sig_type->dwo_unit->dwo_file->comp_dir,
7429                               &reader, &info_ptr,
7430                               &comp_unit_die, &has_children,
7431                               &dwo_abbrev_table) == 0)
7432     {
7433       /* Dummy die.  */
7434       return;
7435     }
7436
7437   /* All the "real" work is done here.  */
7438   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7439
7440   /* This duplicates the code in init_cutu_and_read_dies,
7441      but the alternative is making the latter more complex.
7442      This function is only for the special case of using DWO files directly:
7443      no point in overly complicating the general case just to handle this.  */
7444   if (new_cu != NULL && keep)
7445     {
7446       /* Link this CU into read_in_chain.  */
7447       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7448       dwarf2_per_objfile->read_in_chain = this_cu;
7449       /* The chain owns it now.  */
7450       new_cu.release ();
7451     }
7452 }
7453
7454 /* Initialize a CU (or TU) and read its DIEs.
7455    If the CU defers to a DWO file, read the DWO file as well.
7456
7457    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7458    Otherwise the table specified in the comp unit header is read in and used.
7459    This is an optimization for when we already have the abbrev table.
7460
7461    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7462    Otherwise, a new CU is allocated with xmalloc.
7463
7464    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7465    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7466
7467    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7468    linker) then DIE_READER_FUNC will not get called.  */
7469
7470 static void
7471 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7472                          struct abbrev_table *abbrev_table,
7473                          int use_existing_cu, int keep,
7474                          bool skip_partial,
7475                          die_reader_func_ftype *die_reader_func,
7476                          void *data)
7477 {
7478   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7479   struct objfile *objfile = dwarf2_per_objfile->objfile;
7480   struct dwarf2_section_info *section = this_cu->section;
7481   bfd *abfd = get_section_bfd_owner (section);
7482   struct dwarf2_cu *cu;
7483   const gdb_byte *begin_info_ptr, *info_ptr;
7484   struct die_reader_specs reader;
7485   struct die_info *comp_unit_die;
7486   int has_children;
7487   struct attribute *attr;
7488   struct signatured_type *sig_type = NULL;
7489   struct dwarf2_section_info *abbrev_section;
7490   /* Non-zero if CU currently points to a DWO file and we need to
7491      reread it.  When this happens we need to reread the skeleton die
7492      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7493   int rereading_dwo_cu = 0;
7494
7495   if (dwarf_die_debug)
7496     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7497                         this_cu->is_debug_types ? "type" : "comp",
7498                         sect_offset_str (this_cu->sect_off));
7499
7500   if (use_existing_cu)
7501     gdb_assert (keep);
7502
7503   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7504      file (instead of going through the stub), short-circuit all of this.  */
7505   if (this_cu->reading_dwo_directly)
7506     {
7507       /* Narrow down the scope of possibilities to have to understand.  */
7508       gdb_assert (this_cu->is_debug_types);
7509       gdb_assert (abbrev_table == NULL);
7510       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7511                                  die_reader_func, data);
7512       return;
7513     }
7514
7515   /* This is cheap if the section is already read in.  */
7516   dwarf2_read_section (objfile, section);
7517
7518   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7519
7520   abbrev_section = get_abbrev_section_for_cu (this_cu);
7521
7522   std::unique_ptr<dwarf2_cu> new_cu;
7523   if (use_existing_cu && this_cu->cu != NULL)
7524     {
7525       cu = this_cu->cu;
7526       /* If this CU is from a DWO file we need to start over, we need to
7527          refetch the attributes from the skeleton CU.
7528          This could be optimized by retrieving those attributes from when we
7529          were here the first time: the previous comp_unit_die was stored in
7530          comp_unit_obstack.  But there's no data yet that we need this
7531          optimization.  */
7532       if (cu->dwo_unit != NULL)
7533         rereading_dwo_cu = 1;
7534     }
7535   else
7536     {
7537       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7538       gdb_assert (this_cu->cu == NULL);
7539       new_cu.reset (new dwarf2_cu (this_cu));
7540       cu = new_cu.get ();
7541     }
7542
7543   /* Get the header.  */
7544   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7545     {
7546       /* We already have the header, there's no need to read it in again.  */
7547       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7548     }
7549   else
7550     {
7551       if (this_cu->is_debug_types)
7552         {
7553           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7554                                                     &cu->header, section,
7555                                                     abbrev_section, info_ptr,
7556                                                     rcuh_kind::TYPE);
7557
7558           /* Since per_cu is the first member of struct signatured_type,
7559              we can go from a pointer to one to a pointer to the other.  */
7560           sig_type = (struct signatured_type *) this_cu;
7561           gdb_assert (sig_type->signature == cu->header.signature);
7562           gdb_assert (sig_type->type_offset_in_tu
7563                       == cu->header.type_cu_offset_in_tu);
7564           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7565
7566           /* LENGTH has not been set yet for type units if we're
7567              using .gdb_index.  */
7568           this_cu->length = get_cu_length (&cu->header);
7569
7570           /* Establish the type offset that can be used to lookup the type.  */
7571           sig_type->type_offset_in_section =
7572             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7573
7574           this_cu->dwarf_version = cu->header.version;
7575         }
7576       else
7577         {
7578           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7579                                                     &cu->header, section,
7580                                                     abbrev_section,
7581                                                     info_ptr,
7582                                                     rcuh_kind::COMPILE);
7583
7584           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7585           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7586           this_cu->dwarf_version = cu->header.version;
7587         }
7588     }
7589
7590   /* Skip dummy compilation units.  */
7591   if (info_ptr >= begin_info_ptr + this_cu->length
7592       || peek_abbrev_code (abfd, info_ptr) == 0)
7593     return;
7594
7595   /* If we don't have them yet, read the abbrevs for this compilation unit.
7596      And if we need to read them now, make sure they're freed when we're
7597      done (own the table through ABBREV_TABLE_HOLDER).  */
7598   abbrev_table_up abbrev_table_holder;
7599   if (abbrev_table != NULL)
7600     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7601   else
7602     {
7603       abbrev_table_holder
7604         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7605                                    cu->header.abbrev_sect_off);
7606       abbrev_table = abbrev_table_holder.get ();
7607     }
7608
7609   /* Read the top level CU/TU die.  */
7610   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7611   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7612
7613   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7614     return;
7615
7616   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7617      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7618      table from the DWO file and pass the ownership over to us.  It will be
7619      referenced from READER, so we must make sure to free it after we're done
7620      with READER.
7621
7622      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7623      DWO CU, that this test will fail (the attribute will not be present).  */
7624   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7625   abbrev_table_up dwo_abbrev_table;
7626   if (attr)
7627     {
7628       struct dwo_unit *dwo_unit;
7629       struct die_info *dwo_comp_unit_die;
7630
7631       if (has_children)
7632         {
7633           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7634                        " has children (offset %s) [in module %s]"),
7635                      sect_offset_str (this_cu->sect_off),
7636                      bfd_get_filename (abfd));
7637         }
7638       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7639       if (dwo_unit != NULL)
7640         {
7641           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7642                                       comp_unit_die, NULL,
7643                                       &reader, &info_ptr,
7644                                       &dwo_comp_unit_die, &has_children,
7645                                       &dwo_abbrev_table) == 0)
7646             {
7647               /* Dummy die.  */
7648               return;
7649             }
7650           comp_unit_die = dwo_comp_unit_die;
7651         }
7652       else
7653         {
7654           /* Yikes, we couldn't find the rest of the DIE, we only have
7655              the stub.  A complaint has already been logged.  There's
7656              not much more we can do except pass on the stub DIE to
7657              die_reader_func.  We don't want to throw an error on bad
7658              debug info.  */
7659         }
7660     }
7661
7662   /* All of the above is setup for this call.  Yikes.  */
7663   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7664
7665   /* Done, clean up.  */
7666   if (new_cu != NULL && keep)
7667     {
7668       /* Link this CU into read_in_chain.  */
7669       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7670       dwarf2_per_objfile->read_in_chain = this_cu;
7671       /* The chain owns it now.  */
7672       new_cu.release ();
7673     }
7674 }
7675
7676 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7677    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7678    to have already done the lookup to find the DWO file).
7679
7680    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7681    THIS_CU->is_debug_types, but nothing else.
7682
7683    We fill in THIS_CU->length.
7684
7685    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7686    linker) then DIE_READER_FUNC will not get called.
7687
7688    THIS_CU->cu is always freed when done.
7689    This is done in order to not leave THIS_CU->cu in a state where we have
7690    to care whether it refers to the "main" CU or the DWO CU.  */
7691
7692 static void
7693 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7694                                    struct dwo_file *dwo_file,
7695                                    die_reader_func_ftype *die_reader_func,
7696                                    void *data)
7697 {
7698   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7699   struct objfile *objfile = dwarf2_per_objfile->objfile;
7700   struct dwarf2_section_info *section = this_cu->section;
7701   bfd *abfd = get_section_bfd_owner (section);
7702   struct dwarf2_section_info *abbrev_section;
7703   const gdb_byte *begin_info_ptr, *info_ptr;
7704   struct die_reader_specs reader;
7705   struct die_info *comp_unit_die;
7706   int has_children;
7707
7708   if (dwarf_die_debug)
7709     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7710                         this_cu->is_debug_types ? "type" : "comp",
7711                         sect_offset_str (this_cu->sect_off));
7712
7713   gdb_assert (this_cu->cu == NULL);
7714
7715   abbrev_section = (dwo_file != NULL
7716                     ? &dwo_file->sections.abbrev
7717                     : get_abbrev_section_for_cu (this_cu));
7718
7719   /* This is cheap if the section is already read in.  */
7720   dwarf2_read_section (objfile, section);
7721
7722   struct dwarf2_cu cu (this_cu);
7723
7724   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7725   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7726                                             &cu.header, section,
7727                                             abbrev_section, info_ptr,
7728                                             (this_cu->is_debug_types
7729                                              ? rcuh_kind::TYPE
7730                                              : rcuh_kind::COMPILE));
7731
7732   this_cu->length = get_cu_length (&cu.header);
7733
7734   /* Skip dummy compilation units.  */
7735   if (info_ptr >= begin_info_ptr + this_cu->length
7736       || peek_abbrev_code (abfd, info_ptr) == 0)
7737     return;
7738
7739   abbrev_table_up abbrev_table
7740     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7741                                cu.header.abbrev_sect_off);
7742
7743   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7744   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7745
7746   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7747 }
7748
7749 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7750    does not lookup the specified DWO file.
7751    This cannot be used to read DWO files.
7752
7753    THIS_CU->cu is always freed when done.
7754    This is done in order to not leave THIS_CU->cu in a state where we have
7755    to care whether it refers to the "main" CU or the DWO CU.
7756    We can revisit this if the data shows there's a performance issue.  */
7757
7758 static void
7759 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7760                                 die_reader_func_ftype *die_reader_func,
7761                                 void *data)
7762 {
7763   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7764 }
7765 \f
7766 /* Type Unit Groups.
7767
7768    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7769    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7770    so that all types coming from the same compilation (.o file) are grouped
7771    together.  A future step could be to put the types in the same symtab as
7772    the CU the types ultimately came from.  */
7773
7774 static hashval_t
7775 hash_type_unit_group (const void *item)
7776 {
7777   const struct type_unit_group *tu_group
7778     = (const struct type_unit_group *) item;
7779
7780   return hash_stmt_list_entry (&tu_group->hash);
7781 }
7782
7783 static int
7784 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7785 {
7786   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7787   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7788
7789   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7790 }
7791
7792 /* Allocate a hash table for type unit groups.  */
7793
7794 static htab_t
7795 allocate_type_unit_groups_table (struct objfile *objfile)
7796 {
7797   return htab_create_alloc_ex (3,
7798                                hash_type_unit_group,
7799                                eq_type_unit_group,
7800                                NULL,
7801                                &objfile->objfile_obstack,
7802                                hashtab_obstack_allocate,
7803                                dummy_obstack_deallocate);
7804 }
7805
7806 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7807    partial symtabs.  We combine several TUs per psymtab to not let the size
7808    of any one psymtab grow too big.  */
7809 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7810 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7811
7812 /* Helper routine for get_type_unit_group.
7813    Create the type_unit_group object used to hold one or more TUs.  */
7814
7815 static struct type_unit_group *
7816 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7817 {
7818   struct dwarf2_per_objfile *dwarf2_per_objfile
7819     = cu->per_cu->dwarf2_per_objfile;
7820   struct objfile *objfile = dwarf2_per_objfile->objfile;
7821   struct dwarf2_per_cu_data *per_cu;
7822   struct type_unit_group *tu_group;
7823
7824   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7825                              struct type_unit_group);
7826   per_cu = &tu_group->per_cu;
7827   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7828
7829   if (dwarf2_per_objfile->using_index)
7830     {
7831       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7832                                         struct dwarf2_per_cu_quick_data);
7833     }
7834   else
7835     {
7836       unsigned int line_offset = to_underlying (line_offset_struct);
7837       struct partial_symtab *pst;
7838       std::string name;
7839
7840       /* Give the symtab a useful name for debug purposes.  */
7841       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7842         name = string_printf ("<type_units_%d>",
7843                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7844       else
7845         name = string_printf ("<type_units_at_0x%x>", line_offset);
7846
7847       pst = create_partial_symtab (per_cu, name.c_str ());
7848       pst->anonymous = 1;
7849     }
7850
7851   tu_group->hash.dwo_unit = cu->dwo_unit;
7852   tu_group->hash.line_sect_off = line_offset_struct;
7853
7854   return tu_group;
7855 }
7856
7857 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7858    STMT_LIST is a DW_AT_stmt_list attribute.  */
7859
7860 static struct type_unit_group *
7861 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7862 {
7863   struct dwarf2_per_objfile *dwarf2_per_objfile
7864     = cu->per_cu->dwarf2_per_objfile;
7865   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7866   struct type_unit_group *tu_group;
7867   void **slot;
7868   unsigned int line_offset;
7869   struct type_unit_group type_unit_group_for_lookup;
7870
7871   if (dwarf2_per_objfile->type_unit_groups == NULL)
7872     {
7873       dwarf2_per_objfile->type_unit_groups =
7874         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7875     }
7876
7877   /* Do we need to create a new group, or can we use an existing one?  */
7878
7879   if (stmt_list)
7880     {
7881       line_offset = DW_UNSND (stmt_list);
7882       ++tu_stats->nr_symtab_sharers;
7883     }
7884   else
7885     {
7886       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7887          We can do various things here like create one group per TU or
7888          spread them over multiple groups to split up the expansion work.
7889          To avoid worst case scenarios (too many groups or too large groups)
7890          we, umm, group them in bunches.  */
7891       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7892                      | (tu_stats->nr_stmt_less_type_units
7893                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7894       ++tu_stats->nr_stmt_less_type_units;
7895     }
7896
7897   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7898   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7899   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7900                          &type_unit_group_for_lookup, INSERT);
7901   if (*slot != NULL)
7902     {
7903       tu_group = (struct type_unit_group *) *slot;
7904       gdb_assert (tu_group != NULL);
7905     }
7906   else
7907     {
7908       sect_offset line_offset_struct = (sect_offset) line_offset;
7909       tu_group = create_type_unit_group (cu, line_offset_struct);
7910       *slot = tu_group;
7911       ++tu_stats->nr_symtabs;
7912     }
7913
7914   return tu_group;
7915 }
7916 \f
7917 /* Partial symbol tables.  */
7918
7919 /* Create a psymtab named NAME and assign it to PER_CU.
7920
7921    The caller must fill in the following details:
7922    dirname, textlow, texthigh.  */
7923
7924 static struct partial_symtab *
7925 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7926 {
7927   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7928   struct partial_symtab *pst;
7929
7930   pst = start_psymtab_common (objfile, name, 0,
7931                               objfile->global_psymbols,
7932                               objfile->static_psymbols);
7933
7934   pst->psymtabs_addrmap_supported = 1;
7935
7936   /* This is the glue that links PST into GDB's symbol API.  */
7937   pst->read_symtab_private = per_cu;
7938   pst->read_symtab = dwarf2_read_symtab;
7939   per_cu->v.psymtab = pst;
7940
7941   return pst;
7942 }
7943
7944 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7945    type.  */
7946
7947 struct process_psymtab_comp_unit_data
7948 {
7949   /* True if we are reading a DW_TAG_partial_unit.  */
7950
7951   int want_partial_unit;
7952
7953   /* The "pretend" language that is used if the CU doesn't declare a
7954      language.  */
7955
7956   enum language pretend_language;
7957 };
7958
7959 /* die_reader_func for process_psymtab_comp_unit.  */
7960
7961 static void
7962 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7963                                   const gdb_byte *info_ptr,
7964                                   struct die_info *comp_unit_die,
7965                                   int has_children,
7966                                   void *data)
7967 {
7968   struct dwarf2_cu *cu = reader->cu;
7969   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7970   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7971   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7972   CORE_ADDR baseaddr;
7973   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7974   struct partial_symtab *pst;
7975   enum pc_bounds_kind cu_bounds_kind;
7976   const char *filename;
7977   struct process_psymtab_comp_unit_data *info
7978     = (struct process_psymtab_comp_unit_data *) data;
7979
7980   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7981     return;
7982
7983   gdb_assert (! per_cu->is_debug_types);
7984
7985   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7986
7987   /* Allocate a new partial symbol table structure.  */
7988   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7989   if (filename == NULL)
7990     filename = "";
7991
7992   pst = create_partial_symtab (per_cu, filename);
7993
7994   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7995   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7996
7997   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7998
7999   dwarf2_find_base_address (comp_unit_die, cu);
8000
8001   /* Possibly set the default values of LOWPC and HIGHPC from
8002      `DW_AT_ranges'.  */
8003   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8004                                          &best_highpc, cu, pst);
8005   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8006     {
8007       CORE_ADDR low
8008         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8009            - baseaddr);
8010       CORE_ADDR high
8011         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8012            - baseaddr - 1);
8013       /* Store the contiguous range if it is not empty; it can be
8014          empty for CUs with no code.  */
8015       addrmap_set_empty (objfile->psymtabs_addrmap, low, high, pst);
8016     }
8017
8018   /* Check if comp unit has_children.
8019      If so, read the rest of the partial symbols from this comp unit.
8020      If not, there's no more debug_info for this comp unit.  */
8021   if (has_children)
8022     {
8023       struct partial_die_info *first_die;
8024       CORE_ADDR lowpc, highpc;
8025
8026       lowpc = ((CORE_ADDR) -1);
8027       highpc = ((CORE_ADDR) 0);
8028
8029       first_die = load_partial_dies (reader, info_ptr, 1);
8030
8031       scan_partial_symbols (first_die, &lowpc, &highpc,
8032                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8033
8034       /* If we didn't find a lowpc, set it to highpc to avoid
8035          complaints from `maint check'.  */
8036       if (lowpc == ((CORE_ADDR) -1))
8037         lowpc = highpc;
8038
8039       /* If the compilation unit didn't have an explicit address range,
8040          then use the information extracted from its child dies.  */
8041       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8042         {
8043           best_lowpc = lowpc;
8044           best_highpc = highpc;
8045         }
8046     }
8047   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8048                                                  best_lowpc + baseaddr)
8049                      - baseaddr);
8050   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8051                                                   best_highpc + baseaddr)
8052                       - baseaddr);
8053
8054   end_psymtab_common (objfile, pst);
8055
8056   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8057     {
8058       int i;
8059       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8060       struct dwarf2_per_cu_data *iter;
8061
8062       /* Fill in 'dependencies' here; we fill in 'users' in a
8063          post-pass.  */
8064       pst->number_of_dependencies = len;
8065       pst->dependencies =
8066         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8067       for (i = 0;
8068            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8069                         i, iter);
8070            ++i)
8071         pst->dependencies[i] = iter->v.psymtab;
8072
8073       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8074     }
8075
8076   /* Get the list of files included in the current compilation unit,
8077      and build a psymtab for each of them.  */
8078   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8079
8080   if (dwarf_read_debug)
8081     fprintf_unfiltered (gdb_stdlog,
8082                         "Psymtab for %s unit @%s: %s - %s"
8083                         ", %d global, %d static syms\n",
8084                         per_cu->is_debug_types ? "type" : "comp",
8085                         sect_offset_str (per_cu->sect_off),
8086                         paddress (gdbarch, pst->text_low (objfile)),
8087                         paddress (gdbarch, pst->text_high (objfile)),
8088                         pst->n_global_syms, pst->n_static_syms);
8089 }
8090
8091 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8092    Process compilation unit THIS_CU for a psymtab.  */
8093
8094 static void
8095 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8096                            int want_partial_unit,
8097                            enum language pretend_language)
8098 {
8099   /* If this compilation unit was already read in, free the
8100      cached copy in order to read it in again.  This is
8101      necessary because we skipped some symbols when we first
8102      read in the compilation unit (see load_partial_dies).
8103      This problem could be avoided, but the benefit is unclear.  */
8104   if (this_cu->cu != NULL)
8105     free_one_cached_comp_unit (this_cu);
8106
8107   if (this_cu->is_debug_types)
8108     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8109                              build_type_psymtabs_reader, NULL);
8110   else
8111     {
8112       process_psymtab_comp_unit_data info;
8113       info.want_partial_unit = want_partial_unit;
8114       info.pretend_language = pretend_language;
8115       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8116                                process_psymtab_comp_unit_reader, &info);
8117     }
8118
8119   /* Age out any secondary CUs.  */
8120   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8121 }
8122
8123 /* Reader function for build_type_psymtabs.  */
8124
8125 static void
8126 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8127                             const gdb_byte *info_ptr,
8128                             struct die_info *type_unit_die,
8129                             int has_children,
8130                             void *data)
8131 {
8132   struct dwarf2_per_objfile *dwarf2_per_objfile
8133     = reader->cu->per_cu->dwarf2_per_objfile;
8134   struct objfile *objfile = dwarf2_per_objfile->objfile;
8135   struct dwarf2_cu *cu = reader->cu;
8136   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8137   struct signatured_type *sig_type;
8138   struct type_unit_group *tu_group;
8139   struct attribute *attr;
8140   struct partial_die_info *first_die;
8141   CORE_ADDR lowpc, highpc;
8142   struct partial_symtab *pst;
8143
8144   gdb_assert (data == NULL);
8145   gdb_assert (per_cu->is_debug_types);
8146   sig_type = (struct signatured_type *) per_cu;
8147
8148   if (! has_children)
8149     return;
8150
8151   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8152   tu_group = get_type_unit_group (cu, attr);
8153
8154   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8155
8156   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8157   pst = create_partial_symtab (per_cu, "");
8158   pst->anonymous = 1;
8159
8160   first_die = load_partial_dies (reader, info_ptr, 1);
8161
8162   lowpc = (CORE_ADDR) -1;
8163   highpc = (CORE_ADDR) 0;
8164   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8165
8166   end_psymtab_common (objfile, pst);
8167 }
8168
8169 /* Struct used to sort TUs by their abbreviation table offset.  */
8170
8171 struct tu_abbrev_offset
8172 {
8173   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8174   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8175   {}
8176
8177   signatured_type *sig_type;
8178   sect_offset abbrev_offset;
8179 };
8180
8181 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8182
8183 static bool
8184 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8185                           const struct tu_abbrev_offset &b)
8186 {
8187   return a.abbrev_offset < b.abbrev_offset;
8188 }
8189
8190 /* Efficiently read all the type units.
8191    This does the bulk of the work for build_type_psymtabs.
8192
8193    The efficiency is because we sort TUs by the abbrev table they use and
8194    only read each abbrev table once.  In one program there are 200K TUs
8195    sharing 8K abbrev tables.
8196
8197    The main purpose of this function is to support building the
8198    dwarf2_per_objfile->type_unit_groups table.
8199    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8200    can collapse the search space by grouping them by stmt_list.
8201    The savings can be significant, in the same program from above the 200K TUs
8202    share 8K stmt_list tables.
8203
8204    FUNC is expected to call get_type_unit_group, which will create the
8205    struct type_unit_group if necessary and add it to
8206    dwarf2_per_objfile->type_unit_groups.  */
8207
8208 static void
8209 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8210 {
8211   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8212   abbrev_table_up abbrev_table;
8213   sect_offset abbrev_offset;
8214
8215   /* It's up to the caller to not call us multiple times.  */
8216   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8217
8218   if (dwarf2_per_objfile->all_type_units.empty ())
8219     return;
8220
8221   /* TUs typically share abbrev tables, and there can be way more TUs than
8222      abbrev tables.  Sort by abbrev table to reduce the number of times we
8223      read each abbrev table in.
8224      Alternatives are to punt or to maintain a cache of abbrev tables.
8225      This is simpler and efficient enough for now.
8226
8227      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8228      symtab to use).  Typically TUs with the same abbrev offset have the same
8229      stmt_list value too so in practice this should work well.
8230
8231      The basic algorithm here is:
8232
8233       sort TUs by abbrev table
8234       for each TU with same abbrev table:
8235         read abbrev table if first user
8236         read TU top level DIE
8237           [IWBN if DWO skeletons had DW_AT_stmt_list]
8238         call FUNC  */
8239
8240   if (dwarf_read_debug)
8241     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8242
8243   /* Sort in a separate table to maintain the order of all_type_units
8244      for .gdb_index: TU indices directly index all_type_units.  */
8245   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8246   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8247
8248   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8249     sorted_by_abbrev.emplace_back
8250       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8251                                      sig_type->per_cu.section,
8252                                      sig_type->per_cu.sect_off));
8253
8254   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8255              sort_tu_by_abbrev_offset);
8256
8257   abbrev_offset = (sect_offset) ~(unsigned) 0;
8258
8259   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8260     {
8261       /* Switch to the next abbrev table if necessary.  */
8262       if (abbrev_table == NULL
8263           || tu.abbrev_offset != abbrev_offset)
8264         {
8265           abbrev_offset = tu.abbrev_offset;
8266           abbrev_table =
8267             abbrev_table_read_table (dwarf2_per_objfile,
8268                                      &dwarf2_per_objfile->abbrev,
8269                                      abbrev_offset);
8270           ++tu_stats->nr_uniq_abbrev_tables;
8271         }
8272
8273       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8274                                0, 0, false, build_type_psymtabs_reader, NULL);
8275     }
8276 }
8277
8278 /* Print collected type unit statistics.  */
8279
8280 static void
8281 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8282 {
8283   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8284
8285   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8286   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8287                       dwarf2_per_objfile->all_type_units.size ());
8288   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8289                       tu_stats->nr_uniq_abbrev_tables);
8290   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8291                       tu_stats->nr_symtabs);
8292   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8293                       tu_stats->nr_symtab_sharers);
8294   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8295                       tu_stats->nr_stmt_less_type_units);
8296   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8297                       tu_stats->nr_all_type_units_reallocs);
8298 }
8299
8300 /* Traversal function for build_type_psymtabs.  */
8301
8302 static int
8303 build_type_psymtab_dependencies (void **slot, void *info)
8304 {
8305   struct dwarf2_per_objfile *dwarf2_per_objfile
8306     = (struct dwarf2_per_objfile *) info;
8307   struct objfile *objfile = dwarf2_per_objfile->objfile;
8308   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8309   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8310   struct partial_symtab *pst = per_cu->v.psymtab;
8311   int len = VEC_length (sig_type_ptr, tu_group->tus);
8312   struct signatured_type *iter;
8313   int i;
8314
8315   gdb_assert (len > 0);
8316   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8317
8318   pst->number_of_dependencies = len;
8319   pst->dependencies =
8320     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8321   for (i = 0;
8322        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8323        ++i)
8324     {
8325       gdb_assert (iter->per_cu.is_debug_types);
8326       pst->dependencies[i] = iter->per_cu.v.psymtab;
8327       iter->type_unit_group = tu_group;
8328     }
8329
8330   VEC_free (sig_type_ptr, tu_group->tus);
8331
8332   return 1;
8333 }
8334
8335 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8336    Build partial symbol tables for the .debug_types comp-units.  */
8337
8338 static void
8339 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8340 {
8341   if (! create_all_type_units (dwarf2_per_objfile))
8342     return;
8343
8344   build_type_psymtabs_1 (dwarf2_per_objfile);
8345 }
8346
8347 /* Traversal function for process_skeletonless_type_unit.
8348    Read a TU in a DWO file and build partial symbols for it.  */
8349
8350 static int
8351 process_skeletonless_type_unit (void **slot, void *info)
8352 {
8353   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8354   struct dwarf2_per_objfile *dwarf2_per_objfile
8355     = (struct dwarf2_per_objfile *) info;
8356   struct signatured_type find_entry, *entry;
8357
8358   /* If this TU doesn't exist in the global table, add it and read it in.  */
8359
8360   if (dwarf2_per_objfile->signatured_types == NULL)
8361     {
8362       dwarf2_per_objfile->signatured_types
8363         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8364     }
8365
8366   find_entry.signature = dwo_unit->signature;
8367   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8368                          INSERT);
8369   /* If we've already seen this type there's nothing to do.  What's happening
8370      is we're doing our own version of comdat-folding here.  */
8371   if (*slot != NULL)
8372     return 1;
8373
8374   /* This does the job that create_all_type_units would have done for
8375      this TU.  */
8376   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8377   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8378   *slot = entry;
8379
8380   /* This does the job that build_type_psymtabs_1 would have done.  */
8381   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8382                            build_type_psymtabs_reader, NULL);
8383
8384   return 1;
8385 }
8386
8387 /* Traversal function for process_skeletonless_type_units.  */
8388
8389 static int
8390 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8391 {
8392   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8393
8394   if (dwo_file->tus != NULL)
8395     {
8396       htab_traverse_noresize (dwo_file->tus,
8397                               process_skeletonless_type_unit, info);
8398     }
8399
8400   return 1;
8401 }
8402
8403 /* Scan all TUs of DWO files, verifying we've processed them.
8404    This is needed in case a TU was emitted without its skeleton.
8405    Note: This can't be done until we know what all the DWO files are.  */
8406
8407 static void
8408 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8409 {
8410   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8411   if (get_dwp_file (dwarf2_per_objfile) == NULL
8412       && dwarf2_per_objfile->dwo_files != NULL)
8413     {
8414       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8415                               process_dwo_file_for_skeletonless_type_units,
8416                               dwarf2_per_objfile);
8417     }
8418 }
8419
8420 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8421
8422 static void
8423 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8424 {
8425   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8426     {
8427       struct partial_symtab *pst = per_cu->v.psymtab;
8428
8429       if (pst == NULL)
8430         continue;
8431
8432       for (int j = 0; j < pst->number_of_dependencies; ++j)
8433         {
8434           /* Set the 'user' field only if it is not already set.  */
8435           if (pst->dependencies[j]->user == NULL)
8436             pst->dependencies[j]->user = pst;
8437         }
8438     }
8439 }
8440
8441 /* Build the partial symbol table by doing a quick pass through the
8442    .debug_info and .debug_abbrev sections.  */
8443
8444 static void
8445 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8446 {
8447   struct objfile *objfile = dwarf2_per_objfile->objfile;
8448
8449   if (dwarf_read_debug)
8450     {
8451       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8452                           objfile_name (objfile));
8453     }
8454
8455   dwarf2_per_objfile->reading_partial_symbols = 1;
8456
8457   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8458
8459   /* Any cached compilation units will be linked by the per-objfile
8460      read_in_chain.  Make sure to free them when we're done.  */
8461   free_cached_comp_units freer (dwarf2_per_objfile);
8462
8463   build_type_psymtabs (dwarf2_per_objfile);
8464
8465   create_all_comp_units (dwarf2_per_objfile);
8466
8467   /* Create a temporary address map on a temporary obstack.  We later
8468      copy this to the final obstack.  */
8469   auto_obstack temp_obstack;
8470
8471   scoped_restore save_psymtabs_addrmap
8472     = make_scoped_restore (&objfile->psymtabs_addrmap,
8473                            addrmap_create_mutable (&temp_obstack));
8474
8475   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8476     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8477
8478   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8479   process_skeletonless_type_units (dwarf2_per_objfile);
8480
8481   /* Now that all TUs have been processed we can fill in the dependencies.  */
8482   if (dwarf2_per_objfile->type_unit_groups != NULL)
8483     {
8484       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8485                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8486     }
8487
8488   if (dwarf_read_debug)
8489     print_tu_stats (dwarf2_per_objfile);
8490
8491   set_partial_user (dwarf2_per_objfile);
8492
8493   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8494                                                     &objfile->objfile_obstack);
8495   /* At this point we want to keep the address map.  */
8496   save_psymtabs_addrmap.release ();
8497
8498   if (dwarf_read_debug)
8499     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8500                         objfile_name (objfile));
8501 }
8502
8503 /* die_reader_func for load_partial_comp_unit.  */
8504
8505 static void
8506 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8507                                const gdb_byte *info_ptr,
8508                                struct die_info *comp_unit_die,
8509                                int has_children,
8510                                void *data)
8511 {
8512   struct dwarf2_cu *cu = reader->cu;
8513
8514   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8515
8516   /* Check if comp unit has_children.
8517      If so, read the rest of the partial symbols from this comp unit.
8518      If not, there's no more debug_info for this comp unit.  */
8519   if (has_children)
8520     load_partial_dies (reader, info_ptr, 0);
8521 }
8522
8523 /* Load the partial DIEs for a secondary CU into memory.
8524    This is also used when rereading a primary CU with load_all_dies.  */
8525
8526 static void
8527 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8528 {
8529   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8530                            load_partial_comp_unit_reader, NULL);
8531 }
8532
8533 static void
8534 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8535                               struct dwarf2_section_info *section,
8536                               struct dwarf2_section_info *abbrev_section,
8537                               unsigned int is_dwz)
8538 {
8539   const gdb_byte *info_ptr;
8540   struct objfile *objfile = dwarf2_per_objfile->objfile;
8541
8542   if (dwarf_read_debug)
8543     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8544                         get_section_name (section),
8545                         get_section_file_name (section));
8546
8547   dwarf2_read_section (objfile, section);
8548
8549   info_ptr = section->buffer;
8550
8551   while (info_ptr < section->buffer + section->size)
8552     {
8553       struct dwarf2_per_cu_data *this_cu;
8554
8555       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8556
8557       comp_unit_head cu_header;
8558       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8559                                      abbrev_section, info_ptr,
8560                                      rcuh_kind::COMPILE);
8561
8562       /* Save the compilation unit for later lookup.  */
8563       if (cu_header.unit_type != DW_UT_type)
8564         {
8565           this_cu = XOBNEW (&objfile->objfile_obstack,
8566                             struct dwarf2_per_cu_data);
8567           memset (this_cu, 0, sizeof (*this_cu));
8568         }
8569       else
8570         {
8571           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8572                                   struct signatured_type);
8573           memset (sig_type, 0, sizeof (*sig_type));
8574           sig_type->signature = cu_header.signature;
8575           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8576           this_cu = &sig_type->per_cu;
8577         }
8578       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8579       this_cu->sect_off = sect_off;
8580       this_cu->length = cu_header.length + cu_header.initial_length_size;
8581       this_cu->is_dwz = is_dwz;
8582       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8583       this_cu->section = section;
8584
8585       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8586
8587       info_ptr = info_ptr + this_cu->length;
8588     }
8589 }
8590
8591 /* Create a list of all compilation units in OBJFILE.
8592    This is only done for -readnow and building partial symtabs.  */
8593
8594 static void
8595 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8596 {
8597   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8598   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8599                                 &dwarf2_per_objfile->abbrev, 0);
8600
8601   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8602   if (dwz != NULL)
8603     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8604                                   1);
8605 }
8606
8607 /* Process all loaded DIEs for compilation unit CU, starting at
8608    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8609    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8610    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8611    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8612
8613 static void
8614 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8615                       CORE_ADDR *highpc, int set_addrmap,
8616                       struct dwarf2_cu *cu)
8617 {
8618   struct partial_die_info *pdi;
8619
8620   /* Now, march along the PDI's, descending into ones which have
8621      interesting children but skipping the children of the other ones,
8622      until we reach the end of the compilation unit.  */
8623
8624   pdi = first_die;
8625
8626   while (pdi != NULL)
8627     {
8628       pdi->fixup (cu);
8629
8630       /* Anonymous namespaces or modules have no name but have interesting
8631          children, so we need to look at them.  Ditto for anonymous
8632          enums.  */
8633
8634       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8635           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8636           || pdi->tag == DW_TAG_imported_unit
8637           || pdi->tag == DW_TAG_inlined_subroutine)
8638         {
8639           switch (pdi->tag)
8640             {
8641             case DW_TAG_subprogram:
8642             case DW_TAG_inlined_subroutine:
8643               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8644               break;
8645             case DW_TAG_constant:
8646             case DW_TAG_variable:
8647             case DW_TAG_typedef:
8648             case DW_TAG_union_type:
8649               if (!pdi->is_declaration)
8650                 {
8651                   add_partial_symbol (pdi, cu);
8652                 }
8653               break;
8654             case DW_TAG_class_type:
8655             case DW_TAG_interface_type:
8656             case DW_TAG_structure_type:
8657               if (!pdi->is_declaration)
8658                 {
8659                   add_partial_symbol (pdi, cu);
8660                 }
8661               if ((cu->language == language_rust
8662                    || cu->language == language_cplus) && pdi->has_children)
8663                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8664                                       set_addrmap, cu);
8665               break;
8666             case DW_TAG_enumeration_type:
8667               if (!pdi->is_declaration)
8668                 add_partial_enumeration (pdi, cu);
8669               break;
8670             case DW_TAG_base_type:
8671             case DW_TAG_subrange_type:
8672               /* File scope base type definitions are added to the partial
8673                  symbol table.  */
8674               add_partial_symbol (pdi, cu);
8675               break;
8676             case DW_TAG_namespace:
8677               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8678               break;
8679             case DW_TAG_module:
8680               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8681               break;
8682             case DW_TAG_imported_unit:
8683               {
8684                 struct dwarf2_per_cu_data *per_cu;
8685
8686                 /* For now we don't handle imported units in type units.  */
8687                 if (cu->per_cu->is_debug_types)
8688                   {
8689                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8690                              " supported in type units [in module %s]"),
8691                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8692                   }
8693
8694                 per_cu = dwarf2_find_containing_comp_unit
8695                            (pdi->d.sect_off, pdi->is_dwz,
8696                             cu->per_cu->dwarf2_per_objfile);
8697
8698                 /* Go read the partial unit, if needed.  */
8699                 if (per_cu->v.psymtab == NULL)
8700                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8701
8702                 VEC_safe_push (dwarf2_per_cu_ptr,
8703                                cu->per_cu->imported_symtabs, per_cu);
8704               }
8705               break;
8706             case DW_TAG_imported_declaration:
8707               add_partial_symbol (pdi, cu);
8708               break;
8709             default:
8710               break;
8711             }
8712         }
8713
8714       /* If the die has a sibling, skip to the sibling.  */
8715
8716       pdi = pdi->die_sibling;
8717     }
8718 }
8719
8720 /* Functions used to compute the fully scoped name of a partial DIE.
8721
8722    Normally, this is simple.  For C++, the parent DIE's fully scoped
8723    name is concatenated with "::" and the partial DIE's name.
8724    Enumerators are an exception; they use the scope of their parent
8725    enumeration type, i.e. the name of the enumeration type is not
8726    prepended to the enumerator.
8727
8728    There are two complexities.  One is DW_AT_specification; in this
8729    case "parent" means the parent of the target of the specification,
8730    instead of the direct parent of the DIE.  The other is compilers
8731    which do not emit DW_TAG_namespace; in this case we try to guess
8732    the fully qualified name of structure types from their members'
8733    linkage names.  This must be done using the DIE's children rather
8734    than the children of any DW_AT_specification target.  We only need
8735    to do this for structures at the top level, i.e. if the target of
8736    any DW_AT_specification (if any; otherwise the DIE itself) does not
8737    have a parent.  */
8738
8739 /* Compute the scope prefix associated with PDI's parent, in
8740    compilation unit CU.  The result will be allocated on CU's
8741    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8742    field.  NULL is returned if no prefix is necessary.  */
8743 static const char *
8744 partial_die_parent_scope (struct partial_die_info *pdi,
8745                           struct dwarf2_cu *cu)
8746 {
8747   const char *grandparent_scope;
8748   struct partial_die_info *parent, *real_pdi;
8749
8750   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8751      then this means the parent of the specification DIE.  */
8752
8753   real_pdi = pdi;
8754   while (real_pdi->has_specification)
8755     real_pdi = find_partial_die (real_pdi->spec_offset,
8756                                  real_pdi->spec_is_dwz, cu);
8757
8758   parent = real_pdi->die_parent;
8759   if (parent == NULL)
8760     return NULL;
8761
8762   if (parent->scope_set)
8763     return parent->scope;
8764
8765   parent->fixup (cu);
8766
8767   grandparent_scope = partial_die_parent_scope (parent, cu);
8768
8769   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8770      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8771      Work around this problem here.  */
8772   if (cu->language == language_cplus
8773       && parent->tag == DW_TAG_namespace
8774       && strcmp (parent->name, "::") == 0
8775       && grandparent_scope == NULL)
8776     {
8777       parent->scope = NULL;
8778       parent->scope_set = 1;
8779       return NULL;
8780     }
8781
8782   if (pdi->tag == DW_TAG_enumerator)
8783     /* Enumerators should not get the name of the enumeration as a prefix.  */
8784     parent->scope = grandparent_scope;
8785   else if (parent->tag == DW_TAG_namespace
8786       || parent->tag == DW_TAG_module
8787       || parent->tag == DW_TAG_structure_type
8788       || parent->tag == DW_TAG_class_type
8789       || parent->tag == DW_TAG_interface_type
8790       || parent->tag == DW_TAG_union_type
8791       || parent->tag == DW_TAG_enumeration_type)
8792     {
8793       if (grandparent_scope == NULL)
8794         parent->scope = parent->name;
8795       else
8796         parent->scope = typename_concat (&cu->comp_unit_obstack,
8797                                          grandparent_scope,
8798                                          parent->name, 0, cu);
8799     }
8800   else
8801     {
8802       /* FIXME drow/2004-04-01: What should we be doing with
8803          function-local names?  For partial symbols, we should probably be
8804          ignoring them.  */
8805       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8806                  parent->tag, sect_offset_str (pdi->sect_off));
8807       parent->scope = grandparent_scope;
8808     }
8809
8810   parent->scope_set = 1;
8811   return parent->scope;
8812 }
8813
8814 /* Return the fully scoped name associated with PDI, from compilation unit
8815    CU.  The result will be allocated with malloc.  */
8816
8817 static char *
8818 partial_die_full_name (struct partial_die_info *pdi,
8819                        struct dwarf2_cu *cu)
8820 {
8821   const char *parent_scope;
8822
8823   /* If this is a template instantiation, we can not work out the
8824      template arguments from partial DIEs.  So, unfortunately, we have
8825      to go through the full DIEs.  At least any work we do building
8826      types here will be reused if full symbols are loaded later.  */
8827   if (pdi->has_template_arguments)
8828     {
8829       pdi->fixup (cu);
8830
8831       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8832         {
8833           struct die_info *die;
8834           struct attribute attr;
8835           struct dwarf2_cu *ref_cu = cu;
8836
8837           /* DW_FORM_ref_addr is using section offset.  */
8838           attr.name = (enum dwarf_attribute) 0;
8839           attr.form = DW_FORM_ref_addr;
8840           attr.u.unsnd = to_underlying (pdi->sect_off);
8841           die = follow_die_ref (NULL, &attr, &ref_cu);
8842
8843           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8844         }
8845     }
8846
8847   parent_scope = partial_die_parent_scope (pdi, cu);
8848   if (parent_scope == NULL)
8849     return NULL;
8850   else
8851     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8852 }
8853
8854 static void
8855 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8856 {
8857   struct dwarf2_per_objfile *dwarf2_per_objfile
8858     = cu->per_cu->dwarf2_per_objfile;
8859   struct objfile *objfile = dwarf2_per_objfile->objfile;
8860   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8861   CORE_ADDR addr = 0;
8862   const char *actual_name = NULL;
8863   CORE_ADDR baseaddr;
8864   char *built_actual_name;
8865
8866   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8867
8868   built_actual_name = partial_die_full_name (pdi, cu);
8869   if (built_actual_name != NULL)
8870     actual_name = built_actual_name;
8871
8872   if (actual_name == NULL)
8873     actual_name = pdi->name;
8874
8875   switch (pdi->tag)
8876     {
8877     case DW_TAG_inlined_subroutine:
8878     case DW_TAG_subprogram:
8879       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8880               - baseaddr);
8881       if (pdi->is_external || cu->language == language_ada)
8882         {
8883           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8884              of the global scope.  But in Ada, we want to be able to access
8885              nested procedures globally.  So all Ada subprograms are stored
8886              in the global scope.  */
8887           add_psymbol_to_list (actual_name, strlen (actual_name),
8888                                built_actual_name != NULL,
8889                                VAR_DOMAIN, LOC_BLOCK,
8890                                SECT_OFF_TEXT (objfile),
8891                                &objfile->global_psymbols,
8892                                addr,
8893                                cu->language, objfile);
8894         }
8895       else
8896         {
8897           add_psymbol_to_list (actual_name, strlen (actual_name),
8898                                built_actual_name != NULL,
8899                                VAR_DOMAIN, LOC_BLOCK,
8900                                SECT_OFF_TEXT (objfile),
8901                                &objfile->static_psymbols,
8902                                addr, cu->language, objfile);
8903         }
8904
8905       if (pdi->main_subprogram && actual_name != NULL)
8906         set_objfile_main_name (objfile, actual_name, cu->language);
8907       break;
8908     case DW_TAG_constant:
8909       {
8910         std::vector<partial_symbol *> *list;
8911
8912         if (pdi->is_external)
8913           list = &objfile->global_psymbols;
8914         else
8915           list = &objfile->static_psymbols;
8916         add_psymbol_to_list (actual_name, strlen (actual_name),
8917                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8918                              -1, list, 0, cu->language, objfile);
8919       }
8920       break;
8921     case DW_TAG_variable:
8922       if (pdi->d.locdesc)
8923         addr = decode_locdesc (pdi->d.locdesc, cu);
8924
8925       if (pdi->d.locdesc
8926           && addr == 0
8927           && !dwarf2_per_objfile->has_section_at_zero)
8928         {
8929           /* A global or static variable may also have been stripped
8930              out by the linker if unused, in which case its address
8931              will be nullified; do not add such variables into partial
8932              symbol table then.  */
8933         }
8934       else if (pdi->is_external)
8935         {
8936           /* Global Variable.
8937              Don't enter into the minimal symbol tables as there is
8938              a minimal symbol table entry from the ELF symbols already.
8939              Enter into partial symbol table if it has a location
8940              descriptor or a type.
8941              If the location descriptor is missing, new_symbol will create
8942              a LOC_UNRESOLVED symbol, the address of the variable will then
8943              be determined from the minimal symbol table whenever the variable
8944              is referenced.
8945              The address for the partial symbol table entry is not
8946              used by GDB, but it comes in handy for debugging partial symbol
8947              table building.  */
8948
8949           if (pdi->d.locdesc || pdi->has_type)
8950             add_psymbol_to_list (actual_name, strlen (actual_name),
8951                                  built_actual_name != NULL,
8952                                  VAR_DOMAIN, LOC_STATIC,
8953                                  SECT_OFF_TEXT (objfile),
8954                                  &objfile->global_psymbols,
8955                                  addr, cu->language, objfile);
8956         }
8957       else
8958         {
8959           int has_loc = pdi->d.locdesc != NULL;
8960
8961           /* Static Variable.  Skip symbols whose value we cannot know (those
8962              without location descriptors or constant values).  */
8963           if (!has_loc && !pdi->has_const_value)
8964             {
8965               xfree (built_actual_name);
8966               return;
8967             }
8968
8969           add_psymbol_to_list (actual_name, strlen (actual_name),
8970                                built_actual_name != NULL,
8971                                VAR_DOMAIN, LOC_STATIC,
8972                                SECT_OFF_TEXT (objfile),
8973                                &objfile->static_psymbols,
8974                                has_loc ? addr : 0,
8975                                cu->language, objfile);
8976         }
8977       break;
8978     case DW_TAG_typedef:
8979     case DW_TAG_base_type:
8980     case DW_TAG_subrange_type:
8981       add_psymbol_to_list (actual_name, strlen (actual_name),
8982                            built_actual_name != NULL,
8983                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8984                            &objfile->static_psymbols,
8985                            0, cu->language, objfile);
8986       break;
8987     case DW_TAG_imported_declaration:
8988     case DW_TAG_namespace:
8989       add_psymbol_to_list (actual_name, strlen (actual_name),
8990                            built_actual_name != NULL,
8991                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8992                            &objfile->global_psymbols,
8993                            0, cu->language, objfile);
8994       break;
8995     case DW_TAG_module:
8996       add_psymbol_to_list (actual_name, strlen (actual_name),
8997                            built_actual_name != NULL,
8998                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
8999                            &objfile->global_psymbols,
9000                            0, cu->language, objfile);
9001       break;
9002     case DW_TAG_class_type:
9003     case DW_TAG_interface_type:
9004     case DW_TAG_structure_type:
9005     case DW_TAG_union_type:
9006     case DW_TAG_enumeration_type:
9007       /* Skip external references.  The DWARF standard says in the section
9008          about "Structure, Union, and Class Type Entries": "An incomplete
9009          structure, union or class type is represented by a structure,
9010          union or class entry that does not have a byte size attribute
9011          and that has a DW_AT_declaration attribute."  */
9012       if (!pdi->has_byte_size && pdi->is_declaration)
9013         {
9014           xfree (built_actual_name);
9015           return;
9016         }
9017
9018       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9019          static vs. global.  */
9020       add_psymbol_to_list (actual_name, strlen (actual_name),
9021                            built_actual_name != NULL,
9022                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9023                            cu->language == language_cplus
9024                            ? &objfile->global_psymbols
9025                            : &objfile->static_psymbols,
9026                            0, cu->language, objfile);
9027
9028       break;
9029     case DW_TAG_enumerator:
9030       add_psymbol_to_list (actual_name, strlen (actual_name),
9031                            built_actual_name != NULL,
9032                            VAR_DOMAIN, LOC_CONST, -1,
9033                            cu->language == language_cplus
9034                            ? &objfile->global_psymbols
9035                            : &objfile->static_psymbols,
9036                            0, cu->language, objfile);
9037       break;
9038     default:
9039       break;
9040     }
9041
9042   xfree (built_actual_name);
9043 }
9044
9045 /* Read a partial die corresponding to a namespace; also, add a symbol
9046    corresponding to that namespace to the symbol table.  NAMESPACE is
9047    the name of the enclosing namespace.  */
9048
9049 static void
9050 add_partial_namespace (struct partial_die_info *pdi,
9051                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9052                        int set_addrmap, struct dwarf2_cu *cu)
9053 {
9054   /* Add a symbol for the namespace.  */
9055
9056   add_partial_symbol (pdi, cu);
9057
9058   /* Now scan partial symbols in that namespace.  */
9059
9060   if (pdi->has_children)
9061     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9062 }
9063
9064 /* Read a partial die corresponding to a Fortran module.  */
9065
9066 static void
9067 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9068                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9069 {
9070   /* Add a symbol for the namespace.  */
9071
9072   add_partial_symbol (pdi, cu);
9073
9074   /* Now scan partial symbols in that module.  */
9075
9076   if (pdi->has_children)
9077     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9078 }
9079
9080 /* Read a partial die corresponding to a subprogram or an inlined
9081    subprogram and create a partial symbol for that subprogram.
9082    When the CU language allows it, this routine also defines a partial
9083    symbol for each nested subprogram that this subprogram contains.
9084    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9085    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9086
9087    PDI may also be a lexical block, in which case we simply search
9088    recursively for subprograms defined inside that lexical block.
9089    Again, this is only performed when the CU language allows this
9090    type of definitions.  */
9091
9092 static void
9093 add_partial_subprogram (struct partial_die_info *pdi,
9094                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9095                         int set_addrmap, struct dwarf2_cu *cu)
9096 {
9097   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9098     {
9099       if (pdi->has_pc_info)
9100         {
9101           if (pdi->lowpc < *lowpc)
9102             *lowpc = pdi->lowpc;
9103           if (pdi->highpc > *highpc)
9104             *highpc = pdi->highpc;
9105           if (set_addrmap)
9106             {
9107               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9108               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9109               CORE_ADDR baseaddr;
9110               CORE_ADDR this_highpc;
9111               CORE_ADDR this_lowpc;
9112
9113               baseaddr = ANOFFSET (objfile->section_offsets,
9114                                    SECT_OFF_TEXT (objfile));
9115               this_lowpc
9116                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9117                                                pdi->lowpc + baseaddr)
9118                    - baseaddr);
9119               this_highpc
9120                 = (gdbarch_adjust_dwarf2_addr (gdbarch,
9121                                                pdi->highpc + baseaddr)
9122                    - baseaddr);
9123               addrmap_set_empty (objfile->psymtabs_addrmap,
9124                                  this_lowpc, this_highpc - 1,
9125                                  cu->per_cu->v.psymtab);
9126             }
9127         }
9128
9129       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9130         {
9131           if (!pdi->is_declaration)
9132             /* Ignore subprogram DIEs that do not have a name, they are
9133                illegal.  Do not emit a complaint at this point, we will
9134                do so when we convert this psymtab into a symtab.  */
9135             if (pdi->name)
9136               add_partial_symbol (pdi, cu);
9137         }
9138     }
9139
9140   if (! pdi->has_children)
9141     return;
9142
9143   if (cu->language == language_ada)
9144     {
9145       pdi = pdi->die_child;
9146       while (pdi != NULL)
9147         {
9148           pdi->fixup (cu);
9149           if (pdi->tag == DW_TAG_subprogram
9150               || pdi->tag == DW_TAG_inlined_subroutine
9151               || pdi->tag == DW_TAG_lexical_block)
9152             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9153           pdi = pdi->die_sibling;
9154         }
9155     }
9156 }
9157
9158 /* Read a partial die corresponding to an enumeration type.  */
9159
9160 static void
9161 add_partial_enumeration (struct partial_die_info *enum_pdi,
9162                          struct dwarf2_cu *cu)
9163 {
9164   struct partial_die_info *pdi;
9165
9166   if (enum_pdi->name != NULL)
9167     add_partial_symbol (enum_pdi, cu);
9168
9169   pdi = enum_pdi->die_child;
9170   while (pdi)
9171     {
9172       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9173         complaint (_("malformed enumerator DIE ignored"));
9174       else
9175         add_partial_symbol (pdi, cu);
9176       pdi = pdi->die_sibling;
9177     }
9178 }
9179
9180 /* Return the initial uleb128 in the die at INFO_PTR.  */
9181
9182 static unsigned int
9183 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9184 {
9185   unsigned int bytes_read;
9186
9187   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9188 }
9189
9190 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9191    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9192
9193    Return the corresponding abbrev, or NULL if the number is zero (indicating
9194    an empty DIE).  In either case *BYTES_READ will be set to the length of
9195    the initial number.  */
9196
9197 static struct abbrev_info *
9198 peek_die_abbrev (const die_reader_specs &reader,
9199                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9200 {
9201   dwarf2_cu *cu = reader.cu;
9202   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9203   unsigned int abbrev_number
9204     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9205
9206   if (abbrev_number == 0)
9207     return NULL;
9208
9209   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9210   if (!abbrev)
9211     {
9212       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9213                " at offset %s [in module %s]"),
9214              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9215              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9216     }
9217
9218   return abbrev;
9219 }
9220
9221 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9222    Returns a pointer to the end of a series of DIEs, terminated by an empty
9223    DIE.  Any children of the skipped DIEs will also be skipped.  */
9224
9225 static const gdb_byte *
9226 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9227 {
9228   while (1)
9229     {
9230       unsigned int bytes_read;
9231       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9232
9233       if (abbrev == NULL)
9234         return info_ptr + bytes_read;
9235       else
9236         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9237     }
9238 }
9239
9240 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9241    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9242    abbrev corresponding to that skipped uleb128 should be passed in
9243    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9244    children.  */
9245
9246 static const gdb_byte *
9247 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9248               struct abbrev_info *abbrev)
9249 {
9250   unsigned int bytes_read;
9251   struct attribute attr;
9252   bfd *abfd = reader->abfd;
9253   struct dwarf2_cu *cu = reader->cu;
9254   const gdb_byte *buffer = reader->buffer;
9255   const gdb_byte *buffer_end = reader->buffer_end;
9256   unsigned int form, i;
9257
9258   for (i = 0; i < abbrev->num_attrs; i++)
9259     {
9260       /* The only abbrev we care about is DW_AT_sibling.  */
9261       if (abbrev->attrs[i].name == DW_AT_sibling)
9262         {
9263           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9264           if (attr.form == DW_FORM_ref_addr)
9265             complaint (_("ignoring absolute DW_AT_sibling"));
9266           else
9267             {
9268               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9269               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9270
9271               if (sibling_ptr < info_ptr)
9272                 complaint (_("DW_AT_sibling points backwards"));
9273               else if (sibling_ptr > reader->buffer_end)
9274                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9275               else
9276                 return sibling_ptr;
9277             }
9278         }
9279
9280       /* If it isn't DW_AT_sibling, skip this attribute.  */
9281       form = abbrev->attrs[i].form;
9282     skip_attribute:
9283       switch (form)
9284         {
9285         case DW_FORM_ref_addr:
9286           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9287              and later it is offset sized.  */
9288           if (cu->header.version == 2)
9289             info_ptr += cu->header.addr_size;
9290           else
9291             info_ptr += cu->header.offset_size;
9292           break;
9293         case DW_FORM_GNU_ref_alt:
9294           info_ptr += cu->header.offset_size;
9295           break;
9296         case DW_FORM_addr:
9297           info_ptr += cu->header.addr_size;
9298           break;
9299         case DW_FORM_data1:
9300         case DW_FORM_ref1:
9301         case DW_FORM_flag:
9302           info_ptr += 1;
9303           break;
9304         case DW_FORM_flag_present:
9305         case DW_FORM_implicit_const:
9306           break;
9307         case DW_FORM_data2:
9308         case DW_FORM_ref2:
9309           info_ptr += 2;
9310           break;
9311         case DW_FORM_data4:
9312         case DW_FORM_ref4:
9313           info_ptr += 4;
9314           break;
9315         case DW_FORM_data8:
9316         case DW_FORM_ref8:
9317         case DW_FORM_ref_sig8:
9318           info_ptr += 8;
9319           break;
9320         case DW_FORM_data16:
9321           info_ptr += 16;
9322           break;
9323         case DW_FORM_string:
9324           read_direct_string (abfd, info_ptr, &bytes_read);
9325           info_ptr += bytes_read;
9326           break;
9327         case DW_FORM_sec_offset:
9328         case DW_FORM_strp:
9329         case DW_FORM_GNU_strp_alt:
9330           info_ptr += cu->header.offset_size;
9331           break;
9332         case DW_FORM_exprloc:
9333         case DW_FORM_block:
9334           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9335           info_ptr += bytes_read;
9336           break;
9337         case DW_FORM_block1:
9338           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9339           break;
9340         case DW_FORM_block2:
9341           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9342           break;
9343         case DW_FORM_block4:
9344           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9345           break;
9346         case DW_FORM_sdata:
9347         case DW_FORM_udata:
9348         case DW_FORM_ref_udata:
9349         case DW_FORM_GNU_addr_index:
9350         case DW_FORM_GNU_str_index:
9351           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9352           break;
9353         case DW_FORM_indirect:
9354           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9355           info_ptr += bytes_read;
9356           /* We need to continue parsing from here, so just go back to
9357              the top.  */
9358           goto skip_attribute;
9359
9360         default:
9361           error (_("Dwarf Error: Cannot handle %s "
9362                    "in DWARF reader [in module %s]"),
9363                  dwarf_form_name (form),
9364                  bfd_get_filename (abfd));
9365         }
9366     }
9367
9368   if (abbrev->has_children)
9369     return skip_children (reader, info_ptr);
9370   else
9371     return info_ptr;
9372 }
9373
9374 /* Locate ORIG_PDI's sibling.
9375    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9376
9377 static const gdb_byte *
9378 locate_pdi_sibling (const struct die_reader_specs *reader,
9379                     struct partial_die_info *orig_pdi,
9380                     const gdb_byte *info_ptr)
9381 {
9382   /* Do we know the sibling already?  */
9383
9384   if (orig_pdi->sibling)
9385     return orig_pdi->sibling;
9386
9387   /* Are there any children to deal with?  */
9388
9389   if (!orig_pdi->has_children)
9390     return info_ptr;
9391
9392   /* Skip the children the long way.  */
9393
9394   return skip_children (reader, info_ptr);
9395 }
9396
9397 /* Expand this partial symbol table into a full symbol table.  SELF is
9398    not NULL.  */
9399
9400 static void
9401 dwarf2_read_symtab (struct partial_symtab *self,
9402                     struct objfile *objfile)
9403 {
9404   struct dwarf2_per_objfile *dwarf2_per_objfile
9405     = get_dwarf2_per_objfile (objfile);
9406
9407   if (self->readin)
9408     {
9409       warning (_("bug: psymtab for %s is already read in."),
9410                self->filename);
9411     }
9412   else
9413     {
9414       if (info_verbose)
9415         {
9416           printf_filtered (_("Reading in symbols for %s..."),
9417                            self->filename);
9418           gdb_flush (gdb_stdout);
9419         }
9420
9421       /* If this psymtab is constructed from a debug-only objfile, the
9422          has_section_at_zero flag will not necessarily be correct.  We
9423          can get the correct value for this flag by looking at the data
9424          associated with the (presumably stripped) associated objfile.  */
9425       if (objfile->separate_debug_objfile_backlink)
9426         {
9427           struct dwarf2_per_objfile *dpo_backlink
9428             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9429
9430           dwarf2_per_objfile->has_section_at_zero
9431             = dpo_backlink->has_section_at_zero;
9432         }
9433
9434       dwarf2_per_objfile->reading_partial_symbols = 0;
9435
9436       psymtab_to_symtab_1 (self);
9437
9438       /* Finish up the debug error message.  */
9439       if (info_verbose)
9440         printf_filtered (_("done.\n"));
9441     }
9442
9443   process_cu_includes (dwarf2_per_objfile);
9444 }
9445 \f
9446 /* Reading in full CUs.  */
9447
9448 /* Add PER_CU to the queue.  */
9449
9450 static void
9451 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9452                  enum language pretend_language)
9453 {
9454   struct dwarf2_queue_item *item;
9455
9456   per_cu->queued = 1;
9457   item = XNEW (struct dwarf2_queue_item);
9458   item->per_cu = per_cu;
9459   item->pretend_language = pretend_language;
9460   item->next = NULL;
9461
9462   if (dwarf2_queue == NULL)
9463     dwarf2_queue = item;
9464   else
9465     dwarf2_queue_tail->next = item;
9466
9467   dwarf2_queue_tail = item;
9468 }
9469
9470 /* If PER_CU is not yet queued, add it to the queue.
9471    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9472    dependency.
9473    The result is non-zero if PER_CU was queued, otherwise the result is zero
9474    meaning either PER_CU is already queued or it is already loaded.
9475
9476    N.B. There is an invariant here that if a CU is queued then it is loaded.
9477    The caller is required to load PER_CU if we return non-zero.  */
9478
9479 static int
9480 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9481                        struct dwarf2_per_cu_data *per_cu,
9482                        enum language pretend_language)
9483 {
9484   /* We may arrive here during partial symbol reading, if we need full
9485      DIEs to process an unusual case (e.g. template arguments).  Do
9486      not queue PER_CU, just tell our caller to load its DIEs.  */
9487   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9488     {
9489       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9490         return 1;
9491       return 0;
9492     }
9493
9494   /* Mark the dependence relation so that we don't flush PER_CU
9495      too early.  */
9496   if (dependent_cu != NULL)
9497     dwarf2_add_dependence (dependent_cu, per_cu);
9498
9499   /* If it's already on the queue, we have nothing to do.  */
9500   if (per_cu->queued)
9501     return 0;
9502
9503   /* If the compilation unit is already loaded, just mark it as
9504      used.  */
9505   if (per_cu->cu != NULL)
9506     {
9507       per_cu->cu->last_used = 0;
9508       return 0;
9509     }
9510
9511   /* Add it to the queue.  */
9512   queue_comp_unit (per_cu, pretend_language);
9513
9514   return 1;
9515 }
9516
9517 /* Process the queue.  */
9518
9519 static void
9520 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9521 {
9522   struct dwarf2_queue_item *item, *next_item;
9523
9524   if (dwarf_read_debug)
9525     {
9526       fprintf_unfiltered (gdb_stdlog,
9527                           "Expanding one or more symtabs of objfile %s ...\n",
9528                           objfile_name (dwarf2_per_objfile->objfile));
9529     }
9530
9531   /* The queue starts out with one item, but following a DIE reference
9532      may load a new CU, adding it to the end of the queue.  */
9533   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9534     {
9535       if ((dwarf2_per_objfile->using_index
9536            ? !item->per_cu->v.quick->compunit_symtab
9537            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9538           /* Skip dummy CUs.  */
9539           && item->per_cu->cu != NULL)
9540         {
9541           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9542           unsigned int debug_print_threshold;
9543           char buf[100];
9544
9545           if (per_cu->is_debug_types)
9546             {
9547               struct signatured_type *sig_type =
9548                 (struct signatured_type *) per_cu;
9549
9550               sprintf (buf, "TU %s at offset %s",
9551                        hex_string (sig_type->signature),
9552                        sect_offset_str (per_cu->sect_off));
9553               /* There can be 100s of TUs.
9554                  Only print them in verbose mode.  */
9555               debug_print_threshold = 2;
9556             }
9557           else
9558             {
9559               sprintf (buf, "CU at offset %s",
9560                        sect_offset_str (per_cu->sect_off));
9561               debug_print_threshold = 1;
9562             }
9563
9564           if (dwarf_read_debug >= debug_print_threshold)
9565             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9566
9567           if (per_cu->is_debug_types)
9568             process_full_type_unit (per_cu, item->pretend_language);
9569           else
9570             process_full_comp_unit (per_cu, item->pretend_language);
9571
9572           if (dwarf_read_debug >= debug_print_threshold)
9573             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9574         }
9575
9576       item->per_cu->queued = 0;
9577       next_item = item->next;
9578       xfree (item);
9579     }
9580
9581   dwarf2_queue_tail = NULL;
9582
9583   if (dwarf_read_debug)
9584     {
9585       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9586                           objfile_name (dwarf2_per_objfile->objfile));
9587     }
9588 }
9589
9590 /* Read in full symbols for PST, and anything it depends on.  */
9591
9592 static void
9593 psymtab_to_symtab_1 (struct partial_symtab *pst)
9594 {
9595   struct dwarf2_per_cu_data *per_cu;
9596   int i;
9597
9598   if (pst->readin)
9599     return;
9600
9601   for (i = 0; i < pst->number_of_dependencies; i++)
9602     if (!pst->dependencies[i]->readin
9603         && pst->dependencies[i]->user == NULL)
9604       {
9605         /* Inform about additional files that need to be read in.  */
9606         if (info_verbose)
9607           {
9608             /* FIXME: i18n: Need to make this a single string.  */
9609             fputs_filtered (" ", gdb_stdout);
9610             wrap_here ("");
9611             fputs_filtered ("and ", gdb_stdout);
9612             wrap_here ("");
9613             printf_filtered ("%s...", pst->dependencies[i]->filename);
9614             wrap_here ("");     /* Flush output.  */
9615             gdb_flush (gdb_stdout);
9616           }
9617         psymtab_to_symtab_1 (pst->dependencies[i]);
9618       }
9619
9620   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9621
9622   if (per_cu == NULL)
9623     {
9624       /* It's an include file, no symbols to read for it.
9625          Everything is in the parent symtab.  */
9626       pst->readin = 1;
9627       return;
9628     }
9629
9630   dw2_do_instantiate_symtab (per_cu, false);
9631 }
9632
9633 /* Trivial hash function for die_info: the hash value of a DIE
9634    is its offset in .debug_info for this objfile.  */
9635
9636 static hashval_t
9637 die_hash (const void *item)
9638 {
9639   const struct die_info *die = (const struct die_info *) item;
9640
9641   return to_underlying (die->sect_off);
9642 }
9643
9644 /* Trivial comparison function for die_info structures: two DIEs
9645    are equal if they have the same offset.  */
9646
9647 static int
9648 die_eq (const void *item_lhs, const void *item_rhs)
9649 {
9650   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9651   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9652
9653   return die_lhs->sect_off == die_rhs->sect_off;
9654 }
9655
9656 /* die_reader_func for load_full_comp_unit.
9657    This is identical to read_signatured_type_reader,
9658    but is kept separate for now.  */
9659
9660 static void
9661 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9662                             const gdb_byte *info_ptr,
9663                             struct die_info *comp_unit_die,
9664                             int has_children,
9665                             void *data)
9666 {
9667   struct dwarf2_cu *cu = reader->cu;
9668   enum language *language_ptr = (enum language *) data;
9669
9670   gdb_assert (cu->die_hash == NULL);
9671   cu->die_hash =
9672     htab_create_alloc_ex (cu->header.length / 12,
9673                           die_hash,
9674                           die_eq,
9675                           NULL,
9676                           &cu->comp_unit_obstack,
9677                           hashtab_obstack_allocate,
9678                           dummy_obstack_deallocate);
9679
9680   if (has_children)
9681     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9682                                                   &info_ptr, comp_unit_die);
9683   cu->dies = comp_unit_die;
9684   /* comp_unit_die is not stored in die_hash, no need.  */
9685
9686   /* We try not to read any attributes in this function, because not
9687      all CUs needed for references have been loaded yet, and symbol
9688      table processing isn't initialized.  But we have to set the CU language,
9689      or we won't be able to build types correctly.
9690      Similarly, if we do not read the producer, we can not apply
9691      producer-specific interpretation.  */
9692   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9693 }
9694
9695 /* Load the DIEs associated with PER_CU into memory.  */
9696
9697 static void
9698 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9699                      bool skip_partial,
9700                      enum language pretend_language)
9701 {
9702   gdb_assert (! this_cu->is_debug_types);
9703
9704   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9705                            load_full_comp_unit_reader, &pretend_language);
9706 }
9707
9708 /* Add a DIE to the delayed physname list.  */
9709
9710 static void
9711 add_to_method_list (struct type *type, int fnfield_index, int index,
9712                     const char *name, struct die_info *die,
9713                     struct dwarf2_cu *cu)
9714 {
9715   struct delayed_method_info mi;
9716   mi.type = type;
9717   mi.fnfield_index = fnfield_index;
9718   mi.index = index;
9719   mi.name = name;
9720   mi.die = die;
9721   cu->method_list.push_back (mi);
9722 }
9723
9724 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9725    "const" / "volatile".  If so, decrements LEN by the length of the
9726    modifier and return true.  Otherwise return false.  */
9727
9728 template<size_t N>
9729 static bool
9730 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9731 {
9732   size_t mod_len = sizeof (mod) - 1;
9733   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9734     {
9735       len -= mod_len;
9736       return true;
9737     }
9738   return false;
9739 }
9740
9741 /* Compute the physnames of any methods on the CU's method list.
9742
9743    The computation of method physnames is delayed in order to avoid the
9744    (bad) condition that one of the method's formal parameters is of an as yet
9745    incomplete type.  */
9746
9747 static void
9748 compute_delayed_physnames (struct dwarf2_cu *cu)
9749 {
9750   /* Only C++ delays computing physnames.  */
9751   if (cu->method_list.empty ())
9752     return;
9753   gdb_assert (cu->language == language_cplus);
9754
9755   for (const delayed_method_info &mi : cu->method_list)
9756     {
9757       const char *physname;
9758       struct fn_fieldlist *fn_flp
9759         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9760       physname = dwarf2_physname (mi.name, mi.die, cu);
9761       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9762         = physname ? physname : "";
9763
9764       /* Since there's no tag to indicate whether a method is a
9765          const/volatile overload, extract that information out of the
9766          demangled name.  */
9767       if (physname != NULL)
9768         {
9769           size_t len = strlen (physname);
9770
9771           while (1)
9772             {
9773               if (physname[len] == ')') /* shortcut */
9774                 break;
9775               else if (check_modifier (physname, len, " const"))
9776                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9777               else if (check_modifier (physname, len, " volatile"))
9778                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9779               else
9780                 break;
9781             }
9782         }
9783     }
9784
9785   /* The list is no longer needed.  */
9786   cu->method_list.clear ();
9787 }
9788
9789 /* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9790    the same as all other symbols in LISTHEAD.  If a new symbol is added
9791    with a different language, this function asserts.  */
9792
9793 static inline void
9794 dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9795 {
9796   /* Only assert if LISTHEAD already contains symbols of a different
9797      language (dict_create_hashed/insert_symbol_hashed requires that all
9798      symbols in this list are of the same language).  */
9799   gdb_assert ((*listhead) == NULL
9800               || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9801                   == SYMBOL_LANGUAGE (symbol)));
9802
9803   add_symbol_to_list (symbol, listhead);
9804 }
9805
9806 /* Go objects should be embedded in a DW_TAG_module DIE,
9807    and it's not clear if/how imported objects will appear.
9808    To keep Go support simple until that's worked out,
9809    go back through what we've read and create something usable.
9810    We could do this while processing each DIE, and feels kinda cleaner,
9811    but that way is more invasive.
9812    This is to, for example, allow the user to type "p var" or "b main"
9813    without having to specify the package name, and allow lookups
9814    of module.object to work in contexts that use the expression
9815    parser.  */
9816
9817 static void
9818 fixup_go_packaging (struct dwarf2_cu *cu)
9819 {
9820   char *package_name = NULL;
9821   struct pending *list;
9822   int i;
9823
9824   for (list = *cu->builder->get_global_symbols ();
9825        list != NULL;
9826        list = list->next)
9827     {
9828       for (i = 0; i < list->nsyms; ++i)
9829         {
9830           struct symbol *sym = list->symbol[i];
9831
9832           if (SYMBOL_LANGUAGE (sym) == language_go
9833               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9834             {
9835               char *this_package_name = go_symbol_package_name (sym);
9836
9837               if (this_package_name == NULL)
9838                 continue;
9839               if (package_name == NULL)
9840                 package_name = this_package_name;
9841               else
9842                 {
9843                   struct objfile *objfile
9844                     = cu->per_cu->dwarf2_per_objfile->objfile;
9845                   if (strcmp (package_name, this_package_name) != 0)
9846                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9847                                (symbol_symtab (sym) != NULL
9848                                 ? symtab_to_filename_for_display
9849                                     (symbol_symtab (sym))
9850                                 : objfile_name (objfile)),
9851                                this_package_name, package_name);
9852                   xfree (this_package_name);
9853                 }
9854             }
9855         }
9856     }
9857
9858   if (package_name != NULL)
9859     {
9860       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9861       const char *saved_package_name
9862         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9863                                         package_name,
9864                                         strlen (package_name));
9865       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9866                                      saved_package_name);
9867       struct symbol *sym;
9868
9869       sym = allocate_symbol (objfile);
9870       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9871       SYMBOL_SET_NAMES (sym, saved_package_name,
9872                         strlen (saved_package_name), 0, objfile);
9873       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9874          e.g., "main" finds the "main" module and not C's main().  */
9875       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9876       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9877       SYMBOL_TYPE (sym) = type;
9878
9879       dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
9880
9881       xfree (package_name);
9882     }
9883 }
9884
9885 /* Allocate a fully-qualified name consisting of the two parts on the
9886    obstack.  */
9887
9888 static const char *
9889 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9890 {
9891   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9892 }
9893
9894 /* A helper that allocates a struct discriminant_info to attach to a
9895    union type.  */
9896
9897 static struct discriminant_info *
9898 alloc_discriminant_info (struct type *type, int discriminant_index,
9899                          int default_index)
9900 {
9901   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9902   gdb_assert (discriminant_index == -1
9903               || (discriminant_index >= 0
9904                   && discriminant_index < TYPE_NFIELDS (type)));
9905   gdb_assert (default_index == -1
9906               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9907
9908   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9909
9910   struct discriminant_info *disc
9911     = ((struct discriminant_info *)
9912        TYPE_ZALLOC (type,
9913                     offsetof (struct discriminant_info, discriminants)
9914                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9915   disc->default_index = default_index;
9916   disc->discriminant_index = discriminant_index;
9917
9918   struct dynamic_prop prop;
9919   prop.kind = PROP_UNDEFINED;
9920   prop.data.baton = disc;
9921
9922   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9923
9924   return disc;
9925 }
9926
9927 /* Some versions of rustc emitted enums in an unusual way.
9928
9929    Ordinary enums were emitted as unions.  The first element of each
9930    structure in the union was named "RUST$ENUM$DISR".  This element
9931    held the discriminant.
9932
9933    These versions of Rust also implemented the "non-zero"
9934    optimization.  When the enum had two values, and one is empty and
9935    the other holds a pointer that cannot be zero, the pointer is used
9936    as the discriminant, with a zero value meaning the empty variant.
9937    Here, the union's first member is of the form
9938    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9939    where the fieldnos are the indices of the fields that should be
9940    traversed in order to find the field (which may be several fields deep)
9941    and the variantname is the name of the variant of the case when the
9942    field is zero.
9943
9944    This function recognizes whether TYPE is of one of these forms,
9945    and, if so, smashes it to be a variant type.  */
9946
9947 static void
9948 quirk_rust_enum (struct type *type, struct objfile *objfile)
9949 {
9950   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9951
9952   /* We don't need to deal with empty enums.  */
9953   if (TYPE_NFIELDS (type) == 0)
9954     return;
9955
9956 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9957   if (TYPE_NFIELDS (type) == 1
9958       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9959     {
9960       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9961
9962       /* Decode the field name to find the offset of the
9963          discriminant.  */
9964       ULONGEST bit_offset = 0;
9965       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9966       while (name[0] >= '0' && name[0] <= '9')
9967         {
9968           char *tail;
9969           unsigned long index = strtoul (name, &tail, 10);
9970           name = tail;
9971           if (*name != '$'
9972               || index >= TYPE_NFIELDS (field_type)
9973               || (TYPE_FIELD_LOC_KIND (field_type, index)
9974                   != FIELD_LOC_KIND_BITPOS))
9975             {
9976               complaint (_("Could not parse Rust enum encoding string \"%s\""
9977                            "[in module %s]"),
9978                          TYPE_FIELD_NAME (type, 0),
9979                          objfile_name (objfile));
9980               return;
9981             }
9982           ++name;
9983
9984           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9985           field_type = TYPE_FIELD_TYPE (field_type, index);
9986         }
9987
9988       /* Make a union to hold the variants.  */
9989       struct type *union_type = alloc_type (objfile);
9990       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9991       TYPE_NFIELDS (union_type) = 3;
9992       TYPE_FIELDS (union_type)
9993         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9994       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9995       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9996
9997       /* Put the discriminant must at index 0.  */
9998       TYPE_FIELD_TYPE (union_type, 0) = field_type;
9999       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10000       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10001       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10002
10003       /* The order of fields doesn't really matter, so put the real
10004          field at index 1 and the data-less field at index 2.  */
10005       struct discriminant_info *disc
10006         = alloc_discriminant_info (union_type, 0, 1);
10007       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10008       TYPE_FIELD_NAME (union_type, 1)
10009         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10010       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10011         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10012                               TYPE_FIELD_NAME (union_type, 1));
10013
10014       const char *dataless_name
10015         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10016                               name);
10017       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10018                                               dataless_name);
10019       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10020       /* NAME points into the original discriminant name, which
10021          already has the correct lifetime.  */
10022       TYPE_FIELD_NAME (union_type, 2) = name;
10023       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10024       disc->discriminants[2] = 0;
10025
10026       /* Smash this type to be a structure type.  We have to do this
10027          because the type has already been recorded.  */
10028       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10029       TYPE_NFIELDS (type) = 1;
10030       TYPE_FIELDS (type)
10031         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10032
10033       /* Install the variant part.  */
10034       TYPE_FIELD_TYPE (type, 0) = union_type;
10035       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10036       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10037     }
10038   else if (TYPE_NFIELDS (type) == 1)
10039     {
10040       /* We assume that a union with a single field is a univariant
10041          enum.  */
10042       /* Smash this type to be a structure type.  We have to do this
10043          because the type has already been recorded.  */
10044       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10045
10046       /* Make a union to hold the variants.  */
10047       struct type *union_type = alloc_type (objfile);
10048       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10049       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10050       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10051       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10052       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10053
10054       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10055       const char *variant_name
10056         = rust_last_path_segment (TYPE_NAME (field_type));
10057       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10058       TYPE_NAME (field_type)
10059         = rust_fully_qualify (&objfile->objfile_obstack,
10060                               TYPE_NAME (type), variant_name);
10061
10062       /* Install the union in the outer struct type.  */
10063       TYPE_NFIELDS (type) = 1;
10064       TYPE_FIELDS (type)
10065         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10066       TYPE_FIELD_TYPE (type, 0) = union_type;
10067       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10068       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10069
10070       alloc_discriminant_info (union_type, -1, 0);
10071     }
10072   else
10073     {
10074       struct type *disr_type = nullptr;
10075       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10076         {
10077           disr_type = TYPE_FIELD_TYPE (type, i);
10078
10079           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10080             {
10081               /* All fields of a true enum will be structs.  */
10082               return;
10083             }
10084           else if (TYPE_NFIELDS (disr_type) == 0)
10085             {
10086               /* Could be data-less variant, so keep going.  */
10087               disr_type = nullptr;
10088             }
10089           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10090                            "RUST$ENUM$DISR") != 0)
10091             {
10092               /* Not a Rust enum.  */
10093               return;
10094             }
10095           else
10096             {
10097               /* Found one.  */
10098               break;
10099             }
10100         }
10101
10102       /* If we got here without a discriminant, then it's probably
10103          just a union.  */
10104       if (disr_type == nullptr)
10105         return;
10106
10107       /* Smash this type to be a structure type.  We have to do this
10108          because the type has already been recorded.  */
10109       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10110
10111       /* Make a union to hold the variants.  */
10112       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10113       struct type *union_type = alloc_type (objfile);
10114       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10115       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10116       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10117       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10118       TYPE_FIELDS (union_type)
10119         = (struct field *) TYPE_ZALLOC (union_type,
10120                                         (TYPE_NFIELDS (union_type)
10121                                          * sizeof (struct field)));
10122
10123       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10124               TYPE_NFIELDS (type) * sizeof (struct field));
10125
10126       /* Install the discriminant at index 0 in the union.  */
10127       TYPE_FIELD (union_type, 0) = *disr_field;
10128       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10129       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10130
10131       /* Install the union in the outer struct type.  */
10132       TYPE_FIELD_TYPE (type, 0) = union_type;
10133       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10134       TYPE_NFIELDS (type) = 1;
10135
10136       /* Set the size and offset of the union type.  */
10137       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10138
10139       /* We need a way to find the correct discriminant given a
10140          variant name.  For convenience we build a map here.  */
10141       struct type *enum_type = FIELD_TYPE (*disr_field);
10142       std::unordered_map<std::string, ULONGEST> discriminant_map;
10143       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10144         {
10145           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10146             {
10147               const char *name
10148                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10149               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10150             }
10151         }
10152
10153       int n_fields = TYPE_NFIELDS (union_type);
10154       struct discriminant_info *disc
10155         = alloc_discriminant_info (union_type, 0, -1);
10156       /* Skip the discriminant here.  */
10157       for (int i = 1; i < n_fields; ++i)
10158         {
10159           /* Find the final word in the name of this variant's type.
10160              That name can be used to look up the correct
10161              discriminant.  */
10162           const char *variant_name
10163             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10164                                                                   i)));
10165
10166           auto iter = discriminant_map.find (variant_name);
10167           if (iter != discriminant_map.end ())
10168             disc->discriminants[i] = iter->second;
10169
10170           /* Remove the discriminant field, if it exists.  */
10171           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10172           if (TYPE_NFIELDS (sub_type) > 0)
10173             {
10174               --TYPE_NFIELDS (sub_type);
10175               ++TYPE_FIELDS (sub_type);
10176             }
10177           TYPE_FIELD_NAME (union_type, i) = variant_name;
10178           TYPE_NAME (sub_type)
10179             = rust_fully_qualify (&objfile->objfile_obstack,
10180                                   TYPE_NAME (type), variant_name);
10181         }
10182     }
10183 }
10184
10185 /* Rewrite some Rust unions to be structures with variants parts.  */
10186
10187 static void
10188 rust_union_quirks (struct dwarf2_cu *cu)
10189 {
10190   gdb_assert (cu->language == language_rust);
10191   for (type *type_ : cu->rust_unions)
10192     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10193   /* We don't need this any more.  */
10194   cu->rust_unions.clear ();
10195 }
10196
10197 /* Return the symtab for PER_CU.  This works properly regardless of
10198    whether we're using the index or psymtabs.  */
10199
10200 static struct compunit_symtab *
10201 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10202 {
10203   return (per_cu->dwarf2_per_objfile->using_index
10204           ? per_cu->v.quick->compunit_symtab
10205           : per_cu->v.psymtab->compunit_symtab);
10206 }
10207
10208 /* A helper function for computing the list of all symbol tables
10209    included by PER_CU.  */
10210
10211 static void
10212 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10213                                 htab_t all_children, htab_t all_type_symtabs,
10214                                 struct dwarf2_per_cu_data *per_cu,
10215                                 struct compunit_symtab *immediate_parent)
10216 {
10217   void **slot;
10218   int ix;
10219   struct compunit_symtab *cust;
10220   struct dwarf2_per_cu_data *iter;
10221
10222   slot = htab_find_slot (all_children, per_cu, INSERT);
10223   if (*slot != NULL)
10224     {
10225       /* This inclusion and its children have been processed.  */
10226       return;
10227     }
10228
10229   *slot = per_cu;
10230   /* Only add a CU if it has a symbol table.  */
10231   cust = get_compunit_symtab (per_cu);
10232   if (cust != NULL)
10233     {
10234       /* If this is a type unit only add its symbol table if we haven't
10235          seen it yet (type unit per_cu's can share symtabs).  */
10236       if (per_cu->is_debug_types)
10237         {
10238           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10239           if (*slot == NULL)
10240             {
10241               *slot = cust;
10242               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10243               if (cust->user == NULL)
10244                 cust->user = immediate_parent;
10245             }
10246         }
10247       else
10248         {
10249           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10250           if (cust->user == NULL)
10251             cust->user = immediate_parent;
10252         }
10253     }
10254
10255   for (ix = 0;
10256        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10257        ++ix)
10258     {
10259       recursively_compute_inclusions (result, all_children,
10260                                       all_type_symtabs, iter, cust);
10261     }
10262 }
10263
10264 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10265    PER_CU.  */
10266
10267 static void
10268 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10269 {
10270   gdb_assert (! per_cu->is_debug_types);
10271
10272   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10273     {
10274       int ix, len;
10275       struct dwarf2_per_cu_data *per_cu_iter;
10276       struct compunit_symtab *compunit_symtab_iter;
10277       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10278       htab_t all_children, all_type_symtabs;
10279       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10280
10281       /* If we don't have a symtab, we can just skip this case.  */
10282       if (cust == NULL)
10283         return;
10284
10285       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10286                                         NULL, xcalloc, xfree);
10287       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10288                                             NULL, xcalloc, xfree);
10289
10290       for (ix = 0;
10291            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10292                         ix, per_cu_iter);
10293            ++ix)
10294         {
10295           recursively_compute_inclusions (&result_symtabs, all_children,
10296                                           all_type_symtabs, per_cu_iter,
10297                                           cust);
10298         }
10299
10300       /* Now we have a transitive closure of all the included symtabs.  */
10301       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10302       cust->includes
10303         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10304                      struct compunit_symtab *, len + 1);
10305       for (ix = 0;
10306            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10307                         compunit_symtab_iter);
10308            ++ix)
10309         cust->includes[ix] = compunit_symtab_iter;
10310       cust->includes[len] = NULL;
10311
10312       VEC_free (compunit_symtab_ptr, result_symtabs);
10313       htab_delete (all_children);
10314       htab_delete (all_type_symtabs);
10315     }
10316 }
10317
10318 /* Compute the 'includes' field for the symtabs of all the CUs we just
10319    read.  */
10320
10321 static void
10322 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10323 {
10324   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10325     {
10326       if (! iter->is_debug_types)
10327         compute_compunit_symtab_includes (iter);
10328     }
10329
10330   dwarf2_per_objfile->just_read_cus.clear ();
10331 }
10332
10333 /* Generate full symbol information for PER_CU, whose DIEs have
10334    already been loaded into memory.  */
10335
10336 static void
10337 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10338                         enum language pretend_language)
10339 {
10340   struct dwarf2_cu *cu = per_cu->cu;
10341   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10342   struct objfile *objfile = dwarf2_per_objfile->objfile;
10343   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10344   CORE_ADDR lowpc, highpc;
10345   struct compunit_symtab *cust;
10346   CORE_ADDR baseaddr;
10347   struct block *static_block;
10348   CORE_ADDR addr;
10349
10350   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10351
10352   /* Clear the list here in case something was left over.  */
10353   cu->method_list.clear ();
10354
10355   cu->language = pretend_language;
10356   cu->language_defn = language_def (cu->language);
10357
10358   /* Do line number decoding in read_file_scope () */
10359   process_die (cu->dies, cu);
10360
10361   /* For now fudge the Go package.  */
10362   if (cu->language == language_go)
10363     fixup_go_packaging (cu);
10364
10365   /* Now that we have processed all the DIEs in the CU, all the types 
10366      should be complete, and it should now be safe to compute all of the
10367      physnames.  */
10368   compute_delayed_physnames (cu);
10369
10370   if (cu->language == language_rust)
10371     rust_union_quirks (cu);
10372
10373   /* Some compilers don't define a DW_AT_high_pc attribute for the
10374      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10375      it, by scanning the DIE's below the compilation unit.  */
10376   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10377
10378   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10379   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10380
10381   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10382      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10383      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10384      addrmap to help ensure it has an accurate map of pc values belonging to
10385      this comp unit.  */
10386   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10387
10388   cust = cu->builder->end_symtab_from_static_block (static_block,
10389                                                     SECT_OFF_TEXT (objfile),
10390                                                     0);
10391
10392   if (cust != NULL)
10393     {
10394       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10395
10396       /* Set symtab language to language from DW_AT_language.  If the
10397          compilation is from a C file generated by language preprocessors, do
10398          not set the language if it was already deduced by start_subfile.  */
10399       if (!(cu->language == language_c
10400             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10401         COMPUNIT_FILETABS (cust)->language = cu->language;
10402
10403       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10404          produce DW_AT_location with location lists but it can be possibly
10405          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10406          there were bugs in prologue debug info, fixed later in GCC-4.5
10407          by "unwind info for epilogues" patch (which is not directly related).
10408
10409          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10410          needed, it would be wrong due to missing DW_AT_producer there.
10411
10412          Still one can confuse GDB by using non-standard GCC compilation
10413          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10414          */ 
10415       if (cu->has_loclist && gcc_4_minor >= 5)
10416         cust->locations_valid = 1;
10417
10418       if (gcc_4_minor >= 5)
10419         cust->epilogue_unwind_valid = 1;
10420
10421       cust->call_site_htab = cu->call_site_htab;
10422     }
10423
10424   if (dwarf2_per_objfile->using_index)
10425     per_cu->v.quick->compunit_symtab = cust;
10426   else
10427     {
10428       struct partial_symtab *pst = per_cu->v.psymtab;
10429       pst->compunit_symtab = cust;
10430       pst->readin = 1;
10431     }
10432
10433   /* Push it for inclusion processing later.  */
10434   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10435
10436   /* Not needed any more.  */
10437   cu->builder.reset ();
10438 }
10439
10440 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10441    already been loaded into memory.  */
10442
10443 static void
10444 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10445                         enum language pretend_language)
10446 {
10447   struct dwarf2_cu *cu = per_cu->cu;
10448   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10449   struct objfile *objfile = dwarf2_per_objfile->objfile;
10450   struct compunit_symtab *cust;
10451   struct signatured_type *sig_type;
10452
10453   gdb_assert (per_cu->is_debug_types);
10454   sig_type = (struct signatured_type *) per_cu;
10455
10456   /* Clear the list here in case something was left over.  */
10457   cu->method_list.clear ();
10458
10459   cu->language = pretend_language;
10460   cu->language_defn = language_def (cu->language);
10461
10462   /* The symbol tables are set up in read_type_unit_scope.  */
10463   process_die (cu->dies, cu);
10464
10465   /* For now fudge the Go package.  */
10466   if (cu->language == language_go)
10467     fixup_go_packaging (cu);
10468
10469   /* Now that we have processed all the DIEs in the CU, all the types 
10470      should be complete, and it should now be safe to compute all of the
10471      physnames.  */
10472   compute_delayed_physnames (cu);
10473
10474   if (cu->language == language_rust)
10475     rust_union_quirks (cu);
10476
10477   /* TUs share symbol tables.
10478      If this is the first TU to use this symtab, complete the construction
10479      of it with end_expandable_symtab.  Otherwise, complete the addition of
10480      this TU's symbols to the existing symtab.  */
10481   if (sig_type->type_unit_group->compunit_symtab == NULL)
10482     {
10483       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10484       sig_type->type_unit_group->compunit_symtab = cust;
10485
10486       if (cust != NULL)
10487         {
10488           /* Set symtab language to language from DW_AT_language.  If the
10489              compilation is from a C file generated by language preprocessors,
10490              do not set the language if it was already deduced by
10491              start_subfile.  */
10492           if (!(cu->language == language_c
10493                 && COMPUNIT_FILETABS (cust)->language != language_c))
10494             COMPUNIT_FILETABS (cust)->language = cu->language;
10495         }
10496     }
10497   else
10498     {
10499       cu->builder->augment_type_symtab ();
10500       cust = sig_type->type_unit_group->compunit_symtab;
10501     }
10502
10503   if (dwarf2_per_objfile->using_index)
10504     per_cu->v.quick->compunit_symtab = cust;
10505   else
10506     {
10507       struct partial_symtab *pst = per_cu->v.psymtab;
10508       pst->compunit_symtab = cust;
10509       pst->readin = 1;
10510     }
10511
10512   /* Not needed any more.  */
10513   cu->builder.reset ();
10514 }
10515
10516 /* Process an imported unit DIE.  */
10517
10518 static void
10519 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10520 {
10521   struct attribute *attr;
10522
10523   /* For now we don't handle imported units in type units.  */
10524   if (cu->per_cu->is_debug_types)
10525     {
10526       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10527                " supported in type units [in module %s]"),
10528              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10529     }
10530
10531   attr = dwarf2_attr (die, DW_AT_import, cu);
10532   if (attr != NULL)
10533     {
10534       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10535       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10536       dwarf2_per_cu_data *per_cu
10537         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10538                                             cu->per_cu->dwarf2_per_objfile);
10539
10540       /* If necessary, add it to the queue and load its DIEs.  */
10541       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10542         load_full_comp_unit (per_cu, false, cu->language);
10543
10544       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10545                      per_cu);
10546     }
10547 }
10548
10549 /* RAII object that represents a process_die scope: i.e.,
10550    starts/finishes processing a DIE.  */
10551 class process_die_scope
10552 {
10553 public:
10554   process_die_scope (die_info *die, dwarf2_cu *cu)
10555     : m_die (die), m_cu (cu)
10556   {
10557     /* We should only be processing DIEs not already in process.  */
10558     gdb_assert (!m_die->in_process);
10559     m_die->in_process = true;
10560   }
10561
10562   ~process_die_scope ()
10563   {
10564     m_die->in_process = false;
10565
10566     /* If we're done processing the DIE for the CU that owns the line
10567        header, we don't need the line header anymore.  */
10568     if (m_cu->line_header_die_owner == m_die)
10569       {
10570         delete m_cu->line_header;
10571         m_cu->line_header = NULL;
10572         m_cu->line_header_die_owner = NULL;
10573       }
10574   }
10575
10576 private:
10577   die_info *m_die;
10578   dwarf2_cu *m_cu;
10579 };
10580
10581 /* Process a die and its children.  */
10582
10583 static void
10584 process_die (struct die_info *die, struct dwarf2_cu *cu)
10585 {
10586   process_die_scope scope (die, cu);
10587
10588   switch (die->tag)
10589     {
10590     case DW_TAG_padding:
10591       break;
10592     case DW_TAG_compile_unit:
10593     case DW_TAG_partial_unit:
10594       read_file_scope (die, cu);
10595       break;
10596     case DW_TAG_type_unit:
10597       read_type_unit_scope (die, cu);
10598       break;
10599     case DW_TAG_subprogram:
10600     case DW_TAG_inlined_subroutine:
10601       read_func_scope (die, cu);
10602       break;
10603     case DW_TAG_lexical_block:
10604     case DW_TAG_try_block:
10605     case DW_TAG_catch_block:
10606       read_lexical_block_scope (die, cu);
10607       break;
10608     case DW_TAG_call_site:
10609     case DW_TAG_GNU_call_site:
10610       read_call_site_scope (die, cu);
10611       break;
10612     case DW_TAG_class_type:
10613     case DW_TAG_interface_type:
10614     case DW_TAG_structure_type:
10615     case DW_TAG_union_type:
10616       process_structure_scope (die, cu);
10617       break;
10618     case DW_TAG_enumeration_type:
10619       process_enumeration_scope (die, cu);
10620       break;
10621
10622     /* These dies have a type, but processing them does not create
10623        a symbol or recurse to process the children.  Therefore we can
10624        read them on-demand through read_type_die.  */
10625     case DW_TAG_subroutine_type:
10626     case DW_TAG_set_type:
10627     case DW_TAG_array_type:
10628     case DW_TAG_pointer_type:
10629     case DW_TAG_ptr_to_member_type:
10630     case DW_TAG_reference_type:
10631     case DW_TAG_rvalue_reference_type:
10632     case DW_TAG_string_type:
10633       break;
10634
10635     case DW_TAG_base_type:
10636     case DW_TAG_subrange_type:
10637     case DW_TAG_typedef:
10638       /* Add a typedef symbol for the type definition, if it has a
10639          DW_AT_name.  */
10640       new_symbol (die, read_type_die (die, cu), cu);
10641       break;
10642     case DW_TAG_common_block:
10643       read_common_block (die, cu);
10644       break;
10645     case DW_TAG_common_inclusion:
10646       break;
10647     case DW_TAG_namespace:
10648       cu->processing_has_namespace_info = 1;
10649       read_namespace (die, cu);
10650       break;
10651     case DW_TAG_module:
10652       cu->processing_has_namespace_info = 1;
10653       read_module (die, cu);
10654       break;
10655     case DW_TAG_imported_declaration:
10656       cu->processing_has_namespace_info = 1;
10657       if (read_namespace_alias (die, cu))
10658         break;
10659       /* The declaration is not a global namespace alias.  */
10660       /* Fall through.  */
10661     case DW_TAG_imported_module:
10662       cu->processing_has_namespace_info = 1;
10663       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10664                                  || cu->language != language_fortran))
10665         complaint (_("Tag '%s' has unexpected children"),
10666                    dwarf_tag_name (die->tag));
10667       read_import_statement (die, cu);
10668       break;
10669
10670     case DW_TAG_imported_unit:
10671       process_imported_unit_die (die, cu);
10672       break;
10673
10674     case DW_TAG_variable:
10675       read_variable (die, cu);
10676       break;
10677
10678     default:
10679       new_symbol (die, NULL, cu);
10680       break;
10681     }
10682 }
10683 \f
10684 /* DWARF name computation.  */
10685
10686 /* A helper function for dwarf2_compute_name which determines whether DIE
10687    needs to have the name of the scope prepended to the name listed in the
10688    die.  */
10689
10690 static int
10691 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10692 {
10693   struct attribute *attr;
10694
10695   switch (die->tag)
10696     {
10697     case DW_TAG_namespace:
10698     case DW_TAG_typedef:
10699     case DW_TAG_class_type:
10700     case DW_TAG_interface_type:
10701     case DW_TAG_structure_type:
10702     case DW_TAG_union_type:
10703     case DW_TAG_enumeration_type:
10704     case DW_TAG_enumerator:
10705     case DW_TAG_subprogram:
10706     case DW_TAG_inlined_subroutine:
10707     case DW_TAG_member:
10708     case DW_TAG_imported_declaration:
10709       return 1;
10710
10711     case DW_TAG_variable:
10712     case DW_TAG_constant:
10713       /* We only need to prefix "globally" visible variables.  These include
10714          any variable marked with DW_AT_external or any variable that
10715          lives in a namespace.  [Variables in anonymous namespaces
10716          require prefixing, but they are not DW_AT_external.]  */
10717
10718       if (dwarf2_attr (die, DW_AT_specification, cu))
10719         {
10720           struct dwarf2_cu *spec_cu = cu;
10721
10722           return die_needs_namespace (die_specification (die, &spec_cu),
10723                                       spec_cu);
10724         }
10725
10726       attr = dwarf2_attr (die, DW_AT_external, cu);
10727       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10728           && die->parent->tag != DW_TAG_module)
10729         return 0;
10730       /* A variable in a lexical block of some kind does not need a
10731          namespace, even though in C++ such variables may be external
10732          and have a mangled name.  */
10733       if (die->parent->tag ==  DW_TAG_lexical_block
10734           || die->parent->tag ==  DW_TAG_try_block
10735           || die->parent->tag ==  DW_TAG_catch_block
10736           || die->parent->tag == DW_TAG_subprogram)
10737         return 0;
10738       return 1;
10739
10740     default:
10741       return 0;
10742     }
10743 }
10744
10745 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10746    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10747    defined for the given DIE.  */
10748
10749 static struct attribute *
10750 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10751 {
10752   struct attribute *attr;
10753
10754   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10755   if (attr == NULL)
10756     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10757
10758   return attr;
10759 }
10760
10761 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10762    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10763    defined for the given DIE.  */
10764
10765 static const char *
10766 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10767 {
10768   const char *linkage_name;
10769
10770   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10771   if (linkage_name == NULL)
10772     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10773
10774   return linkage_name;
10775 }
10776
10777 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10778    compute the physname for the object, which include a method's:
10779    - formal parameters (C++),
10780    - receiver type (Go),
10781
10782    The term "physname" is a bit confusing.
10783    For C++, for example, it is the demangled name.
10784    For Go, for example, it's the mangled name.
10785
10786    For Ada, return the DIE's linkage name rather than the fully qualified
10787    name.  PHYSNAME is ignored..
10788
10789    The result is allocated on the objfile_obstack and canonicalized.  */
10790
10791 static const char *
10792 dwarf2_compute_name (const char *name,
10793                      struct die_info *die, struct dwarf2_cu *cu,
10794                      int physname)
10795 {
10796   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10797
10798   if (name == NULL)
10799     name = dwarf2_name (die, cu);
10800
10801   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10802      but otherwise compute it by typename_concat inside GDB.
10803      FIXME: Actually this is not really true, or at least not always true.
10804      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10805      Fortran names because there is no mangling standard.  So new_symbol
10806      will set the demangled name to the result of dwarf2_full_name, and it is
10807      the demangled name that GDB uses if it exists.  */
10808   if (cu->language == language_ada
10809       || (cu->language == language_fortran && physname))
10810     {
10811       /* For Ada unit, we prefer the linkage name over the name, as
10812          the former contains the exported name, which the user expects
10813          to be able to reference.  Ideally, we want the user to be able
10814          to reference this entity using either natural or linkage name,
10815          but we haven't started looking at this enhancement yet.  */
10816       const char *linkage_name = dw2_linkage_name (die, cu);
10817
10818       if (linkage_name != NULL)
10819         return linkage_name;
10820     }
10821
10822   /* These are the only languages we know how to qualify names in.  */
10823   if (name != NULL
10824       && (cu->language == language_cplus
10825           || cu->language == language_fortran || cu->language == language_d
10826           || cu->language == language_rust))
10827     {
10828       if (die_needs_namespace (die, cu))
10829         {
10830           const char *prefix;
10831           const char *canonical_name = NULL;
10832
10833           string_file buf;
10834
10835           prefix = determine_prefix (die, cu);
10836           if (*prefix != '\0')
10837             {
10838               char *prefixed_name = typename_concat (NULL, prefix, name,
10839                                                      physname, cu);
10840
10841               buf.puts (prefixed_name);
10842               xfree (prefixed_name);
10843             }
10844           else
10845             buf.puts (name);
10846
10847           /* Template parameters may be specified in the DIE's DW_AT_name, or
10848              as children with DW_TAG_template_type_param or
10849              DW_TAG_value_type_param.  If the latter, add them to the name
10850              here.  If the name already has template parameters, then
10851              skip this step; some versions of GCC emit both, and
10852              it is more efficient to use the pre-computed name.
10853
10854              Something to keep in mind about this process: it is very
10855              unlikely, or in some cases downright impossible, to produce
10856              something that will match the mangled name of a function.
10857              If the definition of the function has the same debug info,
10858              we should be able to match up with it anyway.  But fallbacks
10859              using the minimal symbol, for instance to find a method
10860              implemented in a stripped copy of libstdc++, will not work.
10861              If we do not have debug info for the definition, we will have to
10862              match them up some other way.
10863
10864              When we do name matching there is a related problem with function
10865              templates; two instantiated function templates are allowed to
10866              differ only by their return types, which we do not add here.  */
10867
10868           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10869             {
10870               struct attribute *attr;
10871               struct die_info *child;
10872               int first = 1;
10873
10874               die->building_fullname = 1;
10875
10876               for (child = die->child; child != NULL; child = child->sibling)
10877                 {
10878                   struct type *type;
10879                   LONGEST value;
10880                   const gdb_byte *bytes;
10881                   struct dwarf2_locexpr_baton *baton;
10882                   struct value *v;
10883
10884                   if (child->tag != DW_TAG_template_type_param
10885                       && child->tag != DW_TAG_template_value_param)
10886                     continue;
10887
10888                   if (first)
10889                     {
10890                       buf.puts ("<");
10891                       first = 0;
10892                     }
10893                   else
10894                     buf.puts (", ");
10895
10896                   attr = dwarf2_attr (child, DW_AT_type, cu);
10897                   if (attr == NULL)
10898                     {
10899                       complaint (_("template parameter missing DW_AT_type"));
10900                       buf.puts ("UNKNOWN_TYPE");
10901                       continue;
10902                     }
10903                   type = die_type (child, cu);
10904
10905                   if (child->tag == DW_TAG_template_type_param)
10906                     {
10907                       c_print_type (type, "", &buf, -1, 0, cu->language,
10908                                     &type_print_raw_options);
10909                       continue;
10910                     }
10911
10912                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10913                   if (attr == NULL)
10914                     {
10915                       complaint (_("template parameter missing "
10916                                    "DW_AT_const_value"));
10917                       buf.puts ("UNKNOWN_VALUE");
10918                       continue;
10919                     }
10920
10921                   dwarf2_const_value_attr (attr, type, name,
10922                                            &cu->comp_unit_obstack, cu,
10923                                            &value, &bytes, &baton);
10924
10925                   if (TYPE_NOSIGN (type))
10926                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10927                        changed, this can use value_print instead.  */
10928                     c_printchar (value, type, &buf);
10929                   else
10930                     {
10931                       struct value_print_options opts;
10932
10933                       if (baton != NULL)
10934                         v = dwarf2_evaluate_loc_desc (type, NULL,
10935                                                       baton->data,
10936                                                       baton->size,
10937                                                       baton->per_cu);
10938                       else if (bytes != NULL)
10939                         {
10940                           v = allocate_value (type);
10941                           memcpy (value_contents_writeable (v), bytes,
10942                                   TYPE_LENGTH (type));
10943                         }
10944                       else
10945                         v = value_from_longest (type, value);
10946
10947                       /* Specify decimal so that we do not depend on
10948                          the radix.  */
10949                       get_formatted_print_options (&opts, 'd');
10950                       opts.raw = 1;
10951                       value_print (v, &buf, &opts);
10952                       release_value (v);
10953                     }
10954                 }
10955
10956               die->building_fullname = 0;
10957
10958               if (!first)
10959                 {
10960                   /* Close the argument list, with a space if necessary
10961                      (nested templates).  */
10962                   if (!buf.empty () && buf.string ().back () == '>')
10963                     buf.puts (" >");
10964                   else
10965                     buf.puts (">");
10966                 }
10967             }
10968
10969           /* For C++ methods, append formal parameter type
10970              information, if PHYSNAME.  */
10971
10972           if (physname && die->tag == DW_TAG_subprogram
10973               && cu->language == language_cplus)
10974             {
10975               struct type *type = read_type_die (die, cu);
10976
10977               c_type_print_args (type, &buf, 1, cu->language,
10978                                  &type_print_raw_options);
10979
10980               if (cu->language == language_cplus)
10981                 {
10982                   /* Assume that an artificial first parameter is
10983                      "this", but do not crash if it is not.  RealView
10984                      marks unnamed (and thus unused) parameters as
10985                      artificial; there is no way to differentiate
10986                      the two cases.  */
10987                   if (TYPE_NFIELDS (type) > 0
10988                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10989                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10990                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10991                                                                         0))))
10992                     buf.puts (" const");
10993                 }
10994             }
10995
10996           const std::string &intermediate_name = buf.string ();
10997
10998           if (cu->language == language_cplus)
10999             canonical_name
11000               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11001                                           &objfile->per_bfd->storage_obstack);
11002
11003           /* If we only computed INTERMEDIATE_NAME, or if
11004              INTERMEDIATE_NAME is already canonical, then we need to
11005              copy it to the appropriate obstack.  */
11006           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11007             name = ((const char *)
11008                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11009                                    intermediate_name.c_str (),
11010                                    intermediate_name.length ()));
11011           else
11012             name = canonical_name;
11013         }
11014     }
11015
11016   return name;
11017 }
11018
11019 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11020    If scope qualifiers are appropriate they will be added.  The result
11021    will be allocated on the storage_obstack, or NULL if the DIE does
11022    not have a name.  NAME may either be from a previous call to
11023    dwarf2_name or NULL.
11024
11025    The output string will be canonicalized (if C++).  */
11026
11027 static const char *
11028 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11029 {
11030   return dwarf2_compute_name (name, die, cu, 0);
11031 }
11032
11033 /* Construct a physname for the given DIE in CU.  NAME may either be
11034    from a previous call to dwarf2_name or NULL.  The result will be
11035    allocated on the objfile_objstack or NULL if the DIE does not have a
11036    name.
11037
11038    The output string will be canonicalized (if C++).  */
11039
11040 static const char *
11041 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11042 {
11043   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11044   const char *retval, *mangled = NULL, *canon = NULL;
11045   int need_copy = 1;
11046
11047   /* In this case dwarf2_compute_name is just a shortcut not building anything
11048      on its own.  */
11049   if (!die_needs_namespace (die, cu))
11050     return dwarf2_compute_name (name, die, cu, 1);
11051
11052   mangled = dw2_linkage_name (die, cu);
11053
11054   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11055      See https://github.com/rust-lang/rust/issues/32925.  */
11056   if (cu->language == language_rust && mangled != NULL
11057       && strchr (mangled, '{') != NULL)
11058     mangled = NULL;
11059
11060   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11061      has computed.  */
11062   gdb::unique_xmalloc_ptr<char> demangled;
11063   if (mangled != NULL)
11064     {
11065
11066       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11067         {
11068           /* Do nothing (do not demangle the symbol name).  */
11069         }
11070       else if (cu->language == language_go)
11071         {
11072           /* This is a lie, but we already lie to the caller new_symbol.
11073              new_symbol assumes we return the mangled name.
11074              This just undoes that lie until things are cleaned up.  */
11075         }
11076       else
11077         {
11078           /* Use DMGL_RET_DROP for C++ template functions to suppress
11079              their return type.  It is easier for GDB users to search
11080              for such functions as `name(params)' than `long name(params)'.
11081              In such case the minimal symbol names do not match the full
11082              symbol names but for template functions there is never a need
11083              to look up their definition from their declaration so
11084              the only disadvantage remains the minimal symbol variant
11085              `long name(params)' does not have the proper inferior type.  */
11086           demangled.reset (gdb_demangle (mangled,
11087                                          (DMGL_PARAMS | DMGL_ANSI
11088                                           | DMGL_RET_DROP)));
11089         }
11090       if (demangled)
11091         canon = demangled.get ();
11092       else
11093         {
11094           canon = mangled;
11095           need_copy = 0;
11096         }
11097     }
11098
11099   if (canon == NULL || check_physname)
11100     {
11101       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11102
11103       if (canon != NULL && strcmp (physname, canon) != 0)
11104         {
11105           /* It may not mean a bug in GDB.  The compiler could also
11106              compute DW_AT_linkage_name incorrectly.  But in such case
11107              GDB would need to be bug-to-bug compatible.  */
11108
11109           complaint (_("Computed physname <%s> does not match demangled <%s> "
11110                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11111                      physname, canon, mangled, sect_offset_str (die->sect_off),
11112                      objfile_name (objfile));
11113
11114           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11115              is available here - over computed PHYSNAME.  It is safer
11116              against both buggy GDB and buggy compilers.  */
11117
11118           retval = canon;
11119         }
11120       else
11121         {
11122           retval = physname;
11123           need_copy = 0;
11124         }
11125     }
11126   else
11127     retval = canon;
11128
11129   if (need_copy)
11130     retval = ((const char *)
11131               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11132                              retval, strlen (retval)));
11133
11134   return retval;
11135 }
11136
11137 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11138    a new symbol for it.
11139
11140    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11141
11142 static int
11143 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11144 {
11145   struct attribute *attr;
11146
11147   /* If the die does not have a name, this is not a namespace
11148      alias.  */
11149   attr = dwarf2_attr (die, DW_AT_name, cu);
11150   if (attr != NULL)
11151     {
11152       int num;
11153       struct die_info *d = die;
11154       struct dwarf2_cu *imported_cu = cu;
11155
11156       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11157          keep inspecting DIEs until we hit the underlying import.  */
11158 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11159       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11160         {
11161           attr = dwarf2_attr (d, DW_AT_import, cu);
11162           if (attr == NULL)
11163             break;
11164
11165           d = follow_die_ref (d, attr, &imported_cu);
11166           if (d->tag != DW_TAG_imported_declaration)
11167             break;
11168         }
11169
11170       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11171         {
11172           complaint (_("DIE at %s has too many recursively imported "
11173                        "declarations"), sect_offset_str (d->sect_off));
11174           return 0;
11175         }
11176
11177       if (attr != NULL)
11178         {
11179           struct type *type;
11180           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11181
11182           type = get_die_type_at_offset (sect_off, cu->per_cu);
11183           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11184             {
11185               /* This declaration is a global namespace alias.  Add
11186                  a symbol for it whose type is the aliased namespace.  */
11187               new_symbol (die, type, cu);
11188               return 1;
11189             }
11190         }
11191     }
11192
11193   return 0;
11194 }
11195
11196 /* Return the using directives repository (global or local?) to use in the
11197    current context for CU.
11198
11199    For Ada, imported declarations can materialize renamings, which *may* be
11200    global.  However it is impossible (for now?) in DWARF to distinguish
11201    "external" imported declarations and "static" ones.  As all imported
11202    declarations seem to be static in all other languages, make them all CU-wide
11203    global only in Ada.  */
11204
11205 static struct using_direct **
11206 using_directives (struct dwarf2_cu *cu)
11207 {
11208   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11209     return cu->builder->get_global_using_directives ();
11210   else
11211     return cu->builder->get_local_using_directives ();
11212 }
11213
11214 /* Read the import statement specified by the given die and record it.  */
11215
11216 static void
11217 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11218 {
11219   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11220   struct attribute *import_attr;
11221   struct die_info *imported_die, *child_die;
11222   struct dwarf2_cu *imported_cu;
11223   const char *imported_name;
11224   const char *imported_name_prefix;
11225   const char *canonical_name;
11226   const char *import_alias;
11227   const char *imported_declaration = NULL;
11228   const char *import_prefix;
11229   std::vector<const char *> excludes;
11230
11231   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11232   if (import_attr == NULL)
11233     {
11234       complaint (_("Tag '%s' has no DW_AT_import"),
11235                  dwarf_tag_name (die->tag));
11236       return;
11237     }
11238
11239   imported_cu = cu;
11240   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11241   imported_name = dwarf2_name (imported_die, imported_cu);
11242   if (imported_name == NULL)
11243     {
11244       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11245
11246         The import in the following code:
11247         namespace A
11248           {
11249             typedef int B;
11250           }
11251
11252         int main ()
11253           {
11254             using A::B;
11255             B b;
11256             return b;
11257           }
11258
11259         ...
11260          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11261             <52>   DW_AT_decl_file   : 1
11262             <53>   DW_AT_decl_line   : 6
11263             <54>   DW_AT_import      : <0x75>
11264          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11265             <59>   DW_AT_name        : B
11266             <5b>   DW_AT_decl_file   : 1
11267             <5c>   DW_AT_decl_line   : 2
11268             <5d>   DW_AT_type        : <0x6e>
11269         ...
11270          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11271             <76>   DW_AT_byte_size   : 4
11272             <77>   DW_AT_encoding    : 5        (signed)
11273
11274         imports the wrong die ( 0x75 instead of 0x58 ).
11275         This case will be ignored until the gcc bug is fixed.  */
11276       return;
11277     }
11278
11279   /* Figure out the local name after import.  */
11280   import_alias = dwarf2_name (die, cu);
11281
11282   /* Figure out where the statement is being imported to.  */
11283   import_prefix = determine_prefix (die, cu);
11284
11285   /* Figure out what the scope of the imported die is and prepend it
11286      to the name of the imported die.  */
11287   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11288
11289   if (imported_die->tag != DW_TAG_namespace
11290       && imported_die->tag != DW_TAG_module)
11291     {
11292       imported_declaration = imported_name;
11293       canonical_name = imported_name_prefix;
11294     }
11295   else if (strlen (imported_name_prefix) > 0)
11296     canonical_name = obconcat (&objfile->objfile_obstack,
11297                                imported_name_prefix,
11298                                (cu->language == language_d ? "." : "::"),
11299                                imported_name, (char *) NULL);
11300   else
11301     canonical_name = imported_name;
11302
11303   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11304     for (child_die = die->child; child_die && child_die->tag;
11305          child_die = sibling_die (child_die))
11306       {
11307         /* DWARF-4: A Fortran use statement with a “rename list” may be
11308            represented by an imported module entry with an import attribute
11309            referring to the module and owned entries corresponding to those
11310            entities that are renamed as part of being imported.  */
11311
11312         if (child_die->tag != DW_TAG_imported_declaration)
11313           {
11314             complaint (_("child DW_TAG_imported_declaration expected "
11315                          "- DIE at %s [in module %s]"),
11316                        sect_offset_str (child_die->sect_off),
11317                        objfile_name (objfile));
11318             continue;
11319           }
11320
11321         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11322         if (import_attr == NULL)
11323           {
11324             complaint (_("Tag '%s' has no DW_AT_import"),
11325                        dwarf_tag_name (child_die->tag));
11326             continue;
11327           }
11328
11329         imported_cu = cu;
11330         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11331                                               &imported_cu);
11332         imported_name = dwarf2_name (imported_die, imported_cu);
11333         if (imported_name == NULL)
11334           {
11335             complaint (_("child DW_TAG_imported_declaration has unknown "
11336                          "imported name - DIE at %s [in module %s]"),
11337                        sect_offset_str (child_die->sect_off),
11338                        objfile_name (objfile));
11339             continue;
11340           }
11341
11342         excludes.push_back (imported_name);
11343
11344         process_die (child_die, cu);
11345       }
11346
11347   add_using_directive (using_directives (cu),
11348                        import_prefix,
11349                        canonical_name,
11350                        import_alias,
11351                        imported_declaration,
11352                        excludes,
11353                        0,
11354                        &objfile->objfile_obstack);
11355 }
11356
11357 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11358    types, but gives them a size of zero.  Starting with version 14,
11359    ICC is compatible with GCC.  */
11360
11361 static int
11362 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11363 {
11364   if (!cu->checked_producer)
11365     check_producer (cu);
11366
11367   return cu->producer_is_icc_lt_14;
11368 }
11369
11370 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11371    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11372    this, it was first present in GCC release 4.3.0.  */
11373
11374 static int
11375 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11376 {
11377   if (!cu->checked_producer)
11378     check_producer (cu);
11379
11380   return cu->producer_is_gcc_lt_4_3;
11381 }
11382
11383 static file_and_directory
11384 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11385 {
11386   file_and_directory res;
11387
11388   /* Find the filename.  Do not use dwarf2_name here, since the filename
11389      is not a source language identifier.  */
11390   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11391   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11392
11393   if (res.comp_dir == NULL
11394       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11395       && IS_ABSOLUTE_PATH (res.name))
11396     {
11397       res.comp_dir_storage = ldirname (res.name);
11398       if (!res.comp_dir_storage.empty ())
11399         res.comp_dir = res.comp_dir_storage.c_str ();
11400     }
11401   if (res.comp_dir != NULL)
11402     {
11403       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11404          directory, get rid of it.  */
11405       const char *cp = strchr (res.comp_dir, ':');
11406
11407       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11408         res.comp_dir = cp + 1;
11409     }
11410
11411   if (res.name == NULL)
11412     res.name = "<unknown>";
11413
11414   return res;
11415 }
11416
11417 /* Handle DW_AT_stmt_list for a compilation unit.
11418    DIE is the DW_TAG_compile_unit die for CU.
11419    COMP_DIR is the compilation directory.  LOWPC is passed to
11420    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11421
11422 static void
11423 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11424                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11425 {
11426   struct dwarf2_per_objfile *dwarf2_per_objfile
11427     = cu->per_cu->dwarf2_per_objfile;
11428   struct objfile *objfile = dwarf2_per_objfile->objfile;
11429   struct attribute *attr;
11430   struct line_header line_header_local;
11431   hashval_t line_header_local_hash;
11432   void **slot;
11433   int decode_mapping;
11434
11435   gdb_assert (! cu->per_cu->is_debug_types);
11436
11437   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11438   if (attr == NULL)
11439     return;
11440
11441   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11442
11443   /* The line header hash table is only created if needed (it exists to
11444      prevent redundant reading of the line table for partial_units).
11445      If we're given a partial_unit, we'll need it.  If we're given a
11446      compile_unit, then use the line header hash table if it's already
11447      created, but don't create one just yet.  */
11448
11449   if (dwarf2_per_objfile->line_header_hash == NULL
11450       && die->tag == DW_TAG_partial_unit)
11451     {
11452       dwarf2_per_objfile->line_header_hash
11453         = htab_create_alloc_ex (127, line_header_hash_voidp,
11454                                 line_header_eq_voidp,
11455                                 free_line_header_voidp,
11456                                 &objfile->objfile_obstack,
11457                                 hashtab_obstack_allocate,
11458                                 dummy_obstack_deallocate);
11459     }
11460
11461   line_header_local.sect_off = line_offset;
11462   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11463   line_header_local_hash = line_header_hash (&line_header_local);
11464   if (dwarf2_per_objfile->line_header_hash != NULL)
11465     {
11466       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11467                                        &line_header_local,
11468                                        line_header_local_hash, NO_INSERT);
11469
11470       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11471          is not present in *SLOT (since if there is something in *SLOT then
11472          it will be for a partial_unit).  */
11473       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11474         {
11475           gdb_assert (*slot != NULL);
11476           cu->line_header = (struct line_header *) *slot;
11477           return;
11478         }
11479     }
11480
11481   /* dwarf_decode_line_header does not yet provide sufficient information.
11482      We always have to call also dwarf_decode_lines for it.  */
11483   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11484   if (lh == NULL)
11485     return;
11486
11487   cu->line_header = lh.release ();
11488   cu->line_header_die_owner = die;
11489
11490   if (dwarf2_per_objfile->line_header_hash == NULL)
11491     slot = NULL;
11492   else
11493     {
11494       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11495                                        &line_header_local,
11496                                        line_header_local_hash, INSERT);
11497       gdb_assert (slot != NULL);
11498     }
11499   if (slot != NULL && *slot == NULL)
11500     {
11501       /* This newly decoded line number information unit will be owned
11502          by line_header_hash hash table.  */
11503       *slot = cu->line_header;
11504       cu->line_header_die_owner = NULL;
11505     }
11506   else
11507     {
11508       /* We cannot free any current entry in (*slot) as that struct line_header
11509          may be already used by multiple CUs.  Create only temporary decoded
11510          line_header for this CU - it may happen at most once for each line
11511          number information unit.  And if we're not using line_header_hash
11512          then this is what we want as well.  */
11513       gdb_assert (die->tag != DW_TAG_partial_unit);
11514     }
11515   decode_mapping = (die->tag != DW_TAG_partial_unit);
11516   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11517                       decode_mapping);
11518
11519 }
11520
11521 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11522
11523 static void
11524 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11525 {
11526   struct dwarf2_per_objfile *dwarf2_per_objfile
11527     = cu->per_cu->dwarf2_per_objfile;
11528   struct objfile *objfile = dwarf2_per_objfile->objfile;
11529   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11530   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11531   CORE_ADDR highpc = ((CORE_ADDR) 0);
11532   struct attribute *attr;
11533   struct die_info *child_die;
11534   CORE_ADDR baseaddr;
11535
11536   prepare_one_comp_unit (cu, die, cu->language);
11537   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11538
11539   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11540
11541   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11542      from finish_block.  */
11543   if (lowpc == ((CORE_ADDR) -1))
11544     lowpc = highpc;
11545   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11546
11547   file_and_directory fnd = find_file_and_directory (die, cu);
11548
11549   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11550      standardised yet.  As a workaround for the language detection we fall
11551      back to the DW_AT_producer string.  */
11552   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11553     cu->language = language_opencl;
11554
11555   /* Similar hack for Go.  */
11556   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11557     set_cu_language (DW_LANG_Go, cu);
11558
11559   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11560
11561   /* Decode line number information if present.  We do this before
11562      processing child DIEs, so that the line header table is available
11563      for DW_AT_decl_file.  */
11564   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11565
11566   /* Process all dies in compilation unit.  */
11567   if (die->child != NULL)
11568     {
11569       child_die = die->child;
11570       while (child_die && child_die->tag)
11571         {
11572           process_die (child_die, cu);
11573           child_die = sibling_die (child_die);
11574         }
11575     }
11576
11577   /* Decode macro information, if present.  Dwarf 2 macro information
11578      refers to information in the line number info statement program
11579      header, so we can only read it if we've read the header
11580      successfully.  */
11581   attr = dwarf2_attr (die, DW_AT_macros, cu);
11582   if (attr == NULL)
11583     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11584   if (attr && cu->line_header)
11585     {
11586       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11587         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11588
11589       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11590     }
11591   else
11592     {
11593       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11594       if (attr && cu->line_header)
11595         {
11596           unsigned int macro_offset = DW_UNSND (attr);
11597
11598           dwarf_decode_macros (cu, macro_offset, 0);
11599         }
11600     }
11601 }
11602
11603 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11604    Create the set of symtabs used by this TU, or if this TU is sharing
11605    symtabs with another TU and the symtabs have already been created
11606    then restore those symtabs in the line header.
11607    We don't need the pc/line-number mapping for type units.  */
11608
11609 static void
11610 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11611 {
11612   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11613   struct type_unit_group *tu_group;
11614   int first_time;
11615   struct attribute *attr;
11616   unsigned int i;
11617   struct signatured_type *sig_type;
11618
11619   gdb_assert (per_cu->is_debug_types);
11620   sig_type = (struct signatured_type *) per_cu;
11621
11622   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11623
11624   /* If we're using .gdb_index (includes -readnow) then
11625      per_cu->type_unit_group may not have been set up yet.  */
11626   if (sig_type->type_unit_group == NULL)
11627     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11628   tu_group = sig_type->type_unit_group;
11629
11630   /* If we've already processed this stmt_list there's no real need to
11631      do it again, we could fake it and just recreate the part we need
11632      (file name,index -> symtab mapping).  If data shows this optimization
11633      is useful we can do it then.  */
11634   first_time = tu_group->compunit_symtab == NULL;
11635
11636   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11637      debug info.  */
11638   line_header_up lh;
11639   if (attr != NULL)
11640     {
11641       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11642       lh = dwarf_decode_line_header (line_offset, cu);
11643     }
11644   if (lh == NULL)
11645     {
11646       if (first_time)
11647         dwarf2_start_symtab (cu, "", NULL, 0);
11648       else
11649         {
11650           gdb_assert (tu_group->symtabs == NULL);
11651           gdb_assert (cu->builder == nullptr);
11652           struct compunit_symtab *cust = tu_group->compunit_symtab;
11653           cu->builder.reset (new struct buildsym_compunit
11654                              (COMPUNIT_OBJFILE (cust), "",
11655                               COMPUNIT_DIRNAME (cust),
11656                               compunit_language (cust),
11657                               0, cust));
11658         }
11659       return;
11660     }
11661
11662   cu->line_header = lh.release ();
11663   cu->line_header_die_owner = die;
11664
11665   if (first_time)
11666     {
11667       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11668
11669       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11670          still initializing it, and our caller (a few levels up)
11671          process_full_type_unit still needs to know if this is the first
11672          time.  */
11673
11674       tu_group->num_symtabs = cu->line_header->file_names.size ();
11675       tu_group->symtabs = XNEWVEC (struct symtab *,
11676                                    cu->line_header->file_names.size ());
11677
11678       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11679         {
11680           file_entry &fe = cu->line_header->file_names[i];
11681
11682           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11683
11684           if (cu->builder->get_current_subfile ()->symtab == NULL)
11685             {
11686               /* NOTE: start_subfile will recognize when it's been
11687                  passed a file it has already seen.  So we can't
11688                  assume there's a simple mapping from
11689                  cu->line_header->file_names to subfiles, plus
11690                  cu->line_header->file_names may contain dups.  */
11691               cu->builder->get_current_subfile ()->symtab
11692                 = allocate_symtab (cust,
11693                                    cu->builder->get_current_subfile ()->name);
11694             }
11695
11696           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11697           tu_group->symtabs[i] = fe.symtab;
11698         }
11699     }
11700   else
11701     {
11702       gdb_assert (cu->builder == nullptr);
11703       struct compunit_symtab *cust = tu_group->compunit_symtab;
11704       cu->builder.reset (new struct buildsym_compunit
11705                          (COMPUNIT_OBJFILE (cust), "",
11706                           COMPUNIT_DIRNAME (cust),
11707                           compunit_language (cust),
11708                           0, cust));
11709
11710       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11711         {
11712           file_entry &fe = cu->line_header->file_names[i];
11713
11714           fe.symtab = tu_group->symtabs[i];
11715         }
11716     }
11717
11718   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11719      so they don't have a "real" (so to speak) symtab anyway.
11720      There is later code that will assign the main symtab to all symbols
11721      that don't have one.  We need to handle the case of a symbol with a
11722      missing symtab (DW_AT_decl_file) anyway.  */
11723 }
11724
11725 /* Process DW_TAG_type_unit.
11726    For TUs we want to skip the first top level sibling if it's not the
11727    actual type being defined by this TU.  In this case the first top
11728    level sibling is there to provide context only.  */
11729
11730 static void
11731 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11732 {
11733   struct die_info *child_die;
11734
11735   prepare_one_comp_unit (cu, die, language_minimal);
11736
11737   /* Initialize (or reinitialize) the machinery for building symtabs.
11738      We do this before processing child DIEs, so that the line header table
11739      is available for DW_AT_decl_file.  */
11740   setup_type_unit_groups (die, cu);
11741
11742   if (die->child != NULL)
11743     {
11744       child_die = die->child;
11745       while (child_die && child_die->tag)
11746         {
11747           process_die (child_die, cu);
11748           child_die = sibling_die (child_die);
11749         }
11750     }
11751 }
11752 \f
11753 /* DWO/DWP files.
11754
11755    http://gcc.gnu.org/wiki/DebugFission
11756    http://gcc.gnu.org/wiki/DebugFissionDWP
11757
11758    To simplify handling of both DWO files ("object" files with the DWARF info)
11759    and DWP files (a file with the DWOs packaged up into one file), we treat
11760    DWP files as having a collection of virtual DWO files.  */
11761
11762 static hashval_t
11763 hash_dwo_file (const void *item)
11764 {
11765   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11766   hashval_t hash;
11767
11768   hash = htab_hash_string (dwo_file->dwo_name);
11769   if (dwo_file->comp_dir != NULL)
11770     hash += htab_hash_string (dwo_file->comp_dir);
11771   return hash;
11772 }
11773
11774 static int
11775 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11776 {
11777   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11778   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11779
11780   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11781     return 0;
11782   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11783     return lhs->comp_dir == rhs->comp_dir;
11784   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11785 }
11786
11787 /* Allocate a hash table for DWO files.  */
11788
11789 static htab_t
11790 allocate_dwo_file_hash_table (struct objfile *objfile)
11791 {
11792   return htab_create_alloc_ex (41,
11793                                hash_dwo_file,
11794                                eq_dwo_file,
11795                                NULL,
11796                                &objfile->objfile_obstack,
11797                                hashtab_obstack_allocate,
11798                                dummy_obstack_deallocate);
11799 }
11800
11801 /* Lookup DWO file DWO_NAME.  */
11802
11803 static void **
11804 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11805                       const char *dwo_name,
11806                       const char *comp_dir)
11807 {
11808   struct dwo_file find_entry;
11809   void **slot;
11810
11811   if (dwarf2_per_objfile->dwo_files == NULL)
11812     dwarf2_per_objfile->dwo_files
11813       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11814
11815   memset (&find_entry, 0, sizeof (find_entry));
11816   find_entry.dwo_name = dwo_name;
11817   find_entry.comp_dir = comp_dir;
11818   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11819
11820   return slot;
11821 }
11822
11823 static hashval_t
11824 hash_dwo_unit (const void *item)
11825 {
11826   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11827
11828   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11829   return dwo_unit->signature;
11830 }
11831
11832 static int
11833 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11834 {
11835   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11836   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11837
11838   /* The signature is assumed to be unique within the DWO file.
11839      So while object file CU dwo_id's always have the value zero,
11840      that's OK, assuming each object file DWO file has only one CU,
11841      and that's the rule for now.  */
11842   return lhs->signature == rhs->signature;
11843 }
11844
11845 /* Allocate a hash table for DWO CUs,TUs.
11846    There is one of these tables for each of CUs,TUs for each DWO file.  */
11847
11848 static htab_t
11849 allocate_dwo_unit_table (struct objfile *objfile)
11850 {
11851   /* Start out with a pretty small number.
11852      Generally DWO files contain only one CU and maybe some TUs.  */
11853   return htab_create_alloc_ex (3,
11854                                hash_dwo_unit,
11855                                eq_dwo_unit,
11856                                NULL,
11857                                &objfile->objfile_obstack,
11858                                hashtab_obstack_allocate,
11859                                dummy_obstack_deallocate);
11860 }
11861
11862 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11863
11864 struct create_dwo_cu_data
11865 {
11866   struct dwo_file *dwo_file;
11867   struct dwo_unit dwo_unit;
11868 };
11869
11870 /* die_reader_func for create_dwo_cu.  */
11871
11872 static void
11873 create_dwo_cu_reader (const struct die_reader_specs *reader,
11874                       const gdb_byte *info_ptr,
11875                       struct die_info *comp_unit_die,
11876                       int has_children,
11877                       void *datap)
11878 {
11879   struct dwarf2_cu *cu = reader->cu;
11880   sect_offset sect_off = cu->per_cu->sect_off;
11881   struct dwarf2_section_info *section = cu->per_cu->section;
11882   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11883   struct dwo_file *dwo_file = data->dwo_file;
11884   struct dwo_unit *dwo_unit = &data->dwo_unit;
11885   struct attribute *attr;
11886
11887   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11888   if (attr == NULL)
11889     {
11890       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11891                    " its dwo_id [in module %s]"),
11892                  sect_offset_str (sect_off), dwo_file->dwo_name);
11893       return;
11894     }
11895
11896   dwo_unit->dwo_file = dwo_file;
11897   dwo_unit->signature = DW_UNSND (attr);
11898   dwo_unit->section = section;
11899   dwo_unit->sect_off = sect_off;
11900   dwo_unit->length = cu->per_cu->length;
11901
11902   if (dwarf_read_debug)
11903     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11904                         sect_offset_str (sect_off),
11905                         hex_string (dwo_unit->signature));
11906 }
11907
11908 /* Create the dwo_units for the CUs in a DWO_FILE.
11909    Note: This function processes DWO files only, not DWP files.  */
11910
11911 static void
11912 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11913                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11914                        htab_t &cus_htab)
11915 {
11916   struct objfile *objfile = dwarf2_per_objfile->objfile;
11917   const gdb_byte *info_ptr, *end_ptr;
11918
11919   dwarf2_read_section (objfile, &section);
11920   info_ptr = section.buffer;
11921
11922   if (info_ptr == NULL)
11923     return;
11924
11925   if (dwarf_read_debug)
11926     {
11927       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11928                           get_section_name (&section),
11929                           get_section_file_name (&section));
11930     }
11931
11932   end_ptr = info_ptr + section.size;
11933   while (info_ptr < end_ptr)
11934     {
11935       struct dwarf2_per_cu_data per_cu;
11936       struct create_dwo_cu_data create_dwo_cu_data;
11937       struct dwo_unit *dwo_unit;
11938       void **slot;
11939       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11940
11941       memset (&create_dwo_cu_data.dwo_unit, 0,
11942               sizeof (create_dwo_cu_data.dwo_unit));
11943       memset (&per_cu, 0, sizeof (per_cu));
11944       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11945       per_cu.is_debug_types = 0;
11946       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11947       per_cu.section = &section;
11948       create_dwo_cu_data.dwo_file = &dwo_file;
11949
11950       init_cutu_and_read_dies_no_follow (
11951           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11952       info_ptr += per_cu.length;
11953
11954       // If the unit could not be parsed, skip it.
11955       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11956         continue;
11957
11958       if (cus_htab == NULL)
11959         cus_htab = allocate_dwo_unit_table (objfile);
11960
11961       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11962       *dwo_unit = create_dwo_cu_data.dwo_unit;
11963       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11964       gdb_assert (slot != NULL);
11965       if (*slot != NULL)
11966         {
11967           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11968           sect_offset dup_sect_off = dup_cu->sect_off;
11969
11970           complaint (_("debug cu entry at offset %s is duplicate to"
11971                        " the entry at offset %s, signature %s"),
11972                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11973                      hex_string (dwo_unit->signature));
11974         }
11975       *slot = (void *)dwo_unit;
11976     }
11977 }
11978
11979 /* DWP file .debug_{cu,tu}_index section format:
11980    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11981
11982    DWP Version 1:
11983
11984    Both index sections have the same format, and serve to map a 64-bit
11985    signature to a set of section numbers.  Each section begins with a header,
11986    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11987    indexes, and a pool of 32-bit section numbers.  The index sections will be
11988    aligned at 8-byte boundaries in the file.
11989
11990    The index section header consists of:
11991
11992     V, 32 bit version number
11993     -, 32 bits unused
11994     N, 32 bit number of compilation units or type units in the index
11995     M, 32 bit number of slots in the hash table
11996
11997    Numbers are recorded using the byte order of the application binary.
11998
11999    The hash table begins at offset 16 in the section, and consists of an array
12000    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12001    order of the application binary).  Unused slots in the hash table are 0.
12002    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12003
12004    The parallel table begins immediately after the hash table
12005    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12006    array of 32-bit indexes (using the byte order of the application binary),
12007    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12008    table contains a 32-bit index into the pool of section numbers.  For unused
12009    hash table slots, the corresponding entry in the parallel table will be 0.
12010
12011    The pool of section numbers begins immediately following the hash table
12012    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12013    section numbers consists of an array of 32-bit words (using the byte order
12014    of the application binary).  Each item in the array is indexed starting
12015    from 0.  The hash table entry provides the index of the first section
12016    number in the set.  Additional section numbers in the set follow, and the
12017    set is terminated by a 0 entry (section number 0 is not used in ELF).
12018
12019    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12020    section must be the first entry in the set, and the .debug_abbrev.dwo must
12021    be the second entry. Other members of the set may follow in any order.
12022
12023    ---
12024
12025    DWP Version 2:
12026
12027    DWP Version 2 combines all the .debug_info, etc. sections into one,
12028    and the entries in the index tables are now offsets into these sections.
12029    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12030    section.
12031
12032    Index Section Contents:
12033     Header
12034     Hash Table of Signatures   dwp_hash_table.hash_table
12035     Parallel Table of Indices  dwp_hash_table.unit_table
12036     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12037     Table of Section Sizes     dwp_hash_table.v2.sizes
12038
12039    The index section header consists of:
12040
12041     V, 32 bit version number
12042     L, 32 bit number of columns in the table of section offsets
12043     N, 32 bit number of compilation units or type units in the index
12044     M, 32 bit number of slots in the hash table
12045
12046    Numbers are recorded using the byte order of the application binary.
12047
12048    The hash table has the same format as version 1.
12049    The parallel table of indices has the same format as version 1,
12050    except that the entries are origin-1 indices into the table of sections
12051    offsets and the table of section sizes.
12052
12053    The table of offsets begins immediately following the parallel table
12054    (at offset 16 + 12 * M from the beginning of the section).  The table is
12055    a two-dimensional array of 32-bit words (using the byte order of the
12056    application binary), with L columns and N+1 rows, in row-major order.
12057    Each row in the array is indexed starting from 0.  The first row provides
12058    a key to the remaining rows: each column in this row provides an identifier
12059    for a debug section, and the offsets in the same column of subsequent rows
12060    refer to that section.  The section identifiers are:
12061
12062     DW_SECT_INFO         1  .debug_info.dwo
12063     DW_SECT_TYPES        2  .debug_types.dwo
12064     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12065     DW_SECT_LINE         4  .debug_line.dwo
12066     DW_SECT_LOC          5  .debug_loc.dwo
12067     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12068     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12069     DW_SECT_MACRO        8  .debug_macro.dwo
12070
12071    The offsets provided by the CU and TU index sections are the base offsets
12072    for the contributions made by each CU or TU to the corresponding section
12073    in the package file.  Each CU and TU header contains an abbrev_offset
12074    field, used to find the abbreviations table for that CU or TU within the
12075    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12076    be interpreted as relative to the base offset given in the index section.
12077    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12078    should be interpreted as relative to the base offset for .debug_line.dwo,
12079    and offsets into other debug sections obtained from DWARF attributes should
12080    also be interpreted as relative to the corresponding base offset.
12081
12082    The table of sizes begins immediately following the table of offsets.
12083    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12084    with L columns and N rows, in row-major order.  Each row in the array is
12085    indexed starting from 1 (row 0 is shared by the two tables).
12086
12087    ---
12088
12089    Hash table lookup is handled the same in version 1 and 2:
12090
12091    We assume that N and M will not exceed 2^32 - 1.
12092    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12093
12094    Given a 64-bit compilation unit signature or a type signature S, an entry
12095    in the hash table is located as follows:
12096
12097    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12098       the low-order k bits all set to 1.
12099
12100    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12101
12102    3) If the hash table entry at index H matches the signature, use that
12103       entry.  If the hash table entry at index H is unused (all zeroes),
12104       terminate the search: the signature is not present in the table.
12105
12106    4) Let H = (H + H') modulo M. Repeat at Step 3.
12107
12108    Because M > N and H' and M are relatively prime, the search is guaranteed
12109    to stop at an unused slot or find the match.  */
12110
12111 /* Create a hash table to map DWO IDs to their CU/TU entry in
12112    .debug_{info,types}.dwo in DWP_FILE.
12113    Returns NULL if there isn't one.
12114    Note: This function processes DWP files only, not DWO files.  */
12115
12116 static struct dwp_hash_table *
12117 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12118                        struct dwp_file *dwp_file, int is_debug_types)
12119 {
12120   struct objfile *objfile = dwarf2_per_objfile->objfile;
12121   bfd *dbfd = dwp_file->dbfd.get ();
12122   const gdb_byte *index_ptr, *index_end;
12123   struct dwarf2_section_info *index;
12124   uint32_t version, nr_columns, nr_units, nr_slots;
12125   struct dwp_hash_table *htab;
12126
12127   if (is_debug_types)
12128     index = &dwp_file->sections.tu_index;
12129   else
12130     index = &dwp_file->sections.cu_index;
12131
12132   if (dwarf2_section_empty_p (index))
12133     return NULL;
12134   dwarf2_read_section (objfile, index);
12135
12136   index_ptr = index->buffer;
12137   index_end = index_ptr + index->size;
12138
12139   version = read_4_bytes (dbfd, index_ptr);
12140   index_ptr += 4;
12141   if (version == 2)
12142     nr_columns = read_4_bytes (dbfd, index_ptr);
12143   else
12144     nr_columns = 0;
12145   index_ptr += 4;
12146   nr_units = read_4_bytes (dbfd, index_ptr);
12147   index_ptr += 4;
12148   nr_slots = read_4_bytes (dbfd, index_ptr);
12149   index_ptr += 4;
12150
12151   if (version != 1 && version != 2)
12152     {
12153       error (_("Dwarf Error: unsupported DWP file version (%s)"
12154                " [in module %s]"),
12155              pulongest (version), dwp_file->name);
12156     }
12157   if (nr_slots != (nr_slots & -nr_slots))
12158     {
12159       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12160                " is not power of 2 [in module %s]"),
12161              pulongest (nr_slots), dwp_file->name);
12162     }
12163
12164   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12165   htab->version = version;
12166   htab->nr_columns = nr_columns;
12167   htab->nr_units = nr_units;
12168   htab->nr_slots = nr_slots;
12169   htab->hash_table = index_ptr;
12170   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12171
12172   /* Exit early if the table is empty.  */
12173   if (nr_slots == 0 || nr_units == 0
12174       || (version == 2 && nr_columns == 0))
12175     {
12176       /* All must be zero.  */
12177       if (nr_slots != 0 || nr_units != 0
12178           || (version == 2 && nr_columns != 0))
12179         {
12180           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12181                        " all zero [in modules %s]"),
12182                      dwp_file->name);
12183         }
12184       return htab;
12185     }
12186
12187   if (version == 1)
12188     {
12189       htab->section_pool.v1.indices =
12190         htab->unit_table + sizeof (uint32_t) * nr_slots;
12191       /* It's harder to decide whether the section is too small in v1.
12192          V1 is deprecated anyway so we punt.  */
12193     }
12194   else
12195     {
12196       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12197       int *ids = htab->section_pool.v2.section_ids;
12198       /* Reverse map for error checking.  */
12199       int ids_seen[DW_SECT_MAX + 1];
12200       int i;
12201
12202       if (nr_columns < 2)
12203         {
12204           error (_("Dwarf Error: bad DWP hash table, too few columns"
12205                    " in section table [in module %s]"),
12206                  dwp_file->name);
12207         }
12208       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12209         {
12210           error (_("Dwarf Error: bad DWP hash table, too many columns"
12211                    " in section table [in module %s]"),
12212                  dwp_file->name);
12213         }
12214       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12215       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12216       for (i = 0; i < nr_columns; ++i)
12217         {
12218           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12219
12220           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12221             {
12222               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12223                        " in section table [in module %s]"),
12224                      id, dwp_file->name);
12225             }
12226           if (ids_seen[id] != -1)
12227             {
12228               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12229                        " id %d in section table [in module %s]"),
12230                      id, dwp_file->name);
12231             }
12232           ids_seen[id] = i;
12233           ids[i] = id;
12234         }
12235       /* Must have exactly one info or types section.  */
12236       if (((ids_seen[DW_SECT_INFO] != -1)
12237            + (ids_seen[DW_SECT_TYPES] != -1))
12238           != 1)
12239         {
12240           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12241                    " DWO info/types section [in module %s]"),
12242                  dwp_file->name);
12243         }
12244       /* Must have an abbrev section.  */
12245       if (ids_seen[DW_SECT_ABBREV] == -1)
12246         {
12247           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12248                    " section [in module %s]"),
12249                  dwp_file->name);
12250         }
12251       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12252       htab->section_pool.v2.sizes =
12253         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12254                                          * nr_units * nr_columns);
12255       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12256                                           * nr_units * nr_columns))
12257           > index_end)
12258         {
12259           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12260                    " [in module %s]"),
12261                  dwp_file->name);
12262         }
12263     }
12264
12265   return htab;
12266 }
12267
12268 /* Update SECTIONS with the data from SECTP.
12269
12270    This function is like the other "locate" section routines that are
12271    passed to bfd_map_over_sections, but in this context the sections to
12272    read comes from the DWP V1 hash table, not the full ELF section table.
12273
12274    The result is non-zero for success, or zero if an error was found.  */
12275
12276 static int
12277 locate_v1_virtual_dwo_sections (asection *sectp,
12278                                 struct virtual_v1_dwo_sections *sections)
12279 {
12280   const struct dwop_section_names *names = &dwop_section_names;
12281
12282   if (section_is_p (sectp->name, &names->abbrev_dwo))
12283     {
12284       /* There can be only one.  */
12285       if (sections->abbrev.s.section != NULL)
12286         return 0;
12287       sections->abbrev.s.section = sectp;
12288       sections->abbrev.size = bfd_get_section_size (sectp);
12289     }
12290   else if (section_is_p (sectp->name, &names->info_dwo)
12291            || section_is_p (sectp->name, &names->types_dwo))
12292     {
12293       /* There can be only one.  */
12294       if (sections->info_or_types.s.section != NULL)
12295         return 0;
12296       sections->info_or_types.s.section = sectp;
12297       sections->info_or_types.size = bfd_get_section_size (sectp);
12298     }
12299   else if (section_is_p (sectp->name, &names->line_dwo))
12300     {
12301       /* There can be only one.  */
12302       if (sections->line.s.section != NULL)
12303         return 0;
12304       sections->line.s.section = sectp;
12305       sections->line.size = bfd_get_section_size (sectp);
12306     }
12307   else if (section_is_p (sectp->name, &names->loc_dwo))
12308     {
12309       /* There can be only one.  */
12310       if (sections->loc.s.section != NULL)
12311         return 0;
12312       sections->loc.s.section = sectp;
12313       sections->loc.size = bfd_get_section_size (sectp);
12314     }
12315   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12316     {
12317       /* There can be only one.  */
12318       if (sections->macinfo.s.section != NULL)
12319         return 0;
12320       sections->macinfo.s.section = sectp;
12321       sections->macinfo.size = bfd_get_section_size (sectp);
12322     }
12323   else if (section_is_p (sectp->name, &names->macro_dwo))
12324     {
12325       /* There can be only one.  */
12326       if (sections->macro.s.section != NULL)
12327         return 0;
12328       sections->macro.s.section = sectp;
12329       sections->macro.size = bfd_get_section_size (sectp);
12330     }
12331   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12332     {
12333       /* There can be only one.  */
12334       if (sections->str_offsets.s.section != NULL)
12335         return 0;
12336       sections->str_offsets.s.section = sectp;
12337       sections->str_offsets.size = bfd_get_section_size (sectp);
12338     }
12339   else
12340     {
12341       /* No other kind of section is valid.  */
12342       return 0;
12343     }
12344
12345   return 1;
12346 }
12347
12348 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12349    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12350    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12351    This is for DWP version 1 files.  */
12352
12353 static struct dwo_unit *
12354 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12355                            struct dwp_file *dwp_file,
12356                            uint32_t unit_index,
12357                            const char *comp_dir,
12358                            ULONGEST signature, int is_debug_types)
12359 {
12360   struct objfile *objfile = dwarf2_per_objfile->objfile;
12361   const struct dwp_hash_table *dwp_htab =
12362     is_debug_types ? dwp_file->tus : dwp_file->cus;
12363   bfd *dbfd = dwp_file->dbfd.get ();
12364   const char *kind = is_debug_types ? "TU" : "CU";
12365   struct dwo_file *dwo_file;
12366   struct dwo_unit *dwo_unit;
12367   struct virtual_v1_dwo_sections sections;
12368   void **dwo_file_slot;
12369   int i;
12370
12371   gdb_assert (dwp_file->version == 1);
12372
12373   if (dwarf_read_debug)
12374     {
12375       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12376                           kind,
12377                           pulongest (unit_index), hex_string (signature),
12378                           dwp_file->name);
12379     }
12380
12381   /* Fetch the sections of this DWO unit.
12382      Put a limit on the number of sections we look for so that bad data
12383      doesn't cause us to loop forever.  */
12384
12385 #define MAX_NR_V1_DWO_SECTIONS \
12386   (1 /* .debug_info or .debug_types */ \
12387    + 1 /* .debug_abbrev */ \
12388    + 1 /* .debug_line */ \
12389    + 1 /* .debug_loc */ \
12390    + 1 /* .debug_str_offsets */ \
12391    + 1 /* .debug_macro or .debug_macinfo */ \
12392    + 1 /* trailing zero */)
12393
12394   memset (&sections, 0, sizeof (sections));
12395
12396   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12397     {
12398       asection *sectp;
12399       uint32_t section_nr =
12400         read_4_bytes (dbfd,
12401                       dwp_htab->section_pool.v1.indices
12402                       + (unit_index + i) * sizeof (uint32_t));
12403
12404       if (section_nr == 0)
12405         break;
12406       if (section_nr >= dwp_file->num_sections)
12407         {
12408           error (_("Dwarf Error: bad DWP hash table, section number too large"
12409                    " [in module %s]"),
12410                  dwp_file->name);
12411         }
12412
12413       sectp = dwp_file->elf_sections[section_nr];
12414       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12415         {
12416           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12417                    " [in module %s]"),
12418                  dwp_file->name);
12419         }
12420     }
12421
12422   if (i < 2
12423       || dwarf2_section_empty_p (&sections.info_or_types)
12424       || dwarf2_section_empty_p (&sections.abbrev))
12425     {
12426       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12427                " [in module %s]"),
12428              dwp_file->name);
12429     }
12430   if (i == MAX_NR_V1_DWO_SECTIONS)
12431     {
12432       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12433                " [in module %s]"),
12434              dwp_file->name);
12435     }
12436
12437   /* It's easier for the rest of the code if we fake a struct dwo_file and
12438      have dwo_unit "live" in that.  At least for now.
12439
12440      The DWP file can be made up of a random collection of CUs and TUs.
12441      However, for each CU + set of TUs that came from the same original DWO
12442      file, we can combine them back into a virtual DWO file to save space
12443      (fewer struct dwo_file objects to allocate).  Remember that for really
12444      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12445
12446   std::string virtual_dwo_name =
12447     string_printf ("virtual-dwo/%d-%d-%d-%d",
12448                    get_section_id (&sections.abbrev),
12449                    get_section_id (&sections.line),
12450                    get_section_id (&sections.loc),
12451                    get_section_id (&sections.str_offsets));
12452   /* Can we use an existing virtual DWO file?  */
12453   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12454                                         virtual_dwo_name.c_str (),
12455                                         comp_dir);
12456   /* Create one if necessary.  */
12457   if (*dwo_file_slot == NULL)
12458     {
12459       if (dwarf_read_debug)
12460         {
12461           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12462                               virtual_dwo_name.c_str ());
12463         }
12464       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12465       dwo_file->dwo_name
12466         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12467                                         virtual_dwo_name.c_str (),
12468                                         virtual_dwo_name.size ());
12469       dwo_file->comp_dir = comp_dir;
12470       dwo_file->sections.abbrev = sections.abbrev;
12471       dwo_file->sections.line = sections.line;
12472       dwo_file->sections.loc = sections.loc;
12473       dwo_file->sections.macinfo = sections.macinfo;
12474       dwo_file->sections.macro = sections.macro;
12475       dwo_file->sections.str_offsets = sections.str_offsets;
12476       /* The "str" section is global to the entire DWP file.  */
12477       dwo_file->sections.str = dwp_file->sections.str;
12478       /* The info or types section is assigned below to dwo_unit,
12479          there's no need to record it in dwo_file.
12480          Also, we can't simply record type sections in dwo_file because
12481          we record a pointer into the vector in dwo_unit.  As we collect more
12482          types we'll grow the vector and eventually have to reallocate space
12483          for it, invalidating all copies of pointers into the previous
12484          contents.  */
12485       *dwo_file_slot = dwo_file;
12486     }
12487   else
12488     {
12489       if (dwarf_read_debug)
12490         {
12491           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12492                               virtual_dwo_name.c_str ());
12493         }
12494       dwo_file = (struct dwo_file *) *dwo_file_slot;
12495     }
12496
12497   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12498   dwo_unit->dwo_file = dwo_file;
12499   dwo_unit->signature = signature;
12500   dwo_unit->section =
12501     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12502   *dwo_unit->section = sections.info_or_types;
12503   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12504
12505   return dwo_unit;
12506 }
12507
12508 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12509    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12510    piece within that section used by a TU/CU, return a virtual section
12511    of just that piece.  */
12512
12513 static struct dwarf2_section_info
12514 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12515                        struct dwarf2_section_info *section,
12516                        bfd_size_type offset, bfd_size_type size)
12517 {
12518   struct dwarf2_section_info result;
12519   asection *sectp;
12520
12521   gdb_assert (section != NULL);
12522   gdb_assert (!section->is_virtual);
12523
12524   memset (&result, 0, sizeof (result));
12525   result.s.containing_section = section;
12526   result.is_virtual = 1;
12527
12528   if (size == 0)
12529     return result;
12530
12531   sectp = get_section_bfd_section (section);
12532
12533   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12534      bounds of the real section.  This is a pretty-rare event, so just
12535      flag an error (easier) instead of a warning and trying to cope.  */
12536   if (sectp == NULL
12537       || offset + size > bfd_get_section_size (sectp))
12538     {
12539       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12540                " in section %s [in module %s]"),
12541              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12542              objfile_name (dwarf2_per_objfile->objfile));
12543     }
12544
12545   result.virtual_offset = offset;
12546   result.size = size;
12547   return result;
12548 }
12549
12550 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12551    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12552    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12553    This is for DWP version 2 files.  */
12554
12555 static struct dwo_unit *
12556 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12557                            struct dwp_file *dwp_file,
12558                            uint32_t unit_index,
12559                            const char *comp_dir,
12560                            ULONGEST signature, int is_debug_types)
12561 {
12562   struct objfile *objfile = dwarf2_per_objfile->objfile;
12563   const struct dwp_hash_table *dwp_htab =
12564     is_debug_types ? dwp_file->tus : dwp_file->cus;
12565   bfd *dbfd = dwp_file->dbfd.get ();
12566   const char *kind = is_debug_types ? "TU" : "CU";
12567   struct dwo_file *dwo_file;
12568   struct dwo_unit *dwo_unit;
12569   struct virtual_v2_dwo_sections sections;
12570   void **dwo_file_slot;
12571   int i;
12572
12573   gdb_assert (dwp_file->version == 2);
12574
12575   if (dwarf_read_debug)
12576     {
12577       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12578                           kind,
12579                           pulongest (unit_index), hex_string (signature),
12580                           dwp_file->name);
12581     }
12582
12583   /* Fetch the section offsets of this DWO unit.  */
12584
12585   memset (&sections, 0, sizeof (sections));
12586
12587   for (i = 0; i < dwp_htab->nr_columns; ++i)
12588     {
12589       uint32_t offset = read_4_bytes (dbfd,
12590                                       dwp_htab->section_pool.v2.offsets
12591                                       + (((unit_index - 1) * dwp_htab->nr_columns
12592                                           + i)
12593                                          * sizeof (uint32_t)));
12594       uint32_t size = read_4_bytes (dbfd,
12595                                     dwp_htab->section_pool.v2.sizes
12596                                     + (((unit_index - 1) * dwp_htab->nr_columns
12597                                         + i)
12598                                        * sizeof (uint32_t)));
12599
12600       switch (dwp_htab->section_pool.v2.section_ids[i])
12601         {
12602         case DW_SECT_INFO:
12603         case DW_SECT_TYPES:
12604           sections.info_or_types_offset = offset;
12605           sections.info_or_types_size = size;
12606           break;
12607         case DW_SECT_ABBREV:
12608           sections.abbrev_offset = offset;
12609           sections.abbrev_size = size;
12610           break;
12611         case DW_SECT_LINE:
12612           sections.line_offset = offset;
12613           sections.line_size = size;
12614           break;
12615         case DW_SECT_LOC:
12616           sections.loc_offset = offset;
12617           sections.loc_size = size;
12618           break;
12619         case DW_SECT_STR_OFFSETS:
12620           sections.str_offsets_offset = offset;
12621           sections.str_offsets_size = size;
12622           break;
12623         case DW_SECT_MACINFO:
12624           sections.macinfo_offset = offset;
12625           sections.macinfo_size = size;
12626           break;
12627         case DW_SECT_MACRO:
12628           sections.macro_offset = offset;
12629           sections.macro_size = size;
12630           break;
12631         }
12632     }
12633
12634   /* It's easier for the rest of the code if we fake a struct dwo_file and
12635      have dwo_unit "live" in that.  At least for now.
12636
12637      The DWP file can be made up of a random collection of CUs and TUs.
12638      However, for each CU + set of TUs that came from the same original DWO
12639      file, we can combine them back into a virtual DWO file to save space
12640      (fewer struct dwo_file objects to allocate).  Remember that for really
12641      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12642
12643   std::string virtual_dwo_name =
12644     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12645                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12646                    (long) (sections.line_size ? sections.line_offset : 0),
12647                    (long) (sections.loc_size ? sections.loc_offset : 0),
12648                    (long) (sections.str_offsets_size
12649                            ? sections.str_offsets_offset : 0));
12650   /* Can we use an existing virtual DWO file?  */
12651   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12652                                         virtual_dwo_name.c_str (),
12653                                         comp_dir);
12654   /* Create one if necessary.  */
12655   if (*dwo_file_slot == NULL)
12656     {
12657       if (dwarf_read_debug)
12658         {
12659           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12660                               virtual_dwo_name.c_str ());
12661         }
12662       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12663       dwo_file->dwo_name
12664         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12665                                         virtual_dwo_name.c_str (),
12666                                         virtual_dwo_name.size ());
12667       dwo_file->comp_dir = comp_dir;
12668       dwo_file->sections.abbrev =
12669         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12670                                sections.abbrev_offset, sections.abbrev_size);
12671       dwo_file->sections.line =
12672         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12673                                sections.line_offset, sections.line_size);
12674       dwo_file->sections.loc =
12675         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12676                                sections.loc_offset, sections.loc_size);
12677       dwo_file->sections.macinfo =
12678         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12679                                sections.macinfo_offset, sections.macinfo_size);
12680       dwo_file->sections.macro =
12681         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12682                                sections.macro_offset, sections.macro_size);
12683       dwo_file->sections.str_offsets =
12684         create_dwp_v2_section (dwarf2_per_objfile,
12685                                &dwp_file->sections.str_offsets,
12686                                sections.str_offsets_offset,
12687                                sections.str_offsets_size);
12688       /* The "str" section is global to the entire DWP file.  */
12689       dwo_file->sections.str = dwp_file->sections.str;
12690       /* The info or types section is assigned below to dwo_unit,
12691          there's no need to record it in dwo_file.
12692          Also, we can't simply record type sections in dwo_file because
12693          we record a pointer into the vector in dwo_unit.  As we collect more
12694          types we'll grow the vector and eventually have to reallocate space
12695          for it, invalidating all copies of pointers into the previous
12696          contents.  */
12697       *dwo_file_slot = dwo_file;
12698     }
12699   else
12700     {
12701       if (dwarf_read_debug)
12702         {
12703           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12704                               virtual_dwo_name.c_str ());
12705         }
12706       dwo_file = (struct dwo_file *) *dwo_file_slot;
12707     }
12708
12709   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12710   dwo_unit->dwo_file = dwo_file;
12711   dwo_unit->signature = signature;
12712   dwo_unit->section =
12713     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12714   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12715                                               is_debug_types
12716                                               ? &dwp_file->sections.types
12717                                               : &dwp_file->sections.info,
12718                                               sections.info_or_types_offset,
12719                                               sections.info_or_types_size);
12720   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12721
12722   return dwo_unit;
12723 }
12724
12725 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12726    Returns NULL if the signature isn't found.  */
12727
12728 static struct dwo_unit *
12729 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12730                         struct dwp_file *dwp_file, const char *comp_dir,
12731                         ULONGEST signature, int is_debug_types)
12732 {
12733   const struct dwp_hash_table *dwp_htab =
12734     is_debug_types ? dwp_file->tus : dwp_file->cus;
12735   bfd *dbfd = dwp_file->dbfd.get ();
12736   uint32_t mask = dwp_htab->nr_slots - 1;
12737   uint32_t hash = signature & mask;
12738   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12739   unsigned int i;
12740   void **slot;
12741   struct dwo_unit find_dwo_cu;
12742
12743   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12744   find_dwo_cu.signature = signature;
12745   slot = htab_find_slot (is_debug_types
12746                          ? dwp_file->loaded_tus
12747                          : dwp_file->loaded_cus,
12748                          &find_dwo_cu, INSERT);
12749
12750   if (*slot != NULL)
12751     return (struct dwo_unit *) *slot;
12752
12753   /* Use a for loop so that we don't loop forever on bad debug info.  */
12754   for (i = 0; i < dwp_htab->nr_slots; ++i)
12755     {
12756       ULONGEST signature_in_table;
12757
12758       signature_in_table =
12759         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12760       if (signature_in_table == signature)
12761         {
12762           uint32_t unit_index =
12763             read_4_bytes (dbfd,
12764                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12765
12766           if (dwp_file->version == 1)
12767             {
12768               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12769                                                  dwp_file, unit_index,
12770                                                  comp_dir, signature,
12771                                                  is_debug_types);
12772             }
12773           else
12774             {
12775               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12776                                                  dwp_file, unit_index,
12777                                                  comp_dir, signature,
12778                                                  is_debug_types);
12779             }
12780           return (struct dwo_unit *) *slot;
12781         }
12782       if (signature_in_table == 0)
12783         return NULL;
12784       hash = (hash + hash2) & mask;
12785     }
12786
12787   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12788            " [in module %s]"),
12789          dwp_file->name);
12790 }
12791
12792 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12793    Open the file specified by FILE_NAME and hand it off to BFD for
12794    preliminary analysis.  Return a newly initialized bfd *, which
12795    includes a canonicalized copy of FILE_NAME.
12796    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12797    SEARCH_CWD is true if the current directory is to be searched.
12798    It will be searched before debug-file-directory.
12799    If successful, the file is added to the bfd include table of the
12800    objfile's bfd (see gdb_bfd_record_inclusion).
12801    If unable to find/open the file, return NULL.
12802    NOTE: This function is derived from symfile_bfd_open.  */
12803
12804 static gdb_bfd_ref_ptr
12805 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12806                     const char *file_name, int is_dwp, int search_cwd)
12807 {
12808   int desc;
12809   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12810      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12811      to debug_file_directory.  */
12812   const char *search_path;
12813   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12814
12815   gdb::unique_xmalloc_ptr<char> search_path_holder;
12816   if (search_cwd)
12817     {
12818       if (*debug_file_directory != '\0')
12819         {
12820           search_path_holder.reset (concat (".", dirname_separator_string,
12821                                             debug_file_directory,
12822                                             (char *) NULL));
12823           search_path = search_path_holder.get ();
12824         }
12825       else
12826         search_path = ".";
12827     }
12828   else
12829     search_path = debug_file_directory;
12830
12831   openp_flags flags = OPF_RETURN_REALPATH;
12832   if (is_dwp)
12833     flags |= OPF_SEARCH_IN_PATH;
12834
12835   gdb::unique_xmalloc_ptr<char> absolute_name;
12836   desc = openp (search_path, flags, file_name,
12837                 O_RDONLY | O_BINARY, &absolute_name);
12838   if (desc < 0)
12839     return NULL;
12840
12841   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12842                                          gnutarget, desc));
12843   if (sym_bfd == NULL)
12844     return NULL;
12845   bfd_set_cacheable (sym_bfd.get (), 1);
12846
12847   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12848     return NULL;
12849
12850   /* Success.  Record the bfd as having been included by the objfile's bfd.
12851      This is important because things like demangled_names_hash lives in the
12852      objfile's per_bfd space and may have references to things like symbol
12853      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12854   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12855
12856   return sym_bfd;
12857 }
12858
12859 /* Try to open DWO file FILE_NAME.
12860    COMP_DIR is the DW_AT_comp_dir attribute.
12861    The result is the bfd handle of the file.
12862    If there is a problem finding or opening the file, return NULL.
12863    Upon success, the canonicalized path of the file is stored in the bfd,
12864    same as symfile_bfd_open.  */
12865
12866 static gdb_bfd_ref_ptr
12867 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12868                const char *file_name, const char *comp_dir)
12869 {
12870   if (IS_ABSOLUTE_PATH (file_name))
12871     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12872                                0 /*is_dwp*/, 0 /*search_cwd*/);
12873
12874   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12875
12876   if (comp_dir != NULL)
12877     {
12878       char *path_to_try = concat (comp_dir, SLASH_STRING,
12879                                   file_name, (char *) NULL);
12880
12881       /* NOTE: If comp_dir is a relative path, this will also try the
12882          search path, which seems useful.  */
12883       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12884                                                 path_to_try,
12885                                                 0 /*is_dwp*/,
12886                                                 1 /*search_cwd*/));
12887       xfree (path_to_try);
12888       if (abfd != NULL)
12889         return abfd;
12890     }
12891
12892   /* That didn't work, try debug-file-directory, which, despite its name,
12893      is a list of paths.  */
12894
12895   if (*debug_file_directory == '\0')
12896     return NULL;
12897
12898   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12899                              0 /*is_dwp*/, 1 /*search_cwd*/);
12900 }
12901
12902 /* This function is mapped across the sections and remembers the offset and
12903    size of each of the DWO debugging sections we are interested in.  */
12904
12905 static void
12906 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12907 {
12908   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12909   const struct dwop_section_names *names = &dwop_section_names;
12910
12911   if (section_is_p (sectp->name, &names->abbrev_dwo))
12912     {
12913       dwo_sections->abbrev.s.section = sectp;
12914       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12915     }
12916   else if (section_is_p (sectp->name, &names->info_dwo))
12917     {
12918       dwo_sections->info.s.section = sectp;
12919       dwo_sections->info.size = bfd_get_section_size (sectp);
12920     }
12921   else if (section_is_p (sectp->name, &names->line_dwo))
12922     {
12923       dwo_sections->line.s.section = sectp;
12924       dwo_sections->line.size = bfd_get_section_size (sectp);
12925     }
12926   else if (section_is_p (sectp->name, &names->loc_dwo))
12927     {
12928       dwo_sections->loc.s.section = sectp;
12929       dwo_sections->loc.size = bfd_get_section_size (sectp);
12930     }
12931   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12932     {
12933       dwo_sections->macinfo.s.section = sectp;
12934       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12935     }
12936   else if (section_is_p (sectp->name, &names->macro_dwo))
12937     {
12938       dwo_sections->macro.s.section = sectp;
12939       dwo_sections->macro.size = bfd_get_section_size (sectp);
12940     }
12941   else if (section_is_p (sectp->name, &names->str_dwo))
12942     {
12943       dwo_sections->str.s.section = sectp;
12944       dwo_sections->str.size = bfd_get_section_size (sectp);
12945     }
12946   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12947     {
12948       dwo_sections->str_offsets.s.section = sectp;
12949       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12950     }
12951   else if (section_is_p (sectp->name, &names->types_dwo))
12952     {
12953       struct dwarf2_section_info type_section;
12954
12955       memset (&type_section, 0, sizeof (type_section));
12956       type_section.s.section = sectp;
12957       type_section.size = bfd_get_section_size (sectp);
12958       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12959                      &type_section);
12960     }
12961 }
12962
12963 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12964    by PER_CU.  This is for the non-DWP case.
12965    The result is NULL if DWO_NAME can't be found.  */
12966
12967 static struct dwo_file *
12968 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12969                         const char *dwo_name, const char *comp_dir)
12970 {
12971   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12972   struct objfile *objfile = dwarf2_per_objfile->objfile;
12973
12974   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12975   if (dbfd == NULL)
12976     {
12977       if (dwarf_read_debug)
12978         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12979       return NULL;
12980     }
12981
12982   /* We use a unique pointer here, despite the obstack allocation,
12983      because a dwo_file needs some cleanup if it is abandoned.  */
12984   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12985                                         struct dwo_file));
12986   dwo_file->dwo_name = dwo_name;
12987   dwo_file->comp_dir = comp_dir;
12988   dwo_file->dbfd = dbfd.release ();
12989
12990   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12991                          &dwo_file->sections);
12992
12993   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12994                          dwo_file->cus);
12995
12996   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12997                                  dwo_file->sections.types, dwo_file->tus);
12998
12999   if (dwarf_read_debug)
13000     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13001
13002   return dwo_file.release ();
13003 }
13004
13005 /* This function is mapped across the sections and remembers the offset and
13006    size of each of the DWP debugging sections common to version 1 and 2 that
13007    we are interested in.  */
13008
13009 static void
13010 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13011                                    void *dwp_file_ptr)
13012 {
13013   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13014   const struct dwop_section_names *names = &dwop_section_names;
13015   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13016
13017   /* Record the ELF section number for later lookup: this is what the
13018      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13019   gdb_assert (elf_section_nr < dwp_file->num_sections);
13020   dwp_file->elf_sections[elf_section_nr] = sectp;
13021
13022   /* Look for specific sections that we need.  */
13023   if (section_is_p (sectp->name, &names->str_dwo))
13024     {
13025       dwp_file->sections.str.s.section = sectp;
13026       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13027     }
13028   else if (section_is_p (sectp->name, &names->cu_index))
13029     {
13030       dwp_file->sections.cu_index.s.section = sectp;
13031       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13032     }
13033   else if (section_is_p (sectp->name, &names->tu_index))
13034     {
13035       dwp_file->sections.tu_index.s.section = sectp;
13036       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13037     }
13038 }
13039
13040 /* This function is mapped across the sections and remembers the offset and
13041    size of each of the DWP version 2 debugging sections that we are interested
13042    in.  This is split into a separate function because we don't know if we
13043    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13044
13045 static void
13046 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13047 {
13048   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13049   const struct dwop_section_names *names = &dwop_section_names;
13050   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13051
13052   /* Record the ELF section number for later lookup: this is what the
13053      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13054   gdb_assert (elf_section_nr < dwp_file->num_sections);
13055   dwp_file->elf_sections[elf_section_nr] = sectp;
13056
13057   /* Look for specific sections that we need.  */
13058   if (section_is_p (sectp->name, &names->abbrev_dwo))
13059     {
13060       dwp_file->sections.abbrev.s.section = sectp;
13061       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13062     }
13063   else if (section_is_p (sectp->name, &names->info_dwo))
13064     {
13065       dwp_file->sections.info.s.section = sectp;
13066       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13067     }
13068   else if (section_is_p (sectp->name, &names->line_dwo))
13069     {
13070       dwp_file->sections.line.s.section = sectp;
13071       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13072     }
13073   else if (section_is_p (sectp->name, &names->loc_dwo))
13074     {
13075       dwp_file->sections.loc.s.section = sectp;
13076       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13077     }
13078   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13079     {
13080       dwp_file->sections.macinfo.s.section = sectp;
13081       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13082     }
13083   else if (section_is_p (sectp->name, &names->macro_dwo))
13084     {
13085       dwp_file->sections.macro.s.section = sectp;
13086       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13087     }
13088   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13089     {
13090       dwp_file->sections.str_offsets.s.section = sectp;
13091       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13092     }
13093   else if (section_is_p (sectp->name, &names->types_dwo))
13094     {
13095       dwp_file->sections.types.s.section = sectp;
13096       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13097     }
13098 }
13099
13100 /* Hash function for dwp_file loaded CUs/TUs.  */
13101
13102 static hashval_t
13103 hash_dwp_loaded_cutus (const void *item)
13104 {
13105   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13106
13107   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13108   return dwo_unit->signature;
13109 }
13110
13111 /* Equality function for dwp_file loaded CUs/TUs.  */
13112
13113 static int
13114 eq_dwp_loaded_cutus (const void *a, const void *b)
13115 {
13116   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13117   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13118
13119   return dua->signature == dub->signature;
13120 }
13121
13122 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13123
13124 static htab_t
13125 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13126 {
13127   return htab_create_alloc_ex (3,
13128                                hash_dwp_loaded_cutus,
13129                                eq_dwp_loaded_cutus,
13130                                NULL,
13131                                &objfile->objfile_obstack,
13132                                hashtab_obstack_allocate,
13133                                dummy_obstack_deallocate);
13134 }
13135
13136 /* Try to open DWP file FILE_NAME.
13137    The result is the bfd handle of the file.
13138    If there is a problem finding or opening the file, return NULL.
13139    Upon success, the canonicalized path of the file is stored in the bfd,
13140    same as symfile_bfd_open.  */
13141
13142 static gdb_bfd_ref_ptr
13143 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13144                const char *file_name)
13145 {
13146   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13147                                             1 /*is_dwp*/,
13148                                             1 /*search_cwd*/));
13149   if (abfd != NULL)
13150     return abfd;
13151
13152   /* Work around upstream bug 15652.
13153      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13154      [Whether that's a "bug" is debatable, but it is getting in our way.]
13155      We have no real idea where the dwp file is, because gdb's realpath-ing
13156      of the executable's path may have discarded the needed info.
13157      [IWBN if the dwp file name was recorded in the executable, akin to
13158      .gnu_debuglink, but that doesn't exist yet.]
13159      Strip the directory from FILE_NAME and search again.  */
13160   if (*debug_file_directory != '\0')
13161     {
13162       /* Don't implicitly search the current directory here.
13163          If the user wants to search "." to handle this case,
13164          it must be added to debug-file-directory.  */
13165       return try_open_dwop_file (dwarf2_per_objfile,
13166                                  lbasename (file_name), 1 /*is_dwp*/,
13167                                  0 /*search_cwd*/);
13168     }
13169
13170   return NULL;
13171 }
13172
13173 /* Initialize the use of the DWP file for the current objfile.
13174    By convention the name of the DWP file is ${objfile}.dwp.
13175    The result is NULL if it can't be found.  */
13176
13177 static std::unique_ptr<struct dwp_file>
13178 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13179 {
13180   struct objfile *objfile = dwarf2_per_objfile->objfile;
13181
13182   /* Try to find first .dwp for the binary file before any symbolic links
13183      resolving.  */
13184
13185   /* If the objfile is a debug file, find the name of the real binary
13186      file and get the name of dwp file from there.  */
13187   std::string dwp_name;
13188   if (objfile->separate_debug_objfile_backlink != NULL)
13189     {
13190       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13191       const char *backlink_basename = lbasename (backlink->original_name);
13192
13193       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13194     }
13195   else
13196     dwp_name = objfile->original_name;
13197
13198   dwp_name += ".dwp";
13199
13200   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13201   if (dbfd == NULL
13202       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13203     {
13204       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13205       dwp_name = objfile_name (objfile);
13206       dwp_name += ".dwp";
13207       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13208     }
13209
13210   if (dbfd == NULL)
13211     {
13212       if (dwarf_read_debug)
13213         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13214       return std::unique_ptr<dwp_file> ();
13215     }
13216
13217   const char *name = bfd_get_filename (dbfd.get ());
13218   std::unique_ptr<struct dwp_file> dwp_file
13219     (new struct dwp_file (name, std::move (dbfd)));
13220
13221   /* +1: section 0 is unused */
13222   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13223   dwp_file->elf_sections =
13224     OBSTACK_CALLOC (&objfile->objfile_obstack,
13225                     dwp_file->num_sections, asection *);
13226
13227   bfd_map_over_sections (dwp_file->dbfd.get (),
13228                          dwarf2_locate_common_dwp_sections,
13229                          dwp_file.get ());
13230
13231   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13232                                          0);
13233
13234   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13235                                          1);
13236
13237   /* The DWP file version is stored in the hash table.  Oh well.  */
13238   if (dwp_file->cus && dwp_file->tus
13239       && dwp_file->cus->version != dwp_file->tus->version)
13240     {
13241       /* Technically speaking, we should try to limp along, but this is
13242          pretty bizarre.  We use pulongest here because that's the established
13243          portability solution (e.g, we cannot use %u for uint32_t).  */
13244       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13245                " TU version %s [in DWP file %s]"),
13246              pulongest (dwp_file->cus->version),
13247              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13248     }
13249
13250   if (dwp_file->cus)
13251     dwp_file->version = dwp_file->cus->version;
13252   else if (dwp_file->tus)
13253     dwp_file->version = dwp_file->tus->version;
13254   else
13255     dwp_file->version = 2;
13256
13257   if (dwp_file->version == 2)
13258     bfd_map_over_sections (dwp_file->dbfd.get (),
13259                            dwarf2_locate_v2_dwp_sections,
13260                            dwp_file.get ());
13261
13262   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13263   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13264
13265   if (dwarf_read_debug)
13266     {
13267       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13268       fprintf_unfiltered (gdb_stdlog,
13269                           "    %s CUs, %s TUs\n",
13270                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13271                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13272     }
13273
13274   return dwp_file;
13275 }
13276
13277 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13278
13279 static struct dwp_file *
13280 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13281 {
13282   if (! dwarf2_per_objfile->dwp_checked)
13283     {
13284       dwarf2_per_objfile->dwp_file
13285         = open_and_init_dwp_file (dwarf2_per_objfile);
13286       dwarf2_per_objfile->dwp_checked = 1;
13287     }
13288   return dwarf2_per_objfile->dwp_file.get ();
13289 }
13290
13291 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13292    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13293    or in the DWP file for the objfile, referenced by THIS_UNIT.
13294    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13295    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13296
13297    This is called, for example, when wanting to read a variable with a
13298    complex location.  Therefore we don't want to do file i/o for every call.
13299    Therefore we don't want to look for a DWO file on every call.
13300    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13301    then we check if we've already seen DWO_NAME, and only THEN do we check
13302    for a DWO file.
13303
13304    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13305    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13306
13307 static struct dwo_unit *
13308 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13309                  const char *dwo_name, const char *comp_dir,
13310                  ULONGEST signature, int is_debug_types)
13311 {
13312   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13313   struct objfile *objfile = dwarf2_per_objfile->objfile;
13314   const char *kind = is_debug_types ? "TU" : "CU";
13315   void **dwo_file_slot;
13316   struct dwo_file *dwo_file;
13317   struct dwp_file *dwp_file;
13318
13319   /* First see if there's a DWP file.
13320      If we have a DWP file but didn't find the DWO inside it, don't
13321      look for the original DWO file.  It makes gdb behave differently
13322      depending on whether one is debugging in the build tree.  */
13323
13324   dwp_file = get_dwp_file (dwarf2_per_objfile);
13325   if (dwp_file != NULL)
13326     {
13327       const struct dwp_hash_table *dwp_htab =
13328         is_debug_types ? dwp_file->tus : dwp_file->cus;
13329
13330       if (dwp_htab != NULL)
13331         {
13332           struct dwo_unit *dwo_cutu =
13333             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13334                                     signature, is_debug_types);
13335
13336           if (dwo_cutu != NULL)
13337             {
13338               if (dwarf_read_debug)
13339                 {
13340                   fprintf_unfiltered (gdb_stdlog,
13341                                       "Virtual DWO %s %s found: @%s\n",
13342                                       kind, hex_string (signature),
13343                                       host_address_to_string (dwo_cutu));
13344                 }
13345               return dwo_cutu;
13346             }
13347         }
13348     }
13349   else
13350     {
13351       /* No DWP file, look for the DWO file.  */
13352
13353       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13354                                             dwo_name, comp_dir);
13355       if (*dwo_file_slot == NULL)
13356         {
13357           /* Read in the file and build a table of the CUs/TUs it contains.  */
13358           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13359         }
13360       /* NOTE: This will be NULL if unable to open the file.  */
13361       dwo_file = (struct dwo_file *) *dwo_file_slot;
13362
13363       if (dwo_file != NULL)
13364         {
13365           struct dwo_unit *dwo_cutu = NULL;
13366
13367           if (is_debug_types && dwo_file->tus)
13368             {
13369               struct dwo_unit find_dwo_cutu;
13370
13371               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13372               find_dwo_cutu.signature = signature;
13373               dwo_cutu
13374                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13375             }
13376           else if (!is_debug_types && dwo_file->cus)
13377             {
13378               struct dwo_unit find_dwo_cutu;
13379
13380               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13381               find_dwo_cutu.signature = signature;
13382               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13383                                                        &find_dwo_cutu);
13384             }
13385
13386           if (dwo_cutu != NULL)
13387             {
13388               if (dwarf_read_debug)
13389                 {
13390                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13391                                       kind, dwo_name, hex_string (signature),
13392                                       host_address_to_string (dwo_cutu));
13393                 }
13394               return dwo_cutu;
13395             }
13396         }
13397     }
13398
13399   /* We didn't find it.  This could mean a dwo_id mismatch, or
13400      someone deleted the DWO/DWP file, or the search path isn't set up
13401      correctly to find the file.  */
13402
13403   if (dwarf_read_debug)
13404     {
13405       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13406                           kind, dwo_name, hex_string (signature));
13407     }
13408
13409   /* This is a warning and not a complaint because it can be caused by
13410      pilot error (e.g., user accidentally deleting the DWO).  */
13411   {
13412     /* Print the name of the DWP file if we looked there, helps the user
13413        better diagnose the problem.  */
13414     std::string dwp_text;
13415
13416     if (dwp_file != NULL)
13417       dwp_text = string_printf (" [in DWP file %s]",
13418                                 lbasename (dwp_file->name));
13419
13420     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13421                " [in module %s]"),
13422              kind, dwo_name, hex_string (signature),
13423              dwp_text.c_str (),
13424              this_unit->is_debug_types ? "TU" : "CU",
13425              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13426   }
13427   return NULL;
13428 }
13429
13430 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13431    See lookup_dwo_cutu_unit for details.  */
13432
13433 static struct dwo_unit *
13434 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13435                       const char *dwo_name, const char *comp_dir,
13436                       ULONGEST signature)
13437 {
13438   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13439 }
13440
13441 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13442    See lookup_dwo_cutu_unit for details.  */
13443
13444 static struct dwo_unit *
13445 lookup_dwo_type_unit (struct signatured_type *this_tu,
13446                       const char *dwo_name, const char *comp_dir)
13447 {
13448   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13449 }
13450
13451 /* Traversal function for queue_and_load_all_dwo_tus.  */
13452
13453 static int
13454 queue_and_load_dwo_tu (void **slot, void *info)
13455 {
13456   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13457   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13458   ULONGEST signature = dwo_unit->signature;
13459   struct signatured_type *sig_type =
13460     lookup_dwo_signatured_type (per_cu->cu, signature);
13461
13462   if (sig_type != NULL)
13463     {
13464       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13465
13466       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13467          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13468          while processing PER_CU.  */
13469       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13470         load_full_type_unit (sig_cu);
13471       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13472     }
13473
13474   return 1;
13475 }
13476
13477 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13478    The DWO may have the only definition of the type, though it may not be
13479    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13480    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13481
13482 static void
13483 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13484 {
13485   struct dwo_unit *dwo_unit;
13486   struct dwo_file *dwo_file;
13487
13488   gdb_assert (!per_cu->is_debug_types);
13489   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13490   gdb_assert (per_cu->cu != NULL);
13491
13492   dwo_unit = per_cu->cu->dwo_unit;
13493   gdb_assert (dwo_unit != NULL);
13494
13495   dwo_file = dwo_unit->dwo_file;
13496   if (dwo_file->tus != NULL)
13497     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13498 }
13499
13500 /* Free all resources associated with DWO_FILE.
13501    Close the DWO file and munmap the sections.  */
13502
13503 static void
13504 free_dwo_file (struct dwo_file *dwo_file)
13505 {
13506   /* Note: dbfd is NULL for virtual DWO files.  */
13507   gdb_bfd_unref (dwo_file->dbfd);
13508
13509   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13510 }
13511
13512 /* Traversal function for free_dwo_files.  */
13513
13514 static int
13515 free_dwo_file_from_slot (void **slot, void *info)
13516 {
13517   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13518
13519   free_dwo_file (dwo_file);
13520
13521   return 1;
13522 }
13523
13524 /* Free all resources associated with DWO_FILES.  */
13525
13526 static void
13527 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13528 {
13529   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13530 }
13531 \f
13532 /* Read in various DIEs.  */
13533
13534 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13535    Inherit only the children of the DW_AT_abstract_origin DIE not being
13536    already referenced by DW_AT_abstract_origin from the children of the
13537    current DIE.  */
13538
13539 static void
13540 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13541 {
13542   struct die_info *child_die;
13543   sect_offset *offsetp;
13544   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13545   struct die_info *origin_die;
13546   /* Iterator of the ORIGIN_DIE children.  */
13547   struct die_info *origin_child_die;
13548   struct attribute *attr;
13549   struct dwarf2_cu *origin_cu;
13550   struct pending **origin_previous_list_in_scope;
13551
13552   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13553   if (!attr)
13554     return;
13555
13556   /* Note that following die references may follow to a die in a
13557      different cu.  */
13558
13559   origin_cu = cu;
13560   origin_die = follow_die_ref (die, attr, &origin_cu);
13561
13562   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13563      symbols in.  */
13564   origin_previous_list_in_scope = origin_cu->list_in_scope;
13565   origin_cu->list_in_scope = cu->list_in_scope;
13566
13567   if (die->tag != origin_die->tag
13568       && !(die->tag == DW_TAG_inlined_subroutine
13569            && origin_die->tag == DW_TAG_subprogram))
13570     complaint (_("DIE %s and its abstract origin %s have different tags"),
13571                sect_offset_str (die->sect_off),
13572                sect_offset_str (origin_die->sect_off));
13573
13574   std::vector<sect_offset> offsets;
13575
13576   for (child_die = die->child;
13577        child_die && child_die->tag;
13578        child_die = sibling_die (child_die))
13579     {
13580       struct die_info *child_origin_die;
13581       struct dwarf2_cu *child_origin_cu;
13582
13583       /* We are trying to process concrete instance entries:
13584          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13585          it's not relevant to our analysis here. i.e. detecting DIEs that are
13586          present in the abstract instance but not referenced in the concrete
13587          one.  */
13588       if (child_die->tag == DW_TAG_call_site
13589           || child_die->tag == DW_TAG_GNU_call_site)
13590         continue;
13591
13592       /* For each CHILD_DIE, find the corresponding child of
13593          ORIGIN_DIE.  If there is more than one layer of
13594          DW_AT_abstract_origin, follow them all; there shouldn't be,
13595          but GCC versions at least through 4.4 generate this (GCC PR
13596          40573).  */
13597       child_origin_die = child_die;
13598       child_origin_cu = cu;
13599       while (1)
13600         {
13601           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13602                               child_origin_cu);
13603           if (attr == NULL)
13604             break;
13605           child_origin_die = follow_die_ref (child_origin_die, attr,
13606                                              &child_origin_cu);
13607         }
13608
13609       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13610          counterpart may exist.  */
13611       if (child_origin_die != child_die)
13612         {
13613           if (child_die->tag != child_origin_die->tag
13614               && !(child_die->tag == DW_TAG_inlined_subroutine
13615                    && child_origin_die->tag == DW_TAG_subprogram))
13616             complaint (_("Child DIE %s and its abstract origin %s have "
13617                          "different tags"),
13618                        sect_offset_str (child_die->sect_off),
13619                        sect_offset_str (child_origin_die->sect_off));
13620           if (child_origin_die->parent != origin_die)
13621             complaint (_("Child DIE %s and its abstract origin %s have "
13622                          "different parents"),
13623                        sect_offset_str (child_die->sect_off),
13624                        sect_offset_str (child_origin_die->sect_off));
13625           else
13626             offsets.push_back (child_origin_die->sect_off);
13627         }
13628     }
13629   std::sort (offsets.begin (), offsets.end ());
13630   sect_offset *offsets_end = offsets.data () + offsets.size ();
13631   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13632     if (offsetp[-1] == *offsetp)
13633       complaint (_("Multiple children of DIE %s refer "
13634                    "to DIE %s as their abstract origin"),
13635                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13636
13637   offsetp = offsets.data ();
13638   origin_child_die = origin_die->child;
13639   while (origin_child_die && origin_child_die->tag)
13640     {
13641       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13642       while (offsetp < offsets_end
13643              && *offsetp < origin_child_die->sect_off)
13644         offsetp++;
13645       if (offsetp >= offsets_end
13646           || *offsetp > origin_child_die->sect_off)
13647         {
13648           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13649              Check whether we're already processing ORIGIN_CHILD_DIE.
13650              This can happen with mutually referenced abstract_origins.
13651              PR 16581.  */
13652           if (!origin_child_die->in_process)
13653             process_die (origin_child_die, origin_cu);
13654         }
13655       origin_child_die = sibling_die (origin_child_die);
13656     }
13657   origin_cu->list_in_scope = origin_previous_list_in_scope;
13658 }
13659
13660 static void
13661 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13662 {
13663   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13664   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13665   struct context_stack *newobj;
13666   CORE_ADDR lowpc;
13667   CORE_ADDR highpc;
13668   struct die_info *child_die;
13669   struct attribute *attr, *call_line, *call_file;
13670   const char *name;
13671   CORE_ADDR baseaddr;
13672   struct block *block;
13673   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13674   std::vector<struct symbol *> template_args;
13675   struct template_symbol *templ_func = NULL;
13676
13677   if (inlined_func)
13678     {
13679       /* If we do not have call site information, we can't show the
13680          caller of this inlined function.  That's too confusing, so
13681          only use the scope for local variables.  */
13682       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13683       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13684       if (call_line == NULL || call_file == NULL)
13685         {
13686           read_lexical_block_scope (die, cu);
13687           return;
13688         }
13689     }
13690
13691   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13692
13693   name = dwarf2_name (die, cu);
13694
13695   /* Ignore functions with missing or empty names.  These are actually
13696      illegal according to the DWARF standard.  */
13697   if (name == NULL)
13698     {
13699       complaint (_("missing name for subprogram DIE at %s"),
13700                  sect_offset_str (die->sect_off));
13701       return;
13702     }
13703
13704   /* Ignore functions with missing or invalid low and high pc attributes.  */
13705   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13706       <= PC_BOUNDS_INVALID)
13707     {
13708       attr = dwarf2_attr (die, DW_AT_external, cu);
13709       if (!attr || !DW_UNSND (attr))
13710         complaint (_("cannot get low and high bounds "
13711                      "for subprogram DIE at %s"),
13712                    sect_offset_str (die->sect_off));
13713       return;
13714     }
13715
13716   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13717   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13718
13719   /* If we have any template arguments, then we must allocate a
13720      different sort of symbol.  */
13721   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13722     {
13723       if (child_die->tag == DW_TAG_template_type_param
13724           || child_die->tag == DW_TAG_template_value_param)
13725         {
13726           templ_func = allocate_template_symbol (objfile);
13727           templ_func->subclass = SYMBOL_TEMPLATE;
13728           break;
13729         }
13730     }
13731
13732   newobj = cu->builder->push_context (0, lowpc);
13733   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13734                              (struct symbol *) templ_func);
13735
13736   /* If there is a location expression for DW_AT_frame_base, record
13737      it.  */
13738   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13739   if (attr)
13740     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13741
13742   /* If there is a location for the static link, record it.  */
13743   newobj->static_link = NULL;
13744   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13745   if (attr)
13746     {
13747       newobj->static_link
13748         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13749       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13750     }
13751
13752   cu->list_in_scope = cu->builder->get_local_symbols ();
13753
13754   if (die->child != NULL)
13755     {
13756       child_die = die->child;
13757       while (child_die && child_die->tag)
13758         {
13759           if (child_die->tag == DW_TAG_template_type_param
13760               || child_die->tag == DW_TAG_template_value_param)
13761             {
13762               struct symbol *arg = new_symbol (child_die, NULL, cu);
13763
13764               if (arg != NULL)
13765                 template_args.push_back (arg);
13766             }
13767           else
13768             process_die (child_die, cu);
13769           child_die = sibling_die (child_die);
13770         }
13771     }
13772
13773   inherit_abstract_dies (die, cu);
13774
13775   /* If we have a DW_AT_specification, we might need to import using
13776      directives from the context of the specification DIE.  See the
13777      comment in determine_prefix.  */
13778   if (cu->language == language_cplus
13779       && dwarf2_attr (die, DW_AT_specification, cu))
13780     {
13781       struct dwarf2_cu *spec_cu = cu;
13782       struct die_info *spec_die = die_specification (die, &spec_cu);
13783
13784       while (spec_die)
13785         {
13786           child_die = spec_die->child;
13787           while (child_die && child_die->tag)
13788             {
13789               if (child_die->tag == DW_TAG_imported_module)
13790                 process_die (child_die, spec_cu);
13791               child_die = sibling_die (child_die);
13792             }
13793
13794           /* In some cases, GCC generates specification DIEs that
13795              themselves contain DW_AT_specification attributes.  */
13796           spec_die = die_specification (spec_die, &spec_cu);
13797         }
13798     }
13799
13800   struct context_stack cstk = cu->builder->pop_context ();
13801   /* Make a block for the local symbols within.  */
13802   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13803                                      cstk.static_link, lowpc, highpc);
13804
13805   /* For C++, set the block's scope.  */
13806   if ((cu->language == language_cplus
13807        || cu->language == language_fortran
13808        || cu->language == language_d
13809        || cu->language == language_rust)
13810       && cu->processing_has_namespace_info)
13811     block_set_scope (block, determine_prefix (die, cu),
13812                      &objfile->objfile_obstack);
13813
13814   /* If we have address ranges, record them.  */
13815   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13816
13817   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13818
13819   /* Attach template arguments to function.  */
13820   if (!template_args.empty ())
13821     {
13822       gdb_assert (templ_func != NULL);
13823
13824       templ_func->n_template_arguments = template_args.size ();
13825       templ_func->template_arguments
13826         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13827                      templ_func->n_template_arguments);
13828       memcpy (templ_func->template_arguments,
13829               template_args.data (),
13830               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13831
13832       /* Make sure that the symtab is set on the new symbols.  Even
13833          though they don't appear in this symtab directly, other parts
13834          of gdb assume that symbols do, and this is reasonably
13835          true.  */
13836       for (symbol *sym : template_args)
13837         symbol_set_symtab (sym, symbol_symtab (templ_func));
13838     }
13839
13840   /* In C++, we can have functions nested inside functions (e.g., when
13841      a function declares a class that has methods).  This means that
13842      when we finish processing a function scope, we may need to go
13843      back to building a containing block's symbol lists.  */
13844   *cu->builder->get_local_symbols () = cstk.locals;
13845   cu->builder->set_local_using_directives (cstk.local_using_directives);
13846
13847   /* If we've finished processing a top-level function, subsequent
13848      symbols go in the file symbol list.  */
13849   if (cu->builder->outermost_context_p ())
13850     cu->list_in_scope = cu->builder->get_file_symbols ();
13851 }
13852
13853 /* Process all the DIES contained within a lexical block scope.  Start
13854    a new scope, process the dies, and then close the scope.  */
13855
13856 static void
13857 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13858 {
13859   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13860   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13861   CORE_ADDR lowpc, highpc;
13862   struct die_info *child_die;
13863   CORE_ADDR baseaddr;
13864
13865   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13866
13867   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13868   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13869      as multiple lexical blocks?  Handling children in a sane way would
13870      be nasty.  Might be easier to properly extend generic blocks to
13871      describe ranges.  */
13872   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13873     {
13874     case PC_BOUNDS_NOT_PRESENT:
13875       /* DW_TAG_lexical_block has no attributes, process its children as if
13876          there was no wrapping by that DW_TAG_lexical_block.
13877          GCC does no longer produces such DWARF since GCC r224161.  */
13878       for (child_die = die->child;
13879            child_die != NULL && child_die->tag;
13880            child_die = sibling_die (child_die))
13881         process_die (child_die, cu);
13882       return;
13883     case PC_BOUNDS_INVALID:
13884       return;
13885     }
13886   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13887   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13888
13889   cu->builder->push_context (0, lowpc);
13890   if (die->child != NULL)
13891     {
13892       child_die = die->child;
13893       while (child_die && child_die->tag)
13894         {
13895           process_die (child_die, cu);
13896           child_die = sibling_die (child_die);
13897         }
13898     }
13899   inherit_abstract_dies (die, cu);
13900   struct context_stack cstk = cu->builder->pop_context ();
13901
13902   if (*cu->builder->get_local_symbols () != NULL
13903       || (*cu->builder->get_local_using_directives ()) != NULL)
13904     {
13905       struct block *block
13906         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13907                                      cstk.start_addr, highpc);
13908
13909       /* Note that recording ranges after traversing children, as we
13910          do here, means that recording a parent's ranges entails
13911          walking across all its children's ranges as they appear in
13912          the address map, which is quadratic behavior.
13913
13914          It would be nicer to record the parent's ranges before
13915          traversing its children, simply overriding whatever you find
13916          there.  But since we don't even decide whether to create a
13917          block until after we've traversed its children, that's hard
13918          to do.  */
13919       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13920     }
13921   *cu->builder->get_local_symbols () = cstk.locals;
13922   cu->builder->set_local_using_directives (cstk.local_using_directives);
13923 }
13924
13925 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13926
13927 static void
13928 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13929 {
13930   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13931   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13932   CORE_ADDR pc, baseaddr;
13933   struct attribute *attr;
13934   struct call_site *call_site, call_site_local;
13935   void **slot;
13936   int nparams;
13937   struct die_info *child_die;
13938
13939   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13940
13941   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13942   if (attr == NULL)
13943     {
13944       /* This was a pre-DWARF-5 GNU extension alias
13945          for DW_AT_call_return_pc.  */
13946       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13947     }
13948   if (!attr)
13949     {
13950       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13951                    "DIE %s [in module %s]"),
13952                  sect_offset_str (die->sect_off), objfile_name (objfile));
13953       return;
13954     }
13955   pc = attr_value_as_address (attr) + baseaddr;
13956   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13957
13958   if (cu->call_site_htab == NULL)
13959     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13960                                                NULL, &objfile->objfile_obstack,
13961                                                hashtab_obstack_allocate, NULL);
13962   call_site_local.pc = pc;
13963   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13964   if (*slot != NULL)
13965     {
13966       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13967                    "DIE %s [in module %s]"),
13968                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13969                  objfile_name (objfile));
13970       return;
13971     }
13972
13973   /* Count parameters at the caller.  */
13974
13975   nparams = 0;
13976   for (child_die = die->child; child_die && child_die->tag;
13977        child_die = sibling_die (child_die))
13978     {
13979       if (child_die->tag != DW_TAG_call_site_parameter
13980           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13981         {
13982           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13983                        "DW_TAG_call_site child DIE %s [in module %s]"),
13984                      child_die->tag, sect_offset_str (child_die->sect_off),
13985                      objfile_name (objfile));
13986           continue;
13987         }
13988
13989       nparams++;
13990     }
13991
13992   call_site
13993     = ((struct call_site *)
13994        obstack_alloc (&objfile->objfile_obstack,
13995                       sizeof (*call_site)
13996                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13997   *slot = call_site;
13998   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
13999   call_site->pc = pc;
14000
14001   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14002       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14003     {
14004       struct die_info *func_die;
14005
14006       /* Skip also over DW_TAG_inlined_subroutine.  */
14007       for (func_die = die->parent;
14008            func_die && func_die->tag != DW_TAG_subprogram
14009            && func_die->tag != DW_TAG_subroutine_type;
14010            func_die = func_die->parent);
14011
14012       /* DW_AT_call_all_calls is a superset
14013          of DW_AT_call_all_tail_calls.  */
14014       if (func_die
14015           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14016           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14017           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14018           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14019         {
14020           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14021              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14022              both the initial caller containing the real return address PC and
14023              the final callee containing the current PC of a chain of tail
14024              calls do not need to have the tail call list complete.  But any
14025              function candidate for a virtual tail call frame searched via
14026              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14027              determined unambiguously.  */
14028         }
14029       else
14030         {
14031           struct type *func_type = NULL;
14032
14033           if (func_die)
14034             func_type = get_die_type (func_die, cu);
14035           if (func_type != NULL)
14036             {
14037               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14038
14039               /* Enlist this call site to the function.  */
14040               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14041               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14042             }
14043           else
14044             complaint (_("Cannot find function owning DW_TAG_call_site "
14045                          "DIE %s [in module %s]"),
14046                        sect_offset_str (die->sect_off), objfile_name (objfile));
14047         }
14048     }
14049
14050   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14051   if (attr == NULL)
14052     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14053   if (attr == NULL)
14054     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14055   if (attr == NULL)
14056     {
14057       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14058       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14059     }
14060   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14061   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14062     /* Keep NULL DWARF_BLOCK.  */;
14063   else if (attr_form_is_block (attr))
14064     {
14065       struct dwarf2_locexpr_baton *dlbaton;
14066
14067       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14068       dlbaton->data = DW_BLOCK (attr)->data;
14069       dlbaton->size = DW_BLOCK (attr)->size;
14070       dlbaton->per_cu = cu->per_cu;
14071
14072       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14073     }
14074   else if (attr_form_is_ref (attr))
14075     {
14076       struct dwarf2_cu *target_cu = cu;
14077       struct die_info *target_die;
14078
14079       target_die = follow_die_ref (die, attr, &target_cu);
14080       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14081       if (die_is_declaration (target_die, target_cu))
14082         {
14083           const char *target_physname;
14084
14085           /* Prefer the mangled name; otherwise compute the demangled one.  */
14086           target_physname = dw2_linkage_name (target_die, target_cu);
14087           if (target_physname == NULL)
14088             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14089           if (target_physname == NULL)
14090             complaint (_("DW_AT_call_target target DIE has invalid "
14091                          "physname, for referencing DIE %s [in module %s]"),
14092                        sect_offset_str (die->sect_off), objfile_name (objfile));
14093           else
14094             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14095         }
14096       else
14097         {
14098           CORE_ADDR lowpc;
14099
14100           /* DW_AT_entry_pc should be preferred.  */
14101           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14102               <= PC_BOUNDS_INVALID)
14103             complaint (_("DW_AT_call_target target DIE has invalid "
14104                          "low pc, for referencing DIE %s [in module %s]"),
14105                        sect_offset_str (die->sect_off), objfile_name (objfile));
14106           else
14107             {
14108               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14109               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14110             }
14111         }
14112     }
14113   else
14114     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14115                  "block nor reference, for DIE %s [in module %s]"),
14116                sect_offset_str (die->sect_off), objfile_name (objfile));
14117
14118   call_site->per_cu = cu->per_cu;
14119
14120   for (child_die = die->child;
14121        child_die && child_die->tag;
14122        child_die = sibling_die (child_die))
14123     {
14124       struct call_site_parameter *parameter;
14125       struct attribute *loc, *origin;
14126
14127       if (child_die->tag != DW_TAG_call_site_parameter
14128           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14129         {
14130           /* Already printed the complaint above.  */
14131           continue;
14132         }
14133
14134       gdb_assert (call_site->parameter_count < nparams);
14135       parameter = &call_site->parameter[call_site->parameter_count];
14136
14137       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14138          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14139          register is contained in DW_AT_call_value.  */
14140
14141       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14142       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14143       if (origin == NULL)
14144         {
14145           /* This was a pre-DWARF-5 GNU extension alias
14146              for DW_AT_call_parameter.  */
14147           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14148         }
14149       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14150         {
14151           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14152
14153           sect_offset sect_off
14154             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14155           if (!offset_in_cu_p (&cu->header, sect_off))
14156             {
14157               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14158                  binding can be done only inside one CU.  Such referenced DIE
14159                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14160               complaint (_("DW_AT_call_parameter offset is not in CU for "
14161                            "DW_TAG_call_site child DIE %s [in module %s]"),
14162                          sect_offset_str (child_die->sect_off),
14163                          objfile_name (objfile));
14164               continue;
14165             }
14166           parameter->u.param_cu_off
14167             = (cu_offset) (sect_off - cu->header.sect_off);
14168         }
14169       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14170         {
14171           complaint (_("No DW_FORM_block* DW_AT_location for "
14172                        "DW_TAG_call_site child DIE %s [in module %s]"),
14173                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14174           continue;
14175         }
14176       else
14177         {
14178           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14179             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14180           if (parameter->u.dwarf_reg != -1)
14181             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14182           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14183                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14184                                              &parameter->u.fb_offset))
14185             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14186           else
14187             {
14188               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14189                            "for DW_FORM_block* DW_AT_location is supported for "
14190                            "DW_TAG_call_site child DIE %s "
14191                            "[in module %s]"),
14192                          sect_offset_str (child_die->sect_off),
14193                          objfile_name (objfile));
14194               continue;
14195             }
14196         }
14197
14198       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14199       if (attr == NULL)
14200         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14201       if (!attr_form_is_block (attr))
14202         {
14203           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14204                        "DW_TAG_call_site child DIE %s [in module %s]"),
14205                      sect_offset_str (child_die->sect_off),
14206                      objfile_name (objfile));
14207           continue;
14208         }
14209       parameter->value = DW_BLOCK (attr)->data;
14210       parameter->value_size = DW_BLOCK (attr)->size;
14211
14212       /* Parameters are not pre-cleared by memset above.  */
14213       parameter->data_value = NULL;
14214       parameter->data_value_size = 0;
14215       call_site->parameter_count++;
14216
14217       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14218       if (attr == NULL)
14219         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14220       if (attr)
14221         {
14222           if (!attr_form_is_block (attr))
14223             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14224                          "DW_TAG_call_site child DIE %s [in module %s]"),
14225                        sect_offset_str (child_die->sect_off),
14226                        objfile_name (objfile));
14227           else
14228             {
14229               parameter->data_value = DW_BLOCK (attr)->data;
14230               parameter->data_value_size = DW_BLOCK (attr)->size;
14231             }
14232         }
14233     }
14234 }
14235
14236 /* Helper function for read_variable.  If DIE represents a virtual
14237    table, then return the type of the concrete object that is
14238    associated with the virtual table.  Otherwise, return NULL.  */
14239
14240 static struct type *
14241 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14242 {
14243   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14244   if (attr == NULL)
14245     return NULL;
14246
14247   /* Find the type DIE.  */
14248   struct die_info *type_die = NULL;
14249   struct dwarf2_cu *type_cu = cu;
14250
14251   if (attr_form_is_ref (attr))
14252     type_die = follow_die_ref (die, attr, &type_cu);
14253   if (type_die == NULL)
14254     return NULL;
14255
14256   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14257     return NULL;
14258   return die_containing_type (type_die, type_cu);
14259 }
14260
14261 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14262
14263 static void
14264 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14265 {
14266   struct rust_vtable_symbol *storage = NULL;
14267
14268   if (cu->language == language_rust)
14269     {
14270       struct type *containing_type = rust_containing_type (die, cu);
14271
14272       if (containing_type != NULL)
14273         {
14274           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14275
14276           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14277                                     struct rust_vtable_symbol);
14278           initialize_objfile_symbol (storage);
14279           storage->concrete_type = containing_type;
14280           storage->subclass = SYMBOL_RUST_VTABLE;
14281         }
14282     }
14283
14284   struct symbol *res = new_symbol (die, NULL, cu, storage);
14285   struct attribute *abstract_origin
14286     = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14287   struct attribute *loc = dwarf2_attr (die, DW_AT_location, cu);
14288   if (res == NULL && loc && abstract_origin)
14289     {
14290       /* We have a variable without a name, but with a location and an abstract
14291          origin.  This may be a concrete instance of an abstract variable
14292          referenced from an DW_OP_GNU_variable_value, so save it to find it back
14293          later.  */
14294       struct dwarf2_cu *origin_cu = cu;
14295       struct die_info *origin_die
14296         = follow_die_ref (die, abstract_origin, &origin_cu);
14297       dwarf2_per_objfile *dpo = cu->per_cu->dwarf2_per_objfile;
14298       dpo->abstract_to_concrete[origin_die].push_back (die);
14299     }
14300 }
14301
14302 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14303    reading .debug_rnglists.
14304    Callback's type should be:
14305     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14306    Return true if the attributes are present and valid, otherwise,
14307    return false.  */
14308
14309 template <typename Callback>
14310 static bool
14311 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14312                          Callback &&callback)
14313 {
14314   struct dwarf2_per_objfile *dwarf2_per_objfile
14315     = cu->per_cu->dwarf2_per_objfile;
14316   struct objfile *objfile = dwarf2_per_objfile->objfile;
14317   bfd *obfd = objfile->obfd;
14318   /* Base address selection entry.  */
14319   CORE_ADDR base;
14320   int found_base;
14321   const gdb_byte *buffer;
14322   CORE_ADDR baseaddr;
14323   bool overflow = false;
14324
14325   found_base = cu->base_known;
14326   base = cu->base_address;
14327
14328   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14329   if (offset >= dwarf2_per_objfile->rnglists.size)
14330     {
14331       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14332                  offset);
14333       return false;
14334     }
14335   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14336
14337   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14338
14339   while (1)
14340     {
14341       /* Initialize it due to a false compiler warning.  */
14342       CORE_ADDR range_beginning = 0, range_end = 0;
14343       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14344                                  + dwarf2_per_objfile->rnglists.size);
14345       unsigned int bytes_read;
14346
14347       if (buffer == buf_end)
14348         {
14349           overflow = true;
14350           break;
14351         }
14352       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14353       switch (rlet)
14354         {
14355         case DW_RLE_end_of_list:
14356           break;
14357         case DW_RLE_base_address:
14358           if (buffer + cu->header.addr_size > buf_end)
14359             {
14360               overflow = true;
14361               break;
14362             }
14363           base = read_address (obfd, buffer, cu, &bytes_read);
14364           found_base = 1;
14365           buffer += bytes_read;
14366           break;
14367         case DW_RLE_start_length:
14368           if (buffer + cu->header.addr_size > buf_end)
14369             {
14370               overflow = true;
14371               break;
14372             }
14373           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14374           buffer += bytes_read;
14375           range_end = (range_beginning
14376                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14377           buffer += bytes_read;
14378           if (buffer > buf_end)
14379             {
14380               overflow = true;
14381               break;
14382             }
14383           break;
14384         case DW_RLE_offset_pair:
14385           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14386           buffer += bytes_read;
14387           if (buffer > buf_end)
14388             {
14389               overflow = true;
14390               break;
14391             }
14392           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14393           buffer += bytes_read;
14394           if (buffer > buf_end)
14395             {
14396               overflow = true;
14397               break;
14398             }
14399           break;
14400         case DW_RLE_start_end:
14401           if (buffer + 2 * cu->header.addr_size > buf_end)
14402             {
14403               overflow = true;
14404               break;
14405             }
14406           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14407           buffer += bytes_read;
14408           range_end = read_address (obfd, buffer, cu, &bytes_read);
14409           buffer += bytes_read;
14410           break;
14411         default:
14412           complaint (_("Invalid .debug_rnglists data (no base address)"));
14413           return false;
14414         }
14415       if (rlet == DW_RLE_end_of_list || overflow)
14416         break;
14417       if (rlet == DW_RLE_base_address)
14418         continue;
14419
14420       if (!found_base)
14421         {
14422           /* We have no valid base address for the ranges
14423              data.  */
14424           complaint (_("Invalid .debug_rnglists data (no base address)"));
14425           return false;
14426         }
14427
14428       if (range_beginning > range_end)
14429         {
14430           /* Inverted range entries are invalid.  */
14431           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14432           return false;
14433         }
14434
14435       /* Empty range entries have no effect.  */
14436       if (range_beginning == range_end)
14437         continue;
14438
14439       range_beginning += base;
14440       range_end += base;
14441
14442       /* A not-uncommon case of bad debug info.
14443          Don't pollute the addrmap with bad data.  */
14444       if (range_beginning + baseaddr == 0
14445           && !dwarf2_per_objfile->has_section_at_zero)
14446         {
14447           complaint (_(".debug_rnglists entry has start address of zero"
14448                        " [in module %s]"), objfile_name (objfile));
14449           continue;
14450         }
14451
14452       callback (range_beginning, range_end);
14453     }
14454
14455   if (overflow)
14456     {
14457       complaint (_("Offset %d is not terminated "
14458                    "for DW_AT_ranges attribute"),
14459                  offset);
14460       return false;
14461     }
14462
14463   return true;
14464 }
14465
14466 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14467    Callback's type should be:
14468     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14469    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14470
14471 template <typename Callback>
14472 static int
14473 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14474                        Callback &&callback)
14475 {
14476   struct dwarf2_per_objfile *dwarf2_per_objfile
14477       = cu->per_cu->dwarf2_per_objfile;
14478   struct objfile *objfile = dwarf2_per_objfile->objfile;
14479   struct comp_unit_head *cu_header = &cu->header;
14480   bfd *obfd = objfile->obfd;
14481   unsigned int addr_size = cu_header->addr_size;
14482   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14483   /* Base address selection entry.  */
14484   CORE_ADDR base;
14485   int found_base;
14486   unsigned int dummy;
14487   const gdb_byte *buffer;
14488   CORE_ADDR baseaddr;
14489
14490   if (cu_header->version >= 5)
14491     return dwarf2_rnglists_process (offset, cu, callback);
14492
14493   found_base = cu->base_known;
14494   base = cu->base_address;
14495
14496   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14497   if (offset >= dwarf2_per_objfile->ranges.size)
14498     {
14499       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14500                  offset);
14501       return 0;
14502     }
14503   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14504
14505   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14506
14507   while (1)
14508     {
14509       CORE_ADDR range_beginning, range_end;
14510
14511       range_beginning = read_address (obfd, buffer, cu, &dummy);
14512       buffer += addr_size;
14513       range_end = read_address (obfd, buffer, cu, &dummy);
14514       buffer += addr_size;
14515       offset += 2 * addr_size;
14516
14517       /* An end of list marker is a pair of zero addresses.  */
14518       if (range_beginning == 0 && range_end == 0)
14519         /* Found the end of list entry.  */
14520         break;
14521
14522       /* Each base address selection entry is a pair of 2 values.
14523          The first is the largest possible address, the second is
14524          the base address.  Check for a base address here.  */
14525       if ((range_beginning & mask) == mask)
14526         {
14527           /* If we found the largest possible address, then we already
14528              have the base address in range_end.  */
14529           base = range_end;
14530           found_base = 1;
14531           continue;
14532         }
14533
14534       if (!found_base)
14535         {
14536           /* We have no valid base address for the ranges
14537              data.  */
14538           complaint (_("Invalid .debug_ranges data (no base address)"));
14539           return 0;
14540         }
14541
14542       if (range_beginning > range_end)
14543         {
14544           /* Inverted range entries are invalid.  */
14545           complaint (_("Invalid .debug_ranges data (inverted range)"));
14546           return 0;
14547         }
14548
14549       /* Empty range entries have no effect.  */
14550       if (range_beginning == range_end)
14551         continue;
14552
14553       range_beginning += base;
14554       range_end += base;
14555
14556       /* A not-uncommon case of bad debug info.
14557          Don't pollute the addrmap with bad data.  */
14558       if (range_beginning + baseaddr == 0
14559           && !dwarf2_per_objfile->has_section_at_zero)
14560         {
14561           complaint (_(".debug_ranges entry has start address of zero"
14562                        " [in module %s]"), objfile_name (objfile));
14563           continue;
14564         }
14565
14566       callback (range_beginning, range_end);
14567     }
14568
14569   return 1;
14570 }
14571
14572 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14573    Return 1 if the attributes are present and valid, otherwise, return 0.
14574    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14575
14576 static int
14577 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14578                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14579                     struct partial_symtab *ranges_pst)
14580 {
14581   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14582   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14583   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14584                                        SECT_OFF_TEXT (objfile));
14585   int low_set = 0;
14586   CORE_ADDR low = 0;
14587   CORE_ADDR high = 0;
14588   int retval;
14589
14590   retval = dwarf2_ranges_process (offset, cu,
14591     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14592     {
14593       if (ranges_pst != NULL)
14594         {
14595           CORE_ADDR lowpc;
14596           CORE_ADDR highpc;
14597
14598           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14599                                                range_beginning + baseaddr)
14600                    - baseaddr);
14601           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14602                                                 range_end + baseaddr)
14603                     - baseaddr);
14604           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14605                              ranges_pst);
14606         }
14607
14608       /* FIXME: This is recording everything as a low-high
14609          segment of consecutive addresses.  We should have a
14610          data structure for discontiguous block ranges
14611          instead.  */
14612       if (! low_set)
14613         {
14614           low = range_beginning;
14615           high = range_end;
14616           low_set = 1;
14617         }
14618       else
14619         {
14620           if (range_beginning < low)
14621             low = range_beginning;
14622           if (range_end > high)
14623             high = range_end;
14624         }
14625     });
14626   if (!retval)
14627     return 0;
14628
14629   if (! low_set)
14630     /* If the first entry is an end-of-list marker, the range
14631        describes an empty scope, i.e. no instructions.  */
14632     return 0;
14633
14634   if (low_return)
14635     *low_return = low;
14636   if (high_return)
14637     *high_return = high;
14638   return 1;
14639 }
14640
14641 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14642    definition for the return value.  *LOWPC and *HIGHPC are set iff
14643    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14644
14645 static enum pc_bounds_kind
14646 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14647                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14648                       struct partial_symtab *pst)
14649 {
14650   struct dwarf2_per_objfile *dwarf2_per_objfile
14651     = cu->per_cu->dwarf2_per_objfile;
14652   struct attribute *attr;
14653   struct attribute *attr_high;
14654   CORE_ADDR low = 0;
14655   CORE_ADDR high = 0;
14656   enum pc_bounds_kind ret;
14657
14658   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14659   if (attr_high)
14660     {
14661       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14662       if (attr)
14663         {
14664           low = attr_value_as_address (attr);
14665           high = attr_value_as_address (attr_high);
14666           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14667             high += low;
14668         }
14669       else
14670         /* Found high w/o low attribute.  */
14671         return PC_BOUNDS_INVALID;
14672
14673       /* Found consecutive range of addresses.  */
14674       ret = PC_BOUNDS_HIGH_LOW;
14675     }
14676   else
14677     {
14678       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14679       if (attr != NULL)
14680         {
14681           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14682              We take advantage of the fact that DW_AT_ranges does not appear
14683              in DW_TAG_compile_unit of DWO files.  */
14684           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14685           unsigned int ranges_offset = (DW_UNSND (attr)
14686                                         + (need_ranges_base
14687                                            ? cu->ranges_base
14688                                            : 0));
14689
14690           /* Value of the DW_AT_ranges attribute is the offset in the
14691              .debug_ranges section.  */
14692           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14693             return PC_BOUNDS_INVALID;
14694           /* Found discontinuous range of addresses.  */
14695           ret = PC_BOUNDS_RANGES;
14696         }
14697       else
14698         return PC_BOUNDS_NOT_PRESENT;
14699     }
14700
14701   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14702   if (high <= low)
14703     return PC_BOUNDS_INVALID;
14704
14705   /* When using the GNU linker, .gnu.linkonce. sections are used to
14706      eliminate duplicate copies of functions and vtables and such.
14707      The linker will arbitrarily choose one and discard the others.
14708      The AT_*_pc values for such functions refer to local labels in
14709      these sections.  If the section from that file was discarded, the
14710      labels are not in the output, so the relocs get a value of 0.
14711      If this is a discarded function, mark the pc bounds as invalid,
14712      so that GDB will ignore it.  */
14713   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14714     return PC_BOUNDS_INVALID;
14715
14716   *lowpc = low;
14717   if (highpc)
14718     *highpc = high;
14719   return ret;
14720 }
14721
14722 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14723    its low and high PC addresses.  Do nothing if these addresses could not
14724    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14725    and HIGHPC to the high address if greater than HIGHPC.  */
14726
14727 static void
14728 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14729                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14730                                  struct dwarf2_cu *cu)
14731 {
14732   CORE_ADDR low, high;
14733   struct die_info *child = die->child;
14734
14735   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14736     {
14737       *lowpc = std::min (*lowpc, low);
14738       *highpc = std::max (*highpc, high);
14739     }
14740
14741   /* If the language does not allow nested subprograms (either inside
14742      subprograms or lexical blocks), we're done.  */
14743   if (cu->language != language_ada)
14744     return;
14745
14746   /* Check all the children of the given DIE.  If it contains nested
14747      subprograms, then check their pc bounds.  Likewise, we need to
14748      check lexical blocks as well, as they may also contain subprogram
14749      definitions.  */
14750   while (child && child->tag)
14751     {
14752       if (child->tag == DW_TAG_subprogram
14753           || child->tag == DW_TAG_lexical_block)
14754         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14755       child = sibling_die (child);
14756     }
14757 }
14758
14759 /* Get the low and high pc's represented by the scope DIE, and store
14760    them in *LOWPC and *HIGHPC.  If the correct values can't be
14761    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14762
14763 static void
14764 get_scope_pc_bounds (struct die_info *die,
14765                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14766                      struct dwarf2_cu *cu)
14767 {
14768   CORE_ADDR best_low = (CORE_ADDR) -1;
14769   CORE_ADDR best_high = (CORE_ADDR) 0;
14770   CORE_ADDR current_low, current_high;
14771
14772   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14773       >= PC_BOUNDS_RANGES)
14774     {
14775       best_low = current_low;
14776       best_high = current_high;
14777     }
14778   else
14779     {
14780       struct die_info *child = die->child;
14781
14782       while (child && child->tag)
14783         {
14784           switch (child->tag) {
14785           case DW_TAG_subprogram:
14786             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14787             break;
14788           case DW_TAG_namespace:
14789           case DW_TAG_module:
14790             /* FIXME: carlton/2004-01-16: Should we do this for
14791                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14792                that current GCC's always emit the DIEs corresponding
14793                to definitions of methods of classes as children of a
14794                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14795                the DIEs giving the declarations, which could be
14796                anywhere).  But I don't see any reason why the
14797                standards says that they have to be there.  */
14798             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14799
14800             if (current_low != ((CORE_ADDR) -1))
14801               {
14802                 best_low = std::min (best_low, current_low);
14803                 best_high = std::max (best_high, current_high);
14804               }
14805             break;
14806           default:
14807             /* Ignore.  */
14808             break;
14809           }
14810
14811           child = sibling_die (child);
14812         }
14813     }
14814
14815   *lowpc = best_low;
14816   *highpc = best_high;
14817 }
14818
14819 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14820    in DIE.  */
14821
14822 static void
14823 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14824                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14825 {
14826   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14827   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14828   struct attribute *attr;
14829   struct attribute *attr_high;
14830
14831   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14832   if (attr_high)
14833     {
14834       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14835       if (attr)
14836         {
14837           CORE_ADDR low = attr_value_as_address (attr);
14838           CORE_ADDR high = attr_value_as_address (attr_high);
14839
14840           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14841             high += low;
14842
14843           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14844           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14845           cu->builder->record_block_range (block, low, high - 1);
14846         }
14847     }
14848
14849   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14850   if (attr)
14851     {
14852       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14853          We take advantage of the fact that DW_AT_ranges does not appear
14854          in DW_TAG_compile_unit of DWO files.  */
14855       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14856
14857       /* The value of the DW_AT_ranges attribute is the offset of the
14858          address range list in the .debug_ranges section.  */
14859       unsigned long offset = (DW_UNSND (attr)
14860                               + (need_ranges_base ? cu->ranges_base : 0));
14861
14862       std::vector<blockrange> blockvec;
14863       dwarf2_ranges_process (offset, cu,
14864         [&] (CORE_ADDR start, CORE_ADDR end)
14865         {
14866           start += baseaddr;
14867           end += baseaddr;
14868           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14869           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14870           cu->builder->record_block_range (block, start, end - 1);
14871           blockvec.emplace_back (start, end);
14872         });
14873
14874       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14875     }
14876 }
14877
14878 /* Check whether the producer field indicates either of GCC < 4.6, or the
14879    Intel C/C++ compiler, and cache the result in CU.  */
14880
14881 static void
14882 check_producer (struct dwarf2_cu *cu)
14883 {
14884   int major, minor;
14885
14886   if (cu->producer == NULL)
14887     {
14888       /* For unknown compilers expect their behavior is DWARF version
14889          compliant.
14890
14891          GCC started to support .debug_types sections by -gdwarf-4 since
14892          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14893          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14894          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14895          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14896     }
14897   else if (producer_is_gcc (cu->producer, &major, &minor))
14898     {
14899       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14900       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14901     }
14902   else if (producer_is_icc (cu->producer, &major, &minor))
14903     cu->producer_is_icc_lt_14 = major < 14;
14904   else
14905     {
14906       /* For other non-GCC compilers, expect their behavior is DWARF version
14907          compliant.  */
14908     }
14909
14910   cu->checked_producer = 1;
14911 }
14912
14913 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14914    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14915    during 4.6.0 experimental.  */
14916
14917 static int
14918 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14919 {
14920   if (!cu->checked_producer)
14921     check_producer (cu);
14922
14923   return cu->producer_is_gxx_lt_4_6;
14924 }
14925
14926 /* Return the default accessibility type if it is not overriden by
14927    DW_AT_accessibility.  */
14928
14929 static enum dwarf_access_attribute
14930 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14931 {
14932   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14933     {
14934       /* The default DWARF 2 accessibility for members is public, the default
14935          accessibility for inheritance is private.  */
14936
14937       if (die->tag != DW_TAG_inheritance)
14938         return DW_ACCESS_public;
14939       else
14940         return DW_ACCESS_private;
14941     }
14942   else
14943     {
14944       /* DWARF 3+ defines the default accessibility a different way.  The same
14945          rules apply now for DW_TAG_inheritance as for the members and it only
14946          depends on the container kind.  */
14947
14948       if (die->parent->tag == DW_TAG_class_type)
14949         return DW_ACCESS_private;
14950       else
14951         return DW_ACCESS_public;
14952     }
14953 }
14954
14955 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14956    offset.  If the attribute was not found return 0, otherwise return
14957    1.  If it was found but could not properly be handled, set *OFFSET
14958    to 0.  */
14959
14960 static int
14961 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14962                              LONGEST *offset)
14963 {
14964   struct attribute *attr;
14965
14966   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14967   if (attr != NULL)
14968     {
14969       *offset = 0;
14970
14971       /* Note that we do not check for a section offset first here.
14972          This is because DW_AT_data_member_location is new in DWARF 4,
14973          so if we see it, we can assume that a constant form is really
14974          a constant and not a section offset.  */
14975       if (attr_form_is_constant (attr))
14976         *offset = dwarf2_get_attr_constant_value (attr, 0);
14977       else if (attr_form_is_section_offset (attr))
14978         dwarf2_complex_location_expr_complaint ();
14979       else if (attr_form_is_block (attr))
14980         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14981       else
14982         dwarf2_complex_location_expr_complaint ();
14983
14984       return 1;
14985     }
14986
14987   return 0;
14988 }
14989
14990 /* Add an aggregate field to the field list.  */
14991
14992 static void
14993 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14994                   struct dwarf2_cu *cu)
14995 {
14996   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14997   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14998   struct nextfield *new_field;
14999   struct attribute *attr;
15000   struct field *fp;
15001   const char *fieldname = "";
15002
15003   if (die->tag == DW_TAG_inheritance)
15004     {
15005       fip->baseclasses.emplace_back ();
15006       new_field = &fip->baseclasses.back ();
15007     }
15008   else
15009     {
15010       fip->fields.emplace_back ();
15011       new_field = &fip->fields.back ();
15012     }
15013
15014   fip->nfields++;
15015
15016   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15017   if (attr)
15018     new_field->accessibility = DW_UNSND (attr);
15019   else
15020     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15021   if (new_field->accessibility != DW_ACCESS_public)
15022     fip->non_public_fields = 1;
15023
15024   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15025   if (attr)
15026     new_field->virtuality = DW_UNSND (attr);
15027   else
15028     new_field->virtuality = DW_VIRTUALITY_none;
15029
15030   fp = &new_field->field;
15031
15032   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15033     {
15034       LONGEST offset;
15035
15036       /* Data member other than a C++ static data member.  */
15037
15038       /* Get type of field.  */
15039       fp->type = die_type (die, cu);
15040
15041       SET_FIELD_BITPOS (*fp, 0);
15042
15043       /* Get bit size of field (zero if none).  */
15044       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15045       if (attr)
15046         {
15047           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15048         }
15049       else
15050         {
15051           FIELD_BITSIZE (*fp) = 0;
15052         }
15053
15054       /* Get bit offset of field.  */
15055       if (handle_data_member_location (die, cu, &offset))
15056         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15057       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15058       if (attr)
15059         {
15060           if (gdbarch_bits_big_endian (gdbarch))
15061             {
15062               /* For big endian bits, the DW_AT_bit_offset gives the
15063                  additional bit offset from the MSB of the containing
15064                  anonymous object to the MSB of the field.  We don't
15065                  have to do anything special since we don't need to
15066                  know the size of the anonymous object.  */
15067               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15068             }
15069           else
15070             {
15071               /* For little endian bits, compute the bit offset to the
15072                  MSB of the anonymous object, subtract off the number of
15073                  bits from the MSB of the field to the MSB of the
15074                  object, and then subtract off the number of bits of
15075                  the field itself.  The result is the bit offset of
15076                  the LSB of the field.  */
15077               int anonymous_size;
15078               int bit_offset = DW_UNSND (attr);
15079
15080               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15081               if (attr)
15082                 {
15083                   /* The size of the anonymous object containing
15084                      the bit field is explicit, so use the
15085                      indicated size (in bytes).  */
15086                   anonymous_size = DW_UNSND (attr);
15087                 }
15088               else
15089                 {
15090                   /* The size of the anonymous object containing
15091                      the bit field must be inferred from the type
15092                      attribute of the data member containing the
15093                      bit field.  */
15094                   anonymous_size = TYPE_LENGTH (fp->type);
15095                 }
15096               SET_FIELD_BITPOS (*fp,
15097                                 (FIELD_BITPOS (*fp)
15098                                  + anonymous_size * bits_per_byte
15099                                  - bit_offset - FIELD_BITSIZE (*fp)));
15100             }
15101         }
15102       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15103       if (attr != NULL)
15104         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15105                                 + dwarf2_get_attr_constant_value (attr, 0)));
15106
15107       /* Get name of field.  */
15108       fieldname = dwarf2_name (die, cu);
15109       if (fieldname == NULL)
15110         fieldname = "";
15111
15112       /* The name is already allocated along with this objfile, so we don't
15113          need to duplicate it for the type.  */
15114       fp->name = fieldname;
15115
15116       /* Change accessibility for artificial fields (e.g. virtual table
15117          pointer or virtual base class pointer) to private.  */
15118       if (dwarf2_attr (die, DW_AT_artificial, cu))
15119         {
15120           FIELD_ARTIFICIAL (*fp) = 1;
15121           new_field->accessibility = DW_ACCESS_private;
15122           fip->non_public_fields = 1;
15123         }
15124     }
15125   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15126     {
15127       /* C++ static member.  */
15128
15129       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15130          is a declaration, but all versions of G++ as of this writing
15131          (so through at least 3.2.1) incorrectly generate
15132          DW_TAG_variable tags.  */
15133
15134       const char *physname;
15135
15136       /* Get name of field.  */
15137       fieldname = dwarf2_name (die, cu);
15138       if (fieldname == NULL)
15139         return;
15140
15141       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15142       if (attr
15143           /* Only create a symbol if this is an external value.
15144              new_symbol checks this and puts the value in the global symbol
15145              table, which we want.  If it is not external, new_symbol
15146              will try to put the value in cu->list_in_scope which is wrong.  */
15147           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15148         {
15149           /* A static const member, not much different than an enum as far as
15150              we're concerned, except that we can support more types.  */
15151           new_symbol (die, NULL, cu);
15152         }
15153
15154       /* Get physical name.  */
15155       physname = dwarf2_physname (fieldname, die, cu);
15156
15157       /* The name is already allocated along with this objfile, so we don't
15158          need to duplicate it for the type.  */
15159       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15160       FIELD_TYPE (*fp) = die_type (die, cu);
15161       FIELD_NAME (*fp) = fieldname;
15162     }
15163   else if (die->tag == DW_TAG_inheritance)
15164     {
15165       LONGEST offset;
15166
15167       /* C++ base class field.  */
15168       if (handle_data_member_location (die, cu, &offset))
15169         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15170       FIELD_BITSIZE (*fp) = 0;
15171       FIELD_TYPE (*fp) = die_type (die, cu);
15172       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15173     }
15174   else if (die->tag == DW_TAG_variant_part)
15175     {
15176       /* process_structure_scope will treat this DIE as a union.  */
15177       process_structure_scope (die, cu);
15178
15179       /* The variant part is relative to the start of the enclosing
15180          structure.  */
15181       SET_FIELD_BITPOS (*fp, 0);
15182       fp->type = get_die_type (die, cu);
15183       fp->artificial = 1;
15184       fp->name = "<<variant>>";
15185
15186       /* Normally a DW_TAG_variant_part won't have a size, but our
15187          representation requires one, so set it to the maximum of the
15188          child sizes.  */
15189       if (TYPE_LENGTH (fp->type) == 0)
15190         {
15191           unsigned max = 0;
15192           for (int i = 0; i < TYPE_NFIELDS (fp->type); ++i)
15193             if (TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i)) > max)
15194               max = TYPE_LENGTH (TYPE_FIELD_TYPE (fp->type, i));
15195           TYPE_LENGTH (fp->type) = max;
15196         }
15197     }
15198   else
15199     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15200 }
15201
15202 /* Can the type given by DIE define another type?  */
15203
15204 static bool
15205 type_can_define_types (const struct die_info *die)
15206 {
15207   switch (die->tag)
15208     {
15209     case DW_TAG_typedef:
15210     case DW_TAG_class_type:
15211     case DW_TAG_structure_type:
15212     case DW_TAG_union_type:
15213     case DW_TAG_enumeration_type:
15214       return true;
15215
15216     default:
15217       return false;
15218     }
15219 }
15220
15221 /* Add a type definition defined in the scope of the FIP's class.  */
15222
15223 static void
15224 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15225                       struct dwarf2_cu *cu)
15226 {
15227   struct decl_field fp;
15228   memset (&fp, 0, sizeof (fp));
15229
15230   gdb_assert (type_can_define_types (die));
15231
15232   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15233   fp.name = dwarf2_name (die, cu);
15234   fp.type = read_type_die (die, cu);
15235
15236   /* Save accessibility.  */
15237   enum dwarf_access_attribute accessibility;
15238   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15239   if (attr != NULL)
15240     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15241   else
15242     accessibility = dwarf2_default_access_attribute (die, cu);
15243   switch (accessibility)
15244     {
15245     case DW_ACCESS_public:
15246       /* The assumed value if neither private nor protected.  */
15247       break;
15248     case DW_ACCESS_private:
15249       fp.is_private = 1;
15250       break;
15251     case DW_ACCESS_protected:
15252       fp.is_protected = 1;
15253       break;
15254     default:
15255       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15256     }
15257
15258   if (die->tag == DW_TAG_typedef)
15259     fip->typedef_field_list.push_back (fp);
15260   else
15261     fip->nested_types_list.push_back (fp);
15262 }
15263
15264 /* Create the vector of fields, and attach it to the type.  */
15265
15266 static void
15267 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15268                               struct dwarf2_cu *cu)
15269 {
15270   int nfields = fip->nfields;
15271
15272   /* Record the field count, allocate space for the array of fields,
15273      and create blank accessibility bitfields if necessary.  */
15274   TYPE_NFIELDS (type) = nfields;
15275   TYPE_FIELDS (type) = (struct field *)
15276     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15277
15278   if (fip->non_public_fields && cu->language != language_ada)
15279     {
15280       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15281
15282       TYPE_FIELD_PRIVATE_BITS (type) =
15283         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15284       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15285
15286       TYPE_FIELD_PROTECTED_BITS (type) =
15287         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15288       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15289
15290       TYPE_FIELD_IGNORE_BITS (type) =
15291         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15292       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15293     }
15294
15295   /* If the type has baseclasses, allocate and clear a bit vector for
15296      TYPE_FIELD_VIRTUAL_BITS.  */
15297   if (!fip->baseclasses.empty () && cu->language != language_ada)
15298     {
15299       int num_bytes = B_BYTES (fip->baseclasses.size ());
15300       unsigned char *pointer;
15301
15302       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15303       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15304       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15305       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15306       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15307     }
15308
15309   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15310     {
15311       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15312
15313       for (int index = 0; index < nfields; ++index)
15314         {
15315           struct nextfield &field = fip->fields[index];
15316
15317           if (field.variant.is_discriminant)
15318             di->discriminant_index = index;
15319           else if (field.variant.default_branch)
15320             di->default_index = index;
15321           else
15322             di->discriminants[index] = field.variant.discriminant_value;
15323         }
15324     }
15325
15326   /* Copy the saved-up fields into the field vector.  */
15327   for (int i = 0; i < nfields; ++i)
15328     {
15329       struct nextfield &field
15330         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15331            : fip->fields[i - fip->baseclasses.size ()]);
15332
15333       TYPE_FIELD (type, i) = field.field;
15334       switch (field.accessibility)
15335         {
15336         case DW_ACCESS_private:
15337           if (cu->language != language_ada)
15338             SET_TYPE_FIELD_PRIVATE (type, i);
15339           break;
15340
15341         case DW_ACCESS_protected:
15342           if (cu->language != language_ada)
15343             SET_TYPE_FIELD_PROTECTED (type, i);
15344           break;
15345
15346         case DW_ACCESS_public:
15347           break;
15348
15349         default:
15350           /* Unknown accessibility.  Complain and treat it as public.  */
15351           {
15352             complaint (_("unsupported accessibility %d"),
15353                        field.accessibility);
15354           }
15355           break;
15356         }
15357       if (i < fip->baseclasses.size ())
15358         {
15359           switch (field.virtuality)
15360             {
15361             case DW_VIRTUALITY_virtual:
15362             case DW_VIRTUALITY_pure_virtual:
15363               if (cu->language == language_ada)
15364                 error (_("unexpected virtuality in component of Ada type"));
15365               SET_TYPE_FIELD_VIRTUAL (type, i);
15366               break;
15367             }
15368         }
15369     }
15370 }
15371
15372 /* Return true if this member function is a constructor, false
15373    otherwise.  */
15374
15375 static int
15376 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15377 {
15378   const char *fieldname;
15379   const char *type_name;
15380   int len;
15381
15382   if (die->parent == NULL)
15383     return 0;
15384
15385   if (die->parent->tag != DW_TAG_structure_type
15386       && die->parent->tag != DW_TAG_union_type
15387       && die->parent->tag != DW_TAG_class_type)
15388     return 0;
15389
15390   fieldname = dwarf2_name (die, cu);
15391   type_name = dwarf2_name (die->parent, cu);
15392   if (fieldname == NULL || type_name == NULL)
15393     return 0;
15394
15395   len = strlen (fieldname);
15396   return (strncmp (fieldname, type_name, len) == 0
15397           && (type_name[len] == '\0' || type_name[len] == '<'));
15398 }
15399
15400 /* Add a member function to the proper fieldlist.  */
15401
15402 static void
15403 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15404                       struct type *type, struct dwarf2_cu *cu)
15405 {
15406   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15407   struct attribute *attr;
15408   int i;
15409   struct fnfieldlist *flp = nullptr;
15410   struct fn_field *fnp;
15411   const char *fieldname;
15412   struct type *this_type;
15413   enum dwarf_access_attribute accessibility;
15414
15415   if (cu->language == language_ada)
15416     error (_("unexpected member function in Ada type"));
15417
15418   /* Get name of member function.  */
15419   fieldname = dwarf2_name (die, cu);
15420   if (fieldname == NULL)
15421     return;
15422
15423   /* Look up member function name in fieldlist.  */
15424   for (i = 0; i < fip->fnfieldlists.size (); i++)
15425     {
15426       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15427         {
15428           flp = &fip->fnfieldlists[i];
15429           break;
15430         }
15431     }
15432
15433   /* Create a new fnfieldlist if necessary.  */
15434   if (flp == nullptr)
15435     {
15436       fip->fnfieldlists.emplace_back ();
15437       flp = &fip->fnfieldlists.back ();
15438       flp->name = fieldname;
15439       i = fip->fnfieldlists.size () - 1;
15440     }
15441
15442   /* Create a new member function field and add it to the vector of
15443      fnfieldlists.  */
15444   flp->fnfields.emplace_back ();
15445   fnp = &flp->fnfields.back ();
15446
15447   /* Delay processing of the physname until later.  */
15448   if (cu->language == language_cplus)
15449     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15450                         die, cu);
15451   else
15452     {
15453       const char *physname = dwarf2_physname (fieldname, die, cu);
15454       fnp->physname = physname ? physname : "";
15455     }
15456
15457   fnp->type = alloc_type (objfile);
15458   this_type = read_type_die (die, cu);
15459   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15460     {
15461       int nparams = TYPE_NFIELDS (this_type);
15462
15463       /* TYPE is the domain of this method, and THIS_TYPE is the type
15464            of the method itself (TYPE_CODE_METHOD).  */
15465       smash_to_method_type (fnp->type, type,
15466                             TYPE_TARGET_TYPE (this_type),
15467                             TYPE_FIELDS (this_type),
15468                             TYPE_NFIELDS (this_type),
15469                             TYPE_VARARGS (this_type));
15470
15471       /* Handle static member functions.
15472          Dwarf2 has no clean way to discern C++ static and non-static
15473          member functions.  G++ helps GDB by marking the first
15474          parameter for non-static member functions (which is the this
15475          pointer) as artificial.  We obtain this information from
15476          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15477       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15478         fnp->voffset = VOFFSET_STATIC;
15479     }
15480   else
15481     complaint (_("member function type missing for '%s'"),
15482                dwarf2_full_name (fieldname, die, cu));
15483
15484   /* Get fcontext from DW_AT_containing_type if present.  */
15485   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15486     fnp->fcontext = die_containing_type (die, cu);
15487
15488   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15489      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15490
15491   /* Get accessibility.  */
15492   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15493   if (attr)
15494     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15495   else
15496     accessibility = dwarf2_default_access_attribute (die, cu);
15497   switch (accessibility)
15498     {
15499     case DW_ACCESS_private:
15500       fnp->is_private = 1;
15501       break;
15502     case DW_ACCESS_protected:
15503       fnp->is_protected = 1;
15504       break;
15505     }
15506
15507   /* Check for artificial methods.  */
15508   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15509   if (attr && DW_UNSND (attr) != 0)
15510     fnp->is_artificial = 1;
15511
15512   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15513
15514   /* Get index in virtual function table if it is a virtual member
15515      function.  For older versions of GCC, this is an offset in the
15516      appropriate virtual table, as specified by DW_AT_containing_type.
15517      For everyone else, it is an expression to be evaluated relative
15518      to the object address.  */
15519
15520   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15521   if (attr)
15522     {
15523       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15524         {
15525           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15526             {
15527               /* Old-style GCC.  */
15528               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15529             }
15530           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15531                    || (DW_BLOCK (attr)->size > 1
15532                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15533                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15534             {
15535               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15536               if ((fnp->voffset % cu->header.addr_size) != 0)
15537                 dwarf2_complex_location_expr_complaint ();
15538               else
15539                 fnp->voffset /= cu->header.addr_size;
15540               fnp->voffset += 2;
15541             }
15542           else
15543             dwarf2_complex_location_expr_complaint ();
15544
15545           if (!fnp->fcontext)
15546             {
15547               /* If there is no `this' field and no DW_AT_containing_type,
15548                  we cannot actually find a base class context for the
15549                  vtable!  */
15550               if (TYPE_NFIELDS (this_type) == 0
15551                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15552                 {
15553                   complaint (_("cannot determine context for virtual member "
15554                                "function \"%s\" (offset %s)"),
15555                              fieldname, sect_offset_str (die->sect_off));
15556                 }
15557               else
15558                 {
15559                   fnp->fcontext
15560                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15561                 }
15562             }
15563         }
15564       else if (attr_form_is_section_offset (attr))
15565         {
15566           dwarf2_complex_location_expr_complaint ();
15567         }
15568       else
15569         {
15570           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15571                                                  fieldname);
15572         }
15573     }
15574   else
15575     {
15576       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15577       if (attr && DW_UNSND (attr))
15578         {
15579           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15580           complaint (_("Member function \"%s\" (offset %s) is virtual "
15581                        "but the vtable offset is not specified"),
15582                      fieldname, sect_offset_str (die->sect_off));
15583           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15584           TYPE_CPLUS_DYNAMIC (type) = 1;
15585         }
15586     }
15587 }
15588
15589 /* Create the vector of member function fields, and attach it to the type.  */
15590
15591 static void
15592 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15593                                  struct dwarf2_cu *cu)
15594 {
15595   if (cu->language == language_ada)
15596     error (_("unexpected member functions in Ada type"));
15597
15598   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15599   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15600     TYPE_ALLOC (type,
15601                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15602
15603   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15604     {
15605       struct fnfieldlist &nf = fip->fnfieldlists[i];
15606       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15607
15608       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15609       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15610       fn_flp->fn_fields = (struct fn_field *)
15611         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15612
15613       for (int k = 0; k < nf.fnfields.size (); ++k)
15614         fn_flp->fn_fields[k] = nf.fnfields[k];
15615     }
15616
15617   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15618 }
15619
15620 /* Returns non-zero if NAME is the name of a vtable member in CU's
15621    language, zero otherwise.  */
15622 static int
15623 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15624 {
15625   static const char vptr[] = "_vptr";
15626
15627   /* Look for the C++ form of the vtable.  */
15628   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15629     return 1;
15630
15631   return 0;
15632 }
15633
15634 /* GCC outputs unnamed structures that are really pointers to member
15635    functions, with the ABI-specified layout.  If TYPE describes
15636    such a structure, smash it into a member function type.
15637
15638    GCC shouldn't do this; it should just output pointer to member DIEs.
15639    This is GCC PR debug/28767.  */
15640
15641 static void
15642 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15643 {
15644   struct type *pfn_type, *self_type, *new_type;
15645
15646   /* Check for a structure with no name and two children.  */
15647   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15648     return;
15649
15650   /* Check for __pfn and __delta members.  */
15651   if (TYPE_FIELD_NAME (type, 0) == NULL
15652       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15653       || TYPE_FIELD_NAME (type, 1) == NULL
15654       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15655     return;
15656
15657   /* Find the type of the method.  */
15658   pfn_type = TYPE_FIELD_TYPE (type, 0);
15659   if (pfn_type == NULL
15660       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15661       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15662     return;
15663
15664   /* Look for the "this" argument.  */
15665   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15666   if (TYPE_NFIELDS (pfn_type) == 0
15667       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15668       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15669     return;
15670
15671   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15672   new_type = alloc_type (objfile);
15673   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15674                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15675                         TYPE_VARARGS (pfn_type));
15676   smash_to_methodptr_type (type, new_type);
15677 }
15678
15679 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15680    appropriate error checking and issuing complaints if there is a
15681    problem.  */
15682
15683 static ULONGEST
15684 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15685 {
15686   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15687
15688   if (attr == nullptr)
15689     return 0;
15690
15691   if (!attr_form_is_constant (attr))
15692     {
15693       complaint (_("DW_AT_alignment must have constant form"
15694                    " - DIE at %s [in module %s]"),
15695                  sect_offset_str (die->sect_off),
15696                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15697       return 0;
15698     }
15699
15700   ULONGEST align;
15701   if (attr->form == DW_FORM_sdata)
15702     {
15703       LONGEST val = DW_SND (attr);
15704       if (val < 0)
15705         {
15706           complaint (_("DW_AT_alignment value must not be negative"
15707                        " - DIE at %s [in module %s]"),
15708                      sect_offset_str (die->sect_off),
15709                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15710           return 0;
15711         }
15712       align = val;
15713     }
15714   else
15715     align = DW_UNSND (attr);
15716
15717   if (align == 0)
15718     {
15719       complaint (_("DW_AT_alignment value must not be zero"
15720                    " - DIE at %s [in module %s]"),
15721                  sect_offset_str (die->sect_off),
15722                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15723       return 0;
15724     }
15725   if ((align & (align - 1)) != 0)
15726     {
15727       complaint (_("DW_AT_alignment value must be a power of 2"
15728                    " - DIE at %s [in module %s]"),
15729                  sect_offset_str (die->sect_off),
15730                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15731       return 0;
15732     }
15733
15734   return align;
15735 }
15736
15737 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15738    the alignment for TYPE.  */
15739
15740 static void
15741 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15742                      struct type *type)
15743 {
15744   if (!set_type_align (type, get_alignment (cu, die)))
15745     complaint (_("DW_AT_alignment value too large"
15746                  " - DIE at %s [in module %s]"),
15747                sect_offset_str (die->sect_off),
15748                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15749 }
15750
15751 /* Called when we find the DIE that starts a structure or union scope
15752    (definition) to create a type for the structure or union.  Fill in
15753    the type's name and general properties; the members will not be
15754    processed until process_structure_scope.  A symbol table entry for
15755    the type will also not be done until process_structure_scope (assuming
15756    the type has a name).
15757
15758    NOTE: we need to call these functions regardless of whether or not the
15759    DIE has a DW_AT_name attribute, since it might be an anonymous
15760    structure or union.  This gets the type entered into our set of
15761    user defined types.  */
15762
15763 static struct type *
15764 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15765 {
15766   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15767   struct type *type;
15768   struct attribute *attr;
15769   const char *name;
15770
15771   /* If the definition of this type lives in .debug_types, read that type.
15772      Don't follow DW_AT_specification though, that will take us back up
15773      the chain and we want to go down.  */
15774   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15775   if (attr)
15776     {
15777       type = get_DW_AT_signature_type (die, attr, cu);
15778
15779       /* The type's CU may not be the same as CU.
15780          Ensure TYPE is recorded with CU in die_type_hash.  */
15781       return set_die_type (die, type, cu);
15782     }
15783
15784   type = alloc_type (objfile);
15785   INIT_CPLUS_SPECIFIC (type);
15786
15787   name = dwarf2_name (die, cu);
15788   if (name != NULL)
15789     {
15790       if (cu->language == language_cplus
15791           || cu->language == language_d
15792           || cu->language == language_rust)
15793         {
15794           const char *full_name = dwarf2_full_name (name, die, cu);
15795
15796           /* dwarf2_full_name might have already finished building the DIE's
15797              type.  If so, there is no need to continue.  */
15798           if (get_die_type (die, cu) != NULL)
15799             return get_die_type (die, cu);
15800
15801           TYPE_NAME (type) = full_name;
15802         }
15803       else
15804         {
15805           /* The name is already allocated along with this objfile, so
15806              we don't need to duplicate it for the type.  */
15807           TYPE_NAME (type) = name;
15808         }
15809     }
15810
15811   if (die->tag == DW_TAG_structure_type)
15812     {
15813       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15814     }
15815   else if (die->tag == DW_TAG_union_type)
15816     {
15817       TYPE_CODE (type) = TYPE_CODE_UNION;
15818     }
15819   else if (die->tag == DW_TAG_variant_part)
15820     {
15821       TYPE_CODE (type) = TYPE_CODE_UNION;
15822       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15823     }
15824   else
15825     {
15826       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15827     }
15828
15829   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15830     TYPE_DECLARED_CLASS (type) = 1;
15831
15832   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15833   if (attr)
15834     {
15835       if (attr_form_is_constant (attr))
15836         TYPE_LENGTH (type) = DW_UNSND (attr);
15837       else
15838         {
15839           /* For the moment, dynamic type sizes are not supported
15840              by GDB's struct type.  The actual size is determined
15841              on-demand when resolving the type of a given object,
15842              so set the type's length to zero for now.  Otherwise,
15843              we record an expression as the length, and that expression
15844              could lead to a very large value, which could eventually
15845              lead to us trying to allocate that much memory when creating
15846              a value of that type.  */
15847           TYPE_LENGTH (type) = 0;
15848         }
15849     }
15850   else
15851     {
15852       TYPE_LENGTH (type) = 0;
15853     }
15854
15855   maybe_set_alignment (cu, die, type);
15856
15857   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15858     {
15859       /* ICC<14 does not output the required DW_AT_declaration on
15860          incomplete types, but gives them a size of zero.  */
15861       TYPE_STUB (type) = 1;
15862     }
15863   else
15864     TYPE_STUB_SUPPORTED (type) = 1;
15865
15866   if (die_is_declaration (die, cu))
15867     TYPE_STUB (type) = 1;
15868   else if (attr == NULL && die->child == NULL
15869            && producer_is_realview (cu->producer))
15870     /* RealView does not output the required DW_AT_declaration
15871        on incomplete types.  */
15872     TYPE_STUB (type) = 1;
15873
15874   /* We need to add the type field to the die immediately so we don't
15875      infinitely recurse when dealing with pointers to the structure
15876      type within the structure itself.  */
15877   set_die_type (die, type, cu);
15878
15879   /* set_die_type should be already done.  */
15880   set_descriptive_type (type, die, cu);
15881
15882   return type;
15883 }
15884
15885 /* A helper for process_structure_scope that handles a single member
15886    DIE.  */
15887
15888 static void
15889 handle_struct_member_die (struct die_info *child_die, struct type *type,
15890                           struct field_info *fi,
15891                           std::vector<struct symbol *> *template_args,
15892                           struct dwarf2_cu *cu)
15893 {
15894   if (child_die->tag == DW_TAG_member
15895       || child_die->tag == DW_TAG_variable
15896       || child_die->tag == DW_TAG_variant_part)
15897     {
15898       /* NOTE: carlton/2002-11-05: A C++ static data member
15899          should be a DW_TAG_member that is a declaration, but
15900          all versions of G++ as of this writing (so through at
15901          least 3.2.1) incorrectly generate DW_TAG_variable
15902          tags for them instead.  */
15903       dwarf2_add_field (fi, child_die, cu);
15904     }
15905   else if (child_die->tag == DW_TAG_subprogram)
15906     {
15907       /* Rust doesn't have member functions in the C++ sense.
15908          However, it does emit ordinary functions as children
15909          of a struct DIE.  */
15910       if (cu->language == language_rust)
15911         read_func_scope (child_die, cu);
15912       else
15913         {
15914           /* C++ member function.  */
15915           dwarf2_add_member_fn (fi, child_die, type, cu);
15916         }
15917     }
15918   else if (child_die->tag == DW_TAG_inheritance)
15919     {
15920       /* C++ base class field.  */
15921       dwarf2_add_field (fi, child_die, cu);
15922     }
15923   else if (type_can_define_types (child_die))
15924     dwarf2_add_type_defn (fi, child_die, cu);
15925   else if (child_die->tag == DW_TAG_template_type_param
15926            || child_die->tag == DW_TAG_template_value_param)
15927     {
15928       struct symbol *arg = new_symbol (child_die, NULL, cu);
15929
15930       if (arg != NULL)
15931         template_args->push_back (arg);
15932     }
15933   else if (child_die->tag == DW_TAG_variant)
15934     {
15935       /* In a variant we want to get the discriminant and also add a
15936          field for our sole member child.  */
15937       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15938
15939       for (struct die_info *variant_child = child_die->child;
15940            variant_child != NULL;
15941            variant_child = sibling_die (variant_child))
15942         {
15943           if (variant_child->tag == DW_TAG_member)
15944             {
15945               handle_struct_member_die (variant_child, type, fi,
15946                                         template_args, cu);
15947               /* Only handle the one.  */
15948               break;
15949             }
15950         }
15951
15952       /* We don't handle this but we might as well report it if we see
15953          it.  */
15954       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15955           complaint (_("DW_AT_discr_list is not supported yet"
15956                        " - DIE at %s [in module %s]"),
15957                      sect_offset_str (child_die->sect_off),
15958                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15959
15960       /* The first field was just added, so we can stash the
15961          discriminant there.  */
15962       gdb_assert (!fi->fields.empty ());
15963       if (discr == NULL)
15964         fi->fields.back ().variant.default_branch = true;
15965       else
15966         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15967     }
15968 }
15969
15970 /* Finish creating a structure or union type, including filling in
15971    its members and creating a symbol for it.  */
15972
15973 static void
15974 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15975 {
15976   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15977   struct die_info *child_die;
15978   struct type *type;
15979
15980   type = get_die_type (die, cu);
15981   if (type == NULL)
15982     type = read_structure_type (die, cu);
15983
15984   /* When reading a DW_TAG_variant_part, we need to notice when we
15985      read the discriminant member, so we can record it later in the
15986      discriminant_info.  */
15987   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15988   sect_offset discr_offset;
15989   bool has_template_parameters = false;
15990
15991   if (is_variant_part)
15992     {
15993       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15994       if (discr == NULL)
15995         {
15996           /* Maybe it's a univariant form, an extension we support.
15997              In this case arrange not to check the offset.  */
15998           is_variant_part = false;
15999         }
16000       else if (attr_form_is_ref (discr))
16001         {
16002           struct dwarf2_cu *target_cu = cu;
16003           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
16004
16005           discr_offset = target_die->sect_off;
16006         }
16007       else
16008         {
16009           complaint (_("DW_AT_discr does not have DIE reference form"
16010                        " - DIE at %s [in module %s]"),
16011                      sect_offset_str (die->sect_off),
16012                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16013           is_variant_part = false;
16014         }
16015     }
16016
16017   if (die->child != NULL && ! die_is_declaration (die, cu))
16018     {
16019       struct field_info fi;
16020       std::vector<struct symbol *> template_args;
16021
16022       child_die = die->child;
16023
16024       while (child_die && child_die->tag)
16025         {
16026           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16027
16028           if (is_variant_part && discr_offset == child_die->sect_off)
16029             fi.fields.back ().variant.is_discriminant = true;
16030
16031           child_die = sibling_die (child_die);
16032         }
16033
16034       /* Attach template arguments to type.  */
16035       if (!template_args.empty ())
16036         {
16037           has_template_parameters = true;
16038           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16039           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16040           TYPE_TEMPLATE_ARGUMENTS (type)
16041             = XOBNEWVEC (&objfile->objfile_obstack,
16042                          struct symbol *,
16043                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16044           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16045                   template_args.data (),
16046                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16047                    * sizeof (struct symbol *)));
16048         }
16049
16050       /* Attach fields and member functions to the type.  */
16051       if (fi.nfields)
16052         dwarf2_attach_fields_to_type (&fi, type, cu);
16053       if (!fi.fnfieldlists.empty ())
16054         {
16055           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16056
16057           /* Get the type which refers to the base class (possibly this
16058              class itself) which contains the vtable pointer for the current
16059              class from the DW_AT_containing_type attribute.  This use of
16060              DW_AT_containing_type is a GNU extension.  */
16061
16062           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16063             {
16064               struct type *t = die_containing_type (die, cu);
16065
16066               set_type_vptr_basetype (type, t);
16067               if (type == t)
16068                 {
16069                   int i;
16070
16071                   /* Our own class provides vtbl ptr.  */
16072                   for (i = TYPE_NFIELDS (t) - 1;
16073                        i >= TYPE_N_BASECLASSES (t);
16074                        --i)
16075                     {
16076                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16077
16078                       if (is_vtable_name (fieldname, cu))
16079                         {
16080                           set_type_vptr_fieldno (type, i);
16081                           break;
16082                         }
16083                     }
16084
16085                   /* Complain if virtual function table field not found.  */
16086                   if (i < TYPE_N_BASECLASSES (t))
16087                     complaint (_("virtual function table pointer "
16088                                  "not found when defining class '%s'"),
16089                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16090                 }
16091               else
16092                 {
16093                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16094                 }
16095             }
16096           else if (cu->producer
16097                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16098             {
16099               /* The IBM XLC compiler does not provide direct indication
16100                  of the containing type, but the vtable pointer is
16101                  always named __vfp.  */
16102
16103               int i;
16104
16105               for (i = TYPE_NFIELDS (type) - 1;
16106                    i >= TYPE_N_BASECLASSES (type);
16107                    --i)
16108                 {
16109                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16110                     {
16111                       set_type_vptr_fieldno (type, i);
16112                       set_type_vptr_basetype (type, type);
16113                       break;
16114                     }
16115                 }
16116             }
16117         }
16118
16119       /* Copy fi.typedef_field_list linked list elements content into the
16120          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16121       if (!fi.typedef_field_list.empty ())
16122         {
16123           int count = fi.typedef_field_list.size ();
16124
16125           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16126           TYPE_TYPEDEF_FIELD_ARRAY (type)
16127             = ((struct decl_field *)
16128                TYPE_ALLOC (type,
16129                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16130           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16131
16132           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16133             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16134         }
16135
16136       /* Copy fi.nested_types_list linked list elements content into the
16137          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16138       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16139         {
16140           int count = fi.nested_types_list.size ();
16141
16142           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16143           TYPE_NESTED_TYPES_ARRAY (type)
16144             = ((struct decl_field *)
16145                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16146           TYPE_NESTED_TYPES_COUNT (type) = count;
16147
16148           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16149             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16150         }
16151     }
16152
16153   quirk_gcc_member_function_pointer (type, objfile);
16154   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16155     cu->rust_unions.push_back (type);
16156
16157   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16158      snapshots) has been known to create a die giving a declaration
16159      for a class that has, as a child, a die giving a definition for a
16160      nested class.  So we have to process our children even if the
16161      current die is a declaration.  Normally, of course, a declaration
16162      won't have any children at all.  */
16163
16164   child_die = die->child;
16165
16166   while (child_die != NULL && child_die->tag)
16167     {
16168       if (child_die->tag == DW_TAG_member
16169           || child_die->tag == DW_TAG_variable
16170           || child_die->tag == DW_TAG_inheritance
16171           || child_die->tag == DW_TAG_template_value_param
16172           || child_die->tag == DW_TAG_template_type_param)
16173         {
16174           /* Do nothing.  */
16175         }
16176       else
16177         process_die (child_die, cu);
16178
16179       child_die = sibling_die (child_die);
16180     }
16181
16182   /* Do not consider external references.  According to the DWARF standard,
16183      these DIEs are identified by the fact that they have no byte_size
16184      attribute, and a declaration attribute.  */
16185   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16186       || !die_is_declaration (die, cu))
16187     {
16188       struct symbol *sym = new_symbol (die, type, cu);
16189
16190       if (has_template_parameters)
16191         {
16192           /* Make sure that the symtab is set on the new symbols.
16193              Even though they don't appear in this symtab directly,
16194              other parts of gdb assume that symbols do, and this is
16195              reasonably true.  */
16196           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16197             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16198                                symbol_symtab (sym));
16199         }
16200     }
16201 }
16202
16203 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16204    update TYPE using some information only available in DIE's children.  */
16205
16206 static void
16207 update_enumeration_type_from_children (struct die_info *die,
16208                                        struct type *type,
16209                                        struct dwarf2_cu *cu)
16210 {
16211   struct die_info *child_die;
16212   int unsigned_enum = 1;
16213   int flag_enum = 1;
16214   ULONGEST mask = 0;
16215
16216   auto_obstack obstack;
16217
16218   for (child_die = die->child;
16219        child_die != NULL && child_die->tag;
16220        child_die = sibling_die (child_die))
16221     {
16222       struct attribute *attr;
16223       LONGEST value;
16224       const gdb_byte *bytes;
16225       struct dwarf2_locexpr_baton *baton;
16226       const char *name;
16227
16228       if (child_die->tag != DW_TAG_enumerator)
16229         continue;
16230
16231       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16232       if (attr == NULL)
16233         continue;
16234
16235       name = dwarf2_name (child_die, cu);
16236       if (name == NULL)
16237         name = "<anonymous enumerator>";
16238
16239       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16240                                &value, &bytes, &baton);
16241       if (value < 0)
16242         {
16243           unsigned_enum = 0;
16244           flag_enum = 0;
16245         }
16246       else if ((mask & value) != 0)
16247         flag_enum = 0;
16248       else
16249         mask |= value;
16250
16251       /* If we already know that the enum type is neither unsigned, nor
16252          a flag type, no need to look at the rest of the enumerates.  */
16253       if (!unsigned_enum && !flag_enum)
16254         break;
16255     }
16256
16257   if (unsigned_enum)
16258     TYPE_UNSIGNED (type) = 1;
16259   if (flag_enum)
16260     TYPE_FLAG_ENUM (type) = 1;
16261 }
16262
16263 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16264    complete the type's fields yet, or create any symbols.  */
16265
16266 static struct type *
16267 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16268 {
16269   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16270   struct type *type;
16271   struct attribute *attr;
16272   const char *name;
16273
16274   /* If the definition of this type lives in .debug_types, read that type.
16275      Don't follow DW_AT_specification though, that will take us back up
16276      the chain and we want to go down.  */
16277   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16278   if (attr)
16279     {
16280       type = get_DW_AT_signature_type (die, attr, cu);
16281
16282       /* The type's CU may not be the same as CU.
16283          Ensure TYPE is recorded with CU in die_type_hash.  */
16284       return set_die_type (die, type, cu);
16285     }
16286
16287   type = alloc_type (objfile);
16288
16289   TYPE_CODE (type) = TYPE_CODE_ENUM;
16290   name = dwarf2_full_name (NULL, die, cu);
16291   if (name != NULL)
16292     TYPE_NAME (type) = name;
16293
16294   attr = dwarf2_attr (die, DW_AT_type, cu);
16295   if (attr != NULL)
16296     {
16297       struct type *underlying_type = die_type (die, cu);
16298
16299       TYPE_TARGET_TYPE (type) = underlying_type;
16300     }
16301
16302   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16303   if (attr)
16304     {
16305       TYPE_LENGTH (type) = DW_UNSND (attr);
16306     }
16307   else
16308     {
16309       TYPE_LENGTH (type) = 0;
16310     }
16311
16312   maybe_set_alignment (cu, die, type);
16313
16314   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16315      declared as private in the package spec, and then defined only
16316      inside the package body.  Such types are known as Taft Amendment
16317      Types.  When another package uses such a type, an incomplete DIE
16318      may be generated by the compiler.  */
16319   if (die_is_declaration (die, cu))
16320     TYPE_STUB (type) = 1;
16321
16322   /* Finish the creation of this type by using the enum's children.
16323      We must call this even when the underlying type has been provided
16324      so that we can determine if we're looking at a "flag" enum.  */
16325   update_enumeration_type_from_children (die, type, cu);
16326
16327   /* If this type has an underlying type that is not a stub, then we
16328      may use its attributes.  We always use the "unsigned" attribute
16329      in this situation, because ordinarily we guess whether the type
16330      is unsigned -- but the guess can be wrong and the underlying type
16331      can tell us the reality.  However, we defer to a local size
16332      attribute if one exists, because this lets the compiler override
16333      the underlying type if needed.  */
16334   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16335     {
16336       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16337       if (TYPE_LENGTH (type) == 0)
16338         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16339       if (TYPE_RAW_ALIGN (type) == 0
16340           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16341         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16342     }
16343
16344   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16345
16346   return set_die_type (die, type, cu);
16347 }
16348
16349 /* Given a pointer to a die which begins an enumeration, process all
16350    the dies that define the members of the enumeration, and create the
16351    symbol for the enumeration type.
16352
16353    NOTE: We reverse the order of the element list.  */
16354
16355 static void
16356 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16357 {
16358   struct type *this_type;
16359
16360   this_type = get_die_type (die, cu);
16361   if (this_type == NULL)
16362     this_type = read_enumeration_type (die, cu);
16363
16364   if (die->child != NULL)
16365     {
16366       struct die_info *child_die;
16367       struct symbol *sym;
16368       struct field *fields = NULL;
16369       int num_fields = 0;
16370       const char *name;
16371
16372       child_die = die->child;
16373       while (child_die && child_die->tag)
16374         {
16375           if (child_die->tag != DW_TAG_enumerator)
16376             {
16377               process_die (child_die, cu);
16378             }
16379           else
16380             {
16381               name = dwarf2_name (child_die, cu);
16382               if (name)
16383                 {
16384                   sym = new_symbol (child_die, this_type, cu);
16385
16386                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16387                     {
16388                       fields = (struct field *)
16389                         xrealloc (fields,
16390                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16391                                   * sizeof (struct field));
16392                     }
16393
16394                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16395                   FIELD_TYPE (fields[num_fields]) = NULL;
16396                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16397                   FIELD_BITSIZE (fields[num_fields]) = 0;
16398
16399                   num_fields++;
16400                 }
16401             }
16402
16403           child_die = sibling_die (child_die);
16404         }
16405
16406       if (num_fields)
16407         {
16408           TYPE_NFIELDS (this_type) = num_fields;
16409           TYPE_FIELDS (this_type) = (struct field *)
16410             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16411           memcpy (TYPE_FIELDS (this_type), fields,
16412                   sizeof (struct field) * num_fields);
16413           xfree (fields);
16414         }
16415     }
16416
16417   /* If we are reading an enum from a .debug_types unit, and the enum
16418      is a declaration, and the enum is not the signatured type in the
16419      unit, then we do not want to add a symbol for it.  Adding a
16420      symbol would in some cases obscure the true definition of the
16421      enum, giving users an incomplete type when the definition is
16422      actually available.  Note that we do not want to do this for all
16423      enums which are just declarations, because C++0x allows forward
16424      enum declarations.  */
16425   if (cu->per_cu->is_debug_types
16426       && die_is_declaration (die, cu))
16427     {
16428       struct signatured_type *sig_type;
16429
16430       sig_type = (struct signatured_type *) cu->per_cu;
16431       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16432       if (sig_type->type_offset_in_section != die->sect_off)
16433         return;
16434     }
16435
16436   new_symbol (die, this_type, cu);
16437 }
16438
16439 /* Extract all information from a DW_TAG_array_type DIE and put it in
16440    the DIE's type field.  For now, this only handles one dimensional
16441    arrays.  */
16442
16443 static struct type *
16444 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16445 {
16446   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16447   struct die_info *child_die;
16448   struct type *type;
16449   struct type *element_type, *range_type, *index_type;
16450   struct attribute *attr;
16451   const char *name;
16452   struct dynamic_prop *byte_stride_prop = NULL;
16453   unsigned int bit_stride = 0;
16454
16455   element_type = die_type (die, cu);
16456
16457   /* The die_type call above may have already set the type for this DIE.  */
16458   type = get_die_type (die, cu);
16459   if (type)
16460     return type;
16461
16462   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16463   if (attr != NULL)
16464     {
16465       int stride_ok;
16466
16467       byte_stride_prop
16468         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16469       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16470       if (!stride_ok)
16471         {
16472           complaint (_("unable to read array DW_AT_byte_stride "
16473                        " - DIE at %s [in module %s]"),
16474                      sect_offset_str (die->sect_off),
16475                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16476           /* Ignore this attribute.  We will likely not be able to print
16477              arrays of this type correctly, but there is little we can do
16478              to help if we cannot read the attribute's value.  */
16479           byte_stride_prop = NULL;
16480         }
16481     }
16482
16483   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16484   if (attr != NULL)
16485     bit_stride = DW_UNSND (attr);
16486
16487   /* Irix 6.2 native cc creates array types without children for
16488      arrays with unspecified length.  */
16489   if (die->child == NULL)
16490     {
16491       index_type = objfile_type (objfile)->builtin_int;
16492       range_type = create_static_range_type (NULL, index_type, 0, -1);
16493       type = create_array_type_with_stride (NULL, element_type, range_type,
16494                                             byte_stride_prop, bit_stride);
16495       return set_die_type (die, type, cu);
16496     }
16497
16498   std::vector<struct type *> range_types;
16499   child_die = die->child;
16500   while (child_die && child_die->tag)
16501     {
16502       if (child_die->tag == DW_TAG_subrange_type)
16503         {
16504           struct type *child_type = read_type_die (child_die, cu);
16505
16506           if (child_type != NULL)
16507             {
16508               /* The range type was succesfully read.  Save it for the
16509                  array type creation.  */
16510               range_types.push_back (child_type);
16511             }
16512         }
16513       child_die = sibling_die (child_die);
16514     }
16515
16516   /* Dwarf2 dimensions are output from left to right, create the
16517      necessary array types in backwards order.  */
16518
16519   type = element_type;
16520
16521   if (read_array_order (die, cu) == DW_ORD_col_major)
16522     {
16523       int i = 0;
16524
16525       while (i < range_types.size ())
16526         type = create_array_type_with_stride (NULL, type, range_types[i++],
16527                                               byte_stride_prop, bit_stride);
16528     }
16529   else
16530     {
16531       size_t ndim = range_types.size ();
16532       while (ndim-- > 0)
16533         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16534                                               byte_stride_prop, bit_stride);
16535     }
16536
16537   /* Understand Dwarf2 support for vector types (like they occur on
16538      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16539      array type.  This is not part of the Dwarf2/3 standard yet, but a
16540      custom vendor extension.  The main difference between a regular
16541      array and the vector variant is that vectors are passed by value
16542      to functions.  */
16543   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16544   if (attr)
16545     make_vector_type (type);
16546
16547   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16548      implementation may choose to implement triple vectors using this
16549      attribute.  */
16550   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16551   if (attr)
16552     {
16553       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16554         TYPE_LENGTH (type) = DW_UNSND (attr);
16555       else
16556         complaint (_("DW_AT_byte_size for array type smaller "
16557                      "than the total size of elements"));
16558     }
16559
16560   name = dwarf2_name (die, cu);
16561   if (name)
16562     TYPE_NAME (type) = name;
16563
16564   maybe_set_alignment (cu, die, type);
16565
16566   /* Install the type in the die.  */
16567   set_die_type (die, type, cu);
16568
16569   /* set_die_type should be already done.  */
16570   set_descriptive_type (type, die, cu);
16571
16572   return type;
16573 }
16574
16575 static enum dwarf_array_dim_ordering
16576 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16577 {
16578   struct attribute *attr;
16579
16580   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16581
16582   if (attr)
16583     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16584
16585   /* GNU F77 is a special case, as at 08/2004 array type info is the
16586      opposite order to the dwarf2 specification, but data is still
16587      laid out as per normal fortran.
16588
16589      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16590      version checking.  */
16591
16592   if (cu->language == language_fortran
16593       && cu->producer && strstr (cu->producer, "GNU F77"))
16594     {
16595       return DW_ORD_row_major;
16596     }
16597
16598   switch (cu->language_defn->la_array_ordering)
16599     {
16600     case array_column_major:
16601       return DW_ORD_col_major;
16602     case array_row_major:
16603     default:
16604       return DW_ORD_row_major;
16605     };
16606 }
16607
16608 /* Extract all information from a DW_TAG_set_type DIE and put it in
16609    the DIE's type field.  */
16610
16611 static struct type *
16612 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16613 {
16614   struct type *domain_type, *set_type;
16615   struct attribute *attr;
16616
16617   domain_type = die_type (die, cu);
16618
16619   /* The die_type call above may have already set the type for this DIE.  */
16620   set_type = get_die_type (die, cu);
16621   if (set_type)
16622     return set_type;
16623
16624   set_type = create_set_type (NULL, domain_type);
16625
16626   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16627   if (attr)
16628     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16629
16630   maybe_set_alignment (cu, die, set_type);
16631
16632   return set_die_type (die, set_type, cu);
16633 }
16634
16635 /* A helper for read_common_block that creates a locexpr baton.
16636    SYM is the symbol which we are marking as computed.
16637    COMMON_DIE is the DIE for the common block.
16638    COMMON_LOC is the location expression attribute for the common
16639    block itself.
16640    MEMBER_LOC is the location expression attribute for the particular
16641    member of the common block that we are processing.
16642    CU is the CU from which the above come.  */
16643
16644 static void
16645 mark_common_block_symbol_computed (struct symbol *sym,
16646                                    struct die_info *common_die,
16647                                    struct attribute *common_loc,
16648                                    struct attribute *member_loc,
16649                                    struct dwarf2_cu *cu)
16650 {
16651   struct dwarf2_per_objfile *dwarf2_per_objfile
16652     = cu->per_cu->dwarf2_per_objfile;
16653   struct objfile *objfile = dwarf2_per_objfile->objfile;
16654   struct dwarf2_locexpr_baton *baton;
16655   gdb_byte *ptr;
16656   unsigned int cu_off;
16657   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16658   LONGEST offset = 0;
16659
16660   gdb_assert (common_loc && member_loc);
16661   gdb_assert (attr_form_is_block (common_loc));
16662   gdb_assert (attr_form_is_block (member_loc)
16663               || attr_form_is_constant (member_loc));
16664
16665   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16666   baton->per_cu = cu->per_cu;
16667   gdb_assert (baton->per_cu);
16668
16669   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16670
16671   if (attr_form_is_constant (member_loc))
16672     {
16673       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16674       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16675     }
16676   else
16677     baton->size += DW_BLOCK (member_loc)->size;
16678
16679   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16680   baton->data = ptr;
16681
16682   *ptr++ = DW_OP_call4;
16683   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16684   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16685   ptr += 4;
16686
16687   if (attr_form_is_constant (member_loc))
16688     {
16689       *ptr++ = DW_OP_addr;
16690       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16691       ptr += cu->header.addr_size;
16692     }
16693   else
16694     {
16695       /* We have to copy the data here, because DW_OP_call4 will only
16696          use a DW_AT_location attribute.  */
16697       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16698       ptr += DW_BLOCK (member_loc)->size;
16699     }
16700
16701   *ptr++ = DW_OP_plus;
16702   gdb_assert (ptr - baton->data == baton->size);
16703
16704   SYMBOL_LOCATION_BATON (sym) = baton;
16705   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16706 }
16707
16708 /* Create appropriate locally-scoped variables for all the
16709    DW_TAG_common_block entries.  Also create a struct common_block
16710    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16711    is used to sepate the common blocks name namespace from regular
16712    variable names.  */
16713
16714 static void
16715 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16716 {
16717   struct attribute *attr;
16718
16719   attr = dwarf2_attr (die, DW_AT_location, cu);
16720   if (attr)
16721     {
16722       /* Support the .debug_loc offsets.  */
16723       if (attr_form_is_block (attr))
16724         {
16725           /* Ok.  */
16726         }
16727       else if (attr_form_is_section_offset (attr))
16728         {
16729           dwarf2_complex_location_expr_complaint ();
16730           attr = NULL;
16731         }
16732       else
16733         {
16734           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16735                                                  "common block member");
16736           attr = NULL;
16737         }
16738     }
16739
16740   if (die->child != NULL)
16741     {
16742       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16743       struct die_info *child_die;
16744       size_t n_entries = 0, size;
16745       struct common_block *common_block;
16746       struct symbol *sym;
16747
16748       for (child_die = die->child;
16749            child_die && child_die->tag;
16750            child_die = sibling_die (child_die))
16751         ++n_entries;
16752
16753       size = (sizeof (struct common_block)
16754               + (n_entries - 1) * sizeof (struct symbol *));
16755       common_block
16756         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16757                                                  size);
16758       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16759       common_block->n_entries = 0;
16760
16761       for (child_die = die->child;
16762            child_die && child_die->tag;
16763            child_die = sibling_die (child_die))
16764         {
16765           /* Create the symbol in the DW_TAG_common_block block in the current
16766              symbol scope.  */
16767           sym = new_symbol (child_die, NULL, cu);
16768           if (sym != NULL)
16769             {
16770               struct attribute *member_loc;
16771
16772               common_block->contents[common_block->n_entries++] = sym;
16773
16774               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16775                                         cu);
16776               if (member_loc)
16777                 {
16778                   /* GDB has handled this for a long time, but it is
16779                      not specified by DWARF.  It seems to have been
16780                      emitted by gfortran at least as recently as:
16781                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16782                   complaint (_("Variable in common block has "
16783                                "DW_AT_data_member_location "
16784                                "- DIE at %s [in module %s]"),
16785                                sect_offset_str (child_die->sect_off),
16786                              objfile_name (objfile));
16787
16788                   if (attr_form_is_section_offset (member_loc))
16789                     dwarf2_complex_location_expr_complaint ();
16790                   else if (attr_form_is_constant (member_loc)
16791                            || attr_form_is_block (member_loc))
16792                     {
16793                       if (attr)
16794                         mark_common_block_symbol_computed (sym, die, attr,
16795                                                            member_loc, cu);
16796                     }
16797                   else
16798                     dwarf2_complex_location_expr_complaint ();
16799                 }
16800             }
16801         }
16802
16803       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16804       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16805     }
16806 }
16807
16808 /* Create a type for a C++ namespace.  */
16809
16810 static struct type *
16811 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16812 {
16813   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16814   const char *previous_prefix, *name;
16815   int is_anonymous;
16816   struct type *type;
16817
16818   /* For extensions, reuse the type of the original namespace.  */
16819   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16820     {
16821       struct die_info *ext_die;
16822       struct dwarf2_cu *ext_cu = cu;
16823
16824       ext_die = dwarf2_extension (die, &ext_cu);
16825       type = read_type_die (ext_die, ext_cu);
16826
16827       /* EXT_CU may not be the same as CU.
16828          Ensure TYPE is recorded with CU in die_type_hash.  */
16829       return set_die_type (die, type, cu);
16830     }
16831
16832   name = namespace_name (die, &is_anonymous, cu);
16833
16834   /* Now build the name of the current namespace.  */
16835
16836   previous_prefix = determine_prefix (die, cu);
16837   if (previous_prefix[0] != '\0')
16838     name = typename_concat (&objfile->objfile_obstack,
16839                             previous_prefix, name, 0, cu);
16840
16841   /* Create the type.  */
16842   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16843
16844   return set_die_type (die, type, cu);
16845 }
16846
16847 /* Read a namespace scope.  */
16848
16849 static void
16850 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16851 {
16852   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16853   int is_anonymous;
16854
16855   /* Add a symbol associated to this if we haven't seen the namespace
16856      before.  Also, add a using directive if it's an anonymous
16857      namespace.  */
16858
16859   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16860     {
16861       struct type *type;
16862
16863       type = read_type_die (die, cu);
16864       new_symbol (die, type, cu);
16865
16866       namespace_name (die, &is_anonymous, cu);
16867       if (is_anonymous)
16868         {
16869           const char *previous_prefix = determine_prefix (die, cu);
16870
16871           std::vector<const char *> excludes;
16872           add_using_directive (using_directives (cu),
16873                                previous_prefix, TYPE_NAME (type), NULL,
16874                                NULL, excludes, 0, &objfile->objfile_obstack);
16875         }
16876     }
16877
16878   if (die->child != NULL)
16879     {
16880       struct die_info *child_die = die->child;
16881
16882       while (child_die && child_die->tag)
16883         {
16884           process_die (child_die, cu);
16885           child_die = sibling_die (child_die);
16886         }
16887     }
16888 }
16889
16890 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16891    imported module.  Still we need that type as local Fortran "use ... only"
16892    declaration imports depend on the created type in determine_prefix.  */
16893
16894 static struct type *
16895 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16896 {
16897   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16898   const char *module_name;
16899   struct type *type;
16900
16901   module_name = dwarf2_name (die, cu);
16902   if (!module_name)
16903     complaint (_("DW_TAG_module has no name, offset %s"),
16904                sect_offset_str (die->sect_off));
16905   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16906
16907   return set_die_type (die, type, cu);
16908 }
16909
16910 /* Read a Fortran module.  */
16911
16912 static void
16913 read_module (struct die_info *die, struct dwarf2_cu *cu)
16914 {
16915   struct die_info *child_die = die->child;
16916   struct type *type;
16917
16918   type = read_type_die (die, cu);
16919   new_symbol (die, type, cu);
16920
16921   while (child_die && child_die->tag)
16922     {
16923       process_die (child_die, cu);
16924       child_die = sibling_die (child_die);
16925     }
16926 }
16927
16928 /* Return the name of the namespace represented by DIE.  Set
16929    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16930    namespace.  */
16931
16932 static const char *
16933 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16934 {
16935   struct die_info *current_die;
16936   const char *name = NULL;
16937
16938   /* Loop through the extensions until we find a name.  */
16939
16940   for (current_die = die;
16941        current_die != NULL;
16942        current_die = dwarf2_extension (die, &cu))
16943     {
16944       /* We don't use dwarf2_name here so that we can detect the absence
16945          of a name -> anonymous namespace.  */
16946       name = dwarf2_string_attr (die, DW_AT_name, cu);
16947
16948       if (name != NULL)
16949         break;
16950     }
16951
16952   /* Is it an anonymous namespace?  */
16953
16954   *is_anonymous = (name == NULL);
16955   if (*is_anonymous)
16956     name = CP_ANONYMOUS_NAMESPACE_STR;
16957
16958   return name;
16959 }
16960
16961 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16962    the user defined type vector.  */
16963
16964 static struct type *
16965 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16966 {
16967   struct gdbarch *gdbarch
16968     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16969   struct comp_unit_head *cu_header = &cu->header;
16970   struct type *type;
16971   struct attribute *attr_byte_size;
16972   struct attribute *attr_address_class;
16973   int byte_size, addr_class;
16974   struct type *target_type;
16975
16976   target_type = die_type (die, cu);
16977
16978   /* The die_type call above may have already set the type for this DIE.  */
16979   type = get_die_type (die, cu);
16980   if (type)
16981     return type;
16982
16983   type = lookup_pointer_type (target_type);
16984
16985   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16986   if (attr_byte_size)
16987     byte_size = DW_UNSND (attr_byte_size);
16988   else
16989     byte_size = cu_header->addr_size;
16990
16991   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16992   if (attr_address_class)
16993     addr_class = DW_UNSND (attr_address_class);
16994   else
16995     addr_class = DW_ADDR_none;
16996
16997   ULONGEST alignment = get_alignment (cu, die);
16998
16999   /* If the pointer size, alignment, or address class is different
17000      than the default, create a type variant marked as such and set
17001      the length accordingly.  */
17002   if (TYPE_LENGTH (type) != byte_size
17003       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
17004           && alignment != TYPE_RAW_ALIGN (type))
17005       || addr_class != DW_ADDR_none)
17006     {
17007       if (gdbarch_address_class_type_flags_p (gdbarch))
17008         {
17009           int type_flags;
17010
17011           type_flags = gdbarch_address_class_type_flags
17012                          (gdbarch, byte_size, addr_class);
17013           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
17014                       == 0);
17015           type = make_type_with_address_space (type, type_flags);
17016         }
17017       else if (TYPE_LENGTH (type) != byte_size)
17018         {
17019           complaint (_("invalid pointer size %d"), byte_size);
17020         }
17021       else if (TYPE_RAW_ALIGN (type) != alignment)
17022         {
17023           complaint (_("Invalid DW_AT_alignment"
17024                        " - DIE at %s [in module %s]"),
17025                      sect_offset_str (die->sect_off),
17026                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17027         }
17028       else
17029         {
17030           /* Should we also complain about unhandled address classes?  */
17031         }
17032     }
17033
17034   TYPE_LENGTH (type) = byte_size;
17035   set_type_align (type, alignment);
17036   return set_die_type (die, type, cu);
17037 }
17038
17039 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17040    the user defined type vector.  */
17041
17042 static struct type *
17043 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17044 {
17045   struct type *type;
17046   struct type *to_type;
17047   struct type *domain;
17048
17049   to_type = die_type (die, cu);
17050   domain = die_containing_type (die, cu);
17051
17052   /* The calls above may have already set the type for this DIE.  */
17053   type = get_die_type (die, cu);
17054   if (type)
17055     return type;
17056
17057   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17058     type = lookup_methodptr_type (to_type);
17059   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17060     {
17061       struct type *new_type
17062         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17063
17064       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17065                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17066                             TYPE_VARARGS (to_type));
17067       type = lookup_methodptr_type (new_type);
17068     }
17069   else
17070     type = lookup_memberptr_type (to_type, domain);
17071
17072   return set_die_type (die, type, cu);
17073 }
17074
17075 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17076    the user defined type vector.  */
17077
17078 static struct type *
17079 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17080                           enum type_code refcode)
17081 {
17082   struct comp_unit_head *cu_header = &cu->header;
17083   struct type *type, *target_type;
17084   struct attribute *attr;
17085
17086   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17087
17088   target_type = die_type (die, cu);
17089
17090   /* The die_type call above may have already set the type for this DIE.  */
17091   type = get_die_type (die, cu);
17092   if (type)
17093     return type;
17094
17095   type = lookup_reference_type (target_type, refcode);
17096   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17097   if (attr)
17098     {
17099       TYPE_LENGTH (type) = DW_UNSND (attr);
17100     }
17101   else
17102     {
17103       TYPE_LENGTH (type) = cu_header->addr_size;
17104     }
17105   maybe_set_alignment (cu, die, type);
17106   return set_die_type (die, type, cu);
17107 }
17108
17109 /* Add the given cv-qualifiers to the element type of the array.  GCC
17110    outputs DWARF type qualifiers that apply to an array, not the
17111    element type.  But GDB relies on the array element type to carry
17112    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17113    specification.  */
17114
17115 static struct type *
17116 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17117                    struct type *base_type, int cnst, int voltl)
17118 {
17119   struct type *el_type, *inner_array;
17120
17121   base_type = copy_type (base_type);
17122   inner_array = base_type;
17123
17124   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17125     {
17126       TYPE_TARGET_TYPE (inner_array) =
17127         copy_type (TYPE_TARGET_TYPE (inner_array));
17128       inner_array = TYPE_TARGET_TYPE (inner_array);
17129     }
17130
17131   el_type = TYPE_TARGET_TYPE (inner_array);
17132   cnst |= TYPE_CONST (el_type);
17133   voltl |= TYPE_VOLATILE (el_type);
17134   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17135
17136   return set_die_type (die, base_type, cu);
17137 }
17138
17139 static struct type *
17140 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17141 {
17142   struct type *base_type, *cv_type;
17143
17144   base_type = die_type (die, cu);
17145
17146   /* The die_type call above may have already set the type for this DIE.  */
17147   cv_type = get_die_type (die, cu);
17148   if (cv_type)
17149     return cv_type;
17150
17151   /* In case the const qualifier is applied to an array type, the element type
17152      is so qualified, not the array type (section 6.7.3 of C99).  */
17153   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17154     return add_array_cv_type (die, cu, base_type, 1, 0);
17155
17156   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17157   return set_die_type (die, cv_type, cu);
17158 }
17159
17160 static struct type *
17161 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17162 {
17163   struct type *base_type, *cv_type;
17164
17165   base_type = die_type (die, cu);
17166
17167   /* The die_type call above may have already set the type for this DIE.  */
17168   cv_type = get_die_type (die, cu);
17169   if (cv_type)
17170     return cv_type;
17171
17172   /* In case the volatile qualifier is applied to an array type, the
17173      element type is so qualified, not the array type (section 6.7.3
17174      of C99).  */
17175   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17176     return add_array_cv_type (die, cu, base_type, 0, 1);
17177
17178   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17179   return set_die_type (die, cv_type, cu);
17180 }
17181
17182 /* Handle DW_TAG_restrict_type.  */
17183
17184 static struct type *
17185 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17186 {
17187   struct type *base_type, *cv_type;
17188
17189   base_type = die_type (die, cu);
17190
17191   /* The die_type call above may have already set the type for this DIE.  */
17192   cv_type = get_die_type (die, cu);
17193   if (cv_type)
17194     return cv_type;
17195
17196   cv_type = make_restrict_type (base_type);
17197   return set_die_type (die, cv_type, cu);
17198 }
17199
17200 /* Handle DW_TAG_atomic_type.  */
17201
17202 static struct type *
17203 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17204 {
17205   struct type *base_type, *cv_type;
17206
17207   base_type = die_type (die, cu);
17208
17209   /* The die_type call above may have already set the type for this DIE.  */
17210   cv_type = get_die_type (die, cu);
17211   if (cv_type)
17212     return cv_type;
17213
17214   cv_type = make_atomic_type (base_type);
17215   return set_die_type (die, cv_type, cu);
17216 }
17217
17218 /* Extract all information from a DW_TAG_string_type DIE and add to
17219    the user defined type vector.  It isn't really a user defined type,
17220    but it behaves like one, with other DIE's using an AT_user_def_type
17221    attribute to reference it.  */
17222
17223 static struct type *
17224 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17225 {
17226   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17227   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17228   struct type *type, *range_type, *index_type, *char_type;
17229   struct attribute *attr;
17230   unsigned int length;
17231
17232   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17233   if (attr)
17234     {
17235       length = DW_UNSND (attr);
17236     }
17237   else
17238     {
17239       /* Check for the DW_AT_byte_size attribute.  */
17240       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17241       if (attr)
17242         {
17243           length = DW_UNSND (attr);
17244         }
17245       else
17246         {
17247           length = 1;
17248         }
17249     }
17250
17251   index_type = objfile_type (objfile)->builtin_int;
17252   range_type = create_static_range_type (NULL, index_type, 1, length);
17253   char_type = language_string_char_type (cu->language_defn, gdbarch);
17254   type = create_string_type (NULL, char_type, range_type);
17255
17256   return set_die_type (die, type, cu);
17257 }
17258
17259 /* Assuming that DIE corresponds to a function, returns nonzero
17260    if the function is prototyped.  */
17261
17262 static int
17263 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17264 {
17265   struct attribute *attr;
17266
17267   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17268   if (attr && (DW_UNSND (attr) != 0))
17269     return 1;
17270
17271   /* The DWARF standard implies that the DW_AT_prototyped attribute
17272      is only meaninful for C, but the concept also extends to other
17273      languages that allow unprototyped functions (Eg: Objective C).
17274      For all other languages, assume that functions are always
17275      prototyped.  */
17276   if (cu->language != language_c
17277       && cu->language != language_objc
17278       && cu->language != language_opencl)
17279     return 1;
17280
17281   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17282      prototyped and unprototyped functions; default to prototyped,
17283      since that is more common in modern code (and RealView warns
17284      about unprototyped functions).  */
17285   if (producer_is_realview (cu->producer))
17286     return 1;
17287
17288   return 0;
17289 }
17290
17291 /* Handle DIES due to C code like:
17292
17293    struct foo
17294    {
17295    int (*funcp)(int a, long l);
17296    int b;
17297    };
17298
17299    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17300
17301 static struct type *
17302 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17303 {
17304   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17305   struct type *type;            /* Type that this function returns.  */
17306   struct type *ftype;           /* Function that returns above type.  */
17307   struct attribute *attr;
17308
17309   type = die_type (die, cu);
17310
17311   /* The die_type call above may have already set the type for this DIE.  */
17312   ftype = get_die_type (die, cu);
17313   if (ftype)
17314     return ftype;
17315
17316   ftype = lookup_function_type (type);
17317
17318   if (prototyped_function_p (die, cu))
17319     TYPE_PROTOTYPED (ftype) = 1;
17320
17321   /* Store the calling convention in the type if it's available in
17322      the subroutine die.  Otherwise set the calling convention to
17323      the default value DW_CC_normal.  */
17324   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17325   if (attr)
17326     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17327   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17328     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17329   else
17330     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17331
17332   /* Record whether the function returns normally to its caller or not
17333      if the DWARF producer set that information.  */
17334   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17335   if (attr && (DW_UNSND (attr) != 0))
17336     TYPE_NO_RETURN (ftype) = 1;
17337
17338   /* We need to add the subroutine type to the die immediately so
17339      we don't infinitely recurse when dealing with parameters
17340      declared as the same subroutine type.  */
17341   set_die_type (die, ftype, cu);
17342
17343   if (die->child != NULL)
17344     {
17345       struct type *void_type = objfile_type (objfile)->builtin_void;
17346       struct die_info *child_die;
17347       int nparams, iparams;
17348
17349       /* Count the number of parameters.
17350          FIXME: GDB currently ignores vararg functions, but knows about
17351          vararg member functions.  */
17352       nparams = 0;
17353       child_die = die->child;
17354       while (child_die && child_die->tag)
17355         {
17356           if (child_die->tag == DW_TAG_formal_parameter)
17357             nparams++;
17358           else if (child_die->tag == DW_TAG_unspecified_parameters)
17359             TYPE_VARARGS (ftype) = 1;
17360           child_die = sibling_die (child_die);
17361         }
17362
17363       /* Allocate storage for parameters and fill them in.  */
17364       TYPE_NFIELDS (ftype) = nparams;
17365       TYPE_FIELDS (ftype) = (struct field *)
17366         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17367
17368       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17369          even if we error out during the parameters reading below.  */
17370       for (iparams = 0; iparams < nparams; iparams++)
17371         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17372
17373       iparams = 0;
17374       child_die = die->child;
17375       while (child_die && child_die->tag)
17376         {
17377           if (child_die->tag == DW_TAG_formal_parameter)
17378             {
17379               struct type *arg_type;
17380
17381               /* DWARF version 2 has no clean way to discern C++
17382                  static and non-static member functions.  G++ helps
17383                  GDB by marking the first parameter for non-static
17384                  member functions (which is the this pointer) as
17385                  artificial.  We pass this information to
17386                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17387
17388                  DWARF version 3 added DW_AT_object_pointer, which GCC
17389                  4.5 does not yet generate.  */
17390               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17391               if (attr)
17392                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17393               else
17394                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17395               arg_type = die_type (child_die, cu);
17396
17397               /* RealView does not mark THIS as const, which the testsuite
17398                  expects.  GCC marks THIS as const in method definitions,
17399                  but not in the class specifications (GCC PR 43053).  */
17400               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17401                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17402                 {
17403                   int is_this = 0;
17404                   struct dwarf2_cu *arg_cu = cu;
17405                   const char *name = dwarf2_name (child_die, cu);
17406
17407                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17408                   if (attr)
17409                     {
17410                       /* If the compiler emits this, use it.  */
17411                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17412                         is_this = 1;
17413                     }
17414                   else if (name && strcmp (name, "this") == 0)
17415                     /* Function definitions will have the argument names.  */
17416                     is_this = 1;
17417                   else if (name == NULL && iparams == 0)
17418                     /* Declarations may not have the names, so like
17419                        elsewhere in GDB, assume an artificial first
17420                        argument is "this".  */
17421                     is_this = 1;
17422
17423                   if (is_this)
17424                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17425                                              arg_type, 0);
17426                 }
17427
17428               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17429               iparams++;
17430             }
17431           child_die = sibling_die (child_die);
17432         }
17433     }
17434
17435   return ftype;
17436 }
17437
17438 static struct type *
17439 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17440 {
17441   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17442   const char *name = NULL;
17443   struct type *this_type, *target_type;
17444
17445   name = dwarf2_full_name (NULL, die, cu);
17446   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17447   TYPE_TARGET_STUB (this_type) = 1;
17448   set_die_type (die, this_type, cu);
17449   target_type = die_type (die, cu);
17450   if (target_type != this_type)
17451     TYPE_TARGET_TYPE (this_type) = target_type;
17452   else
17453     {
17454       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17455          spec and cause infinite loops in GDB.  */
17456       complaint (_("Self-referential DW_TAG_typedef "
17457                    "- DIE at %s [in module %s]"),
17458                  sect_offset_str (die->sect_off), objfile_name (objfile));
17459       TYPE_TARGET_TYPE (this_type) = NULL;
17460     }
17461   return this_type;
17462 }
17463
17464 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17465    (which may be different from NAME) to the architecture back-end to allow
17466    it to guess the correct format if necessary.  */
17467
17468 static struct type *
17469 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17470                         const char *name_hint)
17471 {
17472   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17473   const struct floatformat **format;
17474   struct type *type;
17475
17476   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17477   if (format)
17478     type = init_float_type (objfile, bits, name, format);
17479   else
17480     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17481
17482   return type;
17483 }
17484
17485 /* Find a representation of a given base type and install
17486    it in the TYPE field of the die.  */
17487
17488 static struct type *
17489 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17490 {
17491   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17492   struct type *type;
17493   struct attribute *attr;
17494   int encoding = 0, bits = 0;
17495   const char *name;
17496
17497   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17498   if (attr)
17499     {
17500       encoding = DW_UNSND (attr);
17501     }
17502   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17503   if (attr)
17504     {
17505       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17506     }
17507   name = dwarf2_name (die, cu);
17508   if (!name)
17509     {
17510       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17511     }
17512
17513   switch (encoding)
17514     {
17515       case DW_ATE_address:
17516         /* Turn DW_ATE_address into a void * pointer.  */
17517         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17518         type = init_pointer_type (objfile, bits, name, type);
17519         break;
17520       case DW_ATE_boolean:
17521         type = init_boolean_type (objfile, bits, 1, name);
17522         break;
17523       case DW_ATE_complex_float:
17524         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17525         type = init_complex_type (objfile, name, type);
17526         break;
17527       case DW_ATE_decimal_float:
17528         type = init_decfloat_type (objfile, bits, name);
17529         break;
17530       case DW_ATE_float:
17531         type = dwarf2_init_float_type (objfile, bits, name, name);
17532         break;
17533       case DW_ATE_signed:
17534         type = init_integer_type (objfile, bits, 0, name);
17535         break;
17536       case DW_ATE_unsigned:
17537         if (cu->language == language_fortran
17538             && name
17539             && startswith (name, "character("))
17540           type = init_character_type (objfile, bits, 1, name);
17541         else
17542           type = init_integer_type (objfile, bits, 1, name);
17543         break;
17544       case DW_ATE_signed_char:
17545         if (cu->language == language_ada || cu->language == language_m2
17546             || cu->language == language_pascal
17547             || cu->language == language_fortran)
17548           type = init_character_type (objfile, bits, 0, name);
17549         else
17550           type = init_integer_type (objfile, bits, 0, name);
17551         break;
17552       case DW_ATE_unsigned_char:
17553         if (cu->language == language_ada || cu->language == language_m2
17554             || cu->language == language_pascal
17555             || cu->language == language_fortran
17556             || cu->language == language_rust)
17557           type = init_character_type (objfile, bits, 1, name);
17558         else
17559           type = init_integer_type (objfile, bits, 1, name);
17560         break;
17561       case DW_ATE_UTF:
17562         {
17563           gdbarch *arch = get_objfile_arch (objfile);
17564
17565           if (bits == 16)
17566             type = builtin_type (arch)->builtin_char16;
17567           else if (bits == 32)
17568             type = builtin_type (arch)->builtin_char32;
17569           else
17570             {
17571               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17572                          bits);
17573               type = init_integer_type (objfile, bits, 1, name);
17574             }
17575           return set_die_type (die, type, cu);
17576         }
17577         break;
17578
17579       default:
17580         complaint (_("unsupported DW_AT_encoding: '%s'"),
17581                    dwarf_type_encoding_name (encoding));
17582         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17583         break;
17584     }
17585
17586   if (name && strcmp (name, "char") == 0)
17587     TYPE_NOSIGN (type) = 1;
17588
17589   maybe_set_alignment (cu, die, type);
17590
17591   return set_die_type (die, type, cu);
17592 }
17593
17594 /* Parse dwarf attribute if it's a block, reference or constant and put the
17595    resulting value of the attribute into struct bound_prop.
17596    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17597
17598 static int
17599 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17600                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17601 {
17602   struct dwarf2_property_baton *baton;
17603   struct obstack *obstack
17604     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17605
17606   if (attr == NULL || prop == NULL)
17607     return 0;
17608
17609   if (attr_form_is_block (attr))
17610     {
17611       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17612       baton->referenced_type = NULL;
17613       baton->locexpr.per_cu = cu->per_cu;
17614       baton->locexpr.size = DW_BLOCK (attr)->size;
17615       baton->locexpr.data = DW_BLOCK (attr)->data;
17616       prop->data.baton = baton;
17617       prop->kind = PROP_LOCEXPR;
17618       gdb_assert (prop->data.baton != NULL);
17619     }
17620   else if (attr_form_is_ref (attr))
17621     {
17622       struct dwarf2_cu *target_cu = cu;
17623       struct die_info *target_die;
17624       struct attribute *target_attr;
17625
17626       target_die = follow_die_ref (die, attr, &target_cu);
17627       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17628       if (target_attr == NULL)
17629         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17630                                    target_cu);
17631       if (target_attr == NULL)
17632         return 0;
17633
17634       switch (target_attr->name)
17635         {
17636           case DW_AT_location:
17637             if (attr_form_is_section_offset (target_attr))
17638               {
17639                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17640                 baton->referenced_type = die_type (target_die, target_cu);
17641                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17642                 prop->data.baton = baton;
17643                 prop->kind = PROP_LOCLIST;
17644                 gdb_assert (prop->data.baton != NULL);
17645               }
17646             else if (attr_form_is_block (target_attr))
17647               {
17648                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17649                 baton->referenced_type = die_type (target_die, target_cu);
17650                 baton->locexpr.per_cu = cu->per_cu;
17651                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17652                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17653                 prop->data.baton = baton;
17654                 prop->kind = PROP_LOCEXPR;
17655                 gdb_assert (prop->data.baton != NULL);
17656               }
17657             else
17658               {
17659                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17660                                                        "dynamic property");
17661                 return 0;
17662               }
17663             break;
17664           case DW_AT_data_member_location:
17665             {
17666               LONGEST offset;
17667
17668               if (!handle_data_member_location (target_die, target_cu,
17669                                                 &offset))
17670                 return 0;
17671
17672               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17673               baton->referenced_type = read_type_die (target_die->parent,
17674                                                       target_cu);
17675               baton->offset_info.offset = offset;
17676               baton->offset_info.type = die_type (target_die, target_cu);
17677               prop->data.baton = baton;
17678               prop->kind = PROP_ADDR_OFFSET;
17679               break;
17680             }
17681         }
17682     }
17683   else if (attr_form_is_constant (attr))
17684     {
17685       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17686       prop->kind = PROP_CONST;
17687     }
17688   else
17689     {
17690       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17691                                              dwarf2_name (die, cu));
17692       return 0;
17693     }
17694
17695   return 1;
17696 }
17697
17698 /* Read the given DW_AT_subrange DIE.  */
17699
17700 static struct type *
17701 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17702 {
17703   struct type *base_type, *orig_base_type;
17704   struct type *range_type;
17705   struct attribute *attr;
17706   struct dynamic_prop low, high;
17707   int low_default_is_valid;
17708   int high_bound_is_count = 0;
17709   const char *name;
17710   ULONGEST negative_mask;
17711
17712   orig_base_type = die_type (die, cu);
17713   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17714      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17715      creating the range type, but we use the result of check_typedef
17716      when examining properties of the type.  */
17717   base_type = check_typedef (orig_base_type);
17718
17719   /* The die_type call above may have already set the type for this DIE.  */
17720   range_type = get_die_type (die, cu);
17721   if (range_type)
17722     return range_type;
17723
17724   low.kind = PROP_CONST;
17725   high.kind = PROP_CONST;
17726   high.data.const_val = 0;
17727
17728   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17729      omitting DW_AT_lower_bound.  */
17730   switch (cu->language)
17731     {
17732     case language_c:
17733     case language_cplus:
17734       low.data.const_val = 0;
17735       low_default_is_valid = 1;
17736       break;
17737     case language_fortran:
17738       low.data.const_val = 1;
17739       low_default_is_valid = 1;
17740       break;
17741     case language_d:
17742     case language_objc:
17743     case language_rust:
17744       low.data.const_val = 0;
17745       low_default_is_valid = (cu->header.version >= 4);
17746       break;
17747     case language_ada:
17748     case language_m2:
17749     case language_pascal:
17750       low.data.const_val = 1;
17751       low_default_is_valid = (cu->header.version >= 4);
17752       break;
17753     default:
17754       low.data.const_val = 0;
17755       low_default_is_valid = 0;
17756       break;
17757     }
17758
17759   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17760   if (attr)
17761     attr_to_dynamic_prop (attr, die, cu, &low);
17762   else if (!low_default_is_valid)
17763     complaint (_("Missing DW_AT_lower_bound "
17764                                       "- DIE at %s [in module %s]"),
17765                sect_offset_str (die->sect_off),
17766                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17767
17768   struct attribute *attr_ub, *attr_count;
17769   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17770   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17771     {
17772       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17773       if (attr_to_dynamic_prop (attr, die, cu, &high))
17774         {
17775           /* If bounds are constant do the final calculation here.  */
17776           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17777             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17778           else
17779             high_bound_is_count = 1;
17780         }
17781       else
17782         {
17783           if (attr_ub != NULL)
17784             complaint (_("Unresolved DW_AT_upper_bound "
17785                          "- DIE at %s [in module %s]"),
17786                        sect_offset_str (die->sect_off),
17787                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17788           if (attr_count != NULL)
17789             complaint (_("Unresolved DW_AT_count "
17790                          "- DIE at %s [in module %s]"),
17791                        sect_offset_str (die->sect_off),
17792                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17793         }
17794         
17795     }
17796
17797   /* Dwarf-2 specifications explicitly allows to create subrange types
17798      without specifying a base type.
17799      In that case, the base type must be set to the type of
17800      the lower bound, upper bound or count, in that order, if any of these
17801      three attributes references an object that has a type.
17802      If no base type is found, the Dwarf-2 specifications say that
17803      a signed integer type of size equal to the size of an address should
17804      be used.
17805      For the following C code: `extern char gdb_int [];'
17806      GCC produces an empty range DIE.
17807      FIXME: muller/2010-05-28: Possible references to object for low bound,
17808      high bound or count are not yet handled by this code.  */
17809   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17810     {
17811       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17812       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17813       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17814       struct type *int_type = objfile_type (objfile)->builtin_int;
17815
17816       /* Test "int", "long int", and "long long int" objfile types,
17817          and select the first one having a size above or equal to the
17818          architecture address size.  */
17819       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17820         base_type = int_type;
17821       else
17822         {
17823           int_type = objfile_type (objfile)->builtin_long;
17824           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17825             base_type = int_type;
17826           else
17827             {
17828               int_type = objfile_type (objfile)->builtin_long_long;
17829               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17830                 base_type = int_type;
17831             }
17832         }
17833     }
17834
17835   /* Normally, the DWARF producers are expected to use a signed
17836      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17837      But this is unfortunately not always the case, as witnessed
17838      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17839      is used instead.  To work around that ambiguity, we treat
17840      the bounds as signed, and thus sign-extend their values, when
17841      the base type is signed.  */
17842   negative_mask =
17843     -((ULONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17844   if (low.kind == PROP_CONST
17845       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17846     low.data.const_val |= negative_mask;
17847   if (high.kind == PROP_CONST
17848       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17849     high.data.const_val |= negative_mask;
17850
17851   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17852
17853   if (high_bound_is_count)
17854     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17855
17856   /* Ada expects an empty array on no boundary attributes.  */
17857   if (attr == NULL && cu->language != language_ada)
17858     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17859
17860   name = dwarf2_name (die, cu);
17861   if (name)
17862     TYPE_NAME (range_type) = name;
17863
17864   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17865   if (attr)
17866     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17867
17868   maybe_set_alignment (cu, die, range_type);
17869
17870   set_die_type (die, range_type, cu);
17871
17872   /* set_die_type should be already done.  */
17873   set_descriptive_type (range_type, die, cu);
17874
17875   return range_type;
17876 }
17877
17878 static struct type *
17879 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17880 {
17881   struct type *type;
17882
17883   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17884                     NULL);
17885   TYPE_NAME (type) = dwarf2_name (die, cu);
17886
17887   /* In Ada, an unspecified type is typically used when the description
17888      of the type is defered to a different unit.  When encountering
17889      such a type, we treat it as a stub, and try to resolve it later on,
17890      when needed.  */
17891   if (cu->language == language_ada)
17892     TYPE_STUB (type) = 1;
17893
17894   return set_die_type (die, type, cu);
17895 }
17896
17897 /* Read a single die and all its descendents.  Set the die's sibling
17898    field to NULL; set other fields in the die correctly, and set all
17899    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17900    location of the info_ptr after reading all of those dies.  PARENT
17901    is the parent of the die in question.  */
17902
17903 static struct die_info *
17904 read_die_and_children (const struct die_reader_specs *reader,
17905                        const gdb_byte *info_ptr,
17906                        const gdb_byte **new_info_ptr,
17907                        struct die_info *parent)
17908 {
17909   struct die_info *die;
17910   const gdb_byte *cur_ptr;
17911   int has_children;
17912
17913   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17914   if (die == NULL)
17915     {
17916       *new_info_ptr = cur_ptr;
17917       return NULL;
17918     }
17919   store_in_ref_table (die, reader->cu);
17920
17921   if (has_children)
17922     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17923   else
17924     {
17925       die->child = NULL;
17926       *new_info_ptr = cur_ptr;
17927     }
17928
17929   die->sibling = NULL;
17930   die->parent = parent;
17931   return die;
17932 }
17933
17934 /* Read a die, all of its descendents, and all of its siblings; set
17935    all of the fields of all of the dies correctly.  Arguments are as
17936    in read_die_and_children.  */
17937
17938 static struct die_info *
17939 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17940                          const gdb_byte *info_ptr,
17941                          const gdb_byte **new_info_ptr,
17942                          struct die_info *parent)
17943 {
17944   struct die_info *first_die, *last_sibling;
17945   const gdb_byte *cur_ptr;
17946
17947   cur_ptr = info_ptr;
17948   first_die = last_sibling = NULL;
17949
17950   while (1)
17951     {
17952       struct die_info *die
17953         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17954
17955       if (die == NULL)
17956         {
17957           *new_info_ptr = cur_ptr;
17958           return first_die;
17959         }
17960
17961       if (!first_die)
17962         first_die = die;
17963       else
17964         last_sibling->sibling = die;
17965
17966       last_sibling = die;
17967     }
17968 }
17969
17970 /* Read a die, all of its descendents, and all of its siblings; set
17971    all of the fields of all of the dies correctly.  Arguments are as
17972    in read_die_and_children.
17973    This the main entry point for reading a DIE and all its children.  */
17974
17975 static struct die_info *
17976 read_die_and_siblings (const struct die_reader_specs *reader,
17977                        const gdb_byte *info_ptr,
17978                        const gdb_byte **new_info_ptr,
17979                        struct die_info *parent)
17980 {
17981   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17982                                                   new_info_ptr, parent);
17983
17984   if (dwarf_die_debug)
17985     {
17986       fprintf_unfiltered (gdb_stdlog,
17987                           "Read die from %s@0x%x of %s:\n",
17988                           get_section_name (reader->die_section),
17989                           (unsigned) (info_ptr - reader->die_section->buffer),
17990                           bfd_get_filename (reader->abfd));
17991       dump_die (die, dwarf_die_debug);
17992     }
17993
17994   return die;
17995 }
17996
17997 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17998    attributes.
17999    The caller is responsible for filling in the extra attributes
18000    and updating (*DIEP)->num_attrs.
18001    Set DIEP to point to a newly allocated die with its information,
18002    except for its child, sibling, and parent fields.
18003    Set HAS_CHILDREN to tell whether the die has children or not.  */
18004
18005 static const gdb_byte *
18006 read_full_die_1 (const struct die_reader_specs *reader,
18007                  struct die_info **diep, const gdb_byte *info_ptr,
18008                  int *has_children, int num_extra_attrs)
18009 {
18010   unsigned int abbrev_number, bytes_read, i;
18011   struct abbrev_info *abbrev;
18012   struct die_info *die;
18013   struct dwarf2_cu *cu = reader->cu;
18014   bfd *abfd = reader->abfd;
18015
18016   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
18017   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
18018   info_ptr += bytes_read;
18019   if (!abbrev_number)
18020     {
18021       *diep = NULL;
18022       *has_children = 0;
18023       return info_ptr;
18024     }
18025
18026   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18027   if (!abbrev)
18028     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18029            abbrev_number,
18030            bfd_get_filename (abfd));
18031
18032   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18033   die->sect_off = sect_off;
18034   die->tag = abbrev->tag;
18035   die->abbrev = abbrev_number;
18036
18037   /* Make the result usable.
18038      The caller needs to update num_attrs after adding the extra
18039      attributes.  */
18040   die->num_attrs = abbrev->num_attrs;
18041
18042   for (i = 0; i < abbrev->num_attrs; ++i)
18043     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18044                                info_ptr);
18045
18046   *diep = die;
18047   *has_children = abbrev->has_children;
18048   return info_ptr;
18049 }
18050
18051 /* Read a die and all its attributes.
18052    Set DIEP to point to a newly allocated die with its information,
18053    except for its child, sibling, and parent fields.
18054    Set HAS_CHILDREN to tell whether the die has children or not.  */
18055
18056 static const gdb_byte *
18057 read_full_die (const struct die_reader_specs *reader,
18058                struct die_info **diep, const gdb_byte *info_ptr,
18059                int *has_children)
18060 {
18061   const gdb_byte *result;
18062
18063   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18064
18065   if (dwarf_die_debug)
18066     {
18067       fprintf_unfiltered (gdb_stdlog,
18068                           "Read die from %s@0x%x of %s:\n",
18069                           get_section_name (reader->die_section),
18070                           (unsigned) (info_ptr - reader->die_section->buffer),
18071                           bfd_get_filename (reader->abfd));
18072       dump_die (*diep, dwarf_die_debug);
18073     }
18074
18075   return result;
18076 }
18077 \f
18078 /* Abbreviation tables.
18079
18080    In DWARF version 2, the description of the debugging information is
18081    stored in a separate .debug_abbrev section.  Before we read any
18082    dies from a section we read in all abbreviations and install them
18083    in a hash table.  */
18084
18085 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18086
18087 struct abbrev_info *
18088 abbrev_table::alloc_abbrev ()
18089 {
18090   struct abbrev_info *abbrev;
18091
18092   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18093   memset (abbrev, 0, sizeof (struct abbrev_info));
18094
18095   return abbrev;
18096 }
18097
18098 /* Add an abbreviation to the table.  */
18099
18100 void
18101 abbrev_table::add_abbrev (unsigned int abbrev_number,
18102                           struct abbrev_info *abbrev)
18103 {
18104   unsigned int hash_number;
18105
18106   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18107   abbrev->next = m_abbrevs[hash_number];
18108   m_abbrevs[hash_number] = abbrev;
18109 }
18110
18111 /* Look up an abbrev in the table.
18112    Returns NULL if the abbrev is not found.  */
18113
18114 struct abbrev_info *
18115 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18116 {
18117   unsigned int hash_number;
18118   struct abbrev_info *abbrev;
18119
18120   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18121   abbrev = m_abbrevs[hash_number];
18122
18123   while (abbrev)
18124     {
18125       if (abbrev->number == abbrev_number)
18126         return abbrev;
18127       abbrev = abbrev->next;
18128     }
18129   return NULL;
18130 }
18131
18132 /* Read in an abbrev table.  */
18133
18134 static abbrev_table_up
18135 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18136                          struct dwarf2_section_info *section,
18137                          sect_offset sect_off)
18138 {
18139   struct objfile *objfile = dwarf2_per_objfile->objfile;
18140   bfd *abfd = get_section_bfd_owner (section);
18141   const gdb_byte *abbrev_ptr;
18142   struct abbrev_info *cur_abbrev;
18143   unsigned int abbrev_number, bytes_read, abbrev_name;
18144   unsigned int abbrev_form;
18145   struct attr_abbrev *cur_attrs;
18146   unsigned int allocated_attrs;
18147
18148   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18149
18150   dwarf2_read_section (objfile, section);
18151   abbrev_ptr = section->buffer + to_underlying (sect_off);
18152   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18153   abbrev_ptr += bytes_read;
18154
18155   allocated_attrs = ATTR_ALLOC_CHUNK;
18156   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18157
18158   /* Loop until we reach an abbrev number of 0.  */
18159   while (abbrev_number)
18160     {
18161       cur_abbrev = abbrev_table->alloc_abbrev ();
18162
18163       /* read in abbrev header */
18164       cur_abbrev->number = abbrev_number;
18165       cur_abbrev->tag
18166         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18167       abbrev_ptr += bytes_read;
18168       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18169       abbrev_ptr += 1;
18170
18171       /* now read in declarations */
18172       for (;;)
18173         {
18174           LONGEST implicit_const;
18175
18176           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18177           abbrev_ptr += bytes_read;
18178           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18179           abbrev_ptr += bytes_read;
18180           if (abbrev_form == DW_FORM_implicit_const)
18181             {
18182               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18183                                                    &bytes_read);
18184               abbrev_ptr += bytes_read;
18185             }
18186           else
18187             {
18188               /* Initialize it due to a false compiler warning.  */
18189               implicit_const = -1;
18190             }
18191
18192           if (abbrev_name == 0)
18193             break;
18194
18195           if (cur_abbrev->num_attrs == allocated_attrs)
18196             {
18197               allocated_attrs += ATTR_ALLOC_CHUNK;
18198               cur_attrs
18199                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18200             }
18201
18202           cur_attrs[cur_abbrev->num_attrs].name
18203             = (enum dwarf_attribute) abbrev_name;
18204           cur_attrs[cur_abbrev->num_attrs].form
18205             = (enum dwarf_form) abbrev_form;
18206           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18207           ++cur_abbrev->num_attrs;
18208         }
18209
18210       cur_abbrev->attrs =
18211         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18212                    cur_abbrev->num_attrs);
18213       memcpy (cur_abbrev->attrs, cur_attrs,
18214               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18215
18216       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18217
18218       /* Get next abbreviation.
18219          Under Irix6 the abbreviations for a compilation unit are not
18220          always properly terminated with an abbrev number of 0.
18221          Exit loop if we encounter an abbreviation which we have
18222          already read (which means we are about to read the abbreviations
18223          for the next compile unit) or if the end of the abbreviation
18224          table is reached.  */
18225       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18226         break;
18227       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18228       abbrev_ptr += bytes_read;
18229       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18230         break;
18231     }
18232
18233   xfree (cur_attrs);
18234   return abbrev_table;
18235 }
18236
18237 /* Returns nonzero if TAG represents a type that we might generate a partial
18238    symbol for.  */
18239
18240 static int
18241 is_type_tag_for_partial (int tag)
18242 {
18243   switch (tag)
18244     {
18245 #if 0
18246     /* Some types that would be reasonable to generate partial symbols for,
18247        that we don't at present.  */
18248     case DW_TAG_array_type:
18249     case DW_TAG_file_type:
18250     case DW_TAG_ptr_to_member_type:
18251     case DW_TAG_set_type:
18252     case DW_TAG_string_type:
18253     case DW_TAG_subroutine_type:
18254 #endif
18255     case DW_TAG_base_type:
18256     case DW_TAG_class_type:
18257     case DW_TAG_interface_type:
18258     case DW_TAG_enumeration_type:
18259     case DW_TAG_structure_type:
18260     case DW_TAG_subrange_type:
18261     case DW_TAG_typedef:
18262     case DW_TAG_union_type:
18263       return 1;
18264     default:
18265       return 0;
18266     }
18267 }
18268
18269 /* Load all DIEs that are interesting for partial symbols into memory.  */
18270
18271 static struct partial_die_info *
18272 load_partial_dies (const struct die_reader_specs *reader,
18273                    const gdb_byte *info_ptr, int building_psymtab)
18274 {
18275   struct dwarf2_cu *cu = reader->cu;
18276   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18277   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18278   unsigned int bytes_read;
18279   unsigned int load_all = 0;
18280   int nesting_level = 1;
18281
18282   parent_die = NULL;
18283   last_die = NULL;
18284
18285   gdb_assert (cu->per_cu != NULL);
18286   if (cu->per_cu->load_all_dies)
18287     load_all = 1;
18288
18289   cu->partial_dies
18290     = htab_create_alloc_ex (cu->header.length / 12,
18291                             partial_die_hash,
18292                             partial_die_eq,
18293                             NULL,
18294                             &cu->comp_unit_obstack,
18295                             hashtab_obstack_allocate,
18296                             dummy_obstack_deallocate);
18297
18298   while (1)
18299     {
18300       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18301
18302       /* A NULL abbrev means the end of a series of children.  */
18303       if (abbrev == NULL)
18304         {
18305           if (--nesting_level == 0)
18306             return first_die;
18307
18308           info_ptr += bytes_read;
18309           last_die = parent_die;
18310           parent_die = parent_die->die_parent;
18311           continue;
18312         }
18313
18314       /* Check for template arguments.  We never save these; if
18315          they're seen, we just mark the parent, and go on our way.  */
18316       if (parent_die != NULL
18317           && cu->language == language_cplus
18318           && (abbrev->tag == DW_TAG_template_type_param
18319               || abbrev->tag == DW_TAG_template_value_param))
18320         {
18321           parent_die->has_template_arguments = 1;
18322
18323           if (!load_all)
18324             {
18325               /* We don't need a partial DIE for the template argument.  */
18326               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18327               continue;
18328             }
18329         }
18330
18331       /* We only recurse into c++ subprograms looking for template arguments.
18332          Skip their other children.  */
18333       if (!load_all
18334           && cu->language == language_cplus
18335           && parent_die != NULL
18336           && parent_die->tag == DW_TAG_subprogram)
18337         {
18338           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18339           continue;
18340         }
18341
18342       /* Check whether this DIE is interesting enough to save.  Normally
18343          we would not be interested in members here, but there may be
18344          later variables referencing them via DW_AT_specification (for
18345          static members).  */
18346       if (!load_all
18347           && !is_type_tag_for_partial (abbrev->tag)
18348           && abbrev->tag != DW_TAG_constant
18349           && abbrev->tag != DW_TAG_enumerator
18350           && abbrev->tag != DW_TAG_subprogram
18351           && abbrev->tag != DW_TAG_inlined_subroutine
18352           && abbrev->tag != DW_TAG_lexical_block
18353           && abbrev->tag != DW_TAG_variable
18354           && abbrev->tag != DW_TAG_namespace
18355           && abbrev->tag != DW_TAG_module
18356           && abbrev->tag != DW_TAG_member
18357           && abbrev->tag != DW_TAG_imported_unit
18358           && abbrev->tag != DW_TAG_imported_declaration)
18359         {
18360           /* Otherwise we skip to the next sibling, if any.  */
18361           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18362           continue;
18363         }
18364
18365       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18366                                    abbrev);
18367
18368       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18369
18370       /* This two-pass algorithm for processing partial symbols has a
18371          high cost in cache pressure.  Thus, handle some simple cases
18372          here which cover the majority of C partial symbols.  DIEs
18373          which neither have specification tags in them, nor could have
18374          specification tags elsewhere pointing at them, can simply be
18375          processed and discarded.
18376
18377          This segment is also optional; scan_partial_symbols and
18378          add_partial_symbol will handle these DIEs if we chain
18379          them in normally.  When compilers which do not emit large
18380          quantities of duplicate debug information are more common,
18381          this code can probably be removed.  */
18382
18383       /* Any complete simple types at the top level (pretty much all
18384          of them, for a language without namespaces), can be processed
18385          directly.  */
18386       if (parent_die == NULL
18387           && pdi.has_specification == 0
18388           && pdi.is_declaration == 0
18389           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18390               || pdi.tag == DW_TAG_base_type
18391               || pdi.tag == DW_TAG_subrange_type))
18392         {
18393           if (building_psymtab && pdi.name != NULL)
18394             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18395                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18396                                  &objfile->static_psymbols,
18397                                  0, cu->language, objfile);
18398           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18399           continue;
18400         }
18401
18402       /* The exception for DW_TAG_typedef with has_children above is
18403          a workaround of GCC PR debug/47510.  In the case of this complaint
18404          type_name_or_error will error on such types later.
18405
18406          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18407          it could not find the child DIEs referenced later, this is checked
18408          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18409
18410       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18411         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18412                      "- DIE at %s [in module %s]"),
18413                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18414
18415       /* If we're at the second level, and we're an enumerator, and
18416          our parent has no specification (meaning possibly lives in a
18417          namespace elsewhere), then we can add the partial symbol now
18418          instead of queueing it.  */
18419       if (pdi.tag == DW_TAG_enumerator
18420           && parent_die != NULL
18421           && parent_die->die_parent == NULL
18422           && parent_die->tag == DW_TAG_enumeration_type
18423           && parent_die->has_specification == 0)
18424         {
18425           if (pdi.name == NULL)
18426             complaint (_("malformed enumerator DIE ignored"));
18427           else if (building_psymtab)
18428             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18429                                  VAR_DOMAIN, LOC_CONST, -1,
18430                                  cu->language == language_cplus
18431                                  ? &objfile->global_psymbols
18432                                  : &objfile->static_psymbols,
18433                                  0, cu->language, objfile);
18434
18435           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18436           continue;
18437         }
18438
18439       struct partial_die_info *part_die
18440         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18441
18442       /* We'll save this DIE so link it in.  */
18443       part_die->die_parent = parent_die;
18444       part_die->die_sibling = NULL;
18445       part_die->die_child = NULL;
18446
18447       if (last_die && last_die == parent_die)
18448         last_die->die_child = part_die;
18449       else if (last_die)
18450         last_die->die_sibling = part_die;
18451
18452       last_die = part_die;
18453
18454       if (first_die == NULL)
18455         first_die = part_die;
18456
18457       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18458          find interesting need to be in the hash table, because we
18459          also have the parent/sibling/child chains; only those that we
18460          might refer to by offset later during partial symbol reading.
18461
18462          For now this means things that might have be the target of a
18463          DW_AT_specification, DW_AT_abstract_origin, or
18464          DW_AT_extension.  DW_AT_extension will refer only to
18465          namespaces; DW_AT_abstract_origin refers to functions (and
18466          many things under the function DIE, but we do not recurse
18467          into function DIEs during partial symbol reading) and
18468          possibly variables as well; DW_AT_specification refers to
18469          declarations.  Declarations ought to have the DW_AT_declaration
18470          flag.  It happens that GCC forgets to put it in sometimes, but
18471          only for functions, not for types.
18472
18473          Adding more things than necessary to the hash table is harmless
18474          except for the performance cost.  Adding too few will result in
18475          wasted time in find_partial_die, when we reread the compilation
18476          unit with load_all_dies set.  */
18477
18478       if (load_all
18479           || abbrev->tag == DW_TAG_constant
18480           || abbrev->tag == DW_TAG_subprogram
18481           || abbrev->tag == DW_TAG_variable
18482           || abbrev->tag == DW_TAG_namespace
18483           || part_die->is_declaration)
18484         {
18485           void **slot;
18486
18487           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18488                                            to_underlying (part_die->sect_off),
18489                                            INSERT);
18490           *slot = part_die;
18491         }
18492
18493       /* For some DIEs we want to follow their children (if any).  For C
18494          we have no reason to follow the children of structures; for other
18495          languages we have to, so that we can get at method physnames
18496          to infer fully qualified class names, for DW_AT_specification,
18497          and for C++ template arguments.  For C++, we also look one level
18498          inside functions to find template arguments (if the name of the
18499          function does not already contain the template arguments).
18500
18501          For Ada, we need to scan the children of subprograms and lexical
18502          blocks as well because Ada allows the definition of nested
18503          entities that could be interesting for the debugger, such as
18504          nested subprograms for instance.  */
18505       if (last_die->has_children
18506           && (load_all
18507               || last_die->tag == DW_TAG_namespace
18508               || last_die->tag == DW_TAG_module
18509               || last_die->tag == DW_TAG_enumeration_type
18510               || (cu->language == language_cplus
18511                   && last_die->tag == DW_TAG_subprogram
18512                   && (last_die->name == NULL
18513                       || strchr (last_die->name, '<') == NULL))
18514               || (cu->language != language_c
18515                   && (last_die->tag == DW_TAG_class_type
18516                       || last_die->tag == DW_TAG_interface_type
18517                       || last_die->tag == DW_TAG_structure_type
18518                       || last_die->tag == DW_TAG_union_type))
18519               || (cu->language == language_ada
18520                   && (last_die->tag == DW_TAG_subprogram
18521                       || last_die->tag == DW_TAG_lexical_block))))
18522         {
18523           nesting_level++;
18524           parent_die = last_die;
18525           continue;
18526         }
18527
18528       /* Otherwise we skip to the next sibling, if any.  */
18529       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18530
18531       /* Back to the top, do it again.  */
18532     }
18533 }
18534
18535 partial_die_info::partial_die_info (sect_offset sect_off_,
18536                                     struct abbrev_info *abbrev)
18537   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18538 {
18539 }
18540
18541 /* Read a minimal amount of information into the minimal die structure.
18542    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18543
18544 const gdb_byte *
18545 partial_die_info::read (const struct die_reader_specs *reader,
18546                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18547 {
18548   struct dwarf2_cu *cu = reader->cu;
18549   struct dwarf2_per_objfile *dwarf2_per_objfile
18550     = cu->per_cu->dwarf2_per_objfile;
18551   unsigned int i;
18552   int has_low_pc_attr = 0;
18553   int has_high_pc_attr = 0;
18554   int high_pc_relative = 0;
18555
18556   for (i = 0; i < abbrev.num_attrs; ++i)
18557     {
18558       struct attribute attr;
18559
18560       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18561
18562       /* Store the data if it is of an attribute we want to keep in a
18563          partial symbol table.  */
18564       switch (attr.name)
18565         {
18566         case DW_AT_name:
18567           switch (tag)
18568             {
18569             case DW_TAG_compile_unit:
18570             case DW_TAG_partial_unit:
18571             case DW_TAG_type_unit:
18572               /* Compilation units have a DW_AT_name that is a filename, not
18573                  a source language identifier.  */
18574             case DW_TAG_enumeration_type:
18575             case DW_TAG_enumerator:
18576               /* These tags always have simple identifiers already; no need
18577                  to canonicalize them.  */
18578               name = DW_STRING (&attr);
18579               break;
18580             default:
18581               {
18582                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18583
18584                 name
18585                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18586                                               &objfile->per_bfd->storage_obstack);
18587               }
18588               break;
18589             }
18590           break;
18591         case DW_AT_linkage_name:
18592         case DW_AT_MIPS_linkage_name:
18593           /* Note that both forms of linkage name might appear.  We
18594              assume they will be the same, and we only store the last
18595              one we see.  */
18596           if (cu->language == language_ada)
18597             name = DW_STRING (&attr);
18598           linkage_name = DW_STRING (&attr);
18599           break;
18600         case DW_AT_low_pc:
18601           has_low_pc_attr = 1;
18602           lowpc = attr_value_as_address (&attr);
18603           break;
18604         case DW_AT_high_pc:
18605           has_high_pc_attr = 1;
18606           highpc = attr_value_as_address (&attr);
18607           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18608                 high_pc_relative = 1;
18609           break;
18610         case DW_AT_location:
18611           /* Support the .debug_loc offsets.  */
18612           if (attr_form_is_block (&attr))
18613             {
18614                d.locdesc = DW_BLOCK (&attr);
18615             }
18616           else if (attr_form_is_section_offset (&attr))
18617             {
18618               dwarf2_complex_location_expr_complaint ();
18619             }
18620           else
18621             {
18622               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18623                                                      "partial symbol information");
18624             }
18625           break;
18626         case DW_AT_external:
18627           is_external = DW_UNSND (&attr);
18628           break;
18629         case DW_AT_declaration:
18630           is_declaration = DW_UNSND (&attr);
18631           break;
18632         case DW_AT_type:
18633           has_type = 1;
18634           break;
18635         case DW_AT_abstract_origin:
18636         case DW_AT_specification:
18637         case DW_AT_extension:
18638           has_specification = 1;
18639           spec_offset = dwarf2_get_ref_die_offset (&attr);
18640           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18641                                    || cu->per_cu->is_dwz);
18642           break;
18643         case DW_AT_sibling:
18644           /* Ignore absolute siblings, they might point outside of
18645              the current compile unit.  */
18646           if (attr.form == DW_FORM_ref_addr)
18647             complaint (_("ignoring absolute DW_AT_sibling"));
18648           else
18649             {
18650               const gdb_byte *buffer = reader->buffer;
18651               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18652               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18653
18654               if (sibling_ptr < info_ptr)
18655                 complaint (_("DW_AT_sibling points backwards"));
18656               else if (sibling_ptr > reader->buffer_end)
18657                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18658               else
18659                 sibling = sibling_ptr;
18660             }
18661           break;
18662         case DW_AT_byte_size:
18663           has_byte_size = 1;
18664           break;
18665         case DW_AT_const_value:
18666           has_const_value = 1;
18667           break;
18668         case DW_AT_calling_convention:
18669           /* DWARF doesn't provide a way to identify a program's source-level
18670              entry point.  DW_AT_calling_convention attributes are only meant
18671              to describe functions' calling conventions.
18672
18673              However, because it's a necessary piece of information in
18674              Fortran, and before DWARF 4 DW_CC_program was the only
18675              piece of debugging information whose definition refers to
18676              a 'main program' at all, several compilers marked Fortran
18677              main programs with DW_CC_program --- even when those
18678              functions use the standard calling conventions.
18679
18680              Although DWARF now specifies a way to provide this
18681              information, we support this practice for backward
18682              compatibility.  */
18683           if (DW_UNSND (&attr) == DW_CC_program
18684               && cu->language == language_fortran)
18685             main_subprogram = 1;
18686           break;
18687         case DW_AT_inline:
18688           if (DW_UNSND (&attr) == DW_INL_inlined
18689               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18690             may_be_inlined = 1;
18691           break;
18692
18693         case DW_AT_import:
18694           if (tag == DW_TAG_imported_unit)
18695             {
18696               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18697               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18698                                   || cu->per_cu->is_dwz);
18699             }
18700           break;
18701
18702         case DW_AT_main_subprogram:
18703           main_subprogram = DW_UNSND (&attr);
18704           break;
18705
18706         default:
18707           break;
18708         }
18709     }
18710
18711   if (high_pc_relative)
18712     highpc += lowpc;
18713
18714   if (has_low_pc_attr && has_high_pc_attr)
18715     {
18716       /* When using the GNU linker, .gnu.linkonce. sections are used to
18717          eliminate duplicate copies of functions and vtables and such.
18718          The linker will arbitrarily choose one and discard the others.
18719          The AT_*_pc values for such functions refer to local labels in
18720          these sections.  If the section from that file was discarded, the
18721          labels are not in the output, so the relocs get a value of 0.
18722          If this is a discarded function, mark the pc bounds as invalid,
18723          so that GDB will ignore it.  */
18724       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18725         {
18726           struct objfile *objfile = dwarf2_per_objfile->objfile;
18727           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18728
18729           complaint (_("DW_AT_low_pc %s is zero "
18730                        "for DIE at %s [in module %s]"),
18731                      paddress (gdbarch, lowpc),
18732                      sect_offset_str (sect_off),
18733                      objfile_name (objfile));
18734         }
18735       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18736       else if (lowpc >= highpc)
18737         {
18738           struct objfile *objfile = dwarf2_per_objfile->objfile;
18739           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18740
18741           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18742                        "for DIE at %s [in module %s]"),
18743                      paddress (gdbarch, lowpc),
18744                      paddress (gdbarch, highpc),
18745                      sect_offset_str (sect_off),
18746                      objfile_name (objfile));
18747         }
18748       else
18749         has_pc_info = 1;
18750     }
18751
18752   return info_ptr;
18753 }
18754
18755 /* Find a cached partial DIE at OFFSET in CU.  */
18756
18757 struct partial_die_info *
18758 dwarf2_cu::find_partial_die (sect_offset sect_off)
18759 {
18760   struct partial_die_info *lookup_die = NULL;
18761   struct partial_die_info part_die (sect_off);
18762
18763   lookup_die = ((struct partial_die_info *)
18764                 htab_find_with_hash (partial_dies, &part_die,
18765                                      to_underlying (sect_off)));
18766
18767   return lookup_die;
18768 }
18769
18770 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18771    except in the case of .debug_types DIEs which do not reference
18772    outside their CU (they do however referencing other types via
18773    DW_FORM_ref_sig8).  */
18774
18775 static struct partial_die_info *
18776 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18777 {
18778   struct dwarf2_per_objfile *dwarf2_per_objfile
18779     = cu->per_cu->dwarf2_per_objfile;
18780   struct objfile *objfile = dwarf2_per_objfile->objfile;
18781   struct dwarf2_per_cu_data *per_cu = NULL;
18782   struct partial_die_info *pd = NULL;
18783
18784   if (offset_in_dwz == cu->per_cu->is_dwz
18785       && offset_in_cu_p (&cu->header, sect_off))
18786     {
18787       pd = cu->find_partial_die (sect_off);
18788       if (pd != NULL)
18789         return pd;
18790       /* We missed recording what we needed.
18791          Load all dies and try again.  */
18792       per_cu = cu->per_cu;
18793     }
18794   else
18795     {
18796       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18797       if (cu->per_cu->is_debug_types)
18798         {
18799           error (_("Dwarf Error: Type Unit at offset %s contains"
18800                    " external reference to offset %s [in module %s].\n"),
18801                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18802                  bfd_get_filename (objfile->obfd));
18803         }
18804       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18805                                                  dwarf2_per_objfile);
18806
18807       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18808         load_partial_comp_unit (per_cu);
18809
18810       per_cu->cu->last_used = 0;
18811       pd = per_cu->cu->find_partial_die (sect_off);
18812     }
18813
18814   /* If we didn't find it, and not all dies have been loaded,
18815      load them all and try again.  */
18816
18817   if (pd == NULL && per_cu->load_all_dies == 0)
18818     {
18819       per_cu->load_all_dies = 1;
18820
18821       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18822          THIS_CU->cu may already be in use.  So we can't just free it and
18823          replace its DIEs with the ones we read in.  Instead, we leave those
18824          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18825          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18826          set.  */
18827       load_partial_comp_unit (per_cu);
18828
18829       pd = per_cu->cu->find_partial_die (sect_off);
18830     }
18831
18832   if (pd == NULL)
18833     internal_error (__FILE__, __LINE__,
18834                     _("could not find partial DIE %s "
18835                       "in cache [from module %s]\n"),
18836                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18837   return pd;
18838 }
18839
18840 /* See if we can figure out if the class lives in a namespace.  We do
18841    this by looking for a member function; its demangled name will
18842    contain namespace info, if there is any.  */
18843
18844 static void
18845 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18846                                   struct dwarf2_cu *cu)
18847 {
18848   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18849      what template types look like, because the demangler
18850      frequently doesn't give the same name as the debug info.  We
18851      could fix this by only using the demangled name to get the
18852      prefix (but see comment in read_structure_type).  */
18853
18854   struct partial_die_info *real_pdi;
18855   struct partial_die_info *child_pdi;
18856
18857   /* If this DIE (this DIE's specification, if any) has a parent, then
18858      we should not do this.  We'll prepend the parent's fully qualified
18859      name when we create the partial symbol.  */
18860
18861   real_pdi = struct_pdi;
18862   while (real_pdi->has_specification)
18863     real_pdi = find_partial_die (real_pdi->spec_offset,
18864                                  real_pdi->spec_is_dwz, cu);
18865
18866   if (real_pdi->die_parent != NULL)
18867     return;
18868
18869   for (child_pdi = struct_pdi->die_child;
18870        child_pdi != NULL;
18871        child_pdi = child_pdi->die_sibling)
18872     {
18873       if (child_pdi->tag == DW_TAG_subprogram
18874           && child_pdi->linkage_name != NULL)
18875         {
18876           char *actual_class_name
18877             = language_class_name_from_physname (cu->language_defn,
18878                                                  child_pdi->linkage_name);
18879           if (actual_class_name != NULL)
18880             {
18881               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18882               struct_pdi->name
18883                 = ((const char *)
18884                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18885                                   actual_class_name,
18886                                   strlen (actual_class_name)));
18887               xfree (actual_class_name);
18888             }
18889           break;
18890         }
18891     }
18892 }
18893
18894 void
18895 partial_die_info::fixup (struct dwarf2_cu *cu)
18896 {
18897   /* Once we've fixed up a die, there's no point in doing so again.
18898      This also avoids a memory leak if we were to call
18899      guess_partial_die_structure_name multiple times.  */
18900   if (fixup_called)
18901     return;
18902
18903   /* If we found a reference attribute and the DIE has no name, try
18904      to find a name in the referred to DIE.  */
18905
18906   if (name == NULL && has_specification)
18907     {
18908       struct partial_die_info *spec_die;
18909
18910       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18911
18912       spec_die->fixup (cu);
18913
18914       if (spec_die->name)
18915         {
18916           name = spec_die->name;
18917
18918           /* Copy DW_AT_external attribute if it is set.  */
18919           if (spec_die->is_external)
18920             is_external = spec_die->is_external;
18921         }
18922     }
18923
18924   /* Set default names for some unnamed DIEs.  */
18925
18926   if (name == NULL && tag == DW_TAG_namespace)
18927     name = CP_ANONYMOUS_NAMESPACE_STR;
18928
18929   /* If there is no parent die to provide a namespace, and there are
18930      children, see if we can determine the namespace from their linkage
18931      name.  */
18932   if (cu->language == language_cplus
18933       && !VEC_empty (dwarf2_section_info_def,
18934                      cu->per_cu->dwarf2_per_objfile->types)
18935       && die_parent == NULL
18936       && has_children
18937       && (tag == DW_TAG_class_type
18938           || tag == DW_TAG_structure_type
18939           || tag == DW_TAG_union_type))
18940     guess_partial_die_structure_name (this, cu);
18941
18942   /* GCC might emit a nameless struct or union that has a linkage
18943      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18944   if (name == NULL
18945       && (tag == DW_TAG_class_type
18946           || tag == DW_TAG_interface_type
18947           || tag == DW_TAG_structure_type
18948           || tag == DW_TAG_union_type)
18949       && linkage_name != NULL)
18950     {
18951       char *demangled;
18952
18953       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18954       if (demangled)
18955         {
18956           const char *base;
18957
18958           /* Strip any leading namespaces/classes, keep only the base name.
18959              DW_AT_name for named DIEs does not contain the prefixes.  */
18960           base = strrchr (demangled, ':');
18961           if (base && base > demangled && base[-1] == ':')
18962             base++;
18963           else
18964             base = demangled;
18965
18966           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18967           name
18968             = ((const char *)
18969                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18970                               base, strlen (base)));
18971           xfree (demangled);
18972         }
18973     }
18974
18975   fixup_called = 1;
18976 }
18977
18978 /* Read an attribute value described by an attribute form.  */
18979
18980 static const gdb_byte *
18981 read_attribute_value (const struct die_reader_specs *reader,
18982                       struct attribute *attr, unsigned form,
18983                       LONGEST implicit_const, const gdb_byte *info_ptr)
18984 {
18985   struct dwarf2_cu *cu = reader->cu;
18986   struct dwarf2_per_objfile *dwarf2_per_objfile
18987     = cu->per_cu->dwarf2_per_objfile;
18988   struct objfile *objfile = dwarf2_per_objfile->objfile;
18989   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18990   bfd *abfd = reader->abfd;
18991   struct comp_unit_head *cu_header = &cu->header;
18992   unsigned int bytes_read;
18993   struct dwarf_block *blk;
18994
18995   attr->form = (enum dwarf_form) form;
18996   switch (form)
18997     {
18998     case DW_FORM_ref_addr:
18999       if (cu->header.version == 2)
19000         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19001       else
19002         DW_UNSND (attr) = read_offset (abfd, info_ptr,
19003                                        &cu->header, &bytes_read);
19004       info_ptr += bytes_read;
19005       break;
19006     case DW_FORM_GNU_ref_alt:
19007       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19008       info_ptr += bytes_read;
19009       break;
19010     case DW_FORM_addr:
19011       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
19012       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
19013       info_ptr += bytes_read;
19014       break;
19015     case DW_FORM_block2:
19016       blk = dwarf_alloc_block (cu);
19017       blk->size = read_2_bytes (abfd, info_ptr);
19018       info_ptr += 2;
19019       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19020       info_ptr += blk->size;
19021       DW_BLOCK (attr) = blk;
19022       break;
19023     case DW_FORM_block4:
19024       blk = dwarf_alloc_block (cu);
19025       blk->size = read_4_bytes (abfd, info_ptr);
19026       info_ptr += 4;
19027       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19028       info_ptr += blk->size;
19029       DW_BLOCK (attr) = blk;
19030       break;
19031     case DW_FORM_data2:
19032       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19033       info_ptr += 2;
19034       break;
19035     case DW_FORM_data4:
19036       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19037       info_ptr += 4;
19038       break;
19039     case DW_FORM_data8:
19040       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19041       info_ptr += 8;
19042       break;
19043     case DW_FORM_data16:
19044       blk = dwarf_alloc_block (cu);
19045       blk->size = 16;
19046       blk->data = read_n_bytes (abfd, info_ptr, 16);
19047       info_ptr += 16;
19048       DW_BLOCK (attr) = blk;
19049       break;
19050     case DW_FORM_sec_offset:
19051       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19052       info_ptr += bytes_read;
19053       break;
19054     case DW_FORM_string:
19055       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19056       DW_STRING_IS_CANONICAL (attr) = 0;
19057       info_ptr += bytes_read;
19058       break;
19059     case DW_FORM_strp:
19060       if (!cu->per_cu->is_dwz)
19061         {
19062           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19063                                                    abfd, info_ptr, cu_header,
19064                                                    &bytes_read);
19065           DW_STRING_IS_CANONICAL (attr) = 0;
19066           info_ptr += bytes_read;
19067           break;
19068         }
19069       /* FALLTHROUGH */
19070     case DW_FORM_line_strp:
19071       if (!cu->per_cu->is_dwz)
19072         {
19073           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19074                                                         abfd, info_ptr,
19075                                                         cu_header, &bytes_read);
19076           DW_STRING_IS_CANONICAL (attr) = 0;
19077           info_ptr += bytes_read;
19078           break;
19079         }
19080       /* FALLTHROUGH */
19081     case DW_FORM_GNU_strp_alt:
19082       {
19083         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19084         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19085                                           &bytes_read);
19086
19087         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19088                                                           dwz, str_offset);
19089         DW_STRING_IS_CANONICAL (attr) = 0;
19090         info_ptr += bytes_read;
19091       }
19092       break;
19093     case DW_FORM_exprloc:
19094     case DW_FORM_block:
19095       blk = dwarf_alloc_block (cu);
19096       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19097       info_ptr += bytes_read;
19098       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19099       info_ptr += blk->size;
19100       DW_BLOCK (attr) = blk;
19101       break;
19102     case DW_FORM_block1:
19103       blk = dwarf_alloc_block (cu);
19104       blk->size = read_1_byte (abfd, info_ptr);
19105       info_ptr += 1;
19106       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19107       info_ptr += blk->size;
19108       DW_BLOCK (attr) = blk;
19109       break;
19110     case DW_FORM_data1:
19111       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19112       info_ptr += 1;
19113       break;
19114     case DW_FORM_flag:
19115       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19116       info_ptr += 1;
19117       break;
19118     case DW_FORM_flag_present:
19119       DW_UNSND (attr) = 1;
19120       break;
19121     case DW_FORM_sdata:
19122       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19123       info_ptr += bytes_read;
19124       break;
19125     case DW_FORM_udata:
19126       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19127       info_ptr += bytes_read;
19128       break;
19129     case DW_FORM_ref1:
19130       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19131                          + read_1_byte (abfd, info_ptr));
19132       info_ptr += 1;
19133       break;
19134     case DW_FORM_ref2:
19135       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19136                          + read_2_bytes (abfd, info_ptr));
19137       info_ptr += 2;
19138       break;
19139     case DW_FORM_ref4:
19140       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19141                          + read_4_bytes (abfd, info_ptr));
19142       info_ptr += 4;
19143       break;
19144     case DW_FORM_ref8:
19145       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19146                          + read_8_bytes (abfd, info_ptr));
19147       info_ptr += 8;
19148       break;
19149     case DW_FORM_ref_sig8:
19150       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19151       info_ptr += 8;
19152       break;
19153     case DW_FORM_ref_udata:
19154       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19155                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19156       info_ptr += bytes_read;
19157       break;
19158     case DW_FORM_indirect:
19159       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19160       info_ptr += bytes_read;
19161       if (form == DW_FORM_implicit_const)
19162         {
19163           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19164           info_ptr += bytes_read;
19165         }
19166       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19167                                        info_ptr);
19168       break;
19169     case DW_FORM_implicit_const:
19170       DW_SND (attr) = implicit_const;
19171       break;
19172     case DW_FORM_GNU_addr_index:
19173       if (reader->dwo_file == NULL)
19174         {
19175           /* For now flag a hard error.
19176              Later we can turn this into a complaint.  */
19177           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19178                  dwarf_form_name (form),
19179                  bfd_get_filename (abfd));
19180         }
19181       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19182       info_ptr += bytes_read;
19183       break;
19184     case DW_FORM_GNU_str_index:
19185       if (reader->dwo_file == NULL)
19186         {
19187           /* For now flag a hard error.
19188              Later we can turn this into a complaint if warranted.  */
19189           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19190                  dwarf_form_name (form),
19191                  bfd_get_filename (abfd));
19192         }
19193       {
19194         ULONGEST str_index =
19195           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19196
19197         DW_STRING (attr) = read_str_index (reader, str_index);
19198         DW_STRING_IS_CANONICAL (attr) = 0;
19199         info_ptr += bytes_read;
19200       }
19201       break;
19202     default:
19203       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19204              dwarf_form_name (form),
19205              bfd_get_filename (abfd));
19206     }
19207
19208   /* Super hack.  */
19209   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19210     attr->form = DW_FORM_GNU_ref_alt;
19211
19212   /* We have seen instances where the compiler tried to emit a byte
19213      size attribute of -1 which ended up being encoded as an unsigned
19214      0xffffffff.  Although 0xffffffff is technically a valid size value,
19215      an object of this size seems pretty unlikely so we can relatively
19216      safely treat these cases as if the size attribute was invalid and
19217      treat them as zero by default.  */
19218   if (attr->name == DW_AT_byte_size
19219       && form == DW_FORM_data4
19220       && DW_UNSND (attr) >= 0xffffffff)
19221     {
19222       complaint
19223         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19224          hex_string (DW_UNSND (attr)));
19225       DW_UNSND (attr) = 0;
19226     }
19227
19228   return info_ptr;
19229 }
19230
19231 /* Read an attribute described by an abbreviated attribute.  */
19232
19233 static const gdb_byte *
19234 read_attribute (const struct die_reader_specs *reader,
19235                 struct attribute *attr, struct attr_abbrev *abbrev,
19236                 const gdb_byte *info_ptr)
19237 {
19238   attr->name = abbrev->name;
19239   return read_attribute_value (reader, attr, abbrev->form,
19240                                abbrev->implicit_const, info_ptr);
19241 }
19242
19243 /* Read dwarf information from a buffer.  */
19244
19245 static unsigned int
19246 read_1_byte (bfd *abfd, const gdb_byte *buf)
19247 {
19248   return bfd_get_8 (abfd, buf);
19249 }
19250
19251 static int
19252 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19253 {
19254   return bfd_get_signed_8 (abfd, buf);
19255 }
19256
19257 static unsigned int
19258 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19259 {
19260   return bfd_get_16 (abfd, buf);
19261 }
19262
19263 static int
19264 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19265 {
19266   return bfd_get_signed_16 (abfd, buf);
19267 }
19268
19269 static unsigned int
19270 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19271 {
19272   return bfd_get_32 (abfd, buf);
19273 }
19274
19275 static int
19276 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19277 {
19278   return bfd_get_signed_32 (abfd, buf);
19279 }
19280
19281 static ULONGEST
19282 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19283 {
19284   return bfd_get_64 (abfd, buf);
19285 }
19286
19287 static CORE_ADDR
19288 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19289               unsigned int *bytes_read)
19290 {
19291   struct comp_unit_head *cu_header = &cu->header;
19292   CORE_ADDR retval = 0;
19293
19294   if (cu_header->signed_addr_p)
19295     {
19296       switch (cu_header->addr_size)
19297         {
19298         case 2:
19299           retval = bfd_get_signed_16 (abfd, buf);
19300           break;
19301         case 4:
19302           retval = bfd_get_signed_32 (abfd, buf);
19303           break;
19304         case 8:
19305           retval = bfd_get_signed_64 (abfd, buf);
19306           break;
19307         default:
19308           internal_error (__FILE__, __LINE__,
19309                           _("read_address: bad switch, signed [in module %s]"),
19310                           bfd_get_filename (abfd));
19311         }
19312     }
19313   else
19314     {
19315       switch (cu_header->addr_size)
19316         {
19317         case 2:
19318           retval = bfd_get_16 (abfd, buf);
19319           break;
19320         case 4:
19321           retval = bfd_get_32 (abfd, buf);
19322           break;
19323         case 8:
19324           retval = bfd_get_64 (abfd, buf);
19325           break;
19326         default:
19327           internal_error (__FILE__, __LINE__,
19328                           _("read_address: bad switch, "
19329                             "unsigned [in module %s]"),
19330                           bfd_get_filename (abfd));
19331         }
19332     }
19333
19334   *bytes_read = cu_header->addr_size;
19335   return retval;
19336 }
19337
19338 /* Read the initial length from a section.  The (draft) DWARF 3
19339    specification allows the initial length to take up either 4 bytes
19340    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19341    bytes describe the length and all offsets will be 8 bytes in length
19342    instead of 4.
19343
19344    An older, non-standard 64-bit format is also handled by this
19345    function.  The older format in question stores the initial length
19346    as an 8-byte quantity without an escape value.  Lengths greater
19347    than 2^32 aren't very common which means that the initial 4 bytes
19348    is almost always zero.  Since a length value of zero doesn't make
19349    sense for the 32-bit format, this initial zero can be considered to
19350    be an escape value which indicates the presence of the older 64-bit
19351    format.  As written, the code can't detect (old format) lengths
19352    greater than 4GB.  If it becomes necessary to handle lengths
19353    somewhat larger than 4GB, we could allow other small values (such
19354    as the non-sensical values of 1, 2, and 3) to also be used as
19355    escape values indicating the presence of the old format.
19356
19357    The value returned via bytes_read should be used to increment the
19358    relevant pointer after calling read_initial_length().
19359
19360    [ Note:  read_initial_length() and read_offset() are based on the
19361      document entitled "DWARF Debugging Information Format", revision
19362      3, draft 8, dated November 19, 2001.  This document was obtained
19363      from:
19364
19365         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19366
19367      This document is only a draft and is subject to change.  (So beware.)
19368
19369      Details regarding the older, non-standard 64-bit format were
19370      determined empirically by examining 64-bit ELF files produced by
19371      the SGI toolchain on an IRIX 6.5 machine.
19372
19373      - Kevin, July 16, 2002
19374    ] */
19375
19376 static LONGEST
19377 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19378 {
19379   LONGEST length = bfd_get_32 (abfd, buf);
19380
19381   if (length == 0xffffffff)
19382     {
19383       length = bfd_get_64 (abfd, buf + 4);
19384       *bytes_read = 12;
19385     }
19386   else if (length == 0)
19387     {
19388       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19389       length = bfd_get_64 (abfd, buf);
19390       *bytes_read = 8;
19391     }
19392   else
19393     {
19394       *bytes_read = 4;
19395     }
19396
19397   return length;
19398 }
19399
19400 /* Cover function for read_initial_length.
19401    Returns the length of the object at BUF, and stores the size of the
19402    initial length in *BYTES_READ and stores the size that offsets will be in
19403    *OFFSET_SIZE.
19404    If the initial length size is not equivalent to that specified in
19405    CU_HEADER then issue a complaint.
19406    This is useful when reading non-comp-unit headers.  */
19407
19408 static LONGEST
19409 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19410                                         const struct comp_unit_head *cu_header,
19411                                         unsigned int *bytes_read,
19412                                         unsigned int *offset_size)
19413 {
19414   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19415
19416   gdb_assert (cu_header->initial_length_size == 4
19417               || cu_header->initial_length_size == 8
19418               || cu_header->initial_length_size == 12);
19419
19420   if (cu_header->initial_length_size != *bytes_read)
19421     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19422
19423   *offset_size = (*bytes_read == 4) ? 4 : 8;
19424   return length;
19425 }
19426
19427 /* Read an offset from the data stream.  The size of the offset is
19428    given by cu_header->offset_size.  */
19429
19430 static LONGEST
19431 read_offset (bfd *abfd, const gdb_byte *buf,
19432              const struct comp_unit_head *cu_header,
19433              unsigned int *bytes_read)
19434 {
19435   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19436
19437   *bytes_read = cu_header->offset_size;
19438   return offset;
19439 }
19440
19441 /* Read an offset from the data stream.  */
19442
19443 static LONGEST
19444 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19445 {
19446   LONGEST retval = 0;
19447
19448   switch (offset_size)
19449     {
19450     case 4:
19451       retval = bfd_get_32 (abfd, buf);
19452       break;
19453     case 8:
19454       retval = bfd_get_64 (abfd, buf);
19455       break;
19456     default:
19457       internal_error (__FILE__, __LINE__,
19458                       _("read_offset_1: bad switch [in module %s]"),
19459                       bfd_get_filename (abfd));
19460     }
19461
19462   return retval;
19463 }
19464
19465 static const gdb_byte *
19466 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19467 {
19468   /* If the size of a host char is 8 bits, we can return a pointer
19469      to the buffer, otherwise we have to copy the data to a buffer
19470      allocated on the temporary obstack.  */
19471   gdb_assert (HOST_CHAR_BIT == 8);
19472   return buf;
19473 }
19474
19475 static const char *
19476 read_direct_string (bfd *abfd, const gdb_byte *buf,
19477                     unsigned int *bytes_read_ptr)
19478 {
19479   /* If the size of a host char is 8 bits, we can return a pointer
19480      to the string, otherwise we have to copy the string to a buffer
19481      allocated on the temporary obstack.  */
19482   gdb_assert (HOST_CHAR_BIT == 8);
19483   if (*buf == '\0')
19484     {
19485       *bytes_read_ptr = 1;
19486       return NULL;
19487     }
19488   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19489   return (const char *) buf;
19490 }
19491
19492 /* Return pointer to string at section SECT offset STR_OFFSET with error
19493    reporting strings FORM_NAME and SECT_NAME.  */
19494
19495 static const char *
19496 read_indirect_string_at_offset_from (struct objfile *objfile,
19497                                      bfd *abfd, LONGEST str_offset,
19498                                      struct dwarf2_section_info *sect,
19499                                      const char *form_name,
19500                                      const char *sect_name)
19501 {
19502   dwarf2_read_section (objfile, sect);
19503   if (sect->buffer == NULL)
19504     error (_("%s used without %s section [in module %s]"),
19505            form_name, sect_name, bfd_get_filename (abfd));
19506   if (str_offset >= sect->size)
19507     error (_("%s pointing outside of %s section [in module %s]"),
19508            form_name, sect_name, bfd_get_filename (abfd));
19509   gdb_assert (HOST_CHAR_BIT == 8);
19510   if (sect->buffer[str_offset] == '\0')
19511     return NULL;
19512   return (const char *) (sect->buffer + str_offset);
19513 }
19514
19515 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19516
19517 static const char *
19518 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19519                                 bfd *abfd, LONGEST str_offset)
19520 {
19521   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19522                                               abfd, str_offset,
19523                                               &dwarf2_per_objfile->str,
19524                                               "DW_FORM_strp", ".debug_str");
19525 }
19526
19527 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19528
19529 static const char *
19530 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19531                                      bfd *abfd, LONGEST str_offset)
19532 {
19533   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19534                                               abfd, str_offset,
19535                                               &dwarf2_per_objfile->line_str,
19536                                               "DW_FORM_line_strp",
19537                                               ".debug_line_str");
19538 }
19539
19540 /* Read a string at offset STR_OFFSET in the .debug_str section from
19541    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19542    the string consists of a single NUL byte, return NULL; otherwise
19543    return a pointer to the string.  */
19544
19545 static const char *
19546 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19547                                LONGEST str_offset)
19548 {
19549   dwarf2_read_section (objfile, &dwz->str);
19550
19551   if (dwz->str.buffer == NULL)
19552     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19553              "section [in module %s]"),
19554            bfd_get_filename (dwz->dwz_bfd));
19555   if (str_offset >= dwz->str.size)
19556     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19557              ".debug_str section [in module %s]"),
19558            bfd_get_filename (dwz->dwz_bfd));
19559   gdb_assert (HOST_CHAR_BIT == 8);
19560   if (dwz->str.buffer[str_offset] == '\0')
19561     return NULL;
19562   return (const char *) (dwz->str.buffer + str_offset);
19563 }
19564
19565 /* Return pointer to string at .debug_str offset as read from BUF.
19566    BUF is assumed to be in a compilation unit described by CU_HEADER.
19567    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19568
19569 static const char *
19570 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19571                       const gdb_byte *buf,
19572                       const struct comp_unit_head *cu_header,
19573                       unsigned int *bytes_read_ptr)
19574 {
19575   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19576
19577   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19578 }
19579
19580 /* Return pointer to string at .debug_line_str offset as read from BUF.
19581    BUF is assumed to be in a compilation unit described by CU_HEADER.
19582    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19583
19584 static const char *
19585 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19586                            bfd *abfd, const gdb_byte *buf,
19587                            const struct comp_unit_head *cu_header,
19588                            unsigned int *bytes_read_ptr)
19589 {
19590   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19591
19592   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19593                                               str_offset);
19594 }
19595
19596 ULONGEST
19597 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19598                           unsigned int *bytes_read_ptr)
19599 {
19600   ULONGEST result;
19601   unsigned int num_read;
19602   int shift;
19603   unsigned char byte;
19604
19605   result = 0;
19606   shift = 0;
19607   num_read = 0;
19608   while (1)
19609     {
19610       byte = bfd_get_8 (abfd, buf);
19611       buf++;
19612       num_read++;
19613       result |= ((ULONGEST) (byte & 127) << shift);
19614       if ((byte & 128) == 0)
19615         {
19616           break;
19617         }
19618       shift += 7;
19619     }
19620   *bytes_read_ptr = num_read;
19621   return result;
19622 }
19623
19624 static LONGEST
19625 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19626                     unsigned int *bytes_read_ptr)
19627 {
19628   ULONGEST result;
19629   int shift, num_read;
19630   unsigned char byte;
19631
19632   result = 0;
19633   shift = 0;
19634   num_read = 0;
19635   while (1)
19636     {
19637       byte = bfd_get_8 (abfd, buf);
19638       buf++;
19639       num_read++;
19640       result |= ((ULONGEST) (byte & 127) << shift);
19641       shift += 7;
19642       if ((byte & 128) == 0)
19643         {
19644           break;
19645         }
19646     }
19647   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19648     result |= -(((ULONGEST) 1) << shift);
19649   *bytes_read_ptr = num_read;
19650   return result;
19651 }
19652
19653 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19654    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19655    ADDR_SIZE is the size of addresses from the CU header.  */
19656
19657 static CORE_ADDR
19658 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19659                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19660 {
19661   struct objfile *objfile = dwarf2_per_objfile->objfile;
19662   bfd *abfd = objfile->obfd;
19663   const gdb_byte *info_ptr;
19664
19665   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19666   if (dwarf2_per_objfile->addr.buffer == NULL)
19667     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19668            objfile_name (objfile));
19669   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19670     error (_("DW_FORM_addr_index pointing outside of "
19671              ".debug_addr section [in module %s]"),
19672            objfile_name (objfile));
19673   info_ptr = (dwarf2_per_objfile->addr.buffer
19674               + addr_base + addr_index * addr_size);
19675   if (addr_size == 4)
19676     return bfd_get_32 (abfd, info_ptr);
19677   else
19678     return bfd_get_64 (abfd, info_ptr);
19679 }
19680
19681 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19682
19683 static CORE_ADDR
19684 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19685 {
19686   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19687                             cu->addr_base, cu->header.addr_size);
19688 }
19689
19690 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19691
19692 static CORE_ADDR
19693 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19694                              unsigned int *bytes_read)
19695 {
19696   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19697   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19698
19699   return read_addr_index (cu, addr_index);
19700 }
19701
19702 /* Data structure to pass results from dwarf2_read_addr_index_reader
19703    back to dwarf2_read_addr_index.  */
19704
19705 struct dwarf2_read_addr_index_data
19706 {
19707   ULONGEST addr_base;
19708   int addr_size;
19709 };
19710
19711 /* die_reader_func for dwarf2_read_addr_index.  */
19712
19713 static void
19714 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19715                                const gdb_byte *info_ptr,
19716                                struct die_info *comp_unit_die,
19717                                int has_children,
19718                                void *data)
19719 {
19720   struct dwarf2_cu *cu = reader->cu;
19721   struct dwarf2_read_addr_index_data *aidata =
19722     (struct dwarf2_read_addr_index_data *) data;
19723
19724   aidata->addr_base = cu->addr_base;
19725   aidata->addr_size = cu->header.addr_size;
19726 }
19727
19728 /* Given an index in .debug_addr, fetch the value.
19729    NOTE: This can be called during dwarf expression evaluation,
19730    long after the debug information has been read, and thus per_cu->cu
19731    may no longer exist.  */
19732
19733 CORE_ADDR
19734 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19735                         unsigned int addr_index)
19736 {
19737   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19738   struct dwarf2_cu *cu = per_cu->cu;
19739   ULONGEST addr_base;
19740   int addr_size;
19741
19742   /* We need addr_base and addr_size.
19743      If we don't have PER_CU->cu, we have to get it.
19744      Nasty, but the alternative is storing the needed info in PER_CU,
19745      which at this point doesn't seem justified: it's not clear how frequently
19746      it would get used and it would increase the size of every PER_CU.
19747      Entry points like dwarf2_per_cu_addr_size do a similar thing
19748      so we're not in uncharted territory here.
19749      Alas we need to be a bit more complicated as addr_base is contained
19750      in the DIE.
19751
19752      We don't need to read the entire CU(/TU).
19753      We just need the header and top level die.
19754
19755      IWBN to use the aging mechanism to let us lazily later discard the CU.
19756      For now we skip this optimization.  */
19757
19758   if (cu != NULL)
19759     {
19760       addr_base = cu->addr_base;
19761       addr_size = cu->header.addr_size;
19762     }
19763   else
19764     {
19765       struct dwarf2_read_addr_index_data aidata;
19766
19767       /* Note: We can't use init_cutu_and_read_dies_simple here,
19768          we need addr_base.  */
19769       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19770                                dwarf2_read_addr_index_reader, &aidata);
19771       addr_base = aidata.addr_base;
19772       addr_size = aidata.addr_size;
19773     }
19774
19775   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19776                             addr_size);
19777 }
19778
19779 /* Given a DW_FORM_GNU_str_index, fetch the string.
19780    This is only used by the Fission support.  */
19781
19782 static const char *
19783 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19784 {
19785   struct dwarf2_cu *cu = reader->cu;
19786   struct dwarf2_per_objfile *dwarf2_per_objfile
19787     = cu->per_cu->dwarf2_per_objfile;
19788   struct objfile *objfile = dwarf2_per_objfile->objfile;
19789   const char *objf_name = objfile_name (objfile);
19790   bfd *abfd = objfile->obfd;
19791   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19792   struct dwarf2_section_info *str_offsets_section =
19793     &reader->dwo_file->sections.str_offsets;
19794   const gdb_byte *info_ptr;
19795   ULONGEST str_offset;
19796   static const char form_name[] = "DW_FORM_GNU_str_index";
19797
19798   dwarf2_read_section (objfile, str_section);
19799   dwarf2_read_section (objfile, str_offsets_section);
19800   if (str_section->buffer == NULL)
19801     error (_("%s used without .debug_str.dwo section"
19802              " in CU at offset %s [in module %s]"),
19803            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19804   if (str_offsets_section->buffer == NULL)
19805     error (_("%s used without .debug_str_offsets.dwo section"
19806              " in CU at offset %s [in module %s]"),
19807            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19808   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19809     error (_("%s pointing outside of .debug_str_offsets.dwo"
19810              " section in CU at offset %s [in module %s]"),
19811            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19812   info_ptr = (str_offsets_section->buffer
19813               + str_index * cu->header.offset_size);
19814   if (cu->header.offset_size == 4)
19815     str_offset = bfd_get_32 (abfd, info_ptr);
19816   else
19817     str_offset = bfd_get_64 (abfd, info_ptr);
19818   if (str_offset >= str_section->size)
19819     error (_("Offset from %s pointing outside of"
19820              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19821            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19822   return (const char *) (str_section->buffer + str_offset);
19823 }
19824
19825 /* Return the length of an LEB128 number in BUF.  */
19826
19827 static int
19828 leb128_size (const gdb_byte *buf)
19829 {
19830   const gdb_byte *begin = buf;
19831   gdb_byte byte;
19832
19833   while (1)
19834     {
19835       byte = *buf++;
19836       if ((byte & 128) == 0)
19837         return buf - begin;
19838     }
19839 }
19840
19841 static void
19842 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19843 {
19844   switch (lang)
19845     {
19846     case DW_LANG_C89:
19847     case DW_LANG_C99:
19848     case DW_LANG_C11:
19849     case DW_LANG_C:
19850     case DW_LANG_UPC:
19851       cu->language = language_c;
19852       break;
19853     case DW_LANG_Java:
19854     case DW_LANG_C_plus_plus:
19855     case DW_LANG_C_plus_plus_11:
19856     case DW_LANG_C_plus_plus_14:
19857       cu->language = language_cplus;
19858       break;
19859     case DW_LANG_D:
19860       cu->language = language_d;
19861       break;
19862     case DW_LANG_Fortran77:
19863     case DW_LANG_Fortran90:
19864     case DW_LANG_Fortran95:
19865     case DW_LANG_Fortran03:
19866     case DW_LANG_Fortran08:
19867       cu->language = language_fortran;
19868       break;
19869     case DW_LANG_Go:
19870       cu->language = language_go;
19871       break;
19872     case DW_LANG_Mips_Assembler:
19873       cu->language = language_asm;
19874       break;
19875     case DW_LANG_Ada83:
19876     case DW_LANG_Ada95:
19877       cu->language = language_ada;
19878       break;
19879     case DW_LANG_Modula2:
19880       cu->language = language_m2;
19881       break;
19882     case DW_LANG_Pascal83:
19883       cu->language = language_pascal;
19884       break;
19885     case DW_LANG_ObjC:
19886       cu->language = language_objc;
19887       break;
19888     case DW_LANG_Rust:
19889     case DW_LANG_Rust_old:
19890       cu->language = language_rust;
19891       break;
19892     case DW_LANG_Cobol74:
19893     case DW_LANG_Cobol85:
19894     default:
19895       cu->language = language_minimal;
19896       break;
19897     }
19898   cu->language_defn = language_def (cu->language);
19899 }
19900
19901 /* Return the named attribute or NULL if not there.  */
19902
19903 static struct attribute *
19904 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19905 {
19906   for (;;)
19907     {
19908       unsigned int i;
19909       struct attribute *spec = NULL;
19910
19911       for (i = 0; i < die->num_attrs; ++i)
19912         {
19913           if (die->attrs[i].name == name)
19914             return &die->attrs[i];
19915           if (die->attrs[i].name == DW_AT_specification
19916               || die->attrs[i].name == DW_AT_abstract_origin)
19917             spec = &die->attrs[i];
19918         }
19919
19920       if (!spec)
19921         break;
19922
19923       die = follow_die_ref (die, spec, &cu);
19924     }
19925
19926   return NULL;
19927 }
19928
19929 /* Return the named attribute or NULL if not there,
19930    but do not follow DW_AT_specification, etc.
19931    This is for use in contexts where we're reading .debug_types dies.
19932    Following DW_AT_specification, DW_AT_abstract_origin will take us
19933    back up the chain, and we want to go down.  */
19934
19935 static struct attribute *
19936 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19937 {
19938   unsigned int i;
19939
19940   for (i = 0; i < die->num_attrs; ++i)
19941     if (die->attrs[i].name == name)
19942       return &die->attrs[i];
19943
19944   return NULL;
19945 }
19946
19947 /* Return the string associated with a string-typed attribute, or NULL if it
19948    is either not found or is of an incorrect type.  */
19949
19950 static const char *
19951 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19952 {
19953   struct attribute *attr;
19954   const char *str = NULL;
19955
19956   attr = dwarf2_attr (die, name, cu);
19957
19958   if (attr != NULL)
19959     {
19960       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19961           || attr->form == DW_FORM_string
19962           || attr->form == DW_FORM_GNU_str_index
19963           || attr->form == DW_FORM_GNU_strp_alt)
19964         str = DW_STRING (attr);
19965       else
19966         complaint (_("string type expected for attribute %s for "
19967                      "DIE at %s in module %s"),
19968                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19969                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19970     }
19971
19972   return str;
19973 }
19974
19975 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19976    and holds a non-zero value.  This function should only be used for
19977    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19978
19979 static int
19980 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19981 {
19982   struct attribute *attr = dwarf2_attr (die, name, cu);
19983
19984   return (attr && DW_UNSND (attr));
19985 }
19986
19987 static int
19988 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19989 {
19990   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19991      which value is non-zero.  However, we have to be careful with
19992      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19993      (via dwarf2_flag_true_p) follows this attribute.  So we may
19994      end up accidently finding a declaration attribute that belongs
19995      to a different DIE referenced by the specification attribute,
19996      even though the given DIE does not have a declaration attribute.  */
19997   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
19998           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
19999 }
20000
20001 /* Return the die giving the specification for DIE, if there is
20002    one.  *SPEC_CU is the CU containing DIE on input, and the CU
20003    containing the return value on output.  If there is no
20004    specification, but there is an abstract origin, that is
20005    returned.  */
20006
20007 static struct die_info *
20008 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
20009 {
20010   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
20011                                              *spec_cu);
20012
20013   if (spec_attr == NULL)
20014     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
20015
20016   if (spec_attr == NULL)
20017     return NULL;
20018   else
20019     return follow_die_ref (die, spec_attr, spec_cu);
20020 }
20021
20022 /* Stub for free_line_header to match void * callback types.  */
20023
20024 static void
20025 free_line_header_voidp (void *arg)
20026 {
20027   struct line_header *lh = (struct line_header *) arg;
20028
20029   delete lh;
20030 }
20031
20032 void
20033 line_header::add_include_dir (const char *include_dir)
20034 {
20035   if (dwarf_line_debug >= 2)
20036     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20037                         include_dirs.size () + 1, include_dir);
20038
20039   include_dirs.push_back (include_dir);
20040 }
20041
20042 void
20043 line_header::add_file_name (const char *name,
20044                             dir_index d_index,
20045                             unsigned int mod_time,
20046                             unsigned int length)
20047 {
20048   if (dwarf_line_debug >= 2)
20049     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20050                         (unsigned) file_names.size () + 1, name);
20051
20052   file_names.emplace_back (name, d_index, mod_time, length);
20053 }
20054
20055 /* A convenience function to find the proper .debug_line section for a CU.  */
20056
20057 static struct dwarf2_section_info *
20058 get_debug_line_section (struct dwarf2_cu *cu)
20059 {
20060   struct dwarf2_section_info *section;
20061   struct dwarf2_per_objfile *dwarf2_per_objfile
20062     = cu->per_cu->dwarf2_per_objfile;
20063
20064   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20065      DWO file.  */
20066   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20067     section = &cu->dwo_unit->dwo_file->sections.line;
20068   else if (cu->per_cu->is_dwz)
20069     {
20070       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20071
20072       section = &dwz->line;
20073     }
20074   else
20075     section = &dwarf2_per_objfile->line;
20076
20077   return section;
20078 }
20079
20080 /* Read directory or file name entry format, starting with byte of
20081    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20082    entries count and the entries themselves in the described entry
20083    format.  */
20084
20085 static void
20086 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20087                         bfd *abfd, const gdb_byte **bufp,
20088                         struct line_header *lh,
20089                         const struct comp_unit_head *cu_header,
20090                         void (*callback) (struct line_header *lh,
20091                                           const char *name,
20092                                           dir_index d_index,
20093                                           unsigned int mod_time,
20094                                           unsigned int length))
20095 {
20096   gdb_byte format_count, formati;
20097   ULONGEST data_count, datai;
20098   const gdb_byte *buf = *bufp;
20099   const gdb_byte *format_header_data;
20100   unsigned int bytes_read;
20101
20102   format_count = read_1_byte (abfd, buf);
20103   buf += 1;
20104   format_header_data = buf;
20105   for (formati = 0; formati < format_count; formati++)
20106     {
20107       read_unsigned_leb128 (abfd, buf, &bytes_read);
20108       buf += bytes_read;
20109       read_unsigned_leb128 (abfd, buf, &bytes_read);
20110       buf += bytes_read;
20111     }
20112
20113   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20114   buf += bytes_read;
20115   for (datai = 0; datai < data_count; datai++)
20116     {
20117       const gdb_byte *format = format_header_data;
20118       struct file_entry fe;
20119
20120       for (formati = 0; formati < format_count; formati++)
20121         {
20122           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20123           format += bytes_read;
20124
20125           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20126           format += bytes_read;
20127
20128           gdb::optional<const char *> string;
20129           gdb::optional<unsigned int> uint;
20130
20131           switch (form)
20132             {
20133             case DW_FORM_string:
20134               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20135               buf += bytes_read;
20136               break;
20137
20138             case DW_FORM_line_strp:
20139               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20140                                                          abfd, buf,
20141                                                          cu_header,
20142                                                          &bytes_read));
20143               buf += bytes_read;
20144               break;
20145
20146             case DW_FORM_data1:
20147               uint.emplace (read_1_byte (abfd, buf));
20148               buf += 1;
20149               break;
20150
20151             case DW_FORM_data2:
20152               uint.emplace (read_2_bytes (abfd, buf));
20153               buf += 2;
20154               break;
20155
20156             case DW_FORM_data4:
20157               uint.emplace (read_4_bytes (abfd, buf));
20158               buf += 4;
20159               break;
20160
20161             case DW_FORM_data8:
20162               uint.emplace (read_8_bytes (abfd, buf));
20163               buf += 8;
20164               break;
20165
20166             case DW_FORM_udata:
20167               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20168               buf += bytes_read;
20169               break;
20170
20171             case DW_FORM_block:
20172               /* It is valid only for DW_LNCT_timestamp which is ignored by
20173                  current GDB.  */
20174               break;
20175             }
20176
20177           switch (content_type)
20178             {
20179             case DW_LNCT_path:
20180               if (string.has_value ())
20181                 fe.name = *string;
20182               break;
20183             case DW_LNCT_directory_index:
20184               if (uint.has_value ())
20185                 fe.d_index = (dir_index) *uint;
20186               break;
20187             case DW_LNCT_timestamp:
20188               if (uint.has_value ())
20189                 fe.mod_time = *uint;
20190               break;
20191             case DW_LNCT_size:
20192               if (uint.has_value ())
20193                 fe.length = *uint;
20194               break;
20195             case DW_LNCT_MD5:
20196               break;
20197             default:
20198               complaint (_("Unknown format content type %s"),
20199                          pulongest (content_type));
20200             }
20201         }
20202
20203       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20204     }
20205
20206   *bufp = buf;
20207 }
20208
20209 /* Read the statement program header starting at OFFSET in
20210    .debug_line, or .debug_line.dwo.  Return a pointer
20211    to a struct line_header, allocated using xmalloc.
20212    Returns NULL if there is a problem reading the header, e.g., if it
20213    has a version we don't understand.
20214
20215    NOTE: the strings in the include directory and file name tables of
20216    the returned object point into the dwarf line section buffer,
20217    and must not be freed.  */
20218
20219 static line_header_up
20220 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20221 {
20222   const gdb_byte *line_ptr;
20223   unsigned int bytes_read, offset_size;
20224   int i;
20225   const char *cur_dir, *cur_file;
20226   struct dwarf2_section_info *section;
20227   bfd *abfd;
20228   struct dwarf2_per_objfile *dwarf2_per_objfile
20229     = cu->per_cu->dwarf2_per_objfile;
20230
20231   section = get_debug_line_section (cu);
20232   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20233   if (section->buffer == NULL)
20234     {
20235       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20236         complaint (_("missing .debug_line.dwo section"));
20237       else
20238         complaint (_("missing .debug_line section"));
20239       return 0;
20240     }
20241
20242   /* We can't do this until we know the section is non-empty.
20243      Only then do we know we have such a section.  */
20244   abfd = get_section_bfd_owner (section);
20245
20246   /* Make sure that at least there's room for the total_length field.
20247      That could be 12 bytes long, but we're just going to fudge that.  */
20248   if (to_underlying (sect_off) + 4 >= section->size)
20249     {
20250       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20251       return 0;
20252     }
20253
20254   line_header_up lh (new line_header ());
20255
20256   lh->sect_off = sect_off;
20257   lh->offset_in_dwz = cu->per_cu->is_dwz;
20258
20259   line_ptr = section->buffer + to_underlying (sect_off);
20260
20261   /* Read in the header.  */
20262   lh->total_length =
20263     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20264                                             &bytes_read, &offset_size);
20265   line_ptr += bytes_read;
20266   if (line_ptr + lh->total_length > (section->buffer + section->size))
20267     {
20268       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20269       return 0;
20270     }
20271   lh->statement_program_end = line_ptr + lh->total_length;
20272   lh->version = read_2_bytes (abfd, line_ptr);
20273   line_ptr += 2;
20274   if (lh->version > 5)
20275     {
20276       /* This is a version we don't understand.  The format could have
20277          changed in ways we don't handle properly so just punt.  */
20278       complaint (_("unsupported version in .debug_line section"));
20279       return NULL;
20280     }
20281   if (lh->version >= 5)
20282     {
20283       gdb_byte segment_selector_size;
20284
20285       /* Skip address size.  */
20286       read_1_byte (abfd, line_ptr);
20287       line_ptr += 1;
20288
20289       segment_selector_size = read_1_byte (abfd, line_ptr);
20290       line_ptr += 1;
20291       if (segment_selector_size != 0)
20292         {
20293           complaint (_("unsupported segment selector size %u "
20294                        "in .debug_line section"),
20295                      segment_selector_size);
20296           return NULL;
20297         }
20298     }
20299   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20300   line_ptr += offset_size;
20301   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20302   line_ptr += 1;
20303   if (lh->version >= 4)
20304     {
20305       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20306       line_ptr += 1;
20307     }
20308   else
20309     lh->maximum_ops_per_instruction = 1;
20310
20311   if (lh->maximum_ops_per_instruction == 0)
20312     {
20313       lh->maximum_ops_per_instruction = 1;
20314       complaint (_("invalid maximum_ops_per_instruction "
20315                    "in `.debug_line' section"));
20316     }
20317
20318   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20319   line_ptr += 1;
20320   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20321   line_ptr += 1;
20322   lh->line_range = read_1_byte (abfd, line_ptr);
20323   line_ptr += 1;
20324   lh->opcode_base = read_1_byte (abfd, line_ptr);
20325   line_ptr += 1;
20326   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20327
20328   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20329   for (i = 1; i < lh->opcode_base; ++i)
20330     {
20331       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20332       line_ptr += 1;
20333     }
20334
20335   if (lh->version >= 5)
20336     {
20337       /* Read directory table.  */
20338       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20339                               &cu->header,
20340                               [] (struct line_header *header, const char *name,
20341                                   dir_index d_index, unsigned int mod_time,
20342                                   unsigned int length)
20343         {
20344           header->add_include_dir (name);
20345         });
20346
20347       /* Read file name table.  */
20348       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20349                               &cu->header,
20350                               [] (struct line_header *header, const char *name,
20351                                   dir_index d_index, unsigned int mod_time,
20352                                   unsigned int length)
20353         {
20354           header->add_file_name (name, d_index, mod_time, length);
20355         });
20356     }
20357   else
20358     {
20359       /* Read directory table.  */
20360       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20361         {
20362           line_ptr += bytes_read;
20363           lh->add_include_dir (cur_dir);
20364         }
20365       line_ptr += bytes_read;
20366
20367       /* Read file name table.  */
20368       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20369         {
20370           unsigned int mod_time, length;
20371           dir_index d_index;
20372
20373           line_ptr += bytes_read;
20374           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20375           line_ptr += bytes_read;
20376           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20377           line_ptr += bytes_read;
20378           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20379           line_ptr += bytes_read;
20380
20381           lh->add_file_name (cur_file, d_index, mod_time, length);
20382         }
20383       line_ptr += bytes_read;
20384     }
20385   lh->statement_program_start = line_ptr;
20386
20387   if (line_ptr > (section->buffer + section->size))
20388     complaint (_("line number info header doesn't "
20389                  "fit in `.debug_line' section"));
20390
20391   return lh;
20392 }
20393
20394 /* Subroutine of dwarf_decode_lines to simplify it.
20395    Return the file name of the psymtab for included file FILE_INDEX
20396    in line header LH of PST.
20397    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20398    If space for the result is malloc'd, *NAME_HOLDER will be set.
20399    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20400
20401 static const char *
20402 psymtab_include_file_name (const struct line_header *lh, int file_index,
20403                            const struct partial_symtab *pst,
20404                            const char *comp_dir,
20405                            gdb::unique_xmalloc_ptr<char> *name_holder)
20406 {
20407   const file_entry &fe = lh->file_names[file_index];
20408   const char *include_name = fe.name;
20409   const char *include_name_to_compare = include_name;
20410   const char *pst_filename;
20411   int file_is_pst;
20412
20413   const char *dir_name = fe.include_dir (lh);
20414
20415   gdb::unique_xmalloc_ptr<char> hold_compare;
20416   if (!IS_ABSOLUTE_PATH (include_name)
20417       && (dir_name != NULL || comp_dir != NULL))
20418     {
20419       /* Avoid creating a duplicate psymtab for PST.
20420          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20421          Before we do the comparison, however, we need to account
20422          for DIR_NAME and COMP_DIR.
20423          First prepend dir_name (if non-NULL).  If we still don't
20424          have an absolute path prepend comp_dir (if non-NULL).
20425          However, the directory we record in the include-file's
20426          psymtab does not contain COMP_DIR (to match the
20427          corresponding symtab(s)).
20428
20429          Example:
20430
20431          bash$ cd /tmp
20432          bash$ gcc -g ./hello.c
20433          include_name = "hello.c"
20434          dir_name = "."
20435          DW_AT_comp_dir = comp_dir = "/tmp"
20436          DW_AT_name = "./hello.c"
20437
20438       */
20439
20440       if (dir_name != NULL)
20441         {
20442           name_holder->reset (concat (dir_name, SLASH_STRING,
20443                                       include_name, (char *) NULL));
20444           include_name = name_holder->get ();
20445           include_name_to_compare = include_name;
20446         }
20447       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20448         {
20449           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20450                                       include_name, (char *) NULL));
20451           include_name_to_compare = hold_compare.get ();
20452         }
20453     }
20454
20455   pst_filename = pst->filename;
20456   gdb::unique_xmalloc_ptr<char> copied_name;
20457   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20458     {
20459       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20460                                  pst_filename, (char *) NULL));
20461       pst_filename = copied_name.get ();
20462     }
20463
20464   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20465
20466   if (file_is_pst)
20467     return NULL;
20468   return include_name;
20469 }
20470
20471 /* State machine to track the state of the line number program.  */
20472
20473 class lnp_state_machine
20474 {
20475 public:
20476   /* Initialize a machine state for the start of a line number
20477      program.  */
20478   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20479                      bool record_lines_p);
20480
20481   file_entry *current_file ()
20482   {
20483     /* lh->file_names is 0-based, but the file name numbers in the
20484        statement program are 1-based.  */
20485     return m_line_header->file_name_at (m_file);
20486   }
20487
20488   /* Record the line in the state machine.  END_SEQUENCE is true if
20489      we're processing the end of a sequence.  */
20490   void record_line (bool end_sequence);
20491
20492   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20493      nop-out rest of the lines in this sequence.  */
20494   void check_line_address (struct dwarf2_cu *cu,
20495                            const gdb_byte *line_ptr,
20496                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20497
20498   void handle_set_discriminator (unsigned int discriminator)
20499   {
20500     m_discriminator = discriminator;
20501     m_line_has_non_zero_discriminator |= discriminator != 0;
20502   }
20503
20504   /* Handle DW_LNE_set_address.  */
20505   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20506   {
20507     m_op_index = 0;
20508     address += baseaddr;
20509     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20510   }
20511
20512   /* Handle DW_LNS_advance_pc.  */
20513   void handle_advance_pc (CORE_ADDR adjust);
20514
20515   /* Handle a special opcode.  */
20516   void handle_special_opcode (unsigned char op_code);
20517
20518   /* Handle DW_LNS_advance_line.  */
20519   void handle_advance_line (int line_delta)
20520   {
20521     advance_line (line_delta);
20522   }
20523
20524   /* Handle DW_LNS_set_file.  */
20525   void handle_set_file (file_name_index file);
20526
20527   /* Handle DW_LNS_negate_stmt.  */
20528   void handle_negate_stmt ()
20529   {
20530     m_is_stmt = !m_is_stmt;
20531   }
20532
20533   /* Handle DW_LNS_const_add_pc.  */
20534   void handle_const_add_pc ();
20535
20536   /* Handle DW_LNS_fixed_advance_pc.  */
20537   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20538   {
20539     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20540     m_op_index = 0;
20541   }
20542
20543   /* Handle DW_LNS_copy.  */
20544   void handle_copy ()
20545   {
20546     record_line (false);
20547     m_discriminator = 0;
20548   }
20549
20550   /* Handle DW_LNE_end_sequence.  */
20551   void handle_end_sequence ()
20552   {
20553     m_currently_recording_lines = true;
20554   }
20555
20556 private:
20557   /* Advance the line by LINE_DELTA.  */
20558   void advance_line (int line_delta)
20559   {
20560     m_line += line_delta;
20561
20562     if (line_delta != 0)
20563       m_line_has_non_zero_discriminator = m_discriminator != 0;
20564   }
20565
20566   struct dwarf2_cu *m_cu;
20567
20568   gdbarch *m_gdbarch;
20569
20570   /* True if we're recording lines.
20571      Otherwise we're building partial symtabs and are just interested in
20572      finding include files mentioned by the line number program.  */
20573   bool m_record_lines_p;
20574
20575   /* The line number header.  */
20576   line_header *m_line_header;
20577
20578   /* These are part of the standard DWARF line number state machine,
20579      and initialized according to the DWARF spec.  */
20580
20581   unsigned char m_op_index = 0;
20582   /* The line table index (1-based) of the current file.  */
20583   file_name_index m_file = (file_name_index) 1;
20584   unsigned int m_line = 1;
20585
20586   /* These are initialized in the constructor.  */
20587
20588   CORE_ADDR m_address;
20589   bool m_is_stmt;
20590   unsigned int m_discriminator;
20591
20592   /* Additional bits of state we need to track.  */
20593
20594   /* The last file that we called dwarf2_start_subfile for.
20595      This is only used for TLLs.  */
20596   unsigned int m_last_file = 0;
20597   /* The last file a line number was recorded for.  */
20598   struct subfile *m_last_subfile = NULL;
20599
20600   /* When true, record the lines we decode.  */
20601   bool m_currently_recording_lines = false;
20602
20603   /* The last line number that was recorded, used to coalesce
20604      consecutive entries for the same line.  This can happen, for
20605      example, when discriminators are present.  PR 17276.  */
20606   unsigned int m_last_line = 0;
20607   bool m_line_has_non_zero_discriminator = false;
20608 };
20609
20610 void
20611 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20612 {
20613   CORE_ADDR addr_adj = (((m_op_index + adjust)
20614                          / m_line_header->maximum_ops_per_instruction)
20615                         * m_line_header->minimum_instruction_length);
20616   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20617   m_op_index = ((m_op_index + adjust)
20618                 % m_line_header->maximum_ops_per_instruction);
20619 }
20620
20621 void
20622 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20623 {
20624   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20625   CORE_ADDR addr_adj = (((m_op_index
20626                           + (adj_opcode / m_line_header->line_range))
20627                          / m_line_header->maximum_ops_per_instruction)
20628                         * m_line_header->minimum_instruction_length);
20629   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20630   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20631                 % m_line_header->maximum_ops_per_instruction);
20632
20633   int line_delta = (m_line_header->line_base
20634                     + (adj_opcode % m_line_header->line_range));
20635   advance_line (line_delta);
20636   record_line (false);
20637   m_discriminator = 0;
20638 }
20639
20640 void
20641 lnp_state_machine::handle_set_file (file_name_index file)
20642 {
20643   m_file = file;
20644
20645   const file_entry *fe = current_file ();
20646   if (fe == NULL)
20647     dwarf2_debug_line_missing_file_complaint ();
20648   else if (m_record_lines_p)
20649     {
20650       const char *dir = fe->include_dir (m_line_header);
20651
20652       m_last_subfile = m_cu->builder->get_current_subfile ();
20653       m_line_has_non_zero_discriminator = m_discriminator != 0;
20654       dwarf2_start_subfile (m_cu, fe->name, dir);
20655     }
20656 }
20657
20658 void
20659 lnp_state_machine::handle_const_add_pc ()
20660 {
20661   CORE_ADDR adjust
20662     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20663
20664   CORE_ADDR addr_adj
20665     = (((m_op_index + adjust)
20666         / m_line_header->maximum_ops_per_instruction)
20667        * m_line_header->minimum_instruction_length);
20668
20669   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20670   m_op_index = ((m_op_index + adjust)
20671                 % m_line_header->maximum_ops_per_instruction);
20672 }
20673
20674 /* Return non-zero if we should add LINE to the line number table.
20675    LINE is the line to add, LAST_LINE is the last line that was added,
20676    LAST_SUBFILE is the subfile for LAST_LINE.
20677    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20678    had a non-zero discriminator.
20679
20680    We have to be careful in the presence of discriminators.
20681    E.g., for this line:
20682
20683      for (i = 0; i < 100000; i++);
20684
20685    clang can emit four line number entries for that one line,
20686    each with a different discriminator.
20687    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20688
20689    However, we want gdb to coalesce all four entries into one.
20690    Otherwise the user could stepi into the middle of the line and
20691    gdb would get confused about whether the pc really was in the
20692    middle of the line.
20693
20694    Things are further complicated by the fact that two consecutive
20695    line number entries for the same line is a heuristic used by gcc
20696    to denote the end of the prologue.  So we can't just discard duplicate
20697    entries, we have to be selective about it.  The heuristic we use is
20698    that we only collapse consecutive entries for the same line if at least
20699    one of those entries has a non-zero discriminator.  PR 17276.
20700
20701    Note: Addresses in the line number state machine can never go backwards
20702    within one sequence, thus this coalescing is ok.  */
20703
20704 static int
20705 dwarf_record_line_p (struct dwarf2_cu *cu,
20706                      unsigned int line, unsigned int last_line,
20707                      int line_has_non_zero_discriminator,
20708                      struct subfile *last_subfile)
20709 {
20710   if (cu->builder->get_current_subfile () != last_subfile)
20711     return 1;
20712   if (line != last_line)
20713     return 1;
20714   /* Same line for the same file that we've seen already.
20715      As a last check, for pr 17276, only record the line if the line
20716      has never had a non-zero discriminator.  */
20717   if (!line_has_non_zero_discriminator)
20718     return 1;
20719   return 0;
20720 }
20721
20722 /* Use the CU's builder to record line number LINE beginning at
20723    address ADDRESS in the line table of subfile SUBFILE.  */
20724
20725 static void
20726 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20727                      unsigned int line, CORE_ADDR address,
20728                      struct dwarf2_cu *cu)
20729 {
20730   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20731
20732   if (dwarf_line_debug)
20733     {
20734       fprintf_unfiltered (gdb_stdlog,
20735                           "Recording line %u, file %s, address %s\n",
20736                           line, lbasename (subfile->name),
20737                           paddress (gdbarch, address));
20738     }
20739
20740   if (cu != nullptr)
20741     cu->builder->record_line (subfile, line, addr);
20742 }
20743
20744 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20745    Mark the end of a set of line number records.
20746    The arguments are the same as for dwarf_record_line_1.
20747    If SUBFILE is NULL the request is ignored.  */
20748
20749 static void
20750 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20751                    CORE_ADDR address, struct dwarf2_cu *cu)
20752 {
20753   if (subfile == NULL)
20754     return;
20755
20756   if (dwarf_line_debug)
20757     {
20758       fprintf_unfiltered (gdb_stdlog,
20759                           "Finishing current line, file %s, address %s\n",
20760                           lbasename (subfile->name),
20761                           paddress (gdbarch, address));
20762     }
20763
20764   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20765 }
20766
20767 void
20768 lnp_state_machine::record_line (bool end_sequence)
20769 {
20770   if (dwarf_line_debug)
20771     {
20772       fprintf_unfiltered (gdb_stdlog,
20773                           "Processing actual line %u: file %u,"
20774                           " address %s, is_stmt %u, discrim %u\n",
20775                           m_line, to_underlying (m_file),
20776                           paddress (m_gdbarch, m_address),
20777                           m_is_stmt, m_discriminator);
20778     }
20779
20780   file_entry *fe = current_file ();
20781
20782   if (fe == NULL)
20783     dwarf2_debug_line_missing_file_complaint ();
20784   /* For now we ignore lines not starting on an instruction boundary.
20785      But not when processing end_sequence for compatibility with the
20786      previous version of the code.  */
20787   else if (m_op_index == 0 || end_sequence)
20788     {
20789       fe->included_p = 1;
20790       if (m_record_lines_p && m_is_stmt)
20791         {
20792           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20793               || end_sequence)
20794             {
20795               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20796                                  m_currently_recording_lines ? m_cu : nullptr);
20797             }
20798
20799           if (!end_sequence)
20800             {
20801               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20802                                        m_line_has_non_zero_discriminator,
20803                                        m_last_subfile))
20804                 {
20805                   dwarf_record_line_1 (m_gdbarch,
20806                                        m_cu->builder->get_current_subfile (),
20807                                        m_line, m_address,
20808                                        m_currently_recording_lines ? m_cu : nullptr);
20809                 }
20810               m_last_subfile = m_cu->builder->get_current_subfile ();
20811               m_last_line = m_line;
20812             }
20813         }
20814     }
20815 }
20816
20817 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20818                                       line_header *lh, bool record_lines_p)
20819 {
20820   m_cu = cu;
20821   m_gdbarch = arch;
20822   m_record_lines_p = record_lines_p;
20823   m_line_header = lh;
20824
20825   m_currently_recording_lines = true;
20826
20827   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20828      was a line entry for it so that the backend has a chance to adjust it
20829      and also record it in case it needs it.  This is currently used by MIPS
20830      code, cf. `mips_adjust_dwarf2_line'.  */
20831   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20832   m_is_stmt = lh->default_is_stmt;
20833   m_discriminator = 0;
20834 }
20835
20836 void
20837 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20838                                        const gdb_byte *line_ptr,
20839                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20840 {
20841   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20842      the pc range of the CU.  However, we restrict the test to only ADDRESS
20843      values of zero to preserve GDB's previous behaviour which is to handle
20844      the specific case of a function being GC'd by the linker.  */
20845
20846   if (address == 0 && address < unrelocated_lowpc)
20847     {
20848       /* This line table is for a function which has been
20849          GCd by the linker.  Ignore it.  PR gdb/12528 */
20850
20851       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20852       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20853
20854       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20855                  line_offset, objfile_name (objfile));
20856       m_currently_recording_lines = false;
20857       /* Note: m_currently_recording_lines is left as false until we see
20858          DW_LNE_end_sequence.  */
20859     }
20860 }
20861
20862 /* Subroutine of dwarf_decode_lines to simplify it.
20863    Process the line number information in LH.
20864    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20865    program in order to set included_p for every referenced header.  */
20866
20867 static void
20868 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20869                       const int decode_for_pst_p, CORE_ADDR lowpc)
20870 {
20871   const gdb_byte *line_ptr, *extended_end;
20872   const gdb_byte *line_end;
20873   unsigned int bytes_read, extended_len;
20874   unsigned char op_code, extended_op;
20875   CORE_ADDR baseaddr;
20876   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20877   bfd *abfd = objfile->obfd;
20878   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20879   /* True if we're recording line info (as opposed to building partial
20880      symtabs and just interested in finding include files mentioned by
20881      the line number program).  */
20882   bool record_lines_p = !decode_for_pst_p;
20883
20884   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20885
20886   line_ptr = lh->statement_program_start;
20887   line_end = lh->statement_program_end;
20888
20889   /* Read the statement sequences until there's nothing left.  */
20890   while (line_ptr < line_end)
20891     {
20892       /* The DWARF line number program state machine.  Reset the state
20893          machine at the start of each sequence.  */
20894       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20895       bool end_sequence = false;
20896
20897       if (record_lines_p)
20898         {
20899           /* Start a subfile for the current file of the state
20900              machine.  */
20901           const file_entry *fe = state_machine.current_file ();
20902
20903           if (fe != NULL)
20904             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20905         }
20906
20907       /* Decode the table.  */
20908       while (line_ptr < line_end && !end_sequence)
20909         {
20910           op_code = read_1_byte (abfd, line_ptr);
20911           line_ptr += 1;
20912
20913           if (op_code >= lh->opcode_base)
20914             {
20915               /* Special opcode.  */
20916               state_machine.handle_special_opcode (op_code);
20917             }
20918           else switch (op_code)
20919             {
20920             case DW_LNS_extended_op:
20921               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20922                                                    &bytes_read);
20923               line_ptr += bytes_read;
20924               extended_end = line_ptr + extended_len;
20925               extended_op = read_1_byte (abfd, line_ptr);
20926               line_ptr += 1;
20927               switch (extended_op)
20928                 {
20929                 case DW_LNE_end_sequence:
20930                   state_machine.handle_end_sequence ();
20931                   end_sequence = true;
20932                   break;
20933                 case DW_LNE_set_address:
20934                   {
20935                     CORE_ADDR address
20936                       = read_address (abfd, line_ptr, cu, &bytes_read);
20937                     line_ptr += bytes_read;
20938
20939                     state_machine.check_line_address (cu, line_ptr,
20940                                                       lowpc - baseaddr, address);
20941                     state_machine.handle_set_address (baseaddr, address);
20942                   }
20943                   break;
20944                 case DW_LNE_define_file:
20945                   {
20946                     const char *cur_file;
20947                     unsigned int mod_time, length;
20948                     dir_index dindex;
20949
20950                     cur_file = read_direct_string (abfd, line_ptr,
20951                                                    &bytes_read);
20952                     line_ptr += bytes_read;
20953                     dindex = (dir_index)
20954                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20955                     line_ptr += bytes_read;
20956                     mod_time =
20957                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20958                     line_ptr += bytes_read;
20959                     length =
20960                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20961                     line_ptr += bytes_read;
20962                     lh->add_file_name (cur_file, dindex, mod_time, length);
20963                   }
20964                   break;
20965                 case DW_LNE_set_discriminator:
20966                   {
20967                     /* The discriminator is not interesting to the
20968                        debugger; just ignore it.  We still need to
20969                        check its value though:
20970                        if there are consecutive entries for the same
20971                        (non-prologue) line we want to coalesce them.
20972                        PR 17276.  */
20973                     unsigned int discr
20974                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20975                     line_ptr += bytes_read;
20976
20977                     state_machine.handle_set_discriminator (discr);
20978                   }
20979                   break;
20980                 default:
20981                   complaint (_("mangled .debug_line section"));
20982                   return;
20983                 }
20984               /* Make sure that we parsed the extended op correctly.  If e.g.
20985                  we expected a different address size than the producer used,
20986                  we may have read the wrong number of bytes.  */
20987               if (line_ptr != extended_end)
20988                 {
20989                   complaint (_("mangled .debug_line section"));
20990                   return;
20991                 }
20992               break;
20993             case DW_LNS_copy:
20994               state_machine.handle_copy ();
20995               break;
20996             case DW_LNS_advance_pc:
20997               {
20998                 CORE_ADDR adjust
20999                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21000                 line_ptr += bytes_read;
21001
21002                 state_machine.handle_advance_pc (adjust);
21003               }
21004               break;
21005             case DW_LNS_advance_line:
21006               {
21007                 int line_delta
21008                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
21009                 line_ptr += bytes_read;
21010
21011                 state_machine.handle_advance_line (line_delta);
21012               }
21013               break;
21014             case DW_LNS_set_file:
21015               {
21016                 file_name_index file
21017                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
21018                                                             &bytes_read);
21019                 line_ptr += bytes_read;
21020
21021                 state_machine.handle_set_file (file);
21022               }
21023               break;
21024             case DW_LNS_set_column:
21025               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21026               line_ptr += bytes_read;
21027               break;
21028             case DW_LNS_negate_stmt:
21029               state_machine.handle_negate_stmt ();
21030               break;
21031             case DW_LNS_set_basic_block:
21032               break;
21033             /* Add to the address register of the state machine the
21034                address increment value corresponding to special opcode
21035                255.  I.e., this value is scaled by the minimum
21036                instruction length since special opcode 255 would have
21037                scaled the increment.  */
21038             case DW_LNS_const_add_pc:
21039               state_machine.handle_const_add_pc ();
21040               break;
21041             case DW_LNS_fixed_advance_pc:
21042               {
21043                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21044                 line_ptr += 2;
21045
21046                 state_machine.handle_fixed_advance_pc (addr_adj);
21047               }
21048               break;
21049             default:
21050               {
21051                 /* Unknown standard opcode, ignore it.  */
21052                 int i;
21053
21054                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21055                   {
21056                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21057                     line_ptr += bytes_read;
21058                   }
21059               }
21060             }
21061         }
21062
21063       if (!end_sequence)
21064         dwarf2_debug_line_missing_end_sequence_complaint ();
21065
21066       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21067          in which case we still finish recording the last line).  */
21068       state_machine.record_line (true);
21069     }
21070 }
21071
21072 /* Decode the Line Number Program (LNP) for the given line_header
21073    structure and CU.  The actual information extracted and the type
21074    of structures created from the LNP depends on the value of PST.
21075
21076    1. If PST is NULL, then this procedure uses the data from the program
21077       to create all necessary symbol tables, and their linetables.
21078
21079    2. If PST is not NULL, this procedure reads the program to determine
21080       the list of files included by the unit represented by PST, and
21081       builds all the associated partial symbol tables.
21082
21083    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21084    It is used for relative paths in the line table.
21085    NOTE: When processing partial symtabs (pst != NULL),
21086    comp_dir == pst->dirname.
21087
21088    NOTE: It is important that psymtabs have the same file name (via strcmp)
21089    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21090    symtab we don't use it in the name of the psymtabs we create.
21091    E.g. expand_line_sal requires this when finding psymtabs to expand.
21092    A good testcase for this is mb-inline.exp.
21093
21094    LOWPC is the lowest address in CU (or 0 if not known).
21095
21096    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21097    for its PC<->lines mapping information.  Otherwise only the filename
21098    table is read in.  */
21099
21100 static void
21101 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21102                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21103                     CORE_ADDR lowpc, int decode_mapping)
21104 {
21105   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21106   const int decode_for_pst_p = (pst != NULL);
21107
21108   if (decode_mapping)
21109     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21110
21111   if (decode_for_pst_p)
21112     {
21113       int file_index;
21114
21115       /* Now that we're done scanning the Line Header Program, we can
21116          create the psymtab of each included file.  */
21117       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21118         if (lh->file_names[file_index].included_p == 1)
21119           {
21120             gdb::unique_xmalloc_ptr<char> name_holder;
21121             const char *include_name =
21122               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21123                                          &name_holder);
21124             if (include_name != NULL)
21125               dwarf2_create_include_psymtab (include_name, pst, objfile);
21126           }
21127     }
21128   else
21129     {
21130       /* Make sure a symtab is created for every file, even files
21131          which contain only variables (i.e. no code with associated
21132          line numbers).  */
21133       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21134       int i;
21135
21136       for (i = 0; i < lh->file_names.size (); i++)
21137         {
21138           file_entry &fe = lh->file_names[i];
21139
21140           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21141
21142           if (cu->builder->get_current_subfile ()->symtab == NULL)
21143             {
21144               cu->builder->get_current_subfile ()->symtab
21145                 = allocate_symtab (cust,
21146                                    cu->builder->get_current_subfile ()->name);
21147             }
21148           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21149         }
21150     }
21151 }
21152
21153 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21154    DIRNAME the name of the source directory which contains FILENAME
21155    or NULL if not known.
21156    This routine tries to keep line numbers from identical absolute and
21157    relative file names in a common subfile.
21158
21159    Using the `list' example from the GDB testsuite, which resides in
21160    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21161    of /srcdir/list0.c yields the following debugging information for list0.c:
21162
21163    DW_AT_name:          /srcdir/list0.c
21164    DW_AT_comp_dir:      /compdir
21165    files.files[0].name: list0.h
21166    files.files[0].dir:  /srcdir
21167    files.files[1].name: list0.c
21168    files.files[1].dir:  /srcdir
21169
21170    The line number information for list0.c has to end up in a single
21171    subfile, so that `break /srcdir/list0.c:1' works as expected.
21172    start_subfile will ensure that this happens provided that we pass the
21173    concatenation of files.files[1].dir and files.files[1].name as the
21174    subfile's name.  */
21175
21176 static void
21177 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21178                       const char *dirname)
21179 {
21180   char *copy = NULL;
21181
21182   /* In order not to lose the line information directory,
21183      we concatenate it to the filename when it makes sense.
21184      Note that the Dwarf3 standard says (speaking of filenames in line
21185      information): ``The directory index is ignored for file names
21186      that represent full path names''.  Thus ignoring dirname in the
21187      `else' branch below isn't an issue.  */
21188
21189   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21190     {
21191       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21192       filename = copy;
21193     }
21194
21195   cu->builder->start_subfile (filename);
21196
21197   if (copy != NULL)
21198     xfree (copy);
21199 }
21200
21201 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21202    buildsym_compunit constructor.  */
21203
21204 static struct compunit_symtab *
21205 dwarf2_start_symtab (struct dwarf2_cu *cu,
21206                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21207 {
21208   gdb_assert (cu->builder == nullptr);
21209
21210   cu->builder.reset (new struct buildsym_compunit
21211                      (cu->per_cu->dwarf2_per_objfile->objfile,
21212                       name, comp_dir, cu->language, low_pc));
21213
21214   cu->list_in_scope = cu->builder->get_file_symbols ();
21215
21216   cu->builder->record_debugformat ("DWARF 2");
21217   cu->builder->record_producer (cu->producer);
21218
21219   cu->processing_has_namespace_info = 0;
21220
21221   return cu->builder->get_compunit_symtab ();
21222 }
21223
21224 static void
21225 var_decode_location (struct attribute *attr, struct symbol *sym,
21226                      struct dwarf2_cu *cu)
21227 {
21228   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21229   struct comp_unit_head *cu_header = &cu->header;
21230
21231   /* NOTE drow/2003-01-30: There used to be a comment and some special
21232      code here to turn a symbol with DW_AT_external and a
21233      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21234      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21235      with some versions of binutils) where shared libraries could have
21236      relocations against symbols in their debug information - the
21237      minimal symbol would have the right address, but the debug info
21238      would not.  It's no longer necessary, because we will explicitly
21239      apply relocations when we read in the debug information now.  */
21240
21241   /* A DW_AT_location attribute with no contents indicates that a
21242      variable has been optimized away.  */
21243   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21244     {
21245       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21246       return;
21247     }
21248
21249   /* Handle one degenerate form of location expression specially, to
21250      preserve GDB's previous behavior when section offsets are
21251      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21252      then mark this symbol as LOC_STATIC.  */
21253
21254   if (attr_form_is_block (attr)
21255       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21256            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21257           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21258               && (DW_BLOCK (attr)->size
21259                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21260     {
21261       unsigned int dummy;
21262
21263       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21264         SYMBOL_VALUE_ADDRESS (sym) =
21265           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21266       else
21267         SYMBOL_VALUE_ADDRESS (sym) =
21268           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21269       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21270       fixup_symbol_section (sym, objfile);
21271       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21272                                               SYMBOL_SECTION (sym));
21273       return;
21274     }
21275
21276   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21277      expression evaluator, and use LOC_COMPUTED only when necessary
21278      (i.e. when the value of a register or memory location is
21279      referenced, or a thread-local block, etc.).  Then again, it might
21280      not be worthwhile.  I'm assuming that it isn't unless performance
21281      or memory numbers show me otherwise.  */
21282
21283   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21284
21285   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21286     cu->has_loclist = 1;
21287 }
21288
21289 /* Given a pointer to a DWARF information entry, figure out if we need
21290    to make a symbol table entry for it, and if so, create a new entry
21291    and return a pointer to it.
21292    If TYPE is NULL, determine symbol type from the die, otherwise
21293    used the passed type.
21294    If SPACE is not NULL, use it to hold the new symbol.  If it is
21295    NULL, allocate a new symbol on the objfile's obstack.  */
21296
21297 static struct symbol *
21298 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21299             struct symbol *space)
21300 {
21301   struct dwarf2_per_objfile *dwarf2_per_objfile
21302     = cu->per_cu->dwarf2_per_objfile;
21303   struct objfile *objfile = dwarf2_per_objfile->objfile;
21304   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21305   struct symbol *sym = NULL;
21306   const char *name;
21307   struct attribute *attr = NULL;
21308   struct attribute *attr2 = NULL;
21309   CORE_ADDR baseaddr;
21310   struct pending **list_to_add = NULL;
21311
21312   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21313
21314   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21315
21316   name = dwarf2_name (die, cu);
21317   if (name)
21318     {
21319       const char *linkagename;
21320       int suppress_add = 0;
21321
21322       if (space)
21323         sym = space;
21324       else
21325         sym = allocate_symbol (objfile);
21326       OBJSTAT (objfile, n_syms++);
21327
21328       /* Cache this symbol's name and the name's demangled form (if any).  */
21329       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21330       linkagename = dwarf2_physname (name, die, cu);
21331       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21332
21333       /* Fortran does not have mangling standard and the mangling does differ
21334          between gfortran, iFort etc.  */
21335       if (cu->language == language_fortran
21336           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21337         symbol_set_demangled_name (&(sym->ginfo),
21338                                    dwarf2_full_name (name, die, cu),
21339                                    NULL);
21340
21341       /* Default assumptions.
21342          Use the passed type or decode it from the die.  */
21343       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21344       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21345       if (type != NULL)
21346         SYMBOL_TYPE (sym) = type;
21347       else
21348         SYMBOL_TYPE (sym) = die_type (die, cu);
21349       attr = dwarf2_attr (die,
21350                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21351                           cu);
21352       if (attr)
21353         {
21354           SYMBOL_LINE (sym) = DW_UNSND (attr);
21355         }
21356
21357       attr = dwarf2_attr (die,
21358                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21359                           cu);
21360       if (attr)
21361         {
21362           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21363           struct file_entry *fe;
21364
21365           if (cu->line_header != NULL)
21366             fe = cu->line_header->file_name_at (file_index);
21367           else
21368             fe = NULL;
21369
21370           if (fe == NULL)
21371             complaint (_("file index out of range"));
21372           else
21373             symbol_set_symtab (sym, fe->symtab);
21374         }
21375
21376       switch (die->tag)
21377         {
21378         case DW_TAG_label:
21379           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21380           if (attr)
21381             {
21382               CORE_ADDR addr;
21383
21384               addr = attr_value_as_address (attr);
21385               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21386               SYMBOL_VALUE_ADDRESS (sym) = addr;
21387             }
21388           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21389           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21390           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21391           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21392           break;
21393         case DW_TAG_subprogram:
21394           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21395              finish_block.  */
21396           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21397           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21398           if ((attr2 && (DW_UNSND (attr2) != 0))
21399               || cu->language == language_ada)
21400             {
21401               /* Subprograms marked external are stored as a global symbol.
21402                  Ada subprograms, whether marked external or not, are always
21403                  stored as a global symbol, because we want to be able to
21404                  access them globally.  For instance, we want to be able
21405                  to break on a nested subprogram without having to
21406                  specify the context.  */
21407               list_to_add = cu->builder->get_global_symbols ();
21408             }
21409           else
21410             {
21411               list_to_add = cu->list_in_scope;
21412             }
21413           break;
21414         case DW_TAG_inlined_subroutine:
21415           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21416              finish_block.  */
21417           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21418           SYMBOL_INLINED (sym) = 1;
21419           list_to_add = cu->list_in_scope;
21420           break;
21421         case DW_TAG_template_value_param:
21422           suppress_add = 1;
21423           /* Fall through.  */
21424         case DW_TAG_constant:
21425         case DW_TAG_variable:
21426         case DW_TAG_member:
21427           /* Compilation with minimal debug info may result in
21428              variables with missing type entries.  Change the
21429              misleading `void' type to something sensible.  */
21430           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21431             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21432
21433           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21434           /* In the case of DW_TAG_member, we should only be called for
21435              static const members.  */
21436           if (die->tag == DW_TAG_member)
21437             {
21438               /* dwarf2_add_field uses die_is_declaration,
21439                  so we do the same.  */
21440               gdb_assert (die_is_declaration (die, cu));
21441               gdb_assert (attr);
21442             }
21443           if (attr)
21444             {
21445               dwarf2_const_value (attr, sym, cu);
21446               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21447               if (!suppress_add)
21448                 {
21449                   if (attr2 && (DW_UNSND (attr2) != 0))
21450                     list_to_add = cu->builder->get_global_symbols ();
21451                   else
21452                     list_to_add = cu->list_in_scope;
21453                 }
21454               break;
21455             }
21456           attr = dwarf2_attr (die, DW_AT_location, cu);
21457           if (attr)
21458             {
21459               var_decode_location (attr, sym, cu);
21460               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21461
21462               /* Fortran explicitly imports any global symbols to the local
21463                  scope by DW_TAG_common_block.  */
21464               if (cu->language == language_fortran && die->parent
21465                   && die->parent->tag == DW_TAG_common_block)
21466                 attr2 = NULL;
21467
21468               if (SYMBOL_CLASS (sym) == LOC_STATIC
21469                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21470                   && !dwarf2_per_objfile->has_section_at_zero)
21471                 {
21472                   /* When a static variable is eliminated by the linker,
21473                      the corresponding debug information is not stripped
21474                      out, but the variable address is set to null;
21475                      do not add such variables into symbol table.  */
21476                 }
21477               else if (attr2 && (DW_UNSND (attr2) != 0))
21478                 {
21479                   /* Workaround gfortran PR debug/40040 - it uses
21480                      DW_AT_location for variables in -fPIC libraries which may
21481                      get overriden by other libraries/executable and get
21482                      a different address.  Resolve it by the minimal symbol
21483                      which may come from inferior's executable using copy
21484                      relocation.  Make this workaround only for gfortran as for
21485                      other compilers GDB cannot guess the minimal symbol
21486                      Fortran mangling kind.  */
21487                   if (cu->language == language_fortran && die->parent
21488                       && die->parent->tag == DW_TAG_module
21489                       && cu->producer
21490                       && startswith (cu->producer, "GNU Fortran"))
21491                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21492
21493                   /* A variable with DW_AT_external is never static,
21494                      but it may be block-scoped.  */
21495                   list_to_add
21496                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21497                        ? cu->builder->get_global_symbols ()
21498                        : cu->list_in_scope);
21499                 }
21500               else
21501                 list_to_add = cu->list_in_scope;
21502             }
21503           else
21504             {
21505               /* We do not know the address of this symbol.
21506                  If it is an external symbol and we have type information
21507                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21508                  The address of the variable will then be determined from
21509                  the minimal symbol table whenever the variable is
21510                  referenced.  */
21511               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21512
21513               /* Fortran explicitly imports any global symbols to the local
21514                  scope by DW_TAG_common_block.  */
21515               if (cu->language == language_fortran && die->parent
21516                   && die->parent->tag == DW_TAG_common_block)
21517                 {
21518                   /* SYMBOL_CLASS doesn't matter here because
21519                      read_common_block is going to reset it.  */
21520                   if (!suppress_add)
21521                     list_to_add = cu->list_in_scope;
21522                 }
21523               else if (attr2 && (DW_UNSND (attr2) != 0)
21524                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21525                 {
21526                   /* A variable with DW_AT_external is never static, but it
21527                      may be block-scoped.  */
21528                   list_to_add
21529                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21530                        ? cu->builder->get_global_symbols ()
21531                        : cu->list_in_scope);
21532
21533                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21534                 }
21535               else if (!die_is_declaration (die, cu))
21536                 {
21537                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21538                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21539                   if (!suppress_add)
21540                     list_to_add = cu->list_in_scope;
21541                 }
21542             }
21543           break;
21544         case DW_TAG_formal_parameter:
21545           {
21546             /* If we are inside a function, mark this as an argument.  If
21547                not, we might be looking at an argument to an inlined function
21548                when we do not have enough information to show inlined frames;
21549                pretend it's a local variable in that case so that the user can
21550                still see it.  */
21551             struct context_stack *curr
21552               = cu->builder->get_current_context_stack ();
21553             if (curr != nullptr && curr->name != nullptr)
21554               SYMBOL_IS_ARGUMENT (sym) = 1;
21555             attr = dwarf2_attr (die, DW_AT_location, cu);
21556             if (attr)
21557               {
21558                 var_decode_location (attr, sym, cu);
21559               }
21560             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21561             if (attr)
21562               {
21563                 dwarf2_const_value (attr, sym, cu);
21564               }
21565
21566             list_to_add = cu->list_in_scope;
21567           }
21568           break;
21569         case DW_TAG_unspecified_parameters:
21570           /* From varargs functions; gdb doesn't seem to have any
21571              interest in this information, so just ignore it for now.
21572              (FIXME?) */
21573           break;
21574         case DW_TAG_template_type_param:
21575           suppress_add = 1;
21576           /* Fall through.  */
21577         case DW_TAG_class_type:
21578         case DW_TAG_interface_type:
21579         case DW_TAG_structure_type:
21580         case DW_TAG_union_type:
21581         case DW_TAG_set_type:
21582         case DW_TAG_enumeration_type:
21583           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21584           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21585
21586           {
21587             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21588                really ever be static objects: otherwise, if you try
21589                to, say, break of a class's method and you're in a file
21590                which doesn't mention that class, it won't work unless
21591                the check for all static symbols in lookup_symbol_aux
21592                saves you.  See the OtherFileClass tests in
21593                gdb.c++/namespace.exp.  */
21594
21595             if (!suppress_add)
21596               {
21597                 list_to_add
21598                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21599                      && cu->language == language_cplus
21600                      ? cu->builder->get_global_symbols ()
21601                      : cu->list_in_scope);
21602
21603                 /* The semantics of C++ state that "struct foo {
21604                    ... }" also defines a typedef for "foo".  */
21605                 if (cu->language == language_cplus
21606                     || cu->language == language_ada
21607                     || cu->language == language_d
21608                     || cu->language == language_rust)
21609                   {
21610                     /* The symbol's name is already allocated along
21611                        with this objfile, so we don't need to
21612                        duplicate it for the type.  */
21613                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21614                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21615                   }
21616               }
21617           }
21618           break;
21619         case DW_TAG_typedef:
21620           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21621           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21622           list_to_add = cu->list_in_scope;
21623           break;
21624         case DW_TAG_base_type:
21625         case DW_TAG_subrange_type:
21626           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21627           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21628           list_to_add = cu->list_in_scope;
21629           break;
21630         case DW_TAG_enumerator:
21631           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21632           if (attr)
21633             {
21634               dwarf2_const_value (attr, sym, cu);
21635             }
21636           {
21637             /* NOTE: carlton/2003-11-10: See comment above in the
21638                DW_TAG_class_type, etc. block.  */
21639
21640             list_to_add
21641               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21642                  && cu->language == language_cplus
21643                  ? cu->builder->get_global_symbols ()
21644                  : cu->list_in_scope);
21645           }
21646           break;
21647         case DW_TAG_imported_declaration:
21648         case DW_TAG_namespace:
21649           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21650           list_to_add = cu->builder->get_global_symbols ();
21651           break;
21652         case DW_TAG_module:
21653           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21654           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21655           list_to_add = cu->builder->get_global_symbols ();
21656           break;
21657         case DW_TAG_common_block:
21658           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21659           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21660           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21661           break;
21662         default:
21663           /* Not a tag we recognize.  Hopefully we aren't processing
21664              trash data, but since we must specifically ignore things
21665              we don't recognize, there is nothing else we should do at
21666              this point.  */
21667           complaint (_("unsupported tag: '%s'"),
21668                      dwarf_tag_name (die->tag));
21669           break;
21670         }
21671
21672       if (suppress_add)
21673         {
21674           sym->hash_next = objfile->template_symbols;
21675           objfile->template_symbols = sym;
21676           list_to_add = NULL;
21677         }
21678
21679       if (list_to_add != NULL)
21680         dw2_add_symbol_to_list (sym, list_to_add);
21681
21682       /* For the benefit of old versions of GCC, check for anonymous
21683          namespaces based on the demangled name.  */
21684       if (!cu->processing_has_namespace_info
21685           && cu->language == language_cplus)
21686         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21687     }
21688   return (sym);
21689 }
21690
21691 /* Given an attr with a DW_FORM_dataN value in host byte order,
21692    zero-extend it as appropriate for the symbol's type.  The DWARF
21693    standard (v4) is not entirely clear about the meaning of using
21694    DW_FORM_dataN for a constant with a signed type, where the type is
21695    wider than the data.  The conclusion of a discussion on the DWARF
21696    list was that this is unspecified.  We choose to always zero-extend
21697    because that is the interpretation long in use by GCC.  */
21698
21699 static gdb_byte *
21700 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21701                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21702 {
21703   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21704   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21705                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21706   LONGEST l = DW_UNSND (attr);
21707
21708   if (bits < sizeof (*value) * 8)
21709     {
21710       l &= ((LONGEST) 1 << bits) - 1;
21711       *value = l;
21712     }
21713   else if (bits == sizeof (*value) * 8)
21714     *value = l;
21715   else
21716     {
21717       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21718       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21719       return bytes;
21720     }
21721
21722   return NULL;
21723 }
21724
21725 /* Read a constant value from an attribute.  Either set *VALUE, or if
21726    the value does not fit in *VALUE, set *BYTES - either already
21727    allocated on the objfile obstack, or newly allocated on OBSTACK,
21728    or, set *BATON, if we translated the constant to a location
21729    expression.  */
21730
21731 static void
21732 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21733                          const char *name, struct obstack *obstack,
21734                          struct dwarf2_cu *cu,
21735                          LONGEST *value, const gdb_byte **bytes,
21736                          struct dwarf2_locexpr_baton **baton)
21737 {
21738   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21739   struct comp_unit_head *cu_header = &cu->header;
21740   struct dwarf_block *blk;
21741   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21742                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21743
21744   *value = 0;
21745   *bytes = NULL;
21746   *baton = NULL;
21747
21748   switch (attr->form)
21749     {
21750     case DW_FORM_addr:
21751     case DW_FORM_GNU_addr_index:
21752       {
21753         gdb_byte *data;
21754
21755         if (TYPE_LENGTH (type) != cu_header->addr_size)
21756           dwarf2_const_value_length_mismatch_complaint (name,
21757                                                         cu_header->addr_size,
21758                                                         TYPE_LENGTH (type));
21759         /* Symbols of this form are reasonably rare, so we just
21760            piggyback on the existing location code rather than writing
21761            a new implementation of symbol_computed_ops.  */
21762         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21763         (*baton)->per_cu = cu->per_cu;
21764         gdb_assert ((*baton)->per_cu);
21765
21766         (*baton)->size = 2 + cu_header->addr_size;
21767         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21768         (*baton)->data = data;
21769
21770         data[0] = DW_OP_addr;
21771         store_unsigned_integer (&data[1], cu_header->addr_size,
21772                                 byte_order, DW_ADDR (attr));
21773         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21774       }
21775       break;
21776     case DW_FORM_string:
21777     case DW_FORM_strp:
21778     case DW_FORM_GNU_str_index:
21779     case DW_FORM_GNU_strp_alt:
21780       /* DW_STRING is already allocated on the objfile obstack, point
21781          directly to it.  */
21782       *bytes = (const gdb_byte *) DW_STRING (attr);
21783       break;
21784     case DW_FORM_block1:
21785     case DW_FORM_block2:
21786     case DW_FORM_block4:
21787     case DW_FORM_block:
21788     case DW_FORM_exprloc:
21789     case DW_FORM_data16:
21790       blk = DW_BLOCK (attr);
21791       if (TYPE_LENGTH (type) != blk->size)
21792         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21793                                                       TYPE_LENGTH (type));
21794       *bytes = blk->data;
21795       break;
21796
21797       /* The DW_AT_const_value attributes are supposed to carry the
21798          symbol's value "represented as it would be on the target
21799          architecture."  By the time we get here, it's already been
21800          converted to host endianness, so we just need to sign- or
21801          zero-extend it as appropriate.  */
21802     case DW_FORM_data1:
21803       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21804       break;
21805     case DW_FORM_data2:
21806       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21807       break;
21808     case DW_FORM_data4:
21809       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21810       break;
21811     case DW_FORM_data8:
21812       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21813       break;
21814
21815     case DW_FORM_sdata:
21816     case DW_FORM_implicit_const:
21817       *value = DW_SND (attr);
21818       break;
21819
21820     case DW_FORM_udata:
21821       *value = DW_UNSND (attr);
21822       break;
21823
21824     default:
21825       complaint (_("unsupported const value attribute form: '%s'"),
21826                  dwarf_form_name (attr->form));
21827       *value = 0;
21828       break;
21829     }
21830 }
21831
21832
21833 /* Copy constant value from an attribute to a symbol.  */
21834
21835 static void
21836 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21837                     struct dwarf2_cu *cu)
21838 {
21839   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21840   LONGEST value;
21841   const gdb_byte *bytes;
21842   struct dwarf2_locexpr_baton *baton;
21843
21844   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21845                            SYMBOL_PRINT_NAME (sym),
21846                            &objfile->objfile_obstack, cu,
21847                            &value, &bytes, &baton);
21848
21849   if (baton != NULL)
21850     {
21851       SYMBOL_LOCATION_BATON (sym) = baton;
21852       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21853     }
21854   else if (bytes != NULL)
21855      {
21856       SYMBOL_VALUE_BYTES (sym) = bytes;
21857       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21858     }
21859   else
21860     {
21861       SYMBOL_VALUE (sym) = value;
21862       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21863     }
21864 }
21865
21866 /* Return the type of the die in question using its DW_AT_type attribute.  */
21867
21868 static struct type *
21869 die_type (struct die_info *die, struct dwarf2_cu *cu)
21870 {
21871   struct attribute *type_attr;
21872
21873   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21874   if (!type_attr)
21875     {
21876       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21877       /* A missing DW_AT_type represents a void type.  */
21878       return objfile_type (objfile)->builtin_void;
21879     }
21880
21881   return lookup_die_type (die, type_attr, cu);
21882 }
21883
21884 /* True iff CU's producer generates GNAT Ada auxiliary information
21885    that allows to find parallel types through that information instead
21886    of having to do expensive parallel lookups by type name.  */
21887
21888 static int
21889 need_gnat_info (struct dwarf2_cu *cu)
21890 {
21891   /* Assume that the Ada compiler was GNAT, which always produces
21892      the auxiliary information.  */
21893   return (cu->language == language_ada);
21894 }
21895
21896 /* Return the auxiliary type of the die in question using its
21897    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21898    attribute is not present.  */
21899
21900 static struct type *
21901 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21902 {
21903   struct attribute *type_attr;
21904
21905   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21906   if (!type_attr)
21907     return NULL;
21908
21909   return lookup_die_type (die, type_attr, cu);
21910 }
21911
21912 /* If DIE has a descriptive_type attribute, then set the TYPE's
21913    descriptive type accordingly.  */
21914
21915 static void
21916 set_descriptive_type (struct type *type, struct die_info *die,
21917                       struct dwarf2_cu *cu)
21918 {
21919   struct type *descriptive_type = die_descriptive_type (die, cu);
21920
21921   if (descriptive_type)
21922     {
21923       ALLOCATE_GNAT_AUX_TYPE (type);
21924       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21925     }
21926 }
21927
21928 /* Return the containing type of the die in question using its
21929    DW_AT_containing_type attribute.  */
21930
21931 static struct type *
21932 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21933 {
21934   struct attribute *type_attr;
21935   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21936
21937   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21938   if (!type_attr)
21939     error (_("Dwarf Error: Problem turning containing type into gdb type "
21940              "[in module %s]"), objfile_name (objfile));
21941
21942   return lookup_die_type (die, type_attr, cu);
21943 }
21944
21945 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21946
21947 static struct type *
21948 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21949 {
21950   struct dwarf2_per_objfile *dwarf2_per_objfile
21951     = cu->per_cu->dwarf2_per_objfile;
21952   struct objfile *objfile = dwarf2_per_objfile->objfile;
21953   char *saved;
21954
21955   std::string message
21956     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21957                      objfile_name (objfile),
21958                      sect_offset_str (cu->header.sect_off),
21959                      sect_offset_str (die->sect_off));
21960   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21961                                   message.c_str (), message.length ());
21962
21963   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21964 }
21965
21966 /* Look up the type of DIE in CU using its type attribute ATTR.
21967    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21968    DW_AT_containing_type.
21969    If there is no type substitute an error marker.  */
21970
21971 static struct type *
21972 lookup_die_type (struct die_info *die, const struct attribute *attr,
21973                  struct dwarf2_cu *cu)
21974 {
21975   struct dwarf2_per_objfile *dwarf2_per_objfile
21976     = cu->per_cu->dwarf2_per_objfile;
21977   struct objfile *objfile = dwarf2_per_objfile->objfile;
21978   struct type *this_type;
21979
21980   gdb_assert (attr->name == DW_AT_type
21981               || attr->name == DW_AT_GNAT_descriptive_type
21982               || attr->name == DW_AT_containing_type);
21983
21984   /* First see if we have it cached.  */
21985
21986   if (attr->form == DW_FORM_GNU_ref_alt)
21987     {
21988       struct dwarf2_per_cu_data *per_cu;
21989       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21990
21991       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
21992                                                  dwarf2_per_objfile);
21993       this_type = get_die_type_at_offset (sect_off, per_cu);
21994     }
21995   else if (attr_form_is_ref (attr))
21996     {
21997       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21998
21999       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
22000     }
22001   else if (attr->form == DW_FORM_ref_sig8)
22002     {
22003       ULONGEST signature = DW_SIGNATURE (attr);
22004
22005       return get_signatured_type (die, signature, cu);
22006     }
22007   else
22008     {
22009       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
22010                    " at %s [in module %s]"),
22011                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
22012                  objfile_name (objfile));
22013       return build_error_marker_type (cu, die);
22014     }
22015
22016   /* If not cached we need to read it in.  */
22017
22018   if (this_type == NULL)
22019     {
22020       struct die_info *type_die = NULL;
22021       struct dwarf2_cu *type_cu = cu;
22022
22023       if (attr_form_is_ref (attr))
22024         type_die = follow_die_ref (die, attr, &type_cu);
22025       if (type_die == NULL)
22026         return build_error_marker_type (cu, die);
22027       /* If we find the type now, it's probably because the type came
22028          from an inter-CU reference and the type's CU got expanded before
22029          ours.  */
22030       this_type = read_type_die (type_die, type_cu);
22031     }
22032
22033   /* If we still don't have a type use an error marker.  */
22034
22035   if (this_type == NULL)
22036     return build_error_marker_type (cu, die);
22037
22038   return this_type;
22039 }
22040
22041 /* Return the type in DIE, CU.
22042    Returns NULL for invalid types.
22043
22044    This first does a lookup in die_type_hash,
22045    and only reads the die in if necessary.
22046
22047    NOTE: This can be called when reading in partial or full symbols.  */
22048
22049 static struct type *
22050 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22051 {
22052   struct type *this_type;
22053
22054   this_type = get_die_type (die, cu);
22055   if (this_type)
22056     return this_type;
22057
22058   return read_type_die_1 (die, cu);
22059 }
22060
22061 /* Read the type in DIE, CU.
22062    Returns NULL for invalid types.  */
22063
22064 static struct type *
22065 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22066 {
22067   struct type *this_type = NULL;
22068
22069   switch (die->tag)
22070     {
22071     case DW_TAG_class_type:
22072     case DW_TAG_interface_type:
22073     case DW_TAG_structure_type:
22074     case DW_TAG_union_type:
22075       this_type = read_structure_type (die, cu);
22076       break;
22077     case DW_TAG_enumeration_type:
22078       this_type = read_enumeration_type (die, cu);
22079       break;
22080     case DW_TAG_subprogram:
22081     case DW_TAG_subroutine_type:
22082     case DW_TAG_inlined_subroutine:
22083       this_type = read_subroutine_type (die, cu);
22084       break;
22085     case DW_TAG_array_type:
22086       this_type = read_array_type (die, cu);
22087       break;
22088     case DW_TAG_set_type:
22089       this_type = read_set_type (die, cu);
22090       break;
22091     case DW_TAG_pointer_type:
22092       this_type = read_tag_pointer_type (die, cu);
22093       break;
22094     case DW_TAG_ptr_to_member_type:
22095       this_type = read_tag_ptr_to_member_type (die, cu);
22096       break;
22097     case DW_TAG_reference_type:
22098       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22099       break;
22100     case DW_TAG_rvalue_reference_type:
22101       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22102       break;
22103     case DW_TAG_const_type:
22104       this_type = read_tag_const_type (die, cu);
22105       break;
22106     case DW_TAG_volatile_type:
22107       this_type = read_tag_volatile_type (die, cu);
22108       break;
22109     case DW_TAG_restrict_type:
22110       this_type = read_tag_restrict_type (die, cu);
22111       break;
22112     case DW_TAG_string_type:
22113       this_type = read_tag_string_type (die, cu);
22114       break;
22115     case DW_TAG_typedef:
22116       this_type = read_typedef (die, cu);
22117       break;
22118     case DW_TAG_subrange_type:
22119       this_type = read_subrange_type (die, cu);
22120       break;
22121     case DW_TAG_base_type:
22122       this_type = read_base_type (die, cu);
22123       break;
22124     case DW_TAG_unspecified_type:
22125       this_type = read_unspecified_type (die, cu);
22126       break;
22127     case DW_TAG_namespace:
22128       this_type = read_namespace_type (die, cu);
22129       break;
22130     case DW_TAG_module:
22131       this_type = read_module_type (die, cu);
22132       break;
22133     case DW_TAG_atomic_type:
22134       this_type = read_tag_atomic_type (die, cu);
22135       break;
22136     default:
22137       complaint (_("unexpected tag in read_type_die: '%s'"),
22138                  dwarf_tag_name (die->tag));
22139       break;
22140     }
22141
22142   return this_type;
22143 }
22144
22145 /* See if we can figure out if the class lives in a namespace.  We do
22146    this by looking for a member function; its demangled name will
22147    contain namespace info, if there is any.
22148    Return the computed name or NULL.
22149    Space for the result is allocated on the objfile's obstack.
22150    This is the full-die version of guess_partial_die_structure_name.
22151    In this case we know DIE has no useful parent.  */
22152
22153 static char *
22154 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22155 {
22156   struct die_info *spec_die;
22157   struct dwarf2_cu *spec_cu;
22158   struct die_info *child;
22159   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22160
22161   spec_cu = cu;
22162   spec_die = die_specification (die, &spec_cu);
22163   if (spec_die != NULL)
22164     {
22165       die = spec_die;
22166       cu = spec_cu;
22167     }
22168
22169   for (child = die->child;
22170        child != NULL;
22171        child = child->sibling)
22172     {
22173       if (child->tag == DW_TAG_subprogram)
22174         {
22175           const char *linkage_name = dw2_linkage_name (child, cu);
22176
22177           if (linkage_name != NULL)
22178             {
22179               char *actual_name
22180                 = language_class_name_from_physname (cu->language_defn,
22181                                                      linkage_name);
22182               char *name = NULL;
22183
22184               if (actual_name != NULL)
22185                 {
22186                   const char *die_name = dwarf2_name (die, cu);
22187
22188                   if (die_name != NULL
22189                       && strcmp (die_name, actual_name) != 0)
22190                     {
22191                       /* Strip off the class name from the full name.
22192                          We want the prefix.  */
22193                       int die_name_len = strlen (die_name);
22194                       int actual_name_len = strlen (actual_name);
22195
22196                       /* Test for '::' as a sanity check.  */
22197                       if (actual_name_len > die_name_len + 2
22198                           && actual_name[actual_name_len
22199                                          - die_name_len - 1] == ':')
22200                         name = (char *) obstack_copy0 (
22201                           &objfile->per_bfd->storage_obstack,
22202                           actual_name, actual_name_len - die_name_len - 2);
22203                     }
22204                 }
22205               xfree (actual_name);
22206               return name;
22207             }
22208         }
22209     }
22210
22211   return NULL;
22212 }
22213
22214 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22215    prefix part in such case.  See
22216    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22217
22218 static const char *
22219 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22220 {
22221   struct attribute *attr;
22222   const char *base;
22223
22224   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22225       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22226     return NULL;
22227
22228   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22229     return NULL;
22230
22231   attr = dw2_linkage_name_attr (die, cu);
22232   if (attr == NULL || DW_STRING (attr) == NULL)
22233     return NULL;
22234
22235   /* dwarf2_name had to be already called.  */
22236   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22237
22238   /* Strip the base name, keep any leading namespaces/classes.  */
22239   base = strrchr (DW_STRING (attr), ':');
22240   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22241     return "";
22242
22243   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22244   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22245                                  DW_STRING (attr),
22246                                  &base[-1] - DW_STRING (attr));
22247 }
22248
22249 /* Return the name of the namespace/class that DIE is defined within,
22250    or "" if we can't tell.  The caller should not xfree the result.
22251
22252    For example, if we're within the method foo() in the following
22253    code:
22254
22255    namespace N {
22256      class C {
22257        void foo () {
22258        }
22259      };
22260    }
22261
22262    then determine_prefix on foo's die will return "N::C".  */
22263
22264 static const char *
22265 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22266 {
22267   struct dwarf2_per_objfile *dwarf2_per_objfile
22268     = cu->per_cu->dwarf2_per_objfile;
22269   struct die_info *parent, *spec_die;
22270   struct dwarf2_cu *spec_cu;
22271   struct type *parent_type;
22272   const char *retval;
22273
22274   if (cu->language != language_cplus
22275       && cu->language != language_fortran && cu->language != language_d
22276       && cu->language != language_rust)
22277     return "";
22278
22279   retval = anonymous_struct_prefix (die, cu);
22280   if (retval)
22281     return retval;
22282
22283   /* We have to be careful in the presence of DW_AT_specification.
22284      For example, with GCC 3.4, given the code
22285
22286      namespace N {
22287        void foo() {
22288          // Definition of N::foo.
22289        }
22290      }
22291
22292      then we'll have a tree of DIEs like this:
22293
22294      1: DW_TAG_compile_unit
22295        2: DW_TAG_namespace        // N
22296          3: DW_TAG_subprogram     // declaration of N::foo
22297        4: DW_TAG_subprogram       // definition of N::foo
22298             DW_AT_specification   // refers to die #3
22299
22300      Thus, when processing die #4, we have to pretend that we're in
22301      the context of its DW_AT_specification, namely the contex of die
22302      #3.  */
22303   spec_cu = cu;
22304   spec_die = die_specification (die, &spec_cu);
22305   if (spec_die == NULL)
22306     parent = die->parent;
22307   else
22308     {
22309       parent = spec_die->parent;
22310       cu = spec_cu;
22311     }
22312
22313   if (parent == NULL)
22314     return "";
22315   else if (parent->building_fullname)
22316     {
22317       const char *name;
22318       const char *parent_name;
22319
22320       /* It has been seen on RealView 2.2 built binaries,
22321          DW_TAG_template_type_param types actually _defined_ as
22322          children of the parent class:
22323
22324          enum E {};
22325          template class <class Enum> Class{};
22326          Class<enum E> class_e;
22327
22328          1: DW_TAG_class_type (Class)
22329            2: DW_TAG_enumeration_type (E)
22330              3: DW_TAG_enumerator (enum1:0)
22331              3: DW_TAG_enumerator (enum2:1)
22332              ...
22333            2: DW_TAG_template_type_param
22334               DW_AT_type  DW_FORM_ref_udata (E)
22335
22336          Besides being broken debug info, it can put GDB into an
22337          infinite loop.  Consider:
22338
22339          When we're building the full name for Class<E>, we'll start
22340          at Class, and go look over its template type parameters,
22341          finding E.  We'll then try to build the full name of E, and
22342          reach here.  We're now trying to build the full name of E,
22343          and look over the parent DIE for containing scope.  In the
22344          broken case, if we followed the parent DIE of E, we'd again
22345          find Class, and once again go look at its template type
22346          arguments, etc., etc.  Simply don't consider such parent die
22347          as source-level parent of this die (it can't be, the language
22348          doesn't allow it), and break the loop here.  */
22349       name = dwarf2_name (die, cu);
22350       parent_name = dwarf2_name (parent, cu);
22351       complaint (_("template param type '%s' defined within parent '%s'"),
22352                  name ? name : "<unknown>",
22353                  parent_name ? parent_name : "<unknown>");
22354       return "";
22355     }
22356   else
22357     switch (parent->tag)
22358       {
22359       case DW_TAG_namespace:
22360         parent_type = read_type_die (parent, cu);
22361         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22362            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22363            Work around this problem here.  */
22364         if (cu->language == language_cplus
22365             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22366           return "";
22367         /* We give a name to even anonymous namespaces.  */
22368         return TYPE_NAME (parent_type);
22369       case DW_TAG_class_type:
22370       case DW_TAG_interface_type:
22371       case DW_TAG_structure_type:
22372       case DW_TAG_union_type:
22373       case DW_TAG_module:
22374         parent_type = read_type_die (parent, cu);
22375         if (TYPE_NAME (parent_type) != NULL)
22376           return TYPE_NAME (parent_type);
22377         else
22378           /* An anonymous structure is only allowed non-static data
22379              members; no typedefs, no member functions, et cetera.
22380              So it does not need a prefix.  */
22381           return "";
22382       case DW_TAG_compile_unit:
22383       case DW_TAG_partial_unit:
22384         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22385         if (cu->language == language_cplus
22386             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22387             && die->child != NULL
22388             && (die->tag == DW_TAG_class_type
22389                 || die->tag == DW_TAG_structure_type
22390                 || die->tag == DW_TAG_union_type))
22391           {
22392             char *name = guess_full_die_structure_name (die, cu);
22393             if (name != NULL)
22394               return name;
22395           }
22396         return "";
22397       case DW_TAG_enumeration_type:
22398         parent_type = read_type_die (parent, cu);
22399         if (TYPE_DECLARED_CLASS (parent_type))
22400           {
22401             if (TYPE_NAME (parent_type) != NULL)
22402               return TYPE_NAME (parent_type);
22403             return "";
22404           }
22405         /* Fall through.  */
22406       default:
22407         return determine_prefix (parent, cu);
22408       }
22409 }
22410
22411 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22412    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22413    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22414    an obconcat, otherwise allocate storage for the result.  The CU argument is
22415    used to determine the language and hence, the appropriate separator.  */
22416
22417 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22418
22419 static char *
22420 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22421                  int physname, struct dwarf2_cu *cu)
22422 {
22423   const char *lead = "";
22424   const char *sep;
22425
22426   if (suffix == NULL || suffix[0] == '\0'
22427       || prefix == NULL || prefix[0] == '\0')
22428     sep = "";
22429   else if (cu->language == language_d)
22430     {
22431       /* For D, the 'main' function could be defined in any module, but it
22432          should never be prefixed.  */
22433       if (strcmp (suffix, "D main") == 0)
22434         {
22435           prefix = "";
22436           sep = "";
22437         }
22438       else
22439         sep = ".";
22440     }
22441   else if (cu->language == language_fortran && physname)
22442     {
22443       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22444          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22445
22446       lead = "__";
22447       sep = "_MOD_";
22448     }
22449   else
22450     sep = "::";
22451
22452   if (prefix == NULL)
22453     prefix = "";
22454   if (suffix == NULL)
22455     suffix = "";
22456
22457   if (obs == NULL)
22458     {
22459       char *retval
22460         = ((char *)
22461            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22462
22463       strcpy (retval, lead);
22464       strcat (retval, prefix);
22465       strcat (retval, sep);
22466       strcat (retval, suffix);
22467       return retval;
22468     }
22469   else
22470     {
22471       /* We have an obstack.  */
22472       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22473     }
22474 }
22475
22476 /* Return sibling of die, NULL if no sibling.  */
22477
22478 static struct die_info *
22479 sibling_die (struct die_info *die)
22480 {
22481   return die->sibling;
22482 }
22483
22484 /* Get name of a die, return NULL if not found.  */
22485
22486 static const char *
22487 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22488                           struct obstack *obstack)
22489 {
22490   if (name && cu->language == language_cplus)
22491     {
22492       std::string canon_name = cp_canonicalize_string (name);
22493
22494       if (!canon_name.empty ())
22495         {
22496           if (canon_name != name)
22497             name = (const char *) obstack_copy0 (obstack,
22498                                                  canon_name.c_str (),
22499                                                  canon_name.length ());
22500         }
22501     }
22502
22503   return name;
22504 }
22505
22506 /* Get name of a die, return NULL if not found.
22507    Anonymous namespaces are converted to their magic string.  */
22508
22509 static const char *
22510 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22511 {
22512   struct attribute *attr;
22513   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22514
22515   attr = dwarf2_attr (die, DW_AT_name, cu);
22516   if ((!attr || !DW_STRING (attr))
22517       && die->tag != DW_TAG_namespace
22518       && die->tag != DW_TAG_class_type
22519       && die->tag != DW_TAG_interface_type
22520       && die->tag != DW_TAG_structure_type
22521       && die->tag != DW_TAG_union_type)
22522     return NULL;
22523
22524   switch (die->tag)
22525     {
22526     case DW_TAG_compile_unit:
22527     case DW_TAG_partial_unit:
22528       /* Compilation units have a DW_AT_name that is a filename, not
22529          a source language identifier.  */
22530     case DW_TAG_enumeration_type:
22531     case DW_TAG_enumerator:
22532       /* These tags always have simple identifiers already; no need
22533          to canonicalize them.  */
22534       return DW_STRING (attr);
22535
22536     case DW_TAG_namespace:
22537       if (attr != NULL && DW_STRING (attr) != NULL)
22538         return DW_STRING (attr);
22539       return CP_ANONYMOUS_NAMESPACE_STR;
22540
22541     case DW_TAG_class_type:
22542     case DW_TAG_interface_type:
22543     case DW_TAG_structure_type:
22544     case DW_TAG_union_type:
22545       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22546          structures or unions.  These were of the form "._%d" in GCC 4.1,
22547          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22548          and GCC 4.4.  We work around this problem by ignoring these.  */
22549       if (attr && DW_STRING (attr)
22550           && (startswith (DW_STRING (attr), "._")
22551               || startswith (DW_STRING (attr), "<anonymous")))
22552         return NULL;
22553
22554       /* GCC might emit a nameless typedef that has a linkage name.  See
22555          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22556       if (!attr || DW_STRING (attr) == NULL)
22557         {
22558           char *demangled = NULL;
22559
22560           attr = dw2_linkage_name_attr (die, cu);
22561           if (attr == NULL || DW_STRING (attr) == NULL)
22562             return NULL;
22563
22564           /* Avoid demangling DW_STRING (attr) the second time on a second
22565              call for the same DIE.  */
22566           if (!DW_STRING_IS_CANONICAL (attr))
22567             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22568
22569           if (demangled)
22570             {
22571               const char *base;
22572
22573               /* FIXME: we already did this for the partial symbol... */
22574               DW_STRING (attr)
22575                 = ((const char *)
22576                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22577                                   demangled, strlen (demangled)));
22578               DW_STRING_IS_CANONICAL (attr) = 1;
22579               xfree (demangled);
22580
22581               /* Strip any leading namespaces/classes, keep only the base name.
22582                  DW_AT_name for named DIEs does not contain the prefixes.  */
22583               base = strrchr (DW_STRING (attr), ':');
22584               if (base && base > DW_STRING (attr) && base[-1] == ':')
22585                 return &base[1];
22586               else
22587                 return DW_STRING (attr);
22588             }
22589         }
22590       break;
22591
22592     default:
22593       break;
22594     }
22595
22596   if (!DW_STRING_IS_CANONICAL (attr))
22597     {
22598       DW_STRING (attr)
22599         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22600                                     &objfile->per_bfd->storage_obstack);
22601       DW_STRING_IS_CANONICAL (attr) = 1;
22602     }
22603   return DW_STRING (attr);
22604 }
22605
22606 /* Return the die that this die in an extension of, or NULL if there
22607    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22608    containing the return value on output.  */
22609
22610 static struct die_info *
22611 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22612 {
22613   struct attribute *attr;
22614
22615   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22616   if (attr == NULL)
22617     return NULL;
22618
22619   return follow_die_ref (die, attr, ext_cu);
22620 }
22621
22622 /* Convert a DIE tag into its string name.  */
22623
22624 static const char *
22625 dwarf_tag_name (unsigned tag)
22626 {
22627   const char *name = get_DW_TAG_name (tag);
22628
22629   if (name == NULL)
22630     return "DW_TAG_<unknown>";
22631
22632   return name;
22633 }
22634
22635 /* Convert a DWARF attribute code into its string name.  */
22636
22637 static const char *
22638 dwarf_attr_name (unsigned attr)
22639 {
22640   const char *name;
22641
22642 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22643   if (attr == DW_AT_MIPS_fde)
22644     return "DW_AT_MIPS_fde";
22645 #else
22646   if (attr == DW_AT_HP_block_index)
22647     return "DW_AT_HP_block_index";
22648 #endif
22649
22650   name = get_DW_AT_name (attr);
22651
22652   if (name == NULL)
22653     return "DW_AT_<unknown>";
22654
22655   return name;
22656 }
22657
22658 /* Convert a DWARF value form code into its string name.  */
22659
22660 static const char *
22661 dwarf_form_name (unsigned form)
22662 {
22663   const char *name = get_DW_FORM_name (form);
22664
22665   if (name == NULL)
22666     return "DW_FORM_<unknown>";
22667
22668   return name;
22669 }
22670
22671 static const char *
22672 dwarf_bool_name (unsigned mybool)
22673 {
22674   if (mybool)
22675     return "TRUE";
22676   else
22677     return "FALSE";
22678 }
22679
22680 /* Convert a DWARF type code into its string name.  */
22681
22682 static const char *
22683 dwarf_type_encoding_name (unsigned enc)
22684 {
22685   const char *name = get_DW_ATE_name (enc);
22686
22687   if (name == NULL)
22688     return "DW_ATE_<unknown>";
22689
22690   return name;
22691 }
22692
22693 static void
22694 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22695 {
22696   unsigned int i;
22697
22698   print_spaces (indent, f);
22699   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22700                       dwarf_tag_name (die->tag), die->abbrev,
22701                       sect_offset_str (die->sect_off));
22702
22703   if (die->parent != NULL)
22704     {
22705       print_spaces (indent, f);
22706       fprintf_unfiltered (f, "  parent at offset: %s\n",
22707                           sect_offset_str (die->parent->sect_off));
22708     }
22709
22710   print_spaces (indent, f);
22711   fprintf_unfiltered (f, "  has children: %s\n",
22712            dwarf_bool_name (die->child != NULL));
22713
22714   print_spaces (indent, f);
22715   fprintf_unfiltered (f, "  attributes:\n");
22716
22717   for (i = 0; i < die->num_attrs; ++i)
22718     {
22719       print_spaces (indent, f);
22720       fprintf_unfiltered (f, "    %s (%s) ",
22721                dwarf_attr_name (die->attrs[i].name),
22722                dwarf_form_name (die->attrs[i].form));
22723
22724       switch (die->attrs[i].form)
22725         {
22726         case DW_FORM_addr:
22727         case DW_FORM_GNU_addr_index:
22728           fprintf_unfiltered (f, "address: ");
22729           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22730           break;
22731         case DW_FORM_block2:
22732         case DW_FORM_block4:
22733         case DW_FORM_block:
22734         case DW_FORM_block1:
22735           fprintf_unfiltered (f, "block: size %s",
22736                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22737           break;
22738         case DW_FORM_exprloc:
22739           fprintf_unfiltered (f, "expression: size %s",
22740                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22741           break;
22742         case DW_FORM_data16:
22743           fprintf_unfiltered (f, "constant of 16 bytes");
22744           break;
22745         case DW_FORM_ref_addr:
22746           fprintf_unfiltered (f, "ref address: ");
22747           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22748           break;
22749         case DW_FORM_GNU_ref_alt:
22750           fprintf_unfiltered (f, "alt ref address: ");
22751           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22752           break;
22753         case DW_FORM_ref1:
22754         case DW_FORM_ref2:
22755         case DW_FORM_ref4:
22756         case DW_FORM_ref8:
22757         case DW_FORM_ref_udata:
22758           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22759                               (long) (DW_UNSND (&die->attrs[i])));
22760           break;
22761         case DW_FORM_data1:
22762         case DW_FORM_data2:
22763         case DW_FORM_data4:
22764         case DW_FORM_data8:
22765         case DW_FORM_udata:
22766         case DW_FORM_sdata:
22767           fprintf_unfiltered (f, "constant: %s",
22768                               pulongest (DW_UNSND (&die->attrs[i])));
22769           break;
22770         case DW_FORM_sec_offset:
22771           fprintf_unfiltered (f, "section offset: %s",
22772                               pulongest (DW_UNSND (&die->attrs[i])));
22773           break;
22774         case DW_FORM_ref_sig8:
22775           fprintf_unfiltered (f, "signature: %s",
22776                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22777           break;
22778         case DW_FORM_string:
22779         case DW_FORM_strp:
22780         case DW_FORM_line_strp:
22781         case DW_FORM_GNU_str_index:
22782         case DW_FORM_GNU_strp_alt:
22783           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22784                    DW_STRING (&die->attrs[i])
22785                    ? DW_STRING (&die->attrs[i]) : "",
22786                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22787           break;
22788         case DW_FORM_flag:
22789           if (DW_UNSND (&die->attrs[i]))
22790             fprintf_unfiltered (f, "flag: TRUE");
22791           else
22792             fprintf_unfiltered (f, "flag: FALSE");
22793           break;
22794         case DW_FORM_flag_present:
22795           fprintf_unfiltered (f, "flag: TRUE");
22796           break;
22797         case DW_FORM_indirect:
22798           /* The reader will have reduced the indirect form to
22799              the "base form" so this form should not occur.  */
22800           fprintf_unfiltered (f, 
22801                               "unexpected attribute form: DW_FORM_indirect");
22802           break;
22803         case DW_FORM_implicit_const:
22804           fprintf_unfiltered (f, "constant: %s",
22805                               plongest (DW_SND (&die->attrs[i])));
22806           break;
22807         default:
22808           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22809                    die->attrs[i].form);
22810           break;
22811         }
22812       fprintf_unfiltered (f, "\n");
22813     }
22814 }
22815
22816 static void
22817 dump_die_for_error (struct die_info *die)
22818 {
22819   dump_die_shallow (gdb_stderr, 0, die);
22820 }
22821
22822 static void
22823 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22824 {
22825   int indent = level * 4;
22826
22827   gdb_assert (die != NULL);
22828
22829   if (level >= max_level)
22830     return;
22831
22832   dump_die_shallow (f, indent, die);
22833
22834   if (die->child != NULL)
22835     {
22836       print_spaces (indent, f);
22837       fprintf_unfiltered (f, "  Children:");
22838       if (level + 1 < max_level)
22839         {
22840           fprintf_unfiltered (f, "\n");
22841           dump_die_1 (f, level + 1, max_level, die->child);
22842         }
22843       else
22844         {
22845           fprintf_unfiltered (f,
22846                               " [not printed, max nesting level reached]\n");
22847         }
22848     }
22849
22850   if (die->sibling != NULL && level > 0)
22851     {
22852       dump_die_1 (f, level, max_level, die->sibling);
22853     }
22854 }
22855
22856 /* This is called from the pdie macro in gdbinit.in.
22857    It's not static so gcc will keep a copy callable from gdb.  */
22858
22859 void
22860 dump_die (struct die_info *die, int max_level)
22861 {
22862   dump_die_1 (gdb_stdlog, 0, max_level, die);
22863 }
22864
22865 static void
22866 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22867 {
22868   void **slot;
22869
22870   slot = htab_find_slot_with_hash (cu->die_hash, die,
22871                                    to_underlying (die->sect_off),
22872                                    INSERT);
22873
22874   *slot = die;
22875 }
22876
22877 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22878    required kind.  */
22879
22880 static sect_offset
22881 dwarf2_get_ref_die_offset (const struct attribute *attr)
22882 {
22883   if (attr_form_is_ref (attr))
22884     return (sect_offset) DW_UNSND (attr);
22885
22886   complaint (_("unsupported die ref attribute form: '%s'"),
22887              dwarf_form_name (attr->form));
22888   return {};
22889 }
22890
22891 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22892  * the value held by the attribute is not constant.  */
22893
22894 static LONGEST
22895 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22896 {
22897   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22898     return DW_SND (attr);
22899   else if (attr->form == DW_FORM_udata
22900            || attr->form == DW_FORM_data1
22901            || attr->form == DW_FORM_data2
22902            || attr->form == DW_FORM_data4
22903            || attr->form == DW_FORM_data8)
22904     return DW_UNSND (attr);
22905   else
22906     {
22907       /* For DW_FORM_data16 see attr_form_is_constant.  */
22908       complaint (_("Attribute value is not a constant (%s)"),
22909                  dwarf_form_name (attr->form));
22910       return default_value;
22911     }
22912 }
22913
22914 /* Follow reference or signature attribute ATTR of SRC_DIE.
22915    On entry *REF_CU is the CU of SRC_DIE.
22916    On exit *REF_CU is the CU of the result.  */
22917
22918 static struct die_info *
22919 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22920                        struct dwarf2_cu **ref_cu)
22921 {
22922   struct die_info *die;
22923
22924   if (attr_form_is_ref (attr))
22925     die = follow_die_ref (src_die, attr, ref_cu);
22926   else if (attr->form == DW_FORM_ref_sig8)
22927     die = follow_die_sig (src_die, attr, ref_cu);
22928   else
22929     {
22930       dump_die_for_error (src_die);
22931       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22932              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22933     }
22934
22935   return die;
22936 }
22937
22938 /* Follow reference OFFSET.
22939    On entry *REF_CU is the CU of the source die referencing OFFSET.
22940    On exit *REF_CU is the CU of the result.
22941    Returns NULL if OFFSET is invalid.  */
22942
22943 static struct die_info *
22944 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22945                    struct dwarf2_cu **ref_cu)
22946 {
22947   struct die_info temp_die;
22948   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22949   struct dwarf2_per_objfile *dwarf2_per_objfile
22950     = cu->per_cu->dwarf2_per_objfile;
22951
22952   gdb_assert (cu->per_cu != NULL);
22953
22954   target_cu = cu;
22955
22956   if (cu->per_cu->is_debug_types)
22957     {
22958       /* .debug_types CUs cannot reference anything outside their CU.
22959          If they need to, they have to reference a signatured type via
22960          DW_FORM_ref_sig8.  */
22961       if (!offset_in_cu_p (&cu->header, sect_off))
22962         return NULL;
22963     }
22964   else if (offset_in_dwz != cu->per_cu->is_dwz
22965            || !offset_in_cu_p (&cu->header, sect_off))
22966     {
22967       struct dwarf2_per_cu_data *per_cu;
22968
22969       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22970                                                  dwarf2_per_objfile);
22971
22972       /* If necessary, add it to the queue and load its DIEs.  */
22973       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22974         load_full_comp_unit (per_cu, false, cu->language);
22975
22976       target_cu = per_cu->cu;
22977     }
22978   else if (cu->dies == NULL)
22979     {
22980       /* We're loading full DIEs during partial symbol reading.  */
22981       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22982       load_full_comp_unit (cu->per_cu, false, language_minimal);
22983     }
22984
22985   *ref_cu = target_cu;
22986   temp_die.sect_off = sect_off;
22987   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22988                                                   &temp_die,
22989                                                   to_underlying (sect_off));
22990 }
22991
22992 /* Follow reference attribute ATTR of SRC_DIE.
22993    On entry *REF_CU is the CU of SRC_DIE.
22994    On exit *REF_CU is the CU of the result.  */
22995
22996 static struct die_info *
22997 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
22998                 struct dwarf2_cu **ref_cu)
22999 {
23000   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
23001   struct dwarf2_cu *cu = *ref_cu;
23002   struct die_info *die;
23003
23004   die = follow_die_offset (sect_off,
23005                            (attr->form == DW_FORM_GNU_ref_alt
23006                             || cu->per_cu->is_dwz),
23007                            ref_cu);
23008   if (!die)
23009     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
23010            "at %s [in module %s]"),
23011            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
23012            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
23013
23014   return die;
23015 }
23016
23017 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
23018    Returned value is intended for DW_OP_call*.  Returned
23019    dwarf2_locexpr_baton->data has lifetime of
23020    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
23021
23022 struct dwarf2_locexpr_baton
23023 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
23024                                struct dwarf2_per_cu_data *per_cu,
23025                                CORE_ADDR (*get_frame_pc) (void *baton),
23026                                void *baton, bool resolve_abstract_p)
23027 {
23028   struct dwarf2_cu *cu;
23029   struct die_info *die;
23030   struct attribute *attr;
23031   struct dwarf2_locexpr_baton retval;
23032   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23033   struct objfile *objfile = dwarf2_per_objfile->objfile;
23034
23035   if (per_cu->cu == NULL)
23036     load_cu (per_cu, false);
23037   cu = per_cu->cu;
23038   if (cu == NULL)
23039     {
23040       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23041          Instead just throw an error, not much else we can do.  */
23042       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23043              sect_offset_str (sect_off), objfile_name (objfile));
23044     }
23045
23046   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23047   if (!die)
23048     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23049            sect_offset_str (sect_off), objfile_name (objfile));
23050
23051   attr = dwarf2_attr (die, DW_AT_location, cu);
23052   if (!attr && resolve_abstract_p
23053       && (dwarf2_per_objfile->abstract_to_concrete.find (die)
23054           != dwarf2_per_objfile->abstract_to_concrete.end ()))
23055     {
23056       CORE_ADDR pc = (*get_frame_pc) (baton);
23057
23058       for (const auto &cand : dwarf2_per_objfile->abstract_to_concrete[die])
23059         {
23060           if (!cand->parent
23061               || cand->parent->tag != DW_TAG_subprogram)
23062             continue;
23063
23064           CORE_ADDR pc_low, pc_high;
23065           get_scope_pc_bounds (cand->parent, &pc_low, &pc_high, cu);
23066           if (pc_low == ((CORE_ADDR) -1)
23067               || !(pc_low <= pc && pc < pc_high))
23068             continue;
23069
23070           die = cand;
23071           attr = dwarf2_attr (die, DW_AT_location, cu);
23072           break;
23073         }
23074     }
23075
23076   if (!attr)
23077     {
23078       /* DWARF: "If there is no such attribute, then there is no effect.".
23079          DATA is ignored if SIZE is 0.  */
23080
23081       retval.data = NULL;
23082       retval.size = 0;
23083     }
23084   else if (attr_form_is_section_offset (attr))
23085     {
23086       struct dwarf2_loclist_baton loclist_baton;
23087       CORE_ADDR pc = (*get_frame_pc) (baton);
23088       size_t size;
23089
23090       fill_in_loclist_baton (cu, &loclist_baton, attr);
23091
23092       retval.data = dwarf2_find_location_expression (&loclist_baton,
23093                                                      &size, pc);
23094       retval.size = size;
23095     }
23096   else
23097     {
23098       if (!attr_form_is_block (attr))
23099         error (_("Dwarf Error: DIE at %s referenced in module %s "
23100                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23101                sect_offset_str (sect_off), objfile_name (objfile));
23102
23103       retval.data = DW_BLOCK (attr)->data;
23104       retval.size = DW_BLOCK (attr)->size;
23105     }
23106   retval.per_cu = cu->per_cu;
23107
23108   age_cached_comp_units (dwarf2_per_objfile);
23109
23110   return retval;
23111 }
23112
23113 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23114    offset.  */
23115
23116 struct dwarf2_locexpr_baton
23117 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23118                              struct dwarf2_per_cu_data *per_cu,
23119                              CORE_ADDR (*get_frame_pc) (void *baton),
23120                              void *baton)
23121 {
23122   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23123
23124   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23125 }
23126
23127 /* Write a constant of a given type as target-ordered bytes into
23128    OBSTACK.  */
23129
23130 static const gdb_byte *
23131 write_constant_as_bytes (struct obstack *obstack,
23132                          enum bfd_endian byte_order,
23133                          struct type *type,
23134                          ULONGEST value,
23135                          LONGEST *len)
23136 {
23137   gdb_byte *result;
23138
23139   *len = TYPE_LENGTH (type);
23140   result = (gdb_byte *) obstack_alloc (obstack, *len);
23141   store_unsigned_integer (result, *len, byte_order, value);
23142
23143   return result;
23144 }
23145
23146 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23147    pointer to the constant bytes and set LEN to the length of the
23148    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23149    does not have a DW_AT_const_value, return NULL.  */
23150
23151 const gdb_byte *
23152 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23153                              struct dwarf2_per_cu_data *per_cu,
23154                              struct obstack *obstack,
23155                              LONGEST *len)
23156 {
23157   struct dwarf2_cu *cu;
23158   struct die_info *die;
23159   struct attribute *attr;
23160   const gdb_byte *result = NULL;
23161   struct type *type;
23162   LONGEST value;
23163   enum bfd_endian byte_order;
23164   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23165
23166   if (per_cu->cu == NULL)
23167     load_cu (per_cu, false);
23168   cu = per_cu->cu;
23169   if (cu == NULL)
23170     {
23171       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23172          Instead just throw an error, not much else we can do.  */
23173       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23174              sect_offset_str (sect_off), objfile_name (objfile));
23175     }
23176
23177   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23178   if (!die)
23179     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23180            sect_offset_str (sect_off), objfile_name (objfile));
23181
23182   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23183   if (attr == NULL)
23184     return NULL;
23185
23186   byte_order = (bfd_big_endian (objfile->obfd)
23187                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23188
23189   switch (attr->form)
23190     {
23191     case DW_FORM_addr:
23192     case DW_FORM_GNU_addr_index:
23193       {
23194         gdb_byte *tem;
23195
23196         *len = cu->header.addr_size;
23197         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23198         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23199         result = tem;
23200       }
23201       break;
23202     case DW_FORM_string:
23203     case DW_FORM_strp:
23204     case DW_FORM_GNU_str_index:
23205     case DW_FORM_GNU_strp_alt:
23206       /* DW_STRING is already allocated on the objfile obstack, point
23207          directly to it.  */
23208       result = (const gdb_byte *) DW_STRING (attr);
23209       *len = strlen (DW_STRING (attr));
23210       break;
23211     case DW_FORM_block1:
23212     case DW_FORM_block2:
23213     case DW_FORM_block4:
23214     case DW_FORM_block:
23215     case DW_FORM_exprloc:
23216     case DW_FORM_data16:
23217       result = DW_BLOCK (attr)->data;
23218       *len = DW_BLOCK (attr)->size;
23219       break;
23220
23221       /* The DW_AT_const_value attributes are supposed to carry the
23222          symbol's value "represented as it would be on the target
23223          architecture."  By the time we get here, it's already been
23224          converted to host endianness, so we just need to sign- or
23225          zero-extend it as appropriate.  */
23226     case DW_FORM_data1:
23227       type = die_type (die, cu);
23228       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23229       if (result == NULL)
23230         result = write_constant_as_bytes (obstack, byte_order,
23231                                           type, value, len);
23232       break;
23233     case DW_FORM_data2:
23234       type = die_type (die, cu);
23235       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23236       if (result == NULL)
23237         result = write_constant_as_bytes (obstack, byte_order,
23238                                           type, value, len);
23239       break;
23240     case DW_FORM_data4:
23241       type = die_type (die, cu);
23242       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23243       if (result == NULL)
23244         result = write_constant_as_bytes (obstack, byte_order,
23245                                           type, value, len);
23246       break;
23247     case DW_FORM_data8:
23248       type = die_type (die, cu);
23249       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23250       if (result == NULL)
23251         result = write_constant_as_bytes (obstack, byte_order,
23252                                           type, value, len);
23253       break;
23254
23255     case DW_FORM_sdata:
23256     case DW_FORM_implicit_const:
23257       type = die_type (die, cu);
23258       result = write_constant_as_bytes (obstack, byte_order,
23259                                         type, DW_SND (attr), len);
23260       break;
23261
23262     case DW_FORM_udata:
23263       type = die_type (die, cu);
23264       result = write_constant_as_bytes (obstack, byte_order,
23265                                         type, DW_UNSND (attr), len);
23266       break;
23267
23268     default:
23269       complaint (_("unsupported const value attribute form: '%s'"),
23270                  dwarf_form_name (attr->form));
23271       break;
23272     }
23273
23274   return result;
23275 }
23276
23277 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23278    valid type for this die is found.  */
23279
23280 struct type *
23281 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23282                                 struct dwarf2_per_cu_data *per_cu)
23283 {
23284   struct dwarf2_cu *cu;
23285   struct die_info *die;
23286
23287   if (per_cu->cu == NULL)
23288     load_cu (per_cu, false);
23289   cu = per_cu->cu;
23290   if (!cu)
23291     return NULL;
23292
23293   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23294   if (!die)
23295     return NULL;
23296
23297   return die_type (die, cu);
23298 }
23299
23300 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23301    PER_CU.  */
23302
23303 struct type *
23304 dwarf2_get_die_type (cu_offset die_offset,
23305                      struct dwarf2_per_cu_data *per_cu)
23306 {
23307   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23308   return get_die_type_at_offset (die_offset_sect, per_cu);
23309 }
23310
23311 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23312    On entry *REF_CU is the CU of SRC_DIE.
23313    On exit *REF_CU is the CU of the result.
23314    Returns NULL if the referenced DIE isn't found.  */
23315
23316 static struct die_info *
23317 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23318                   struct dwarf2_cu **ref_cu)
23319 {
23320   struct die_info temp_die;
23321   struct dwarf2_cu *sig_cu;
23322   struct die_info *die;
23323
23324   /* While it might be nice to assert sig_type->type == NULL here,
23325      we can get here for DW_AT_imported_declaration where we need
23326      the DIE not the type.  */
23327
23328   /* If necessary, add it to the queue and load its DIEs.  */
23329
23330   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23331     read_signatured_type (sig_type);
23332
23333   sig_cu = sig_type->per_cu.cu;
23334   gdb_assert (sig_cu != NULL);
23335   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23336   temp_die.sect_off = sig_type->type_offset_in_section;
23337   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23338                                                  to_underlying (temp_die.sect_off));
23339   if (die)
23340     {
23341       struct dwarf2_per_objfile *dwarf2_per_objfile
23342         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23343
23344       /* For .gdb_index version 7 keep track of included TUs.
23345          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23346       if (dwarf2_per_objfile->index_table != NULL
23347           && dwarf2_per_objfile->index_table->version <= 7)
23348         {
23349           VEC_safe_push (dwarf2_per_cu_ptr,
23350                          (*ref_cu)->per_cu->imported_symtabs,
23351                          sig_cu->per_cu);
23352         }
23353
23354       *ref_cu = sig_cu;
23355       return die;
23356     }
23357
23358   return NULL;
23359 }
23360
23361 /* Follow signatured type referenced by ATTR in SRC_DIE.
23362    On entry *REF_CU is the CU of SRC_DIE.
23363    On exit *REF_CU is the CU of the result.
23364    The result is the DIE of the type.
23365    If the referenced type cannot be found an error is thrown.  */
23366
23367 static struct die_info *
23368 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23369                 struct dwarf2_cu **ref_cu)
23370 {
23371   ULONGEST signature = DW_SIGNATURE (attr);
23372   struct signatured_type *sig_type;
23373   struct die_info *die;
23374
23375   gdb_assert (attr->form == DW_FORM_ref_sig8);
23376
23377   sig_type = lookup_signatured_type (*ref_cu, signature);
23378   /* sig_type will be NULL if the signatured type is missing from
23379      the debug info.  */
23380   if (sig_type == NULL)
23381     {
23382       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23383                " from DIE at %s [in module %s]"),
23384              hex_string (signature), sect_offset_str (src_die->sect_off),
23385              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23386     }
23387
23388   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23389   if (die == NULL)
23390     {
23391       dump_die_for_error (src_die);
23392       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23393                " from DIE at %s [in module %s]"),
23394              hex_string (signature), sect_offset_str (src_die->sect_off),
23395              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23396     }
23397
23398   return die;
23399 }
23400
23401 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23402    reading in and processing the type unit if necessary.  */
23403
23404 static struct type *
23405 get_signatured_type (struct die_info *die, ULONGEST signature,
23406                      struct dwarf2_cu *cu)
23407 {
23408   struct dwarf2_per_objfile *dwarf2_per_objfile
23409     = cu->per_cu->dwarf2_per_objfile;
23410   struct signatured_type *sig_type;
23411   struct dwarf2_cu *type_cu;
23412   struct die_info *type_die;
23413   struct type *type;
23414
23415   sig_type = lookup_signatured_type (cu, signature);
23416   /* sig_type will be NULL if the signatured type is missing from
23417      the debug info.  */
23418   if (sig_type == NULL)
23419     {
23420       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23421                    " from DIE at %s [in module %s]"),
23422                  hex_string (signature), sect_offset_str (die->sect_off),
23423                  objfile_name (dwarf2_per_objfile->objfile));
23424       return build_error_marker_type (cu, die);
23425     }
23426
23427   /* If we already know the type we're done.  */
23428   if (sig_type->type != NULL)
23429     return sig_type->type;
23430
23431   type_cu = cu;
23432   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23433   if (type_die != NULL)
23434     {
23435       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23436          is created.  This is important, for example, because for c++ classes
23437          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23438       type = read_type_die (type_die, type_cu);
23439       if (type == NULL)
23440         {
23441           complaint (_("Dwarf Error: Cannot build signatured type %s"
23442                        " referenced from DIE at %s [in module %s]"),
23443                      hex_string (signature), sect_offset_str (die->sect_off),
23444                      objfile_name (dwarf2_per_objfile->objfile));
23445           type = build_error_marker_type (cu, die);
23446         }
23447     }
23448   else
23449     {
23450       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23451                    " from DIE at %s [in module %s]"),
23452                  hex_string (signature), sect_offset_str (die->sect_off),
23453                  objfile_name (dwarf2_per_objfile->objfile));
23454       type = build_error_marker_type (cu, die);
23455     }
23456   sig_type->type = type;
23457
23458   return type;
23459 }
23460
23461 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23462    reading in and processing the type unit if necessary.  */
23463
23464 static struct type *
23465 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23466                           struct dwarf2_cu *cu) /* ARI: editCase function */
23467 {
23468   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23469   if (attr_form_is_ref (attr))
23470     {
23471       struct dwarf2_cu *type_cu = cu;
23472       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23473
23474       return read_type_die (type_die, type_cu);
23475     }
23476   else if (attr->form == DW_FORM_ref_sig8)
23477     {
23478       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23479     }
23480   else
23481     {
23482       struct dwarf2_per_objfile *dwarf2_per_objfile
23483         = cu->per_cu->dwarf2_per_objfile;
23484
23485       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23486                    " at %s [in module %s]"),
23487                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23488                  objfile_name (dwarf2_per_objfile->objfile));
23489       return build_error_marker_type (cu, die);
23490     }
23491 }
23492
23493 /* Load the DIEs associated with type unit PER_CU into memory.  */
23494
23495 static void
23496 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23497 {
23498   struct signatured_type *sig_type;
23499
23500   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23501   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23502
23503   /* We have the per_cu, but we need the signatured_type.
23504      Fortunately this is an easy translation.  */
23505   gdb_assert (per_cu->is_debug_types);
23506   sig_type = (struct signatured_type *) per_cu;
23507
23508   gdb_assert (per_cu->cu == NULL);
23509
23510   read_signatured_type (sig_type);
23511
23512   gdb_assert (per_cu->cu != NULL);
23513 }
23514
23515 /* die_reader_func for read_signatured_type.
23516    This is identical to load_full_comp_unit_reader,
23517    but is kept separate for now.  */
23518
23519 static void
23520 read_signatured_type_reader (const struct die_reader_specs *reader,
23521                              const gdb_byte *info_ptr,
23522                              struct die_info *comp_unit_die,
23523                              int has_children,
23524                              void *data)
23525 {
23526   struct dwarf2_cu *cu = reader->cu;
23527
23528   gdb_assert (cu->die_hash == NULL);
23529   cu->die_hash =
23530     htab_create_alloc_ex (cu->header.length / 12,
23531                           die_hash,
23532                           die_eq,
23533                           NULL,
23534                           &cu->comp_unit_obstack,
23535                           hashtab_obstack_allocate,
23536                           dummy_obstack_deallocate);
23537
23538   if (has_children)
23539     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23540                                                   &info_ptr, comp_unit_die);
23541   cu->dies = comp_unit_die;
23542   /* comp_unit_die is not stored in die_hash, no need.  */
23543
23544   /* We try not to read any attributes in this function, because not
23545      all CUs needed for references have been loaded yet, and symbol
23546      table processing isn't initialized.  But we have to set the CU language,
23547      or we won't be able to build types correctly.
23548      Similarly, if we do not read the producer, we can not apply
23549      producer-specific interpretation.  */
23550   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23551 }
23552
23553 /* Read in a signatured type and build its CU and DIEs.
23554    If the type is a stub for the real type in a DWO file,
23555    read in the real type from the DWO file as well.  */
23556
23557 static void
23558 read_signatured_type (struct signatured_type *sig_type)
23559 {
23560   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23561
23562   gdb_assert (per_cu->is_debug_types);
23563   gdb_assert (per_cu->cu == NULL);
23564
23565   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23566                            read_signatured_type_reader, NULL);
23567   sig_type->per_cu.tu_read = 1;
23568 }
23569
23570 /* Decode simple location descriptions.
23571    Given a pointer to a dwarf block that defines a location, compute
23572    the location and return the value.
23573
23574    NOTE drow/2003-11-18: This function is called in two situations
23575    now: for the address of static or global variables (partial symbols
23576    only) and for offsets into structures which are expected to be
23577    (more or less) constant.  The partial symbol case should go away,
23578    and only the constant case should remain.  That will let this
23579    function complain more accurately.  A few special modes are allowed
23580    without complaint for global variables (for instance, global
23581    register values and thread-local values).
23582
23583    A location description containing no operations indicates that the
23584    object is optimized out.  The return value is 0 for that case.
23585    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23586    callers will only want a very basic result and this can become a
23587    complaint.
23588
23589    Note that stack[0] is unused except as a default error return.  */
23590
23591 static CORE_ADDR
23592 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23593 {
23594   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23595   size_t i;
23596   size_t size = blk->size;
23597   const gdb_byte *data = blk->data;
23598   CORE_ADDR stack[64];
23599   int stacki;
23600   unsigned int bytes_read, unsnd;
23601   gdb_byte op;
23602
23603   i = 0;
23604   stacki = 0;
23605   stack[stacki] = 0;
23606   stack[++stacki] = 0;
23607
23608   while (i < size)
23609     {
23610       op = data[i++];
23611       switch (op)
23612         {
23613         case DW_OP_lit0:
23614         case DW_OP_lit1:
23615         case DW_OP_lit2:
23616         case DW_OP_lit3:
23617         case DW_OP_lit4:
23618         case DW_OP_lit5:
23619         case DW_OP_lit6:
23620         case DW_OP_lit7:
23621         case DW_OP_lit8:
23622         case DW_OP_lit9:
23623         case DW_OP_lit10:
23624         case DW_OP_lit11:
23625         case DW_OP_lit12:
23626         case DW_OP_lit13:
23627         case DW_OP_lit14:
23628         case DW_OP_lit15:
23629         case DW_OP_lit16:
23630         case DW_OP_lit17:
23631         case DW_OP_lit18:
23632         case DW_OP_lit19:
23633         case DW_OP_lit20:
23634         case DW_OP_lit21:
23635         case DW_OP_lit22:
23636         case DW_OP_lit23:
23637         case DW_OP_lit24:
23638         case DW_OP_lit25:
23639         case DW_OP_lit26:
23640         case DW_OP_lit27:
23641         case DW_OP_lit28:
23642         case DW_OP_lit29:
23643         case DW_OP_lit30:
23644         case DW_OP_lit31:
23645           stack[++stacki] = op - DW_OP_lit0;
23646           break;
23647
23648         case DW_OP_reg0:
23649         case DW_OP_reg1:
23650         case DW_OP_reg2:
23651         case DW_OP_reg3:
23652         case DW_OP_reg4:
23653         case DW_OP_reg5:
23654         case DW_OP_reg6:
23655         case DW_OP_reg7:
23656         case DW_OP_reg8:
23657         case DW_OP_reg9:
23658         case DW_OP_reg10:
23659         case DW_OP_reg11:
23660         case DW_OP_reg12:
23661         case DW_OP_reg13:
23662         case DW_OP_reg14:
23663         case DW_OP_reg15:
23664         case DW_OP_reg16:
23665         case DW_OP_reg17:
23666         case DW_OP_reg18:
23667         case DW_OP_reg19:
23668         case DW_OP_reg20:
23669         case DW_OP_reg21:
23670         case DW_OP_reg22:
23671         case DW_OP_reg23:
23672         case DW_OP_reg24:
23673         case DW_OP_reg25:
23674         case DW_OP_reg26:
23675         case DW_OP_reg27:
23676         case DW_OP_reg28:
23677         case DW_OP_reg29:
23678         case DW_OP_reg30:
23679         case DW_OP_reg31:
23680           stack[++stacki] = op - DW_OP_reg0;
23681           if (i < size)
23682             dwarf2_complex_location_expr_complaint ();
23683           break;
23684
23685         case DW_OP_regx:
23686           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23687           i += bytes_read;
23688           stack[++stacki] = unsnd;
23689           if (i < size)
23690             dwarf2_complex_location_expr_complaint ();
23691           break;
23692
23693         case DW_OP_addr:
23694           stack[++stacki] = read_address (objfile->obfd, &data[i],
23695                                           cu, &bytes_read);
23696           i += bytes_read;
23697           break;
23698
23699         case DW_OP_const1u:
23700           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23701           i += 1;
23702           break;
23703
23704         case DW_OP_const1s:
23705           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23706           i += 1;
23707           break;
23708
23709         case DW_OP_const2u:
23710           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23711           i += 2;
23712           break;
23713
23714         case DW_OP_const2s:
23715           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23716           i += 2;
23717           break;
23718
23719         case DW_OP_const4u:
23720           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23721           i += 4;
23722           break;
23723
23724         case DW_OP_const4s:
23725           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23726           i += 4;
23727           break;
23728
23729         case DW_OP_const8u:
23730           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23731           i += 8;
23732           break;
23733
23734         case DW_OP_constu:
23735           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23736                                                   &bytes_read);
23737           i += bytes_read;
23738           break;
23739
23740         case DW_OP_consts:
23741           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23742           i += bytes_read;
23743           break;
23744
23745         case DW_OP_dup:
23746           stack[stacki + 1] = stack[stacki];
23747           stacki++;
23748           break;
23749
23750         case DW_OP_plus:
23751           stack[stacki - 1] += stack[stacki];
23752           stacki--;
23753           break;
23754
23755         case DW_OP_plus_uconst:
23756           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23757                                                  &bytes_read);
23758           i += bytes_read;
23759           break;
23760
23761         case DW_OP_minus:
23762           stack[stacki - 1] -= stack[stacki];
23763           stacki--;
23764           break;
23765
23766         case DW_OP_deref:
23767           /* If we're not the last op, then we definitely can't encode
23768              this using GDB's address_class enum.  This is valid for partial
23769              global symbols, although the variable's address will be bogus
23770              in the psymtab.  */
23771           if (i < size)
23772             dwarf2_complex_location_expr_complaint ();
23773           break;
23774
23775         case DW_OP_GNU_push_tls_address:
23776         case DW_OP_form_tls_address:
23777           /* The top of the stack has the offset from the beginning
23778              of the thread control block at which the variable is located.  */
23779           /* Nothing should follow this operator, so the top of stack would
23780              be returned.  */
23781           /* This is valid for partial global symbols, but the variable's
23782              address will be bogus in the psymtab.  Make it always at least
23783              non-zero to not look as a variable garbage collected by linker
23784              which have DW_OP_addr 0.  */
23785           if (i < size)
23786             dwarf2_complex_location_expr_complaint ();
23787           stack[stacki]++;
23788           break;
23789
23790         case DW_OP_GNU_uninit:
23791           break;
23792
23793         case DW_OP_GNU_addr_index:
23794         case DW_OP_GNU_const_index:
23795           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23796                                                          &bytes_read);
23797           i += bytes_read;
23798           break;
23799
23800         default:
23801           {
23802             const char *name = get_DW_OP_name (op);
23803
23804             if (name)
23805               complaint (_("unsupported stack op: '%s'"),
23806                          name);
23807             else
23808               complaint (_("unsupported stack op: '%02x'"),
23809                          op);
23810           }
23811
23812           return (stack[stacki]);
23813         }
23814
23815       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23816          outside of the allocated space.  Also enforce minimum>0.  */
23817       if (stacki >= ARRAY_SIZE (stack) - 1)
23818         {
23819           complaint (_("location description stack overflow"));
23820           return 0;
23821         }
23822
23823       if (stacki <= 0)
23824         {
23825           complaint (_("location description stack underflow"));
23826           return 0;
23827         }
23828     }
23829   return (stack[stacki]);
23830 }
23831
23832 /* memory allocation interface */
23833
23834 static struct dwarf_block *
23835 dwarf_alloc_block (struct dwarf2_cu *cu)
23836 {
23837   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23838 }
23839
23840 static struct die_info *
23841 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23842 {
23843   struct die_info *die;
23844   size_t size = sizeof (struct die_info);
23845
23846   if (num_attrs > 1)
23847     size += (num_attrs - 1) * sizeof (struct attribute);
23848
23849   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23850   memset (die, 0, sizeof (struct die_info));
23851   return (die);
23852 }
23853
23854 \f
23855 /* Macro support.  */
23856
23857 /* Return file name relative to the compilation directory of file number I in
23858    *LH's file name table.  The result is allocated using xmalloc; the caller is
23859    responsible for freeing it.  */
23860
23861 static char *
23862 file_file_name (int file, struct line_header *lh)
23863 {
23864   /* Is the file number a valid index into the line header's file name
23865      table?  Remember that file numbers start with one, not zero.  */
23866   if (1 <= file && file <= lh->file_names.size ())
23867     {
23868       const file_entry &fe = lh->file_names[file - 1];
23869
23870       if (!IS_ABSOLUTE_PATH (fe.name))
23871         {
23872           const char *dir = fe.include_dir (lh);
23873           if (dir != NULL)
23874             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23875         }
23876       return xstrdup (fe.name);
23877     }
23878   else
23879     {
23880       /* The compiler produced a bogus file number.  We can at least
23881          record the macro definitions made in the file, even if we
23882          won't be able to find the file by name.  */
23883       char fake_name[80];
23884
23885       xsnprintf (fake_name, sizeof (fake_name),
23886                  "<bad macro file number %d>", file);
23887
23888       complaint (_("bad file number in macro information (%d)"),
23889                  file);
23890
23891       return xstrdup (fake_name);
23892     }
23893 }
23894
23895 /* Return the full name of file number I in *LH's file name table.
23896    Use COMP_DIR as the name of the current directory of the
23897    compilation.  The result is allocated using xmalloc; the caller is
23898    responsible for freeing it.  */
23899 static char *
23900 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23901 {
23902   /* Is the file number a valid index into the line header's file name
23903      table?  Remember that file numbers start with one, not zero.  */
23904   if (1 <= file && file <= lh->file_names.size ())
23905     {
23906       char *relative = file_file_name (file, lh);
23907
23908       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23909         return relative;
23910       return reconcat (relative, comp_dir, SLASH_STRING,
23911                        relative, (char *) NULL);
23912     }
23913   else
23914     return file_file_name (file, lh);
23915 }
23916
23917
23918 static struct macro_source_file *
23919 macro_start_file (struct dwarf2_cu *cu,
23920                   int file, int line,
23921                   struct macro_source_file *current_file,
23922                   struct line_header *lh)
23923 {
23924   /* File name relative to the compilation directory of this source file.  */
23925   char *file_name = file_file_name (file, lh);
23926
23927   if (! current_file)
23928     {
23929       /* Note: We don't create a macro table for this compilation unit
23930          at all until we actually get a filename.  */
23931       struct macro_table *macro_table = cu->builder->get_macro_table ();
23932
23933       /* If we have no current file, then this must be the start_file
23934          directive for the compilation unit's main source file.  */
23935       current_file = macro_set_main (macro_table, file_name);
23936       macro_define_special (macro_table);
23937     }
23938   else
23939     current_file = macro_include (current_file, line, file_name);
23940
23941   xfree (file_name);
23942
23943   return current_file;
23944 }
23945
23946 static const char *
23947 consume_improper_spaces (const char *p, const char *body)
23948 {
23949   if (*p == ' ')
23950     {
23951       complaint (_("macro definition contains spaces "
23952                    "in formal argument list:\n`%s'"),
23953                  body);
23954
23955       while (*p == ' ')
23956         p++;
23957     }
23958
23959   return p;
23960 }
23961
23962
23963 static void
23964 parse_macro_definition (struct macro_source_file *file, int line,
23965                         const char *body)
23966 {
23967   const char *p;
23968
23969   /* The body string takes one of two forms.  For object-like macro
23970      definitions, it should be:
23971
23972         <macro name> " " <definition>
23973
23974      For function-like macro definitions, it should be:
23975
23976         <macro name> "() " <definition>
23977      or
23978         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23979
23980      Spaces may appear only where explicitly indicated, and in the
23981      <definition>.
23982
23983      The Dwarf 2 spec says that an object-like macro's name is always
23984      followed by a space, but versions of GCC around March 2002 omit
23985      the space when the macro's definition is the empty string.
23986
23987      The Dwarf 2 spec says that there should be no spaces between the
23988      formal arguments in a function-like macro's formal argument list,
23989      but versions of GCC around March 2002 include spaces after the
23990      commas.  */
23991
23992
23993   /* Find the extent of the macro name.  The macro name is terminated
23994      by either a space or null character (for an object-like macro) or
23995      an opening paren (for a function-like macro).  */
23996   for (p = body; *p; p++)
23997     if (*p == ' ' || *p == '(')
23998       break;
23999
24000   if (*p == ' ' || *p == '\0')
24001     {
24002       /* It's an object-like macro.  */
24003       int name_len = p - body;
24004       char *name = savestring (body, name_len);
24005       const char *replacement;
24006
24007       if (*p == ' ')
24008         replacement = body + name_len + 1;
24009       else
24010         {
24011           dwarf2_macro_malformed_definition_complaint (body);
24012           replacement = body + name_len;
24013         }
24014
24015       macro_define_object (file, line, name, replacement);
24016
24017       xfree (name);
24018     }
24019   else if (*p == '(')
24020     {
24021       /* It's a function-like macro.  */
24022       char *name = savestring (body, p - body);
24023       int argc = 0;
24024       int argv_size = 1;
24025       char **argv = XNEWVEC (char *, argv_size);
24026
24027       p++;
24028
24029       p = consume_improper_spaces (p, body);
24030
24031       /* Parse the formal argument list.  */
24032       while (*p && *p != ')')
24033         {
24034           /* Find the extent of the current argument name.  */
24035           const char *arg_start = p;
24036
24037           while (*p && *p != ',' && *p != ')' && *p != ' ')
24038             p++;
24039
24040           if (! *p || p == arg_start)
24041             dwarf2_macro_malformed_definition_complaint (body);
24042           else
24043             {
24044               /* Make sure argv has room for the new argument.  */
24045               if (argc >= argv_size)
24046                 {
24047                   argv_size *= 2;
24048                   argv = XRESIZEVEC (char *, argv, argv_size);
24049                 }
24050
24051               argv[argc++] = savestring (arg_start, p - arg_start);
24052             }
24053
24054           p = consume_improper_spaces (p, body);
24055
24056           /* Consume the comma, if present.  */
24057           if (*p == ',')
24058             {
24059               p++;
24060
24061               p = consume_improper_spaces (p, body);
24062             }
24063         }
24064
24065       if (*p == ')')
24066         {
24067           p++;
24068
24069           if (*p == ' ')
24070             /* Perfectly formed definition, no complaints.  */
24071             macro_define_function (file, line, name,
24072                                    argc, (const char **) argv,
24073                                    p + 1);
24074           else if (*p == '\0')
24075             {
24076               /* Complain, but do define it.  */
24077               dwarf2_macro_malformed_definition_complaint (body);
24078               macro_define_function (file, line, name,
24079                                      argc, (const char **) argv,
24080                                      p);
24081             }
24082           else
24083             /* Just complain.  */
24084             dwarf2_macro_malformed_definition_complaint (body);
24085         }
24086       else
24087         /* Just complain.  */
24088         dwarf2_macro_malformed_definition_complaint (body);
24089
24090       xfree (name);
24091       {
24092         int i;
24093
24094         for (i = 0; i < argc; i++)
24095           xfree (argv[i]);
24096       }
24097       xfree (argv);
24098     }
24099   else
24100     dwarf2_macro_malformed_definition_complaint (body);
24101 }
24102
24103 /* Skip some bytes from BYTES according to the form given in FORM.
24104    Returns the new pointer.  */
24105
24106 static const gdb_byte *
24107 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24108                  enum dwarf_form form,
24109                  unsigned int offset_size,
24110                  struct dwarf2_section_info *section)
24111 {
24112   unsigned int bytes_read;
24113
24114   switch (form)
24115     {
24116     case DW_FORM_data1:
24117     case DW_FORM_flag:
24118       ++bytes;
24119       break;
24120
24121     case DW_FORM_data2:
24122       bytes += 2;
24123       break;
24124
24125     case DW_FORM_data4:
24126       bytes += 4;
24127       break;
24128
24129     case DW_FORM_data8:
24130       bytes += 8;
24131       break;
24132
24133     case DW_FORM_data16:
24134       bytes += 16;
24135       break;
24136
24137     case DW_FORM_string:
24138       read_direct_string (abfd, bytes, &bytes_read);
24139       bytes += bytes_read;
24140       break;
24141
24142     case DW_FORM_sec_offset:
24143     case DW_FORM_strp:
24144     case DW_FORM_GNU_strp_alt:
24145       bytes += offset_size;
24146       break;
24147
24148     case DW_FORM_block:
24149       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24150       bytes += bytes_read;
24151       break;
24152
24153     case DW_FORM_block1:
24154       bytes += 1 + read_1_byte (abfd, bytes);
24155       break;
24156     case DW_FORM_block2:
24157       bytes += 2 + read_2_bytes (abfd, bytes);
24158       break;
24159     case DW_FORM_block4:
24160       bytes += 4 + read_4_bytes (abfd, bytes);
24161       break;
24162
24163     case DW_FORM_sdata:
24164     case DW_FORM_udata:
24165     case DW_FORM_GNU_addr_index:
24166     case DW_FORM_GNU_str_index:
24167       bytes = gdb_skip_leb128 (bytes, buffer_end);
24168       if (bytes == NULL)
24169         {
24170           dwarf2_section_buffer_overflow_complaint (section);
24171           return NULL;
24172         }
24173       break;
24174
24175     case DW_FORM_implicit_const:
24176       break;
24177
24178     default:
24179       {
24180         complaint (_("invalid form 0x%x in `%s'"),
24181                    form, get_section_name (section));
24182         return NULL;
24183       }
24184     }
24185
24186   return bytes;
24187 }
24188
24189 /* A helper for dwarf_decode_macros that handles skipping an unknown
24190    opcode.  Returns an updated pointer to the macro data buffer; or,
24191    on error, issues a complaint and returns NULL.  */
24192
24193 static const gdb_byte *
24194 skip_unknown_opcode (unsigned int opcode,
24195                      const gdb_byte **opcode_definitions,
24196                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24197                      bfd *abfd,
24198                      unsigned int offset_size,
24199                      struct dwarf2_section_info *section)
24200 {
24201   unsigned int bytes_read, i;
24202   unsigned long arg;
24203   const gdb_byte *defn;
24204
24205   if (opcode_definitions[opcode] == NULL)
24206     {
24207       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24208                  opcode);
24209       return NULL;
24210     }
24211
24212   defn = opcode_definitions[opcode];
24213   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24214   defn += bytes_read;
24215
24216   for (i = 0; i < arg; ++i)
24217     {
24218       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24219                                  (enum dwarf_form) defn[i], offset_size,
24220                                  section);
24221       if (mac_ptr == NULL)
24222         {
24223           /* skip_form_bytes already issued the complaint.  */
24224           return NULL;
24225         }
24226     }
24227
24228   return mac_ptr;
24229 }
24230
24231 /* A helper function which parses the header of a macro section.
24232    If the macro section is the extended (for now called "GNU") type,
24233    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24234    the header, or issues a complaint and returns NULL on error.  */
24235
24236 static const gdb_byte *
24237 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24238                           bfd *abfd,
24239                           const gdb_byte *mac_ptr,
24240                           unsigned int *offset_size,
24241                           int section_is_gnu)
24242 {
24243   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24244
24245   if (section_is_gnu)
24246     {
24247       unsigned int version, flags;
24248
24249       version = read_2_bytes (abfd, mac_ptr);
24250       if (version != 4 && version != 5)
24251         {
24252           complaint (_("unrecognized version `%d' in .debug_macro section"),
24253                      version);
24254           return NULL;
24255         }
24256       mac_ptr += 2;
24257
24258       flags = read_1_byte (abfd, mac_ptr);
24259       ++mac_ptr;
24260       *offset_size = (flags & 1) ? 8 : 4;
24261
24262       if ((flags & 2) != 0)
24263         /* We don't need the line table offset.  */
24264         mac_ptr += *offset_size;
24265
24266       /* Vendor opcode descriptions.  */
24267       if ((flags & 4) != 0)
24268         {
24269           unsigned int i, count;
24270
24271           count = read_1_byte (abfd, mac_ptr);
24272           ++mac_ptr;
24273           for (i = 0; i < count; ++i)
24274             {
24275               unsigned int opcode, bytes_read;
24276               unsigned long arg;
24277
24278               opcode = read_1_byte (abfd, mac_ptr);
24279               ++mac_ptr;
24280               opcode_definitions[opcode] = mac_ptr;
24281               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24282               mac_ptr += bytes_read;
24283               mac_ptr += arg;
24284             }
24285         }
24286     }
24287
24288   return mac_ptr;
24289 }
24290
24291 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24292    including DW_MACRO_import.  */
24293
24294 static void
24295 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24296                           bfd *abfd,
24297                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24298                           struct macro_source_file *current_file,
24299                           struct line_header *lh,
24300                           struct dwarf2_section_info *section,
24301                           int section_is_gnu, int section_is_dwz,
24302                           unsigned int offset_size,
24303                           htab_t include_hash)
24304 {
24305   struct dwarf2_per_objfile *dwarf2_per_objfile
24306     = cu->per_cu->dwarf2_per_objfile;
24307   struct objfile *objfile = dwarf2_per_objfile->objfile;
24308   enum dwarf_macro_record_type macinfo_type;
24309   int at_commandline;
24310   const gdb_byte *opcode_definitions[256];
24311
24312   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24313                                       &offset_size, section_is_gnu);
24314   if (mac_ptr == NULL)
24315     {
24316       /* We already issued a complaint.  */
24317       return;
24318     }
24319
24320   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24321      GDB is still reading the definitions from command line.  First
24322      DW_MACINFO_start_file will need to be ignored as it was already executed
24323      to create CURRENT_FILE for the main source holding also the command line
24324      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24325      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24326
24327   at_commandline = 1;
24328
24329   do
24330     {
24331       /* Do we at least have room for a macinfo type byte?  */
24332       if (mac_ptr >= mac_end)
24333         {
24334           dwarf2_section_buffer_overflow_complaint (section);
24335           break;
24336         }
24337
24338       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24339       mac_ptr++;
24340
24341       /* Note that we rely on the fact that the corresponding GNU and
24342          DWARF constants are the same.  */
24343       DIAGNOSTIC_PUSH
24344       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24345       switch (macinfo_type)
24346         {
24347           /* A zero macinfo type indicates the end of the macro
24348              information.  */
24349         case 0:
24350           break;
24351
24352         case DW_MACRO_define:
24353         case DW_MACRO_undef:
24354         case DW_MACRO_define_strp:
24355         case DW_MACRO_undef_strp:
24356         case DW_MACRO_define_sup:
24357         case DW_MACRO_undef_sup:
24358           {
24359             unsigned int bytes_read;
24360             int line;
24361             const char *body;
24362             int is_define;
24363
24364             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24365             mac_ptr += bytes_read;
24366
24367             if (macinfo_type == DW_MACRO_define
24368                 || macinfo_type == DW_MACRO_undef)
24369               {
24370                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24371                 mac_ptr += bytes_read;
24372               }
24373             else
24374               {
24375                 LONGEST str_offset;
24376
24377                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24378                 mac_ptr += offset_size;
24379
24380                 if (macinfo_type == DW_MACRO_define_sup
24381                     || macinfo_type == DW_MACRO_undef_sup
24382                     || section_is_dwz)
24383                   {
24384                     struct dwz_file *dwz
24385                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24386
24387                     body = read_indirect_string_from_dwz (objfile,
24388                                                           dwz, str_offset);
24389                   }
24390                 else
24391                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24392                                                          abfd, str_offset);
24393               }
24394
24395             is_define = (macinfo_type == DW_MACRO_define
24396                          || macinfo_type == DW_MACRO_define_strp
24397                          || macinfo_type == DW_MACRO_define_sup);
24398             if (! current_file)
24399               {
24400                 /* DWARF violation as no main source is present.  */
24401                 complaint (_("debug info with no main source gives macro %s "
24402                              "on line %d: %s"),
24403                            is_define ? _("definition") : _("undefinition"),
24404                            line, body);
24405                 break;
24406               }
24407             if ((line == 0 && !at_commandline)
24408                 || (line != 0 && at_commandline))
24409               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24410                          at_commandline ? _("command-line") : _("in-file"),
24411                          is_define ? _("definition") : _("undefinition"),
24412                          line == 0 ? _("zero") : _("non-zero"), line, body);
24413
24414             if (is_define)
24415               parse_macro_definition (current_file, line, body);
24416             else
24417               {
24418                 gdb_assert (macinfo_type == DW_MACRO_undef
24419                             || macinfo_type == DW_MACRO_undef_strp
24420                             || macinfo_type == DW_MACRO_undef_sup);
24421                 macro_undef (current_file, line, body);
24422               }
24423           }
24424           break;
24425
24426         case DW_MACRO_start_file:
24427           {
24428             unsigned int bytes_read;
24429             int line, file;
24430
24431             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24432             mac_ptr += bytes_read;
24433             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24434             mac_ptr += bytes_read;
24435
24436             if ((line == 0 && !at_commandline)
24437                 || (line != 0 && at_commandline))
24438               complaint (_("debug info gives source %d included "
24439                            "from %s at %s line %d"),
24440                          file, at_commandline ? _("command-line") : _("file"),
24441                          line == 0 ? _("zero") : _("non-zero"), line);
24442
24443             if (at_commandline)
24444               {
24445                 /* This DW_MACRO_start_file was executed in the
24446                    pass one.  */
24447                 at_commandline = 0;
24448               }
24449             else
24450               current_file = macro_start_file (cu, file, line, current_file,
24451                                                lh);
24452           }
24453           break;
24454
24455         case DW_MACRO_end_file:
24456           if (! current_file)
24457             complaint (_("macro debug info has an unmatched "
24458                          "`close_file' directive"));
24459           else
24460             {
24461               current_file = current_file->included_by;
24462               if (! current_file)
24463                 {
24464                   enum dwarf_macro_record_type next_type;
24465
24466                   /* GCC circa March 2002 doesn't produce the zero
24467                      type byte marking the end of the compilation
24468                      unit.  Complain if it's not there, but exit no
24469                      matter what.  */
24470
24471                   /* Do we at least have room for a macinfo type byte?  */
24472                   if (mac_ptr >= mac_end)
24473                     {
24474                       dwarf2_section_buffer_overflow_complaint (section);
24475                       return;
24476                     }
24477
24478                   /* We don't increment mac_ptr here, so this is just
24479                      a look-ahead.  */
24480                   next_type
24481                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24482                                                                   mac_ptr);
24483                   if (next_type != 0)
24484                     complaint (_("no terminating 0-type entry for "
24485                                  "macros in `.debug_macinfo' section"));
24486
24487                   return;
24488                 }
24489             }
24490           break;
24491
24492         case DW_MACRO_import:
24493         case DW_MACRO_import_sup:
24494           {
24495             LONGEST offset;
24496             void **slot;
24497             bfd *include_bfd = abfd;
24498             struct dwarf2_section_info *include_section = section;
24499             const gdb_byte *include_mac_end = mac_end;
24500             int is_dwz = section_is_dwz;
24501             const gdb_byte *new_mac_ptr;
24502
24503             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24504             mac_ptr += offset_size;
24505
24506             if (macinfo_type == DW_MACRO_import_sup)
24507               {
24508                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24509
24510                 dwarf2_read_section (objfile, &dwz->macro);
24511
24512                 include_section = &dwz->macro;
24513                 include_bfd = get_section_bfd_owner (include_section);
24514                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24515                 is_dwz = 1;
24516               }
24517
24518             new_mac_ptr = include_section->buffer + offset;
24519             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24520
24521             if (*slot != NULL)
24522               {
24523                 /* This has actually happened; see
24524                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24525                 complaint (_("recursive DW_MACRO_import in "
24526                              ".debug_macro section"));
24527               }
24528             else
24529               {
24530                 *slot = (void *) new_mac_ptr;
24531
24532                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24533                                           include_mac_end, current_file, lh,
24534                                           section, section_is_gnu, is_dwz,
24535                                           offset_size, include_hash);
24536
24537                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24538               }
24539           }
24540           break;
24541
24542         case DW_MACINFO_vendor_ext:
24543           if (!section_is_gnu)
24544             {
24545               unsigned int bytes_read;
24546
24547               /* This reads the constant, but since we don't recognize
24548                  any vendor extensions, we ignore it.  */
24549               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24550               mac_ptr += bytes_read;
24551               read_direct_string (abfd, mac_ptr, &bytes_read);
24552               mac_ptr += bytes_read;
24553
24554               /* We don't recognize any vendor extensions.  */
24555               break;
24556             }
24557           /* FALLTHROUGH */
24558
24559         default:
24560           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24561                                          mac_ptr, mac_end, abfd, offset_size,
24562                                          section);
24563           if (mac_ptr == NULL)
24564             return;
24565           break;
24566         }
24567       DIAGNOSTIC_POP
24568     } while (macinfo_type != 0);
24569 }
24570
24571 static void
24572 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24573                      int section_is_gnu)
24574 {
24575   struct dwarf2_per_objfile *dwarf2_per_objfile
24576     = cu->per_cu->dwarf2_per_objfile;
24577   struct objfile *objfile = dwarf2_per_objfile->objfile;
24578   struct line_header *lh = cu->line_header;
24579   bfd *abfd;
24580   const gdb_byte *mac_ptr, *mac_end;
24581   struct macro_source_file *current_file = 0;
24582   enum dwarf_macro_record_type macinfo_type;
24583   unsigned int offset_size = cu->header.offset_size;
24584   const gdb_byte *opcode_definitions[256];
24585   void **slot;
24586   struct dwarf2_section_info *section;
24587   const char *section_name;
24588
24589   if (cu->dwo_unit != NULL)
24590     {
24591       if (section_is_gnu)
24592         {
24593           section = &cu->dwo_unit->dwo_file->sections.macro;
24594           section_name = ".debug_macro.dwo";
24595         }
24596       else
24597         {
24598           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24599           section_name = ".debug_macinfo.dwo";
24600         }
24601     }
24602   else
24603     {
24604       if (section_is_gnu)
24605         {
24606           section = &dwarf2_per_objfile->macro;
24607           section_name = ".debug_macro";
24608         }
24609       else
24610         {
24611           section = &dwarf2_per_objfile->macinfo;
24612           section_name = ".debug_macinfo";
24613         }
24614     }
24615
24616   dwarf2_read_section (objfile, section);
24617   if (section->buffer == NULL)
24618     {
24619       complaint (_("missing %s section"), section_name);
24620       return;
24621     }
24622   abfd = get_section_bfd_owner (section);
24623
24624   /* First pass: Find the name of the base filename.
24625      This filename is needed in order to process all macros whose definition
24626      (or undefinition) comes from the command line.  These macros are defined
24627      before the first DW_MACINFO_start_file entry, and yet still need to be
24628      associated to the base file.
24629
24630      To determine the base file name, we scan the macro definitions until we
24631      reach the first DW_MACINFO_start_file entry.  We then initialize
24632      CURRENT_FILE accordingly so that any macro definition found before the
24633      first DW_MACINFO_start_file can still be associated to the base file.  */
24634
24635   mac_ptr = section->buffer + offset;
24636   mac_end = section->buffer + section->size;
24637
24638   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24639                                       &offset_size, section_is_gnu);
24640   if (mac_ptr == NULL)
24641     {
24642       /* We already issued a complaint.  */
24643       return;
24644     }
24645
24646   do
24647     {
24648       /* Do we at least have room for a macinfo type byte?  */
24649       if (mac_ptr >= mac_end)
24650         {
24651           /* Complaint is printed during the second pass as GDB will probably
24652              stop the first pass earlier upon finding
24653              DW_MACINFO_start_file.  */
24654           break;
24655         }
24656
24657       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24658       mac_ptr++;
24659
24660       /* Note that we rely on the fact that the corresponding GNU and
24661          DWARF constants are the same.  */
24662       DIAGNOSTIC_PUSH
24663       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24664       switch (macinfo_type)
24665         {
24666           /* A zero macinfo type indicates the end of the macro
24667              information.  */
24668         case 0:
24669           break;
24670
24671         case DW_MACRO_define:
24672         case DW_MACRO_undef:
24673           /* Only skip the data by MAC_PTR.  */
24674           {
24675             unsigned int bytes_read;
24676
24677             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24678             mac_ptr += bytes_read;
24679             read_direct_string (abfd, mac_ptr, &bytes_read);
24680             mac_ptr += bytes_read;
24681           }
24682           break;
24683
24684         case DW_MACRO_start_file:
24685           {
24686             unsigned int bytes_read;
24687             int line, file;
24688
24689             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24690             mac_ptr += bytes_read;
24691             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24692             mac_ptr += bytes_read;
24693
24694             current_file = macro_start_file (cu, file, line, current_file, lh);
24695           }
24696           break;
24697
24698         case DW_MACRO_end_file:
24699           /* No data to skip by MAC_PTR.  */
24700           break;
24701
24702         case DW_MACRO_define_strp:
24703         case DW_MACRO_undef_strp:
24704         case DW_MACRO_define_sup:
24705         case DW_MACRO_undef_sup:
24706           {
24707             unsigned int bytes_read;
24708
24709             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24710             mac_ptr += bytes_read;
24711             mac_ptr += offset_size;
24712           }
24713           break;
24714
24715         case DW_MACRO_import:
24716         case DW_MACRO_import_sup:
24717           /* Note that, according to the spec, a transparent include
24718              chain cannot call DW_MACRO_start_file.  So, we can just
24719              skip this opcode.  */
24720           mac_ptr += offset_size;
24721           break;
24722
24723         case DW_MACINFO_vendor_ext:
24724           /* Only skip the data by MAC_PTR.  */
24725           if (!section_is_gnu)
24726             {
24727               unsigned int bytes_read;
24728
24729               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24730               mac_ptr += bytes_read;
24731               read_direct_string (abfd, mac_ptr, &bytes_read);
24732               mac_ptr += bytes_read;
24733             }
24734           /* FALLTHROUGH */
24735
24736         default:
24737           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24738                                          mac_ptr, mac_end, abfd, offset_size,
24739                                          section);
24740           if (mac_ptr == NULL)
24741             return;
24742           break;
24743         }
24744       DIAGNOSTIC_POP
24745     } while (macinfo_type != 0 && current_file == NULL);
24746
24747   /* Second pass: Process all entries.
24748
24749      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24750      command-line macro definitions/undefinitions.  This flag is unset when we
24751      reach the first DW_MACINFO_start_file entry.  */
24752
24753   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24754                                            htab_eq_pointer,
24755                                            NULL, xcalloc, xfree));
24756   mac_ptr = section->buffer + offset;
24757   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24758   *slot = (void *) mac_ptr;
24759   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24760                             current_file, lh, section,
24761                             section_is_gnu, 0, offset_size,
24762                             include_hash.get ());
24763 }
24764
24765 /* Check if the attribute's form is a DW_FORM_block*
24766    if so return true else false.  */
24767
24768 static int
24769 attr_form_is_block (const struct attribute *attr)
24770 {
24771   return (attr == NULL ? 0 :
24772       attr->form == DW_FORM_block1
24773       || attr->form == DW_FORM_block2
24774       || attr->form == DW_FORM_block4
24775       || attr->form == DW_FORM_block
24776       || attr->form == DW_FORM_exprloc);
24777 }
24778
24779 /* Return non-zero if ATTR's value is a section offset --- classes
24780    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24781    You may use DW_UNSND (attr) to retrieve such offsets.
24782
24783    Section 7.5.4, "Attribute Encodings", explains that no attribute
24784    may have a value that belongs to more than one of these classes; it
24785    would be ambiguous if we did, because we use the same forms for all
24786    of them.  */
24787
24788 static int
24789 attr_form_is_section_offset (const struct attribute *attr)
24790 {
24791   return (attr->form == DW_FORM_data4
24792           || attr->form == DW_FORM_data8
24793           || attr->form == DW_FORM_sec_offset);
24794 }
24795
24796 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24797    zero otherwise.  When this function returns true, you can apply
24798    dwarf2_get_attr_constant_value to it.
24799
24800    However, note that for some attributes you must check
24801    attr_form_is_section_offset before using this test.  DW_FORM_data4
24802    and DW_FORM_data8 are members of both the constant class, and of
24803    the classes that contain offsets into other debug sections
24804    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24805    that, if an attribute's can be either a constant or one of the
24806    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24807    taken as section offsets, not constants.
24808
24809    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24810    cannot handle that.  */
24811
24812 static int
24813 attr_form_is_constant (const struct attribute *attr)
24814 {
24815   switch (attr->form)
24816     {
24817     case DW_FORM_sdata:
24818     case DW_FORM_udata:
24819     case DW_FORM_data1:
24820     case DW_FORM_data2:
24821     case DW_FORM_data4:
24822     case DW_FORM_data8:
24823     case DW_FORM_implicit_const:
24824       return 1;
24825     default:
24826       return 0;
24827     }
24828 }
24829
24830
24831 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24832    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24833
24834 static int
24835 attr_form_is_ref (const struct attribute *attr)
24836 {
24837   switch (attr->form)
24838     {
24839     case DW_FORM_ref_addr:
24840     case DW_FORM_ref1:
24841     case DW_FORM_ref2:
24842     case DW_FORM_ref4:
24843     case DW_FORM_ref8:
24844     case DW_FORM_ref_udata:
24845     case DW_FORM_GNU_ref_alt:
24846       return 1;
24847     default:
24848       return 0;
24849     }
24850 }
24851
24852 /* Return the .debug_loc section to use for CU.
24853    For DWO files use .debug_loc.dwo.  */
24854
24855 static struct dwarf2_section_info *
24856 cu_debug_loc_section (struct dwarf2_cu *cu)
24857 {
24858   struct dwarf2_per_objfile *dwarf2_per_objfile
24859     = cu->per_cu->dwarf2_per_objfile;
24860
24861   if (cu->dwo_unit)
24862     {
24863       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24864       
24865       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24866     }
24867   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24868                                   : &dwarf2_per_objfile->loc);
24869 }
24870
24871 /* A helper function that fills in a dwarf2_loclist_baton.  */
24872
24873 static void
24874 fill_in_loclist_baton (struct dwarf2_cu *cu,
24875                        struct dwarf2_loclist_baton *baton,
24876                        const struct attribute *attr)
24877 {
24878   struct dwarf2_per_objfile *dwarf2_per_objfile
24879     = cu->per_cu->dwarf2_per_objfile;
24880   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24881
24882   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24883
24884   baton->per_cu = cu->per_cu;
24885   gdb_assert (baton->per_cu);
24886   /* We don't know how long the location list is, but make sure we
24887      don't run off the edge of the section.  */
24888   baton->size = section->size - DW_UNSND (attr);
24889   baton->data = section->buffer + DW_UNSND (attr);
24890   baton->base_address = cu->base_address;
24891   baton->from_dwo = cu->dwo_unit != NULL;
24892 }
24893
24894 static void
24895 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24896                              struct dwarf2_cu *cu, int is_block)
24897 {
24898   struct dwarf2_per_objfile *dwarf2_per_objfile
24899     = cu->per_cu->dwarf2_per_objfile;
24900   struct objfile *objfile = dwarf2_per_objfile->objfile;
24901   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24902
24903   if (attr_form_is_section_offset (attr)
24904       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24905          the section.  If so, fall through to the complaint in the
24906          other branch.  */
24907       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24908     {
24909       struct dwarf2_loclist_baton *baton;
24910
24911       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24912
24913       fill_in_loclist_baton (cu, baton, attr);
24914
24915       if (cu->base_known == 0)
24916         complaint (_("Location list used without "
24917                      "specifying the CU base address."));
24918
24919       SYMBOL_ACLASS_INDEX (sym) = (is_block
24920                                    ? dwarf2_loclist_block_index
24921                                    : dwarf2_loclist_index);
24922       SYMBOL_LOCATION_BATON (sym) = baton;
24923     }
24924   else
24925     {
24926       struct dwarf2_locexpr_baton *baton;
24927
24928       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24929       baton->per_cu = cu->per_cu;
24930       gdb_assert (baton->per_cu);
24931
24932       if (attr_form_is_block (attr))
24933         {
24934           /* Note that we're just copying the block's data pointer
24935              here, not the actual data.  We're still pointing into the
24936              info_buffer for SYM's objfile; right now we never release
24937              that buffer, but when we do clean up properly this may
24938              need to change.  */
24939           baton->size = DW_BLOCK (attr)->size;
24940           baton->data = DW_BLOCK (attr)->data;
24941         }
24942       else
24943         {
24944           dwarf2_invalid_attrib_class_complaint ("location description",
24945                                                  SYMBOL_NATURAL_NAME (sym));
24946           baton->size = 0;
24947         }
24948
24949       SYMBOL_ACLASS_INDEX (sym) = (is_block
24950                                    ? dwarf2_locexpr_block_index
24951                                    : dwarf2_locexpr_index);
24952       SYMBOL_LOCATION_BATON (sym) = baton;
24953     }
24954 }
24955
24956 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24957    came from a separate debuginfo file, then the master objfile is
24958    returned.  */
24959
24960 struct objfile *
24961 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24962 {
24963   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24964
24965   /* Return the master objfile, so that we can report and look up the
24966      correct file containing this variable.  */
24967   if (objfile->separate_debug_objfile_backlink)
24968     objfile = objfile->separate_debug_objfile_backlink;
24969
24970   return objfile;
24971 }
24972
24973 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24974    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24975    CU_HEADERP first.  */
24976
24977 static const struct comp_unit_head *
24978 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24979                        struct dwarf2_per_cu_data *per_cu)
24980 {
24981   const gdb_byte *info_ptr;
24982
24983   if (per_cu->cu)
24984     return &per_cu->cu->header;
24985
24986   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24987
24988   memset (cu_headerp, 0, sizeof (*cu_headerp));
24989   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24990                        rcuh_kind::COMPILE);
24991
24992   return cu_headerp;
24993 }
24994
24995 /* Return the address size given in the compilation unit header for CU.  */
24996
24997 int
24998 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
24999 {
25000   struct comp_unit_head cu_header_local;
25001   const struct comp_unit_head *cu_headerp;
25002
25003   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25004
25005   return cu_headerp->addr_size;
25006 }
25007
25008 /* Return the offset size given in the compilation unit header for CU.  */
25009
25010 int
25011 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
25012 {
25013   struct comp_unit_head cu_header_local;
25014   const struct comp_unit_head *cu_headerp;
25015
25016   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25017
25018   return cu_headerp->offset_size;
25019 }
25020
25021 /* See its dwarf2loc.h declaration.  */
25022
25023 int
25024 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
25025 {
25026   struct comp_unit_head cu_header_local;
25027   const struct comp_unit_head *cu_headerp;
25028
25029   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
25030
25031   if (cu_headerp->version == 2)
25032     return cu_headerp->addr_size;
25033   else
25034     return cu_headerp->offset_size;
25035 }
25036
25037 /* Return the text offset of the CU.  The returned offset comes from
25038    this CU's objfile.  If this objfile came from a separate debuginfo
25039    file, then the offset may be different from the corresponding
25040    offset in the parent objfile.  */
25041
25042 CORE_ADDR
25043 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
25044 {
25045   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
25046
25047   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
25048 }
25049
25050 /* Return DWARF version number of PER_CU.  */
25051
25052 short
25053 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25054 {
25055   return per_cu->dwarf_version;
25056 }
25057
25058 /* Locate the .debug_info compilation unit from CU's objfile which contains
25059    the DIE at OFFSET.  Raises an error on failure.  */
25060
25061 static struct dwarf2_per_cu_data *
25062 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25063                                   unsigned int offset_in_dwz,
25064                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25065 {
25066   struct dwarf2_per_cu_data *this_cu;
25067   int low, high;
25068   const sect_offset *cu_off;
25069
25070   low = 0;
25071   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25072   while (high > low)
25073     {
25074       struct dwarf2_per_cu_data *mid_cu;
25075       int mid = low + (high - low) / 2;
25076
25077       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25078       cu_off = &mid_cu->sect_off;
25079       if (mid_cu->is_dwz > offset_in_dwz
25080           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25081         high = mid;
25082       else
25083         low = mid + 1;
25084     }
25085   gdb_assert (low == high);
25086   this_cu = dwarf2_per_objfile->all_comp_units[low];
25087   cu_off = &this_cu->sect_off;
25088   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25089     {
25090       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25091         error (_("Dwarf Error: could not find partial DIE containing "
25092                "offset %s [in module %s]"),
25093                sect_offset_str (sect_off),
25094                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25095
25096       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25097                   <= sect_off);
25098       return dwarf2_per_objfile->all_comp_units[low-1];
25099     }
25100   else
25101     {
25102       this_cu = dwarf2_per_objfile->all_comp_units[low];
25103       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25104           && sect_off >= this_cu->sect_off + this_cu->length)
25105         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25106       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25107       return this_cu;
25108     }
25109 }
25110
25111 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25112
25113 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25114   : per_cu (per_cu_),
25115     mark (0),
25116     has_loclist (0),
25117     checked_producer (0),
25118     producer_is_gxx_lt_4_6 (0),
25119     producer_is_gcc_lt_4_3 (0),
25120     producer_is_icc_lt_14 (0),
25121     processing_has_namespace_info (0)
25122 {
25123   per_cu->cu = this;
25124 }
25125
25126 /* Destroy a dwarf2_cu.  */
25127
25128 dwarf2_cu::~dwarf2_cu ()
25129 {
25130   per_cu->cu = NULL;
25131 }
25132
25133 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25134
25135 static void
25136 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25137                        enum language pretend_language)
25138 {
25139   struct attribute *attr;
25140
25141   /* Set the language we're debugging.  */
25142   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25143   if (attr)
25144     set_cu_language (DW_UNSND (attr), cu);
25145   else
25146     {
25147       cu->language = pretend_language;
25148       cu->language_defn = language_def (cu->language);
25149     }
25150
25151   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25152 }
25153
25154 /* Increase the age counter on each cached compilation unit, and free
25155    any that are too old.  */
25156
25157 static void
25158 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25159 {
25160   struct dwarf2_per_cu_data *per_cu, **last_chain;
25161
25162   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25163   per_cu = dwarf2_per_objfile->read_in_chain;
25164   while (per_cu != NULL)
25165     {
25166       per_cu->cu->last_used ++;
25167       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25168         dwarf2_mark (per_cu->cu);
25169       per_cu = per_cu->cu->read_in_chain;
25170     }
25171
25172   per_cu = dwarf2_per_objfile->read_in_chain;
25173   last_chain = &dwarf2_per_objfile->read_in_chain;
25174   while (per_cu != NULL)
25175     {
25176       struct dwarf2_per_cu_data *next_cu;
25177
25178       next_cu = per_cu->cu->read_in_chain;
25179
25180       if (!per_cu->cu->mark)
25181         {
25182           delete per_cu->cu;
25183           *last_chain = next_cu;
25184         }
25185       else
25186         last_chain = &per_cu->cu->read_in_chain;
25187
25188       per_cu = next_cu;
25189     }
25190 }
25191
25192 /* Remove a single compilation unit from the cache.  */
25193
25194 static void
25195 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25196 {
25197   struct dwarf2_per_cu_data *per_cu, **last_chain;
25198   struct dwarf2_per_objfile *dwarf2_per_objfile
25199     = target_per_cu->dwarf2_per_objfile;
25200
25201   per_cu = dwarf2_per_objfile->read_in_chain;
25202   last_chain = &dwarf2_per_objfile->read_in_chain;
25203   while (per_cu != NULL)
25204     {
25205       struct dwarf2_per_cu_data *next_cu;
25206
25207       next_cu = per_cu->cu->read_in_chain;
25208
25209       if (per_cu == target_per_cu)
25210         {
25211           delete per_cu->cu;
25212           per_cu->cu = NULL;
25213           *last_chain = next_cu;
25214           break;
25215         }
25216       else
25217         last_chain = &per_cu->cu->read_in_chain;
25218
25219       per_cu = next_cu;
25220     }
25221 }
25222
25223 /* Cleanup function for the dwarf2_per_objfile data.  */
25224
25225 static void
25226 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25227 {
25228   struct dwarf2_per_objfile *dwarf2_per_objfile
25229     = static_cast<struct dwarf2_per_objfile *> (datum);
25230
25231   delete dwarf2_per_objfile;
25232 }
25233
25234 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25235    We store these in a hash table separate from the DIEs, and preserve them
25236    when the DIEs are flushed out of cache.
25237
25238    The CU "per_cu" pointer is needed because offset alone is not enough to
25239    uniquely identify the type.  A file may have multiple .debug_types sections,
25240    or the type may come from a DWO file.  Furthermore, while it's more logical
25241    to use per_cu->section+offset, with Fission the section with the data is in
25242    the DWO file but we don't know that section at the point we need it.
25243    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25244    because we can enter the lookup routine, get_die_type_at_offset, from
25245    outside this file, and thus won't necessarily have PER_CU->cu.
25246    Fortunately, PER_CU is stable for the life of the objfile.  */
25247
25248 struct dwarf2_per_cu_offset_and_type
25249 {
25250   const struct dwarf2_per_cu_data *per_cu;
25251   sect_offset sect_off;
25252   struct type *type;
25253 };
25254
25255 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25256
25257 static hashval_t
25258 per_cu_offset_and_type_hash (const void *item)
25259 {
25260   const struct dwarf2_per_cu_offset_and_type *ofs
25261     = (const struct dwarf2_per_cu_offset_and_type *) item;
25262
25263   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25264 }
25265
25266 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25267
25268 static int
25269 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25270 {
25271   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25272     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25273   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25274     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25275
25276   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25277           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25278 }
25279
25280 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25281    table if necessary.  For convenience, return TYPE.
25282
25283    The DIEs reading must have careful ordering to:
25284     * Not cause infite loops trying to read in DIEs as a prerequisite for
25285       reading current DIE.
25286     * Not trying to dereference contents of still incompletely read in types
25287       while reading in other DIEs.
25288     * Enable referencing still incompletely read in types just by a pointer to
25289       the type without accessing its fields.
25290
25291    Therefore caller should follow these rules:
25292      * Try to fetch any prerequisite types we may need to build this DIE type
25293        before building the type and calling set_die_type.
25294      * After building type call set_die_type for current DIE as soon as
25295        possible before fetching more types to complete the current type.
25296      * Make the type as complete as possible before fetching more types.  */
25297
25298 static struct type *
25299 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25300 {
25301   struct dwarf2_per_objfile *dwarf2_per_objfile
25302     = cu->per_cu->dwarf2_per_objfile;
25303   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25304   struct objfile *objfile = dwarf2_per_objfile->objfile;
25305   struct attribute *attr;
25306   struct dynamic_prop prop;
25307
25308   /* For Ada types, make sure that the gnat-specific data is always
25309      initialized (if not already set).  There are a few types where
25310      we should not be doing so, because the type-specific area is
25311      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25312      where the type-specific area is used to store the floatformat).
25313      But this is not a problem, because the gnat-specific information
25314      is actually not needed for these types.  */
25315   if (need_gnat_info (cu)
25316       && TYPE_CODE (type) != TYPE_CODE_FUNC
25317       && TYPE_CODE (type) != TYPE_CODE_FLT
25318       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25319       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25320       && TYPE_CODE (type) != TYPE_CODE_METHOD
25321       && !HAVE_GNAT_AUX_INFO (type))
25322     INIT_GNAT_SPECIFIC (type);
25323
25324   /* Read DW_AT_allocated and set in type.  */
25325   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25326   if (attr_form_is_block (attr))
25327     {
25328       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25329         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25330     }
25331   else if (attr != NULL)
25332     {
25333       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25334                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25335                  sect_offset_str (die->sect_off));
25336     }
25337
25338   /* Read DW_AT_associated and set in type.  */
25339   attr = dwarf2_attr (die, DW_AT_associated, cu);
25340   if (attr_form_is_block (attr))
25341     {
25342       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25343         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25344     }
25345   else if (attr != NULL)
25346     {
25347       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25348                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25349                  sect_offset_str (die->sect_off));
25350     }
25351
25352   /* Read DW_AT_data_location and set in type.  */
25353   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25354   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25355     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25356
25357   if (dwarf2_per_objfile->die_type_hash == NULL)
25358     {
25359       dwarf2_per_objfile->die_type_hash =
25360         htab_create_alloc_ex (127,
25361                               per_cu_offset_and_type_hash,
25362                               per_cu_offset_and_type_eq,
25363                               NULL,
25364                               &objfile->objfile_obstack,
25365                               hashtab_obstack_allocate,
25366                               dummy_obstack_deallocate);
25367     }
25368
25369   ofs.per_cu = cu->per_cu;
25370   ofs.sect_off = die->sect_off;
25371   ofs.type = type;
25372   slot = (struct dwarf2_per_cu_offset_and_type **)
25373     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25374   if (*slot)
25375     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25376                sect_offset_str (die->sect_off));
25377   *slot = XOBNEW (&objfile->objfile_obstack,
25378                   struct dwarf2_per_cu_offset_and_type);
25379   **slot = ofs;
25380   return type;
25381 }
25382
25383 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25384    or return NULL if the die does not have a saved type.  */
25385
25386 static struct type *
25387 get_die_type_at_offset (sect_offset sect_off,
25388                         struct dwarf2_per_cu_data *per_cu)
25389 {
25390   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25391   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25392
25393   if (dwarf2_per_objfile->die_type_hash == NULL)
25394     return NULL;
25395
25396   ofs.per_cu = per_cu;
25397   ofs.sect_off = sect_off;
25398   slot = ((struct dwarf2_per_cu_offset_and_type *)
25399           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25400   if (slot)
25401     return slot->type;
25402   else
25403     return NULL;
25404 }
25405
25406 /* Look up the type for DIE in CU in die_type_hash,
25407    or return NULL if DIE does not have a saved type.  */
25408
25409 static struct type *
25410 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25411 {
25412   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25413 }
25414
25415 /* Add a dependence relationship from CU to REF_PER_CU.  */
25416
25417 static void
25418 dwarf2_add_dependence (struct dwarf2_cu *cu,
25419                        struct dwarf2_per_cu_data *ref_per_cu)
25420 {
25421   void **slot;
25422
25423   if (cu->dependencies == NULL)
25424     cu->dependencies
25425       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25426                               NULL, &cu->comp_unit_obstack,
25427                               hashtab_obstack_allocate,
25428                               dummy_obstack_deallocate);
25429
25430   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25431   if (*slot == NULL)
25432     *slot = ref_per_cu;
25433 }
25434
25435 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25436    Set the mark field in every compilation unit in the
25437    cache that we must keep because we are keeping CU.  */
25438
25439 static int
25440 dwarf2_mark_helper (void **slot, void *data)
25441 {
25442   struct dwarf2_per_cu_data *per_cu;
25443
25444   per_cu = (struct dwarf2_per_cu_data *) *slot;
25445
25446   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25447      reading of the chain.  As such dependencies remain valid it is not much
25448      useful to track and undo them during QUIT cleanups.  */
25449   if (per_cu->cu == NULL)
25450     return 1;
25451
25452   if (per_cu->cu->mark)
25453     return 1;
25454   per_cu->cu->mark = 1;
25455
25456   if (per_cu->cu->dependencies != NULL)
25457     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25458
25459   return 1;
25460 }
25461
25462 /* Set the mark field in CU and in every other compilation unit in the
25463    cache that we must keep because we are keeping CU.  */
25464
25465 static void
25466 dwarf2_mark (struct dwarf2_cu *cu)
25467 {
25468   if (cu->mark)
25469     return;
25470   cu->mark = 1;
25471   if (cu->dependencies != NULL)
25472     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25473 }
25474
25475 static void
25476 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25477 {
25478   while (per_cu)
25479     {
25480       per_cu->cu->mark = 0;
25481       per_cu = per_cu->cu->read_in_chain;
25482     }
25483 }
25484
25485 /* Trivial hash function for partial_die_info: the hash value of a DIE
25486    is its offset in .debug_info for this objfile.  */
25487
25488 static hashval_t
25489 partial_die_hash (const void *item)
25490 {
25491   const struct partial_die_info *part_die
25492     = (const struct partial_die_info *) item;
25493
25494   return to_underlying (part_die->sect_off);
25495 }
25496
25497 /* Trivial comparison function for partial_die_info structures: two DIEs
25498    are equal if they have the same offset.  */
25499
25500 static int
25501 partial_die_eq (const void *item_lhs, const void *item_rhs)
25502 {
25503   const struct partial_die_info *part_die_lhs
25504     = (const struct partial_die_info *) item_lhs;
25505   const struct partial_die_info *part_die_rhs
25506     = (const struct partial_die_info *) item_rhs;
25507
25508   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25509 }
25510
25511 struct cmd_list_element *set_dwarf_cmdlist;
25512 struct cmd_list_element *show_dwarf_cmdlist;
25513
25514 static void
25515 set_dwarf_cmd (const char *args, int from_tty)
25516 {
25517   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25518              gdb_stdout);
25519 }
25520
25521 static void
25522 show_dwarf_cmd (const char *args, int from_tty)
25523 {
25524   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25525 }
25526
25527 int dwarf_always_disassemble;
25528
25529 static void
25530 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25531                                struct cmd_list_element *c, const char *value)
25532 {
25533   fprintf_filtered (file,
25534                     _("Whether to always disassemble "
25535                       "DWARF expressions is %s.\n"),
25536                     value);
25537 }
25538
25539 static void
25540 show_check_physname (struct ui_file *file, int from_tty,
25541                      struct cmd_list_element *c, const char *value)
25542 {
25543   fprintf_filtered (file,
25544                     _("Whether to check \"physname\" is %s.\n"),
25545                     value);
25546 }
25547
25548 void
25549 _initialize_dwarf2_read (void)
25550 {
25551   dwarf2_objfile_data_key
25552     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25553
25554   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25555 Set DWARF specific variables.\n\
25556 Configure DWARF variables such as the cache size"),
25557                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25558                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25559
25560   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25561 Show DWARF specific variables\n\
25562 Show DWARF variables such as the cache size"),
25563                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25564                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25565
25566   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25567                             &dwarf_max_cache_age, _("\
25568 Set the upper bound on the age of cached DWARF compilation units."), _("\
25569 Show the upper bound on the age of cached DWARF compilation units."), _("\
25570 A higher limit means that cached compilation units will be stored\n\
25571 in memory longer, and more total memory will be used.  Zero disables\n\
25572 caching, which can slow down startup."),
25573                             NULL,
25574                             show_dwarf_max_cache_age,
25575                             &set_dwarf_cmdlist,
25576                             &show_dwarf_cmdlist);
25577
25578   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25579                            &dwarf_always_disassemble, _("\
25580 Set whether `info address' always disassembles DWARF expressions."), _("\
25581 Show whether `info address' always disassembles DWARF expressions."), _("\
25582 When enabled, DWARF expressions are always printed in an assembly-like\n\
25583 syntax.  When disabled, expressions will be printed in a more\n\
25584 conversational style, when possible."),
25585                            NULL,
25586                            show_dwarf_always_disassemble,
25587                            &set_dwarf_cmdlist,
25588                            &show_dwarf_cmdlist);
25589
25590   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25591 Set debugging of the DWARF reader."), _("\
25592 Show debugging of the DWARF reader."), _("\
25593 When enabled (non-zero), debugging messages are printed during DWARF\n\
25594 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25595 information.  A value greater than 1 provides more verbose information."),
25596                             NULL,
25597                             NULL,
25598                             &setdebuglist, &showdebuglist);
25599
25600   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25601 Set debugging of the DWARF DIE reader."), _("\
25602 Show debugging of the DWARF DIE reader."), _("\
25603 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25604 The value is the maximum depth to print."),
25605                              NULL,
25606                              NULL,
25607                              &setdebuglist, &showdebuglist);
25608
25609   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25610 Set debugging of the dwarf line reader."), _("\
25611 Show debugging of the dwarf line reader."), _("\
25612 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25613 A value of 1 (one) provides basic information.\n\
25614 A value greater than 1 provides more verbose information."),
25615                              NULL,
25616                              NULL,
25617                              &setdebuglist, &showdebuglist);
25618
25619   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25620 Set cross-checking of \"physname\" code against demangler."), _("\
25621 Show cross-checking of \"physname\" code against demangler."), _("\
25622 When enabled, GDB's internal \"physname\" code is checked against\n\
25623 the demangler."),
25624                            NULL, show_check_physname,
25625                            &setdebuglist, &showdebuglist);
25626
25627   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25628                            no_class, &use_deprecated_index_sections, _("\
25629 Set whether to use deprecated gdb_index sections."), _("\
25630 Show whether to use deprecated gdb_index sections."), _("\
25631 When enabled, deprecated .gdb_index sections are used anyway.\n\
25632 Normally they are ignored either because of a missing feature or\n\
25633 performance issue.\n\
25634 Warning: This option must be enabled before gdb reads the file."),
25635                            NULL,
25636                            NULL,
25637                            &setlist, &showlist);
25638
25639   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25640                                                         &dwarf2_locexpr_funcs);
25641   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25642                                                         &dwarf2_loclist_funcs);
25643
25644   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25645                                         &dwarf2_block_frame_base_locexpr_funcs);
25646   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25647                                         &dwarf2_block_frame_base_loclist_funcs);
25648
25649 #if GDB_SELF_TEST
25650   selftests::register_test ("dw2_expand_symtabs_matching",
25651                             selftests::dw2_expand_symtabs_matching::run_test);
25652 #endif
25653 }