Record explicit block ranges from dwarf2read.c
[external/binutils.git] / gdb / dwarf2read.c
1 /* DWARF 2 debugging format support for GDB.
2
3    Copyright (C) 1994-2018 Free Software Foundation, Inc.
4
5    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
6    Inc.  with support from Florida State University (under contract
7    with the Ada Joint Program Office), and Silicon Graphics, Inc.
8    Initial contribution by Brent Benson, Harris Computer Systems, Inc.,
9    based on Fred Fish's (Cygnus Support) implementation of DWARF 1
10    support.
11
12    This file is part of GDB.
13
14    This program is free software; you can redistribute it and/or modify
15    it under the terms of the GNU General Public License as published by
16    the Free Software Foundation; either version 3 of the License, or
17    (at your option) any later version.
18
19    This program is distributed in the hope that it will be useful,
20    but WITHOUT ANY WARRANTY; without even the implied warranty of
21    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22    GNU General Public License for more details.
23
24    You should have received a copy of the GNU General Public License
25    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
26
27 /* FIXME: Various die-reading functions need to be more careful with
28    reading off the end of the section.
29    E.g., load_partial_dies, read_partial_die.  */
30
31 #include "defs.h"
32 #include "dwarf2read.h"
33 #include "dwarf-index-cache.h"
34 #include "dwarf-index-common.h"
35 #include "bfd.h"
36 #include "elf-bfd.h"
37 #include "symtab.h"
38 #include "gdbtypes.h"
39 #include "objfiles.h"
40 #include "dwarf2.h"
41 #include "buildsym.h"
42 #include "demangle.h"
43 #include "gdb-demangle.h"
44 #include "expression.h"
45 #include "filenames.h"  /* for DOSish file names */
46 #include "macrotab.h"
47 #include "language.h"
48 #include "complaints.h"
49 #include "bcache.h"
50 #include "dwarf2expr.h"
51 #include "dwarf2loc.h"
52 #include "cp-support.h"
53 #include "hashtab.h"
54 #include "command.h"
55 #include "gdbcmd.h"
56 #include "block.h"
57 #include "addrmap.h"
58 #include "typeprint.h"
59 #include "psympriv.h"
60 #include <sys/stat.h>
61 #include "completer.h"
62 #include "vec.h"
63 #include "c-lang.h"
64 #include "go-lang.h"
65 #include "valprint.h"
66 #include "gdbcore.h" /* for gnutarget */
67 #include "gdb/gdb-index.h"
68 #include <ctype.h>
69 #include "gdb_bfd.h"
70 #include "f-lang.h"
71 #include "source.h"
72 #include "filestuff.h"
73 #include "build-id.h"
74 #include "namespace.h"
75 #include "common/gdb_unlinker.h"
76 #include "common/function-view.h"
77 #include "common/gdb_optional.h"
78 #include "common/underlying.h"
79 #include "common/byte-vector.h"
80 #include "common/hash_enum.h"
81 #include "filename-seen-cache.h"
82 #include "producer.h"
83 #include <fcntl.h>
84 #include <sys/types.h>
85 #include <algorithm>
86 #include <unordered_set>
87 #include <unordered_map>
88 #include "selftest.h"
89 #include <cmath>
90 #include <set>
91 #include <forward_list>
92 #include "rust-lang.h"
93 #include "common/pathstuff.h"
94
95 /* When == 1, print basic high level tracing messages.
96    When > 1, be more verbose.
97    This is in contrast to the low level DIE reading of dwarf_die_debug.  */
98 static unsigned int dwarf_read_debug = 0;
99
100 /* When non-zero, dump DIEs after they are read in.  */
101 static unsigned int dwarf_die_debug = 0;
102
103 /* When non-zero, dump line number entries as they are read in.  */
104 static unsigned int dwarf_line_debug = 0;
105
106 /* When non-zero, cross-check physname against demangler.  */
107 static int check_physname = 0;
108
109 /* When non-zero, do not reject deprecated .gdb_index sections.  */
110 static int use_deprecated_index_sections = 0;
111
112 static const struct objfile_data *dwarf2_objfile_data_key;
113
114 /* The "aclass" indices for various kinds of computed DWARF symbols.  */
115
116 static int dwarf2_locexpr_index;
117 static int dwarf2_loclist_index;
118 static int dwarf2_locexpr_block_index;
119 static int dwarf2_loclist_block_index;
120
121 /* An index into a (C++) symbol name component in a symbol name as
122    recorded in the mapped_index's symbol table.  For each C++ symbol
123    in the symbol table, we record one entry for the start of each
124    component in the symbol in a table of name components, and then
125    sort the table, in order to be able to binary search symbol names,
126    ignoring leading namespaces, both completion and regular look up.
127    For example, for symbol "A::B::C", we'll have an entry that points
128    to "A::B::C", another that points to "B::C", and another for "C".
129    Note that function symbols in GDB index have no parameter
130    information, just the function/method names.  You can convert a
131    name_component to a "const char *" using the
132    'mapped_index::symbol_name_at(offset_type)' method.  */
133
134 struct name_component
135 {
136   /* Offset in the symbol name where the component starts.  Stored as
137      a (32-bit) offset instead of a pointer to save memory and improve
138      locality on 64-bit architectures.  */
139   offset_type name_offset;
140
141   /* The symbol's index in the symbol and constant pool tables of a
142      mapped_index.  */
143   offset_type idx;
144 };
145
146 /* Base class containing bits shared by both .gdb_index and
147    .debug_name indexes.  */
148
149 struct mapped_index_base
150 {
151   mapped_index_base () = default;
152   DISABLE_COPY_AND_ASSIGN (mapped_index_base);
153
154   /* The name_component table (a sorted vector).  See name_component's
155      description above.  */
156   std::vector<name_component> name_components;
157
158   /* How NAME_COMPONENTS is sorted.  */
159   enum case_sensitivity name_components_casing;
160
161   /* Return the number of names in the symbol table.  */
162   virtual size_t symbol_name_count () const = 0;
163
164   /* Get the name of the symbol at IDX in the symbol table.  */
165   virtual const char *symbol_name_at (offset_type idx) const = 0;
166
167   /* Return whether the name at IDX in the symbol table should be
168      ignored.  */
169   virtual bool symbol_name_slot_invalid (offset_type idx) const
170   {
171     return false;
172   }
173
174   /* Build the symbol name component sorted vector, if we haven't
175      yet.  */
176   void build_name_components ();
177
178   /* Returns the lower (inclusive) and upper (exclusive) bounds of the
179      possible matches for LN_NO_PARAMS in the name component
180      vector.  */
181   std::pair<std::vector<name_component>::const_iterator,
182             std::vector<name_component>::const_iterator>
183     find_name_components_bounds (const lookup_name_info &ln_no_params) const;
184
185   /* Prevent deleting/destroying via a base class pointer.  */
186 protected:
187   ~mapped_index_base() = default;
188 };
189
190 /* A description of the mapped index.  The file format is described in
191    a comment by the code that writes the index.  */
192 struct mapped_index final : public mapped_index_base
193 {
194   /* A slot/bucket in the symbol table hash.  */
195   struct symbol_table_slot
196   {
197     const offset_type name;
198     const offset_type vec;
199   };
200
201   /* Index data format version.  */
202   int version = 0;
203
204   /* The address table data.  */
205   gdb::array_view<const gdb_byte> address_table;
206
207   /* The symbol table, implemented as a hash table.  */
208   gdb::array_view<symbol_table_slot> symbol_table;
209
210   /* A pointer to the constant pool.  */
211   const char *constant_pool = nullptr;
212
213   bool symbol_name_slot_invalid (offset_type idx) const override
214   {
215     const auto &bucket = this->symbol_table[idx];
216     return bucket.name == 0 && bucket.vec;
217   }
218
219   /* Convenience method to get at the name of the symbol at IDX in the
220      symbol table.  */
221   const char *symbol_name_at (offset_type idx) const override
222   { return this->constant_pool + MAYBE_SWAP (this->symbol_table[idx].name); }
223
224   size_t symbol_name_count () const override
225   { return this->symbol_table.size (); }
226 };
227
228 /* A description of the mapped .debug_names.
229    Uninitialized map has CU_COUNT 0.  */
230 struct mapped_debug_names final : public mapped_index_base
231 {
232   mapped_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile_)
233   : dwarf2_per_objfile (dwarf2_per_objfile_)
234   {}
235
236   struct dwarf2_per_objfile *dwarf2_per_objfile;
237   bfd_endian dwarf5_byte_order;
238   bool dwarf5_is_dwarf64;
239   bool augmentation_is_gdb;
240   uint8_t offset_size;
241   uint32_t cu_count = 0;
242   uint32_t tu_count, bucket_count, name_count;
243   const gdb_byte *cu_table_reordered, *tu_table_reordered;
244   const uint32_t *bucket_table_reordered, *hash_table_reordered;
245   const gdb_byte *name_table_string_offs_reordered;
246   const gdb_byte *name_table_entry_offs_reordered;
247   const gdb_byte *entry_pool;
248
249   struct index_val
250   {
251     ULONGEST dwarf_tag;
252     struct attr
253     {
254       /* Attribute name DW_IDX_*.  */
255       ULONGEST dw_idx;
256
257       /* Attribute form DW_FORM_*.  */
258       ULONGEST form;
259
260       /* Value if FORM is DW_FORM_implicit_const.  */
261       LONGEST implicit_const;
262     };
263     std::vector<attr> attr_vec;
264   };
265
266   std::unordered_map<ULONGEST, index_val> abbrev_map;
267
268   const char *namei_to_name (uint32_t namei) const;
269
270   /* Implementation of the mapped_index_base virtual interface, for
271      the name_components cache.  */
272
273   const char *symbol_name_at (offset_type idx) const override
274   { return namei_to_name (idx); }
275
276   size_t symbol_name_count () const override
277   { return this->name_count; }
278 };
279
280 /* See dwarf2read.h.  */
281
282 dwarf2_per_objfile *
283 get_dwarf2_per_objfile (struct objfile *objfile)
284 {
285   return ((struct dwarf2_per_objfile *)
286           objfile_data (objfile, dwarf2_objfile_data_key));
287 }
288
289 /* Set the dwarf2_per_objfile associated to OBJFILE.  */
290
291 void
292 set_dwarf2_per_objfile (struct objfile *objfile,
293                         struct dwarf2_per_objfile *dwarf2_per_objfile)
294 {
295   gdb_assert (get_dwarf2_per_objfile (objfile) == NULL);
296   set_objfile_data (objfile, dwarf2_objfile_data_key, dwarf2_per_objfile);
297 }
298
299 /* Default names of the debugging sections.  */
300
301 /* Note that if the debugging section has been compressed, it might
302    have a name like .zdebug_info.  */
303
304 static const struct dwarf2_debug_sections dwarf2_elf_names =
305 {
306   { ".debug_info", ".zdebug_info" },
307   { ".debug_abbrev", ".zdebug_abbrev" },
308   { ".debug_line", ".zdebug_line" },
309   { ".debug_loc", ".zdebug_loc" },
310   { ".debug_loclists", ".zdebug_loclists" },
311   { ".debug_macinfo", ".zdebug_macinfo" },
312   { ".debug_macro", ".zdebug_macro" },
313   { ".debug_str", ".zdebug_str" },
314   { ".debug_line_str", ".zdebug_line_str" },
315   { ".debug_ranges", ".zdebug_ranges" },
316   { ".debug_rnglists", ".zdebug_rnglists" },
317   { ".debug_types", ".zdebug_types" },
318   { ".debug_addr", ".zdebug_addr" },
319   { ".debug_frame", ".zdebug_frame" },
320   { ".eh_frame", NULL },
321   { ".gdb_index", ".zgdb_index" },
322   { ".debug_names", ".zdebug_names" },
323   { ".debug_aranges", ".zdebug_aranges" },
324   23
325 };
326
327 /* List of DWO/DWP sections.  */
328
329 static const struct dwop_section_names
330 {
331   struct dwarf2_section_names abbrev_dwo;
332   struct dwarf2_section_names info_dwo;
333   struct dwarf2_section_names line_dwo;
334   struct dwarf2_section_names loc_dwo;
335   struct dwarf2_section_names loclists_dwo;
336   struct dwarf2_section_names macinfo_dwo;
337   struct dwarf2_section_names macro_dwo;
338   struct dwarf2_section_names str_dwo;
339   struct dwarf2_section_names str_offsets_dwo;
340   struct dwarf2_section_names types_dwo;
341   struct dwarf2_section_names cu_index;
342   struct dwarf2_section_names tu_index;
343 }
344 dwop_section_names =
345 {
346   { ".debug_abbrev.dwo", ".zdebug_abbrev.dwo" },
347   { ".debug_info.dwo", ".zdebug_info.dwo" },
348   { ".debug_line.dwo", ".zdebug_line.dwo" },
349   { ".debug_loc.dwo", ".zdebug_loc.dwo" },
350   { ".debug_loclists.dwo", ".zdebug_loclists.dwo" },
351   { ".debug_macinfo.dwo", ".zdebug_macinfo.dwo" },
352   { ".debug_macro.dwo", ".zdebug_macro.dwo" },
353   { ".debug_str.dwo", ".zdebug_str.dwo" },
354   { ".debug_str_offsets.dwo", ".zdebug_str_offsets.dwo" },
355   { ".debug_types.dwo", ".zdebug_types.dwo" },
356   { ".debug_cu_index", ".zdebug_cu_index" },
357   { ".debug_tu_index", ".zdebug_tu_index" },
358 };
359
360 /* local data types */
361
362 /* The data in a compilation unit header, after target2host
363    translation, looks like this.  */
364 struct comp_unit_head
365 {
366   unsigned int length;
367   short version;
368   unsigned char addr_size;
369   unsigned char signed_addr_p;
370   sect_offset abbrev_sect_off;
371
372   /* Size of file offsets; either 4 or 8.  */
373   unsigned int offset_size;
374
375   /* Size of the length field; either 4 or 12.  */
376   unsigned int initial_length_size;
377
378   enum dwarf_unit_type unit_type;
379
380   /* Offset to the first byte of this compilation unit header in the
381      .debug_info section, for resolving relative reference dies.  */
382   sect_offset sect_off;
383
384   /* Offset to first die in this cu from the start of the cu.
385      This will be the first byte following the compilation unit header.  */
386   cu_offset first_die_cu_offset;
387
388   /* 64-bit signature of this type unit - it is valid only for
389      UNIT_TYPE DW_UT_type.  */
390   ULONGEST signature;
391
392   /* For types, offset in the type's DIE of the type defined by this TU.  */
393   cu_offset type_cu_offset_in_tu;
394 };
395
396 /* Type used for delaying computation of method physnames.
397    See comments for compute_delayed_physnames.  */
398 struct delayed_method_info
399 {
400   /* The type to which the method is attached, i.e., its parent class.  */
401   struct type *type;
402
403   /* The index of the method in the type's function fieldlists.  */
404   int fnfield_index;
405
406   /* The index of the method in the fieldlist.  */
407   int index;
408
409   /* The name of the DIE.  */
410   const char *name;
411
412   /*  The DIE associated with this method.  */
413   struct die_info *die;
414 };
415
416 /* Internal state when decoding a particular compilation unit.  */
417 struct dwarf2_cu
418 {
419   explicit dwarf2_cu (struct dwarf2_per_cu_data *per_cu);
420   ~dwarf2_cu ();
421
422   DISABLE_COPY_AND_ASSIGN (dwarf2_cu);
423
424   /* The header of the compilation unit.  */
425   struct comp_unit_head header {};
426
427   /* Base address of this compilation unit.  */
428   CORE_ADDR base_address = 0;
429
430   /* Non-zero if base_address has been set.  */
431   int base_known = 0;
432
433   /* The language we are debugging.  */
434   enum language language = language_unknown;
435   const struct language_defn *language_defn = nullptr;
436
437   const char *producer = nullptr;
438
439   /* The symtab builder for this CU.  This is only non-NULL when full
440      symbols are being read.  */
441   std::unique_ptr<buildsym_compunit> builder;
442
443   /* The generic symbol table building routines have separate lists for
444      file scope symbols and all all other scopes (local scopes).  So
445      we need to select the right one to pass to add_symbol_to_list().
446      We do it by keeping a pointer to the correct list in list_in_scope.
447
448      FIXME: The original dwarf code just treated the file scope as the
449      first local scope, and all other local scopes as nested local
450      scopes, and worked fine.  Check to see if we really need to
451      distinguish these in buildsym.c.  */
452   struct pending **list_in_scope = nullptr;
453
454   /* Hash table holding all the loaded partial DIEs
455      with partial_die->offset.SECT_OFF as hash.  */
456   htab_t partial_dies = nullptr;
457
458   /* Storage for things with the same lifetime as this read-in compilation
459      unit, including partial DIEs.  */
460   auto_obstack comp_unit_obstack;
461
462   /* When multiple dwarf2_cu structures are living in memory, this field
463      chains them all together, so that they can be released efficiently.
464      We will probably also want a generation counter so that most-recently-used
465      compilation units are cached...  */
466   struct dwarf2_per_cu_data *read_in_chain = nullptr;
467
468   /* Backlink to our per_cu entry.  */
469   struct dwarf2_per_cu_data *per_cu;
470
471   /* How many compilation units ago was this CU last referenced?  */
472   int last_used = 0;
473
474   /* A hash table of DIE cu_offset for following references with
475      die_info->offset.sect_off as hash.  */
476   htab_t die_hash = nullptr;
477
478   /* Full DIEs if read in.  */
479   struct die_info *dies = nullptr;
480
481   /* A set of pointers to dwarf2_per_cu_data objects for compilation
482      units referenced by this one.  Only set during full symbol processing;
483      partial symbol tables do not have dependencies.  */
484   htab_t dependencies = nullptr;
485
486   /* Header data from the line table, during full symbol processing.  */
487   struct line_header *line_header = nullptr;
488   /* Non-NULL if LINE_HEADER is owned by this DWARF_CU.  Otherwise,
489      it's owned by dwarf2_per_objfile::line_header_hash.  If non-NULL,
490      this is the DW_TAG_compile_unit die for this CU.  We'll hold on
491      to the line header as long as this DIE is being processed.  See
492      process_die_scope.  */
493   die_info *line_header_die_owner = nullptr;
494
495   /* A list of methods which need to have physnames computed
496      after all type information has been read.  */
497   std::vector<delayed_method_info> method_list;
498
499   /* To be copied to symtab->call_site_htab.  */
500   htab_t call_site_htab = nullptr;
501
502   /* Non-NULL if this CU came from a DWO file.
503      There is an invariant here that is important to remember:
504      Except for attributes copied from the top level DIE in the "main"
505      (or "stub") file in preparation for reading the DWO file
506      (e.g., DW_AT_GNU_addr_base), we KISS: there is only *one* CU.
507      Either there isn't a DWO file (in which case this is NULL and the point
508      is moot), or there is and either we're not going to read it (in which
509      case this is NULL) or there is and we are reading it (in which case this
510      is non-NULL).  */
511   struct dwo_unit *dwo_unit = nullptr;
512
513   /* The DW_AT_addr_base attribute if present, zero otherwise
514      (zero is a valid value though).
515      Note this value comes from the Fission stub CU/TU's DIE.  */
516   ULONGEST addr_base = 0;
517
518   /* The DW_AT_ranges_base attribute if present, zero otherwise
519      (zero is a valid value though).
520      Note this value comes from the Fission stub CU/TU's DIE.
521      Also note that the value is zero in the non-DWO case so this value can
522      be used without needing to know whether DWO files are in use or not.
523      N.B. This does not apply to DW_AT_ranges appearing in
524      DW_TAG_compile_unit dies.  This is a bit of a wart, consider if ever
525      DW_AT_ranges appeared in the DW_TAG_compile_unit of DWO DIEs: then
526      DW_AT_ranges_base *would* have to be applied, and we'd have to care
527      whether the DW_AT_ranges attribute came from the skeleton or DWO.  */
528   ULONGEST ranges_base = 0;
529
530   /* When reading debug info generated by older versions of rustc, we
531      have to rewrite some union types to be struct types with a
532      variant part.  This rewriting must be done after the CU is fully
533      read in, because otherwise at the point of rewriting some struct
534      type might not have been fully processed.  So, we keep a list of
535      all such types here and process them after expansion.  */
536   std::vector<struct type *> rust_unions;
537
538   /* Mark used when releasing cached dies.  */
539   unsigned int mark : 1;
540
541   /* This CU references .debug_loc.  See the symtab->locations_valid field.
542      This test is imperfect as there may exist optimized debug code not using
543      any location list and still facing inlining issues if handled as
544      unoptimized code.  For a future better test see GCC PR other/32998.  */
545   unsigned int has_loclist : 1;
546
547   /* These cache the results for producer_is_* fields.  CHECKED_PRODUCER is set
548      if all the producer_is_* fields are valid.  This information is cached
549      because profiling CU expansion showed excessive time spent in
550      producer_is_gxx_lt_4_6.  */
551   unsigned int checked_producer : 1;
552   unsigned int producer_is_gxx_lt_4_6 : 1;
553   unsigned int producer_is_gcc_lt_4_3 : 1;
554   unsigned int producer_is_icc_lt_14 : 1;
555
556   /* When set, the file that we're processing is known to have
557      debugging info for C++ namespaces.  GCC 3.3.x did not produce
558      this information, but later versions do.  */
559
560   unsigned int processing_has_namespace_info : 1;
561
562   struct partial_die_info *find_partial_die (sect_offset sect_off);
563 };
564
565 /* A struct that can be used as a hash key for tables based on DW_AT_stmt_list.
566    This includes type_unit_group and quick_file_names.  */
567
568 struct stmt_list_hash
569 {
570   /* The DWO unit this table is from or NULL if there is none.  */
571   struct dwo_unit *dwo_unit;
572
573   /* Offset in .debug_line or .debug_line.dwo.  */
574   sect_offset line_sect_off;
575 };
576
577 /* Each element of dwarf2_per_objfile->type_unit_groups is a pointer to
578    an object of this type.  */
579
580 struct type_unit_group
581 {
582   /* dwarf2read.c's main "handle" on a TU symtab.
583      To simplify things we create an artificial CU that "includes" all the
584      type units using this stmt_list so that the rest of the code still has
585      a "per_cu" handle on the symtab.
586      This PER_CU is recognized by having no section.  */
587 #define IS_TYPE_UNIT_GROUP(per_cu) ((per_cu)->section == NULL)
588   struct dwarf2_per_cu_data per_cu;
589
590   /* The TUs that share this DW_AT_stmt_list entry.
591      This is added to while parsing type units to build partial symtabs,
592      and is deleted afterwards and not used again.  */
593   VEC (sig_type_ptr) *tus;
594
595   /* The compunit symtab.
596      Type units in a group needn't all be defined in the same source file,
597      so we create an essentially anonymous symtab as the compunit symtab.  */
598   struct compunit_symtab *compunit_symtab;
599
600   /* The data used to construct the hash key.  */
601   struct stmt_list_hash hash;
602
603   /* The number of symtabs from the line header.
604      The value here must match line_header.num_file_names.  */
605   unsigned int num_symtabs;
606
607   /* The symbol tables for this TU (obtained from the files listed in
608      DW_AT_stmt_list).
609      WARNING: The order of entries here must match the order of entries
610      in the line header.  After the first TU using this type_unit_group, the
611      line header for the subsequent TUs is recreated from this.  This is done
612      because we need to use the same symtabs for each TU using the same
613      DW_AT_stmt_list value.  Also note that symtabs may be repeated here,
614      there's no guarantee the line header doesn't have duplicate entries.  */
615   struct symtab **symtabs;
616 };
617
618 /* These sections are what may appear in a (real or virtual) DWO file.  */
619
620 struct dwo_sections
621 {
622   struct dwarf2_section_info abbrev;
623   struct dwarf2_section_info line;
624   struct dwarf2_section_info loc;
625   struct dwarf2_section_info loclists;
626   struct dwarf2_section_info macinfo;
627   struct dwarf2_section_info macro;
628   struct dwarf2_section_info str;
629   struct dwarf2_section_info str_offsets;
630   /* In the case of a virtual DWO file, these two are unused.  */
631   struct dwarf2_section_info info;
632   VEC (dwarf2_section_info_def) *types;
633 };
634
635 /* CUs/TUs in DWP/DWO files.  */
636
637 struct dwo_unit
638 {
639   /* Backlink to the containing struct dwo_file.  */
640   struct dwo_file *dwo_file;
641
642   /* The "id" that distinguishes this CU/TU.
643      .debug_info calls this "dwo_id", .debug_types calls this "signature".
644      Since signatures came first, we stick with it for consistency.  */
645   ULONGEST signature;
646
647   /* The section this CU/TU lives in, in the DWO file.  */
648   struct dwarf2_section_info *section;
649
650   /* Same as dwarf2_per_cu_data:{sect_off,length} but in the DWO section.  */
651   sect_offset sect_off;
652   unsigned int length;
653
654   /* For types, offset in the type's DIE of the type defined by this TU.  */
655   cu_offset type_offset_in_tu;
656 };
657
658 /* include/dwarf2.h defines the DWP section codes.
659    It defines a max value but it doesn't define a min value, which we
660    use for error checking, so provide one.  */
661
662 enum dwp_v2_section_ids
663 {
664   DW_SECT_MIN = 1
665 };
666
667 /* Data for one DWO file.
668
669    This includes virtual DWO files (a virtual DWO file is a DWO file as it
670    appears in a DWP file).  DWP files don't really have DWO files per se -
671    comdat folding of types "loses" the DWO file they came from, and from
672    a high level view DWP files appear to contain a mass of random types.
673    However, to maintain consistency with the non-DWP case we pretend DWP
674    files contain virtual DWO files, and we assign each TU with one virtual
675    DWO file (generally based on the line and abbrev section offsets -
676    a heuristic that seems to work in practice).  */
677
678 struct dwo_file
679 {
680   /* The DW_AT_GNU_dwo_name attribute.
681      For virtual DWO files the name is constructed from the section offsets
682      of abbrev,line,loc,str_offsets so that we combine virtual DWO files
683      from related CU+TUs.  */
684   const char *dwo_name;
685
686   /* The DW_AT_comp_dir attribute.  */
687   const char *comp_dir;
688
689   /* The bfd, when the file is open.  Otherwise this is NULL.
690      This is unused(NULL) for virtual DWO files where we use dwp_file.dbfd.  */
691   bfd *dbfd;
692
693   /* The sections that make up this DWO file.
694      Remember that for virtual DWO files in DWP V2, these are virtual
695      sections (for lack of a better name).  */
696   struct dwo_sections sections;
697
698   /* The CUs in the file.
699      Each element is a struct dwo_unit. Multiple CUs per DWO are supported as
700      an extension to handle LLVM's Link Time Optimization output (where
701      multiple source files may be compiled into a single object/dwo pair). */
702   htab_t cus;
703
704   /* Table of TUs in the file.
705      Each element is a struct dwo_unit.  */
706   htab_t tus;
707 };
708
709 /* These sections are what may appear in a DWP file.  */
710
711 struct dwp_sections
712 {
713   /* These are used by both DWP version 1 and 2.  */
714   struct dwarf2_section_info str;
715   struct dwarf2_section_info cu_index;
716   struct dwarf2_section_info tu_index;
717
718   /* These are only used by DWP version 2 files.
719      In DWP version 1 the .debug_info.dwo, .debug_types.dwo, and other
720      sections are referenced by section number, and are not recorded here.
721      In DWP version 2 there is at most one copy of all these sections, each
722      section being (effectively) comprised of the concatenation of all of the
723      individual sections that exist in the version 1 format.
724      To keep the code simple we treat each of these concatenated pieces as a
725      section itself (a virtual section?).  */
726   struct dwarf2_section_info abbrev;
727   struct dwarf2_section_info info;
728   struct dwarf2_section_info line;
729   struct dwarf2_section_info loc;
730   struct dwarf2_section_info macinfo;
731   struct dwarf2_section_info macro;
732   struct dwarf2_section_info str_offsets;
733   struct dwarf2_section_info types;
734 };
735
736 /* These sections are what may appear in a virtual DWO file in DWP version 1.
737    A virtual DWO file is a DWO file as it appears in a DWP file.  */
738
739 struct virtual_v1_dwo_sections
740 {
741   struct dwarf2_section_info abbrev;
742   struct dwarf2_section_info line;
743   struct dwarf2_section_info loc;
744   struct dwarf2_section_info macinfo;
745   struct dwarf2_section_info macro;
746   struct dwarf2_section_info str_offsets;
747   /* Each DWP hash table entry records one CU or one TU.
748      That is recorded here, and copied to dwo_unit.section.  */
749   struct dwarf2_section_info info_or_types;
750 };
751
752 /* Similar to virtual_v1_dwo_sections, but for DWP version 2.
753    In version 2, the sections of the DWO files are concatenated together
754    and stored in one section of that name.  Thus each ELF section contains
755    several "virtual" sections.  */
756
757 struct virtual_v2_dwo_sections
758 {
759   bfd_size_type abbrev_offset;
760   bfd_size_type abbrev_size;
761
762   bfd_size_type line_offset;
763   bfd_size_type line_size;
764
765   bfd_size_type loc_offset;
766   bfd_size_type loc_size;
767
768   bfd_size_type macinfo_offset;
769   bfd_size_type macinfo_size;
770
771   bfd_size_type macro_offset;
772   bfd_size_type macro_size;
773
774   bfd_size_type str_offsets_offset;
775   bfd_size_type str_offsets_size;
776
777   /* Each DWP hash table entry records one CU or one TU.
778      That is recorded here, and copied to dwo_unit.section.  */
779   bfd_size_type info_or_types_offset;
780   bfd_size_type info_or_types_size;
781 };
782
783 /* Contents of DWP hash tables.  */
784
785 struct dwp_hash_table
786 {
787   uint32_t version, nr_columns;
788   uint32_t nr_units, nr_slots;
789   const gdb_byte *hash_table, *unit_table;
790   union
791   {
792     struct
793     {
794       const gdb_byte *indices;
795     } v1;
796     struct
797     {
798       /* This is indexed by column number and gives the id of the section
799          in that column.  */
800 #define MAX_NR_V2_DWO_SECTIONS \
801   (1 /* .debug_info or .debug_types */ \
802    + 1 /* .debug_abbrev */ \
803    + 1 /* .debug_line */ \
804    + 1 /* .debug_loc */ \
805    + 1 /* .debug_str_offsets */ \
806    + 1 /* .debug_macro or .debug_macinfo */)
807       int section_ids[MAX_NR_V2_DWO_SECTIONS];
808       const gdb_byte *offsets;
809       const gdb_byte *sizes;
810     } v2;
811   } section_pool;
812 };
813
814 /* Data for one DWP file.  */
815
816 struct dwp_file
817 {
818   dwp_file (const char *name_, gdb_bfd_ref_ptr &&abfd)
819     : name (name_),
820       dbfd (std::move (abfd))
821   {
822   }
823
824   /* Name of the file.  */
825   const char *name;
826
827   /* File format version.  */
828   int version = 0;
829
830   /* The bfd.  */
831   gdb_bfd_ref_ptr dbfd;
832
833   /* Section info for this file.  */
834   struct dwp_sections sections {};
835
836   /* Table of CUs in the file.  */
837   const struct dwp_hash_table *cus = nullptr;
838
839   /* Table of TUs in the file.  */
840   const struct dwp_hash_table *tus = nullptr;
841
842   /* Tables of loaded CUs/TUs.  Each entry is a struct dwo_unit *.  */
843   htab_t loaded_cus {};
844   htab_t loaded_tus {};
845
846   /* Table to map ELF section numbers to their sections.
847      This is only needed for the DWP V1 file format.  */
848   unsigned int num_sections = 0;
849   asection **elf_sections = nullptr;
850 };
851
852 /* This represents a '.dwz' file.  */
853
854 struct dwz_file
855 {
856   dwz_file (gdb_bfd_ref_ptr &&bfd)
857     : dwz_bfd (std::move (bfd))
858   {
859   }
860
861   /* A dwz file can only contain a few sections.  */
862   struct dwarf2_section_info abbrev {};
863   struct dwarf2_section_info info {};
864   struct dwarf2_section_info str {};
865   struct dwarf2_section_info line {};
866   struct dwarf2_section_info macro {};
867   struct dwarf2_section_info gdb_index {};
868   struct dwarf2_section_info debug_names {};
869
870   /* The dwz's BFD.  */
871   gdb_bfd_ref_ptr dwz_bfd;
872
873   /* If we loaded the index from an external file, this contains the
874      resources associated to the open file, memory mapping, etc.  */
875   std::unique_ptr<index_cache_resource> index_cache_res;
876 };
877
878 /* Struct used to pass misc. parameters to read_die_and_children, et
879    al.  which are used for both .debug_info and .debug_types dies.
880    All parameters here are unchanging for the life of the call.  This
881    struct exists to abstract away the constant parameters of die reading.  */
882
883 struct die_reader_specs
884 {
885   /* The bfd of die_section.  */
886   bfd* abfd;
887
888   /* The CU of the DIE we are parsing.  */
889   struct dwarf2_cu *cu;
890
891   /* Non-NULL if reading a DWO file (including one packaged into a DWP).  */
892   struct dwo_file *dwo_file;
893
894   /* The section the die comes from.
895      This is either .debug_info or .debug_types, or the .dwo variants.  */
896   struct dwarf2_section_info *die_section;
897
898   /* die_section->buffer.  */
899   const gdb_byte *buffer;
900
901   /* The end of the buffer.  */
902   const gdb_byte *buffer_end;
903
904   /* The value of the DW_AT_comp_dir attribute.  */
905   const char *comp_dir;
906
907   /* The abbreviation table to use when reading the DIEs.  */
908   struct abbrev_table *abbrev_table;
909 };
910
911 /* Type of function passed to init_cutu_and_read_dies, et.al.  */
912 typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader,
913                                       const gdb_byte *info_ptr,
914                                       struct die_info *comp_unit_die,
915                                       int has_children,
916                                       void *data);
917
918 /* A 1-based directory index.  This is a strong typedef to prevent
919    accidentally using a directory index as a 0-based index into an
920    array/vector.  */
921 enum class dir_index : unsigned int {};
922
923 /* Likewise, a 1-based file name index.  */
924 enum class file_name_index : unsigned int {};
925
926 struct file_entry
927 {
928   file_entry () = default;
929
930   file_entry (const char *name_, dir_index d_index_,
931               unsigned int mod_time_, unsigned int length_)
932     : name (name_),
933       d_index (d_index_),
934       mod_time (mod_time_),
935       length (length_)
936   {}
937
938   /* Return the include directory at D_INDEX stored in LH.  Returns
939      NULL if D_INDEX is out of bounds.  */
940   const char *include_dir (const line_header *lh) const;
941
942   /* The file name.  Note this is an observing pointer.  The memory is
943      owned by debug_line_buffer.  */
944   const char *name {};
945
946   /* The directory index (1-based).  */
947   dir_index d_index {};
948
949   unsigned int mod_time {};
950
951   unsigned int length {};
952
953   /* True if referenced by the Line Number Program.  */
954   bool included_p {};
955
956   /* The associated symbol table, if any.  */
957   struct symtab *symtab {};
958 };
959
960 /* The line number information for a compilation unit (found in the
961    .debug_line section) begins with a "statement program header",
962    which contains the following information.  */
963 struct line_header
964 {
965   line_header ()
966     : offset_in_dwz {}
967   {}
968
969   /* Add an entry to the include directory table.  */
970   void add_include_dir (const char *include_dir);
971
972   /* Add an entry to the file name table.  */
973   void add_file_name (const char *name, dir_index d_index,
974                       unsigned int mod_time, unsigned int length);
975
976   /* Return the include dir at INDEX (1-based).  Returns NULL if INDEX
977      is out of bounds.  */
978   const char *include_dir_at (dir_index index) const
979   {
980     /* Convert directory index number (1-based) to vector index
981        (0-based).  */
982     size_t vec_index = to_underlying (index) - 1;
983
984     if (vec_index >= include_dirs.size ())
985       return NULL;
986     return include_dirs[vec_index];
987   }
988
989   /* Return the file name at INDEX (1-based).  Returns NULL if INDEX
990      is out of bounds.  */
991   file_entry *file_name_at (file_name_index index)
992   {
993     /* Convert file name index number (1-based) to vector index
994        (0-based).  */
995     size_t vec_index = to_underlying (index) - 1;
996
997     if (vec_index >= file_names.size ())
998       return NULL;
999     return &file_names[vec_index];
1000   }
1001
1002   /* Const version of the above.  */
1003   const file_entry *file_name_at (unsigned int index) const
1004   {
1005     if (index >= file_names.size ())
1006       return NULL;
1007     return &file_names[index];
1008   }
1009
1010   /* Offset of line number information in .debug_line section.  */
1011   sect_offset sect_off {};
1012
1013   /* OFFSET is for struct dwz_file associated with dwarf2_per_objfile.  */
1014   unsigned offset_in_dwz : 1; /* Can't initialize bitfields in-class.  */
1015
1016   unsigned int total_length {};
1017   unsigned short version {};
1018   unsigned int header_length {};
1019   unsigned char minimum_instruction_length {};
1020   unsigned char maximum_ops_per_instruction {};
1021   unsigned char default_is_stmt {};
1022   int line_base {};
1023   unsigned char line_range {};
1024   unsigned char opcode_base {};
1025
1026   /* standard_opcode_lengths[i] is the number of operands for the
1027      standard opcode whose value is i.  This means that
1028      standard_opcode_lengths[0] is unused, and the last meaningful
1029      element is standard_opcode_lengths[opcode_base - 1].  */
1030   std::unique_ptr<unsigned char[]> standard_opcode_lengths;
1031
1032   /* The include_directories table.  Note these are observing
1033      pointers.  The memory is owned by debug_line_buffer.  */
1034   std::vector<const char *> include_dirs;
1035
1036   /* The file_names table.  */
1037   std::vector<file_entry> file_names;
1038
1039   /* The start and end of the statement program following this
1040      header.  These point into dwarf2_per_objfile->line_buffer.  */
1041   const gdb_byte *statement_program_start {}, *statement_program_end {};
1042 };
1043
1044 typedef std::unique_ptr<line_header> line_header_up;
1045
1046 const char *
1047 file_entry::include_dir (const line_header *lh) const
1048 {
1049   return lh->include_dir_at (d_index);
1050 }
1051
1052 /* When we construct a partial symbol table entry we only
1053    need this much information.  */
1054 struct partial_die_info : public allocate_on_obstack
1055   {
1056     partial_die_info (sect_offset sect_off, struct abbrev_info *abbrev);
1057
1058     /* Disable assign but still keep copy ctor, which is needed
1059        load_partial_dies.   */
1060     partial_die_info& operator=(const partial_die_info& rhs) = delete;
1061
1062     /* Adjust the partial die before generating a symbol for it.  This
1063        function may set the is_external flag or change the DIE's
1064        name.  */
1065     void fixup (struct dwarf2_cu *cu);
1066
1067     /* Read a minimal amount of information into the minimal die
1068        structure.  */
1069     const gdb_byte *read (const struct die_reader_specs *reader,
1070                           const struct abbrev_info &abbrev,
1071                           const gdb_byte *info_ptr);
1072
1073     /* Offset of this DIE.  */
1074     const sect_offset sect_off;
1075
1076     /* DWARF-2 tag for this DIE.  */
1077     const ENUM_BITFIELD(dwarf_tag) tag : 16;
1078
1079     /* Assorted flags describing the data found in this DIE.  */
1080     const unsigned int has_children : 1;
1081
1082     unsigned int is_external : 1;
1083     unsigned int is_declaration : 1;
1084     unsigned int has_type : 1;
1085     unsigned int has_specification : 1;
1086     unsigned int has_pc_info : 1;
1087     unsigned int may_be_inlined : 1;
1088
1089     /* This DIE has been marked DW_AT_main_subprogram.  */
1090     unsigned int main_subprogram : 1;
1091
1092     /* Flag set if the SCOPE field of this structure has been
1093        computed.  */
1094     unsigned int scope_set : 1;
1095
1096     /* Flag set if the DIE has a byte_size attribute.  */
1097     unsigned int has_byte_size : 1;
1098
1099     /* Flag set if the DIE has a DW_AT_const_value attribute.  */
1100     unsigned int has_const_value : 1;
1101
1102     /* Flag set if any of the DIE's children are template arguments.  */
1103     unsigned int has_template_arguments : 1;
1104
1105     /* Flag set if fixup has been called on this die.  */
1106     unsigned int fixup_called : 1;
1107
1108     /* Flag set if DW_TAG_imported_unit uses DW_FORM_GNU_ref_alt.  */
1109     unsigned int is_dwz : 1;
1110
1111     /* Flag set if spec_offset uses DW_FORM_GNU_ref_alt.  */
1112     unsigned int spec_is_dwz : 1;
1113
1114     /* The name of this DIE.  Normally the value of DW_AT_name, but
1115        sometimes a default name for unnamed DIEs.  */
1116     const char *name = nullptr;
1117
1118     /* The linkage name, if present.  */
1119     const char *linkage_name = nullptr;
1120
1121     /* The scope to prepend to our children.  This is generally
1122        allocated on the comp_unit_obstack, so will disappear
1123        when this compilation unit leaves the cache.  */
1124     const char *scope = nullptr;
1125
1126     /* Some data associated with the partial DIE.  The tag determines
1127        which field is live.  */
1128     union
1129     {
1130       /* The location description associated with this DIE, if any.  */
1131       struct dwarf_block *locdesc;
1132       /* The offset of an import, for DW_TAG_imported_unit.  */
1133       sect_offset sect_off;
1134     } d {};
1135
1136     /* If HAS_PC_INFO, the PC range associated with this DIE.  */
1137     CORE_ADDR lowpc = 0;
1138     CORE_ADDR highpc = 0;
1139
1140     /* Pointer into the info_buffer (or types_buffer) pointing at the target of
1141        DW_AT_sibling, if any.  */
1142     /* NOTE: This member isn't strictly necessary, partial_die_info::read
1143        could return DW_AT_sibling values to its caller load_partial_dies.  */
1144     const gdb_byte *sibling = nullptr;
1145
1146     /* If HAS_SPECIFICATION, the offset of the DIE referred to by
1147        DW_AT_specification (or DW_AT_abstract_origin or
1148        DW_AT_extension).  */
1149     sect_offset spec_offset {};
1150
1151     /* Pointers to this DIE's parent, first child, and next sibling,
1152        if any.  */
1153     struct partial_die_info *die_parent = nullptr;
1154     struct partial_die_info *die_child = nullptr;
1155     struct partial_die_info *die_sibling = nullptr;
1156
1157     friend struct partial_die_info *
1158     dwarf2_cu::find_partial_die (sect_offset sect_off);
1159
1160   private:
1161     /* Only need to do look up in dwarf2_cu::find_partial_die.  */
1162     partial_die_info (sect_offset sect_off)
1163       : partial_die_info (sect_off, DW_TAG_padding, 0)
1164     {
1165     }
1166
1167     partial_die_info (sect_offset sect_off_, enum dwarf_tag tag_,
1168                       int has_children_)
1169       : sect_off (sect_off_), tag (tag_), has_children (has_children_)
1170     {
1171       is_external = 0;
1172       is_declaration = 0;
1173       has_type = 0;
1174       has_specification = 0;
1175       has_pc_info = 0;
1176       may_be_inlined = 0;
1177       main_subprogram = 0;
1178       scope_set = 0;
1179       has_byte_size = 0;
1180       has_const_value = 0;
1181       has_template_arguments = 0;
1182       fixup_called = 0;
1183       is_dwz = 0;
1184       spec_is_dwz = 0;
1185     }
1186   };
1187
1188 /* This data structure holds the information of an abbrev.  */
1189 struct abbrev_info
1190   {
1191     unsigned int number;        /* number identifying abbrev */
1192     enum dwarf_tag tag;         /* dwarf tag */
1193     unsigned short has_children;                /* boolean */
1194     unsigned short num_attrs;   /* number of attributes */
1195     struct attr_abbrev *attrs;  /* an array of attribute descriptions */
1196     struct abbrev_info *next;   /* next in chain */
1197   };
1198
1199 struct attr_abbrev
1200   {
1201     ENUM_BITFIELD(dwarf_attribute) name : 16;
1202     ENUM_BITFIELD(dwarf_form) form : 16;
1203
1204     /* It is valid only if FORM is DW_FORM_implicit_const.  */
1205     LONGEST implicit_const;
1206   };
1207
1208 /* Size of abbrev_table.abbrev_hash_table.  */
1209 #define ABBREV_HASH_SIZE 121
1210
1211 /* Top level data structure to contain an abbreviation table.  */
1212
1213 struct abbrev_table
1214 {
1215   explicit abbrev_table (sect_offset off)
1216     : sect_off (off)
1217   {
1218     m_abbrevs =
1219       XOBNEWVEC (&abbrev_obstack, struct abbrev_info *, ABBREV_HASH_SIZE);
1220     memset (m_abbrevs, 0, ABBREV_HASH_SIZE * sizeof (struct abbrev_info *));
1221   }
1222
1223   DISABLE_COPY_AND_ASSIGN (abbrev_table);
1224
1225   /* Allocate space for a struct abbrev_info object in
1226      ABBREV_TABLE.  */
1227   struct abbrev_info *alloc_abbrev ();
1228
1229   /* Add an abbreviation to the table.  */
1230   void add_abbrev (unsigned int abbrev_number, struct abbrev_info *abbrev);
1231
1232   /* Look up an abbrev in the table.
1233      Returns NULL if the abbrev is not found.  */
1234
1235   struct abbrev_info *lookup_abbrev (unsigned int abbrev_number);
1236
1237
1238   /* Where the abbrev table came from.
1239      This is used as a sanity check when the table is used.  */
1240   const sect_offset sect_off;
1241
1242   /* Storage for the abbrev table.  */
1243   auto_obstack abbrev_obstack;
1244
1245 private:
1246
1247   /* Hash table of abbrevs.
1248      This is an array of size ABBREV_HASH_SIZE allocated in abbrev_obstack.
1249      It could be statically allocated, but the previous code didn't so we
1250      don't either.  */
1251   struct abbrev_info **m_abbrevs;
1252 };
1253
1254 typedef std::unique_ptr<struct abbrev_table> abbrev_table_up;
1255
1256 /* Attributes have a name and a value.  */
1257 struct attribute
1258   {
1259     ENUM_BITFIELD(dwarf_attribute) name : 16;
1260     ENUM_BITFIELD(dwarf_form) form : 15;
1261
1262     /* Has DW_STRING already been updated by dwarf2_canonicalize_name?  This
1263        field should be in u.str (existing only for DW_STRING) but it is kept
1264        here for better struct attribute alignment.  */
1265     unsigned int string_is_canonical : 1;
1266
1267     union
1268       {
1269         const char *str;
1270         struct dwarf_block *blk;
1271         ULONGEST unsnd;
1272         LONGEST snd;
1273         CORE_ADDR addr;
1274         ULONGEST signature;
1275       }
1276     u;
1277   };
1278
1279 /* This data structure holds a complete die structure.  */
1280 struct die_info
1281   {
1282     /* DWARF-2 tag for this DIE.  */
1283     ENUM_BITFIELD(dwarf_tag) tag : 16;
1284
1285     /* Number of attributes */
1286     unsigned char num_attrs;
1287
1288     /* True if we're presently building the full type name for the
1289        type derived from this DIE.  */
1290     unsigned char building_fullname : 1;
1291
1292     /* True if this die is in process.  PR 16581.  */
1293     unsigned char in_process : 1;
1294
1295     /* Abbrev number */
1296     unsigned int abbrev;
1297
1298     /* Offset in .debug_info or .debug_types section.  */
1299     sect_offset sect_off;
1300
1301     /* The dies in a compilation unit form an n-ary tree.  PARENT
1302        points to this die's parent; CHILD points to the first child of
1303        this node; and all the children of a given node are chained
1304        together via their SIBLING fields.  */
1305     struct die_info *child;     /* Its first child, if any.  */
1306     struct die_info *sibling;   /* Its next sibling, if any.  */
1307     struct die_info *parent;    /* Its parent, if any.  */
1308
1309     /* An array of attributes, with NUM_ATTRS elements.  There may be
1310        zero, but it's not common and zero-sized arrays are not
1311        sufficiently portable C.  */
1312     struct attribute attrs[1];
1313   };
1314
1315 /* Get at parts of an attribute structure.  */
1316
1317 #define DW_STRING(attr)    ((attr)->u.str)
1318 #define DW_STRING_IS_CANONICAL(attr) ((attr)->string_is_canonical)
1319 #define DW_UNSND(attr)     ((attr)->u.unsnd)
1320 #define DW_BLOCK(attr)     ((attr)->u.blk)
1321 #define DW_SND(attr)       ((attr)->u.snd)
1322 #define DW_ADDR(attr)      ((attr)->u.addr)
1323 #define DW_SIGNATURE(attr) ((attr)->u.signature)
1324
1325 /* Blocks are a bunch of untyped bytes.  */
1326 struct dwarf_block
1327   {
1328     size_t size;
1329
1330     /* Valid only if SIZE is not zero.  */
1331     const gdb_byte *data;
1332   };
1333
1334 #ifndef ATTR_ALLOC_CHUNK
1335 #define ATTR_ALLOC_CHUNK 4
1336 #endif
1337
1338 /* Allocate fields for structs, unions and enums in this size.  */
1339 #ifndef DW_FIELD_ALLOC_CHUNK
1340 #define DW_FIELD_ALLOC_CHUNK 4
1341 #endif
1342
1343 /* FIXME: We might want to set this from BFD via bfd_arch_bits_per_byte,
1344    but this would require a corresponding change in unpack_field_as_long
1345    and friends.  */
1346 static int bits_per_byte = 8;
1347
1348 /* When reading a variant or variant part, we track a bit more
1349    information about the field, and store it in an object of this
1350    type.  */
1351
1352 struct variant_field
1353 {
1354   /* If we see a DW_TAG_variant, then this will be the discriminant
1355      value.  */
1356   ULONGEST discriminant_value;
1357   /* If we see a DW_TAG_variant, then this will be set if this is the
1358      default branch.  */
1359   bool default_branch;
1360   /* While reading a DW_TAG_variant_part, this will be set if this
1361      field is the discriminant.  */
1362   bool is_discriminant;
1363 };
1364
1365 struct nextfield
1366 {
1367   int accessibility = 0;
1368   int virtuality = 0;
1369   /* Extra information to describe a variant or variant part.  */
1370   struct variant_field variant {};
1371   struct field field {};
1372 };
1373
1374 struct fnfieldlist
1375 {
1376   const char *name = nullptr;
1377   std::vector<struct fn_field> fnfields;
1378 };
1379
1380 /* The routines that read and process dies for a C struct or C++ class
1381    pass lists of data member fields and lists of member function fields
1382    in an instance of a field_info structure, as defined below.  */
1383 struct field_info
1384   {
1385     /* List of data member and baseclasses fields.  */
1386     std::vector<struct nextfield> fields;
1387     std::vector<struct nextfield> baseclasses;
1388
1389     /* Number of fields (including baseclasses).  */
1390     int nfields = 0;
1391
1392     /* Set if the accesibility of one of the fields is not public.  */
1393     int non_public_fields = 0;
1394
1395     /* Member function fieldlist array, contains name of possibly overloaded
1396        member function, number of overloaded member functions and a pointer
1397        to the head of the member function field chain.  */
1398     std::vector<struct fnfieldlist> fnfieldlists;
1399
1400     /* typedefs defined inside this class.  TYPEDEF_FIELD_LIST contains head of
1401        a NULL terminated list of TYPEDEF_FIELD_LIST_COUNT elements.  */
1402     std::vector<struct decl_field> typedef_field_list;
1403
1404     /* Nested types defined by this class and the number of elements in this
1405        list.  */
1406     std::vector<struct decl_field> nested_types_list;
1407   };
1408
1409 /* One item on the queue of compilation units to read in full symbols
1410    for.  */
1411 struct dwarf2_queue_item
1412 {
1413   struct dwarf2_per_cu_data *per_cu;
1414   enum language pretend_language;
1415   struct dwarf2_queue_item *next;
1416 };
1417
1418 /* The current queue.  */
1419 static struct dwarf2_queue_item *dwarf2_queue, *dwarf2_queue_tail;
1420
1421 /* Loaded secondary compilation units are kept in memory until they
1422    have not been referenced for the processing of this many
1423    compilation units.  Set this to zero to disable caching.  Cache
1424    sizes of up to at least twenty will improve startup time for
1425    typical inter-CU-reference binaries, at an obvious memory cost.  */
1426 static int dwarf_max_cache_age = 5;
1427 static void
1428 show_dwarf_max_cache_age (struct ui_file *file, int from_tty,
1429                           struct cmd_list_element *c, const char *value)
1430 {
1431   fprintf_filtered (file, _("The upper bound on the age of cached "
1432                             "DWARF compilation units is %s.\n"),
1433                     value);
1434 }
1435 \f
1436 /* local function prototypes */
1437
1438 static const char *get_section_name (const struct dwarf2_section_info *);
1439
1440 static const char *get_section_file_name (const struct dwarf2_section_info *);
1441
1442 static void dwarf2_find_base_address (struct die_info *die,
1443                                       struct dwarf2_cu *cu);
1444
1445 static struct partial_symtab *create_partial_symtab
1446   (struct dwarf2_per_cu_data *per_cu, const char *name);
1447
1448 static void build_type_psymtabs_reader (const struct die_reader_specs *reader,
1449                                         const gdb_byte *info_ptr,
1450                                         struct die_info *type_unit_die,
1451                                         int has_children, void *data);
1452
1453 static void dwarf2_build_psymtabs_hard
1454   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1455
1456 static void scan_partial_symbols (struct partial_die_info *,
1457                                   CORE_ADDR *, CORE_ADDR *,
1458                                   int, struct dwarf2_cu *);
1459
1460 static void add_partial_symbol (struct partial_die_info *,
1461                                 struct dwarf2_cu *);
1462
1463 static void add_partial_namespace (struct partial_die_info *pdi,
1464                                    CORE_ADDR *lowpc, CORE_ADDR *highpc,
1465                                    int set_addrmap, struct dwarf2_cu *cu);
1466
1467 static void add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
1468                                 CORE_ADDR *highpc, int set_addrmap,
1469                                 struct dwarf2_cu *cu);
1470
1471 static void add_partial_enumeration (struct partial_die_info *enum_pdi,
1472                                      struct dwarf2_cu *cu);
1473
1474 static void add_partial_subprogram (struct partial_die_info *pdi,
1475                                     CORE_ADDR *lowpc, CORE_ADDR *highpc,
1476                                     int need_pc, struct dwarf2_cu *cu);
1477
1478 static void dwarf2_read_symtab (struct partial_symtab *,
1479                                 struct objfile *);
1480
1481 static void psymtab_to_symtab_1 (struct partial_symtab *);
1482
1483 static abbrev_table_up abbrev_table_read_table
1484   (struct dwarf2_per_objfile *dwarf2_per_objfile, struct dwarf2_section_info *,
1485    sect_offset);
1486
1487 static unsigned int peek_abbrev_code (bfd *, const gdb_byte *);
1488
1489 static struct partial_die_info *load_partial_dies
1490   (const struct die_reader_specs *, const gdb_byte *, int);
1491
1492 static struct partial_die_info *find_partial_die (sect_offset, int,
1493                                                   struct dwarf2_cu *);
1494
1495 static const gdb_byte *read_attribute (const struct die_reader_specs *,
1496                                        struct attribute *, struct attr_abbrev *,
1497                                        const gdb_byte *);
1498
1499 static unsigned int read_1_byte (bfd *, const gdb_byte *);
1500
1501 static int read_1_signed_byte (bfd *, const gdb_byte *);
1502
1503 static unsigned int read_2_bytes (bfd *, const gdb_byte *);
1504
1505 static unsigned int read_4_bytes (bfd *, const gdb_byte *);
1506
1507 static ULONGEST read_8_bytes (bfd *, const gdb_byte *);
1508
1509 static CORE_ADDR read_address (bfd *, const gdb_byte *ptr, struct dwarf2_cu *,
1510                                unsigned int *);
1511
1512 static LONGEST read_initial_length (bfd *, const gdb_byte *, unsigned int *);
1513
1514 static LONGEST read_checked_initial_length_and_offset
1515   (bfd *, const gdb_byte *, const struct comp_unit_head *,
1516    unsigned int *, unsigned int *);
1517
1518 static LONGEST read_offset (bfd *, const gdb_byte *,
1519                             const struct comp_unit_head *,
1520                             unsigned int *);
1521
1522 static LONGEST read_offset_1 (bfd *, const gdb_byte *, unsigned int);
1523
1524 static sect_offset read_abbrev_offset
1525   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1526    struct dwarf2_section_info *, sect_offset);
1527
1528 static const gdb_byte *read_n_bytes (bfd *, const gdb_byte *, unsigned int);
1529
1530 static const char *read_direct_string (bfd *, const gdb_byte *, unsigned int *);
1531
1532 static const char *read_indirect_string
1533   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1534    const struct comp_unit_head *, unsigned int *);
1535
1536 static const char *read_indirect_line_string
1537   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *, const gdb_byte *,
1538    const struct comp_unit_head *, unsigned int *);
1539
1540 static const char *read_indirect_string_at_offset
1541   (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
1542    LONGEST str_offset);
1543
1544 static const char *read_indirect_string_from_dwz
1545   (struct objfile *objfile, struct dwz_file *, LONGEST);
1546
1547 static LONGEST read_signed_leb128 (bfd *, const gdb_byte *, unsigned int *);
1548
1549 static CORE_ADDR read_addr_index_from_leb128 (struct dwarf2_cu *,
1550                                               const gdb_byte *,
1551                                               unsigned int *);
1552
1553 static const char *read_str_index (const struct die_reader_specs *reader,
1554                                    ULONGEST str_index);
1555
1556 static void set_cu_language (unsigned int, struct dwarf2_cu *);
1557
1558 static struct attribute *dwarf2_attr (struct die_info *, unsigned int,
1559                                       struct dwarf2_cu *);
1560
1561 static struct attribute *dwarf2_attr_no_follow (struct die_info *,
1562                                                 unsigned int);
1563
1564 static const char *dwarf2_string_attr (struct die_info *die, unsigned int name,
1565                                        struct dwarf2_cu *cu);
1566
1567 static int dwarf2_flag_true_p (struct die_info *die, unsigned name,
1568                                struct dwarf2_cu *cu);
1569
1570 static int die_is_declaration (struct die_info *, struct dwarf2_cu *cu);
1571
1572 static struct die_info *die_specification (struct die_info *die,
1573                                            struct dwarf2_cu **);
1574
1575 static line_header_up dwarf_decode_line_header (sect_offset sect_off,
1576                                                 struct dwarf2_cu *cu);
1577
1578 static void dwarf_decode_lines (struct line_header *, const char *,
1579                                 struct dwarf2_cu *, struct partial_symtab *,
1580                                 CORE_ADDR, int decode_mapping);
1581
1582 static void dwarf2_start_subfile (struct dwarf2_cu *, const char *,
1583                                   const char *);
1584
1585 static struct compunit_symtab *dwarf2_start_symtab (struct dwarf2_cu *,
1586                                                     const char *, const char *,
1587                                                     CORE_ADDR);
1588
1589 static struct symbol *new_symbol (struct die_info *, struct type *,
1590                                   struct dwarf2_cu *, struct symbol * = NULL);
1591
1592 static void dwarf2_const_value (const struct attribute *, struct symbol *,
1593                                 struct dwarf2_cu *);
1594
1595 static void dwarf2_const_value_attr (const struct attribute *attr,
1596                                      struct type *type,
1597                                      const char *name,
1598                                      struct obstack *obstack,
1599                                      struct dwarf2_cu *cu, LONGEST *value,
1600                                      const gdb_byte **bytes,
1601                                      struct dwarf2_locexpr_baton **baton);
1602
1603 static struct type *die_type (struct die_info *, struct dwarf2_cu *);
1604
1605 static int need_gnat_info (struct dwarf2_cu *);
1606
1607 static struct type *die_descriptive_type (struct die_info *,
1608                                           struct dwarf2_cu *);
1609
1610 static void set_descriptive_type (struct type *, struct die_info *,
1611                                   struct dwarf2_cu *);
1612
1613 static struct type *die_containing_type (struct die_info *,
1614                                          struct dwarf2_cu *);
1615
1616 static struct type *lookup_die_type (struct die_info *, const struct attribute *,
1617                                      struct dwarf2_cu *);
1618
1619 static struct type *read_type_die (struct die_info *, struct dwarf2_cu *);
1620
1621 static struct type *read_type_die_1 (struct die_info *, struct dwarf2_cu *);
1622
1623 static const char *determine_prefix (struct die_info *die, struct dwarf2_cu *);
1624
1625 static char *typename_concat (struct obstack *obs, const char *prefix,
1626                               const char *suffix, int physname,
1627                               struct dwarf2_cu *cu);
1628
1629 static void read_file_scope (struct die_info *, struct dwarf2_cu *);
1630
1631 static void read_type_unit_scope (struct die_info *, struct dwarf2_cu *);
1632
1633 static void read_func_scope (struct die_info *, struct dwarf2_cu *);
1634
1635 static void read_lexical_block_scope (struct die_info *, struct dwarf2_cu *);
1636
1637 static void read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu);
1638
1639 static void read_variable (struct die_info *die, struct dwarf2_cu *cu);
1640
1641 static int dwarf2_ranges_read (unsigned, CORE_ADDR *, CORE_ADDR *,
1642                                struct dwarf2_cu *, struct partial_symtab *);
1643
1644 /* How dwarf2_get_pc_bounds constructed its *LOWPC and *HIGHPC return
1645    values.  Keep the items ordered with increasing constraints compliance.  */
1646 enum pc_bounds_kind
1647 {
1648   /* No attribute DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges was found.  */
1649   PC_BOUNDS_NOT_PRESENT,
1650
1651   /* Some of the attributes DW_AT_low_pc, DW_AT_high_pc or DW_AT_ranges
1652      were present but they do not form a valid range of PC addresses.  */
1653   PC_BOUNDS_INVALID,
1654
1655   /* Discontiguous range was found - that is DW_AT_ranges was found.  */
1656   PC_BOUNDS_RANGES,
1657
1658   /* Contiguous range was found - DW_AT_low_pc and DW_AT_high_pc were found.  */
1659   PC_BOUNDS_HIGH_LOW,
1660 };
1661
1662 static enum pc_bounds_kind dwarf2_get_pc_bounds (struct die_info *,
1663                                                  CORE_ADDR *, CORE_ADDR *,
1664                                                  struct dwarf2_cu *,
1665                                                  struct partial_symtab *);
1666
1667 static void get_scope_pc_bounds (struct die_info *,
1668                                  CORE_ADDR *, CORE_ADDR *,
1669                                  struct dwarf2_cu *);
1670
1671 static void dwarf2_record_block_ranges (struct die_info *, struct block *,
1672                                         CORE_ADDR, struct dwarf2_cu *);
1673
1674 static void dwarf2_add_field (struct field_info *, struct die_info *,
1675                               struct dwarf2_cu *);
1676
1677 static void dwarf2_attach_fields_to_type (struct field_info *,
1678                                           struct type *, struct dwarf2_cu *);
1679
1680 static void dwarf2_add_member_fn (struct field_info *,
1681                                   struct die_info *, struct type *,
1682                                   struct dwarf2_cu *);
1683
1684 static void dwarf2_attach_fn_fields_to_type (struct field_info *,
1685                                              struct type *,
1686                                              struct dwarf2_cu *);
1687
1688 static void process_structure_scope (struct die_info *, struct dwarf2_cu *);
1689
1690 static void read_common_block (struct die_info *, struct dwarf2_cu *);
1691
1692 static void read_namespace (struct die_info *die, struct dwarf2_cu *);
1693
1694 static void read_module (struct die_info *die, struct dwarf2_cu *cu);
1695
1696 static struct using_direct **using_directives (struct dwarf2_cu *cu);
1697
1698 static void read_import_statement (struct die_info *die, struct dwarf2_cu *);
1699
1700 static int read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu);
1701
1702 static struct type *read_module_type (struct die_info *die,
1703                                       struct dwarf2_cu *cu);
1704
1705 static const char *namespace_name (struct die_info *die,
1706                                    int *is_anonymous, struct dwarf2_cu *);
1707
1708 static void process_enumeration_scope (struct die_info *, struct dwarf2_cu *);
1709
1710 static CORE_ADDR decode_locdesc (struct dwarf_block *, struct dwarf2_cu *);
1711
1712 static enum dwarf_array_dim_ordering read_array_order (struct die_info *,
1713                                                        struct dwarf2_cu *);
1714
1715 static struct die_info *read_die_and_siblings_1
1716   (const struct die_reader_specs *, const gdb_byte *, const gdb_byte **,
1717    struct die_info *);
1718
1719 static struct die_info *read_die_and_siblings (const struct die_reader_specs *,
1720                                                const gdb_byte *info_ptr,
1721                                                const gdb_byte **new_info_ptr,
1722                                                struct die_info *parent);
1723
1724 static const gdb_byte *read_full_die_1 (const struct die_reader_specs *,
1725                                         struct die_info **, const gdb_byte *,
1726                                         int *, int);
1727
1728 static const gdb_byte *read_full_die (const struct die_reader_specs *,
1729                                       struct die_info **, const gdb_byte *,
1730                                       int *);
1731
1732 static void process_die (struct die_info *, struct dwarf2_cu *);
1733
1734 static const char *dwarf2_canonicalize_name (const char *, struct dwarf2_cu *,
1735                                              struct obstack *);
1736
1737 static const char *dwarf2_name (struct die_info *die, struct dwarf2_cu *);
1738
1739 static const char *dwarf2_full_name (const char *name,
1740                                      struct die_info *die,
1741                                      struct dwarf2_cu *cu);
1742
1743 static const char *dwarf2_physname (const char *name, struct die_info *die,
1744                                     struct dwarf2_cu *cu);
1745
1746 static struct die_info *dwarf2_extension (struct die_info *die,
1747                                           struct dwarf2_cu **);
1748
1749 static const char *dwarf_tag_name (unsigned int);
1750
1751 static const char *dwarf_attr_name (unsigned int);
1752
1753 static const char *dwarf_form_name (unsigned int);
1754
1755 static const char *dwarf_bool_name (unsigned int);
1756
1757 static const char *dwarf_type_encoding_name (unsigned int);
1758
1759 static struct die_info *sibling_die (struct die_info *);
1760
1761 static void dump_die_shallow (struct ui_file *, int indent, struct die_info *);
1762
1763 static void dump_die_for_error (struct die_info *);
1764
1765 static void dump_die_1 (struct ui_file *, int level, int max_level,
1766                         struct die_info *);
1767
1768 /*static*/ void dump_die (struct die_info *, int max_level);
1769
1770 static void store_in_ref_table (struct die_info *,
1771                                 struct dwarf2_cu *);
1772
1773 static sect_offset dwarf2_get_ref_die_offset (const struct attribute *);
1774
1775 static LONGEST dwarf2_get_attr_constant_value (const struct attribute *, int);
1776
1777 static struct die_info *follow_die_ref_or_sig (struct die_info *,
1778                                                const struct attribute *,
1779                                                struct dwarf2_cu **);
1780
1781 static struct die_info *follow_die_ref (struct die_info *,
1782                                         const struct attribute *,
1783                                         struct dwarf2_cu **);
1784
1785 static struct die_info *follow_die_sig (struct die_info *,
1786                                         const struct attribute *,
1787                                         struct dwarf2_cu **);
1788
1789 static struct type *get_signatured_type (struct die_info *, ULONGEST,
1790                                          struct dwarf2_cu *);
1791
1792 static struct type *get_DW_AT_signature_type (struct die_info *,
1793                                               const struct attribute *,
1794                                               struct dwarf2_cu *);
1795
1796 static void load_full_type_unit (struct dwarf2_per_cu_data *per_cu);
1797
1798 static void read_signatured_type (struct signatured_type *);
1799
1800 static int attr_to_dynamic_prop (const struct attribute *attr,
1801                                  struct die_info *die, struct dwarf2_cu *cu,
1802                                  struct dynamic_prop *prop);
1803
1804 /* memory allocation interface */
1805
1806 static struct dwarf_block *dwarf_alloc_block (struct dwarf2_cu *);
1807
1808 static struct die_info *dwarf_alloc_die (struct dwarf2_cu *, int);
1809
1810 static void dwarf_decode_macros (struct dwarf2_cu *, unsigned int, int);
1811
1812 static int attr_form_is_block (const struct attribute *);
1813
1814 static int attr_form_is_section_offset (const struct attribute *);
1815
1816 static int attr_form_is_constant (const struct attribute *);
1817
1818 static int attr_form_is_ref (const struct attribute *);
1819
1820 static void fill_in_loclist_baton (struct dwarf2_cu *cu,
1821                                    struct dwarf2_loclist_baton *baton,
1822                                    const struct attribute *attr);
1823
1824 static void dwarf2_symbol_mark_computed (const struct attribute *attr,
1825                                          struct symbol *sym,
1826                                          struct dwarf2_cu *cu,
1827                                          int is_block);
1828
1829 static const gdb_byte *skip_one_die (const struct die_reader_specs *reader,
1830                                      const gdb_byte *info_ptr,
1831                                      struct abbrev_info *abbrev);
1832
1833 static hashval_t partial_die_hash (const void *item);
1834
1835 static int partial_die_eq (const void *item_lhs, const void *item_rhs);
1836
1837 static struct dwarf2_per_cu_data *dwarf2_find_containing_comp_unit
1838   (sect_offset sect_off, unsigned int offset_in_dwz,
1839    struct dwarf2_per_objfile *dwarf2_per_objfile);
1840
1841 static void prepare_one_comp_unit (struct dwarf2_cu *cu,
1842                                    struct die_info *comp_unit_die,
1843                                    enum language pretend_language);
1844
1845 static void age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1846
1847 static void free_one_cached_comp_unit (struct dwarf2_per_cu_data *);
1848
1849 static struct type *set_die_type (struct die_info *, struct type *,
1850                                   struct dwarf2_cu *);
1851
1852 static void create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1853
1854 static int create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile);
1855
1856 static void load_full_comp_unit (struct dwarf2_per_cu_data *, bool,
1857                                  enum language);
1858
1859 static void process_full_comp_unit (struct dwarf2_per_cu_data *,
1860                                     enum language);
1861
1862 static void process_full_type_unit (struct dwarf2_per_cu_data *,
1863                                     enum language);
1864
1865 static void dwarf2_add_dependence (struct dwarf2_cu *,
1866                                    struct dwarf2_per_cu_data *);
1867
1868 static void dwarf2_mark (struct dwarf2_cu *);
1869
1870 static void dwarf2_clear_marks (struct dwarf2_per_cu_data *);
1871
1872 static struct type *get_die_type_at_offset (sect_offset,
1873                                             struct dwarf2_per_cu_data *);
1874
1875 static struct type *get_die_type (struct die_info *die, struct dwarf2_cu *cu);
1876
1877 static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
1878                              enum language pretend_language);
1879
1880 static void process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile);
1881
1882 /* Class, the destructor of which frees all allocated queue entries.  This
1883    will only have work to do if an error was thrown while processing the
1884    dwarf.  If no error was thrown then the queue entries should have all
1885    been processed, and freed, as we went along.  */
1886
1887 class dwarf2_queue_guard
1888 {
1889 public:
1890   dwarf2_queue_guard () = default;
1891
1892   /* Free any entries remaining on the queue.  There should only be
1893      entries left if we hit an error while processing the dwarf.  */
1894   ~dwarf2_queue_guard ()
1895   {
1896     struct dwarf2_queue_item *item, *last;
1897
1898     item = dwarf2_queue;
1899     while (item)
1900       {
1901         /* Anything still marked queued is likely to be in an
1902            inconsistent state, so discard it.  */
1903         if (item->per_cu->queued)
1904           {
1905             if (item->per_cu->cu != NULL)
1906               free_one_cached_comp_unit (item->per_cu);
1907             item->per_cu->queued = 0;
1908           }
1909
1910         last = item;
1911         item = item->next;
1912         xfree (last);
1913       }
1914
1915     dwarf2_queue = dwarf2_queue_tail = NULL;
1916   }
1917 };
1918
1919 /* The return type of find_file_and_directory.  Note, the enclosed
1920    string pointers are only valid while this object is valid.  */
1921
1922 struct file_and_directory
1923 {
1924   /* The filename.  This is never NULL.  */
1925   const char *name;
1926
1927   /* The compilation directory.  NULL if not known.  If we needed to
1928      compute a new string, this points to COMP_DIR_STORAGE, otherwise,
1929      points directly to the DW_AT_comp_dir string attribute owned by
1930      the obstack that owns the DIE.  */
1931   const char *comp_dir;
1932
1933   /* If we needed to build a new string for comp_dir, this is what
1934      owns the storage.  */
1935   std::string comp_dir_storage;
1936 };
1937
1938 static file_and_directory find_file_and_directory (struct die_info *die,
1939                                                    struct dwarf2_cu *cu);
1940
1941 static char *file_full_name (int file, struct line_header *lh,
1942                              const char *comp_dir);
1943
1944 /* Expected enum dwarf_unit_type for read_comp_unit_head.  */
1945 enum class rcuh_kind { COMPILE, TYPE };
1946
1947 static const gdb_byte *read_and_check_comp_unit_head
1948   (struct dwarf2_per_objfile* dwarf2_per_objfile,
1949    struct comp_unit_head *header,
1950    struct dwarf2_section_info *section,
1951    struct dwarf2_section_info *abbrev_section, const gdb_byte *info_ptr,
1952    rcuh_kind section_kind);
1953
1954 static void init_cutu_and_read_dies
1955   (struct dwarf2_per_cu_data *this_cu, struct abbrev_table *abbrev_table,
1956    int use_existing_cu, int keep, bool skip_partial,
1957    die_reader_func_ftype *die_reader_func, void *data);
1958
1959 static void init_cutu_and_read_dies_simple
1960   (struct dwarf2_per_cu_data *this_cu,
1961    die_reader_func_ftype *die_reader_func, void *data);
1962
1963 static htab_t allocate_signatured_type_table (struct objfile *objfile);
1964
1965 static htab_t allocate_dwo_unit_table (struct objfile *objfile);
1966
1967 static struct dwo_unit *lookup_dwo_unit_in_dwp
1968   (struct dwarf2_per_objfile *dwarf2_per_objfile,
1969    struct dwp_file *dwp_file, const char *comp_dir,
1970    ULONGEST signature, int is_debug_types);
1971
1972 static struct dwp_file *get_dwp_file
1973   (struct dwarf2_per_objfile *dwarf2_per_objfile);
1974
1975 static struct dwo_unit *lookup_dwo_comp_unit
1976   (struct dwarf2_per_cu_data *, const char *, const char *, ULONGEST);
1977
1978 static struct dwo_unit *lookup_dwo_type_unit
1979   (struct signatured_type *, const char *, const char *);
1980
1981 static void queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *);
1982
1983 static void free_dwo_file (struct dwo_file *);
1984
1985 /* A unique_ptr helper to free a dwo_file.  */
1986
1987 struct dwo_file_deleter
1988 {
1989   void operator() (struct dwo_file *df) const
1990   {
1991     free_dwo_file (df);
1992   }
1993 };
1994
1995 /* A unique pointer to a dwo_file.  */
1996
1997 typedef std::unique_ptr<struct dwo_file, dwo_file_deleter> dwo_file_up;
1998
1999 static void process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile);
2000
2001 static void check_producer (struct dwarf2_cu *cu);
2002
2003 static void free_line_header_voidp (void *arg);
2004 \f
2005 /* Various complaints about symbol reading that don't abort the process.  */
2006
2007 static void
2008 dwarf2_statement_list_fits_in_line_number_section_complaint (void)
2009 {
2010   complaint (_("statement list doesn't fit in .debug_line section"));
2011 }
2012
2013 static void
2014 dwarf2_debug_line_missing_file_complaint (void)
2015 {
2016   complaint (_(".debug_line section has line data without a file"));
2017 }
2018
2019 static void
2020 dwarf2_debug_line_missing_end_sequence_complaint (void)
2021 {
2022   complaint (_(".debug_line section has line "
2023                "program sequence without an end"));
2024 }
2025
2026 static void
2027 dwarf2_complex_location_expr_complaint (void)
2028 {
2029   complaint (_("location expression too complex"));
2030 }
2031
2032 static void
2033 dwarf2_const_value_length_mismatch_complaint (const char *arg1, int arg2,
2034                                               int arg3)
2035 {
2036   complaint (_("const value length mismatch for '%s', got %d, expected %d"),
2037              arg1, arg2, arg3);
2038 }
2039
2040 static void
2041 dwarf2_section_buffer_overflow_complaint (struct dwarf2_section_info *section)
2042 {
2043   complaint (_("debug info runs off end of %s section"
2044                " [in module %s]"),
2045              get_section_name (section),
2046              get_section_file_name (section));
2047 }
2048
2049 static void
2050 dwarf2_macro_malformed_definition_complaint (const char *arg1)
2051 {
2052   complaint (_("macro debug info contains a "
2053                "malformed macro definition:\n`%s'"),
2054              arg1);
2055 }
2056
2057 static void
2058 dwarf2_invalid_attrib_class_complaint (const char *arg1, const char *arg2)
2059 {
2060   complaint (_("invalid attribute class or form for '%s' in '%s'"),
2061              arg1, arg2);
2062 }
2063
2064 /* Hash function for line_header_hash.  */
2065
2066 static hashval_t
2067 line_header_hash (const struct line_header *ofs)
2068 {
2069   return to_underlying (ofs->sect_off) ^ ofs->offset_in_dwz;
2070 }
2071
2072 /* Hash function for htab_create_alloc_ex for line_header_hash.  */
2073
2074 static hashval_t
2075 line_header_hash_voidp (const void *item)
2076 {
2077   const struct line_header *ofs = (const struct line_header *) item;
2078
2079   return line_header_hash (ofs);
2080 }
2081
2082 /* Equality function for line_header_hash.  */
2083
2084 static int
2085 line_header_eq_voidp (const void *item_lhs, const void *item_rhs)
2086 {
2087   const struct line_header *ofs_lhs = (const struct line_header *) item_lhs;
2088   const struct line_header *ofs_rhs = (const struct line_header *) item_rhs;
2089
2090   return (ofs_lhs->sect_off == ofs_rhs->sect_off
2091           && ofs_lhs->offset_in_dwz == ofs_rhs->offset_in_dwz);
2092 }
2093
2094 \f
2095
2096 /* Read the given attribute value as an address, taking the attribute's
2097    form into account.  */
2098
2099 static CORE_ADDR
2100 attr_value_as_address (struct attribute *attr)
2101 {
2102   CORE_ADDR addr;
2103
2104   if (attr->form != DW_FORM_addr && attr->form != DW_FORM_GNU_addr_index)
2105     {
2106       /* Aside from a few clearly defined exceptions, attributes that
2107          contain an address must always be in DW_FORM_addr form.
2108          Unfortunately, some compilers happen to be violating this
2109          requirement by encoding addresses using other forms, such
2110          as DW_FORM_data4 for example.  For those broken compilers,
2111          we try to do our best, without any guarantee of success,
2112          to interpret the address correctly.  It would also be nice
2113          to generate a complaint, but that would require us to maintain
2114          a list of legitimate cases where a non-address form is allowed,
2115          as well as update callers to pass in at least the CU's DWARF
2116          version.  This is more overhead than what we're willing to
2117          expand for a pretty rare case.  */
2118       addr = DW_UNSND (attr);
2119     }
2120   else
2121     addr = DW_ADDR (attr);
2122
2123   return addr;
2124 }
2125
2126 /* See declaration.  */
2127
2128 dwarf2_per_objfile::dwarf2_per_objfile (struct objfile *objfile_,
2129                                         const dwarf2_debug_sections *names)
2130   : objfile (objfile_)
2131 {
2132   if (names == NULL)
2133     names = &dwarf2_elf_names;
2134
2135   bfd *obfd = objfile->obfd;
2136
2137   for (asection *sec = obfd->sections; sec != NULL; sec = sec->next)
2138     locate_sections (obfd, sec, *names);
2139 }
2140
2141 static void free_dwo_files (htab_t dwo_files, struct objfile *objfile);
2142
2143 dwarf2_per_objfile::~dwarf2_per_objfile ()
2144 {
2145   /* Cached DIE trees use xmalloc and the comp_unit_obstack.  */
2146   free_cached_comp_units ();
2147
2148   if (quick_file_names_table)
2149     htab_delete (quick_file_names_table);
2150
2151   if (line_header_hash)
2152     htab_delete (line_header_hash);
2153
2154   for (dwarf2_per_cu_data *per_cu : all_comp_units)
2155     VEC_free (dwarf2_per_cu_ptr, per_cu->imported_symtabs);
2156
2157   for (signatured_type *sig_type : all_type_units)
2158     VEC_free (dwarf2_per_cu_ptr, sig_type->per_cu.imported_symtabs);
2159
2160   VEC_free (dwarf2_section_info_def, types);
2161
2162   if (dwo_files != NULL)
2163     free_dwo_files (dwo_files, objfile);
2164
2165   /* Everything else should be on the objfile obstack.  */
2166 }
2167
2168 /* See declaration.  */
2169
2170 void
2171 dwarf2_per_objfile::free_cached_comp_units ()
2172 {
2173   dwarf2_per_cu_data *per_cu = read_in_chain;
2174   dwarf2_per_cu_data **last_chain = &read_in_chain;
2175   while (per_cu != NULL)
2176     {
2177       dwarf2_per_cu_data *next_cu = per_cu->cu->read_in_chain;
2178
2179       delete per_cu->cu;
2180       *last_chain = next_cu;
2181       per_cu = next_cu;
2182     }
2183 }
2184
2185 /* A helper class that calls free_cached_comp_units on
2186    destruction.  */
2187
2188 class free_cached_comp_units
2189 {
2190 public:
2191
2192   explicit free_cached_comp_units (dwarf2_per_objfile *per_objfile)
2193     : m_per_objfile (per_objfile)
2194   {
2195   }
2196
2197   ~free_cached_comp_units ()
2198   {
2199     m_per_objfile->free_cached_comp_units ();
2200   }
2201
2202   DISABLE_COPY_AND_ASSIGN (free_cached_comp_units);
2203
2204 private:
2205
2206   dwarf2_per_objfile *m_per_objfile;
2207 };
2208
2209 /* Try to locate the sections we need for DWARF 2 debugging
2210    information and return true if we have enough to do something.
2211    NAMES points to the dwarf2 section names, or is NULL if the standard
2212    ELF names are used.  */
2213
2214 int
2215 dwarf2_has_info (struct objfile *objfile,
2216                  const struct dwarf2_debug_sections *names)
2217 {
2218   if (objfile->flags & OBJF_READNEVER)
2219     return 0;
2220
2221   struct dwarf2_per_objfile *dwarf2_per_objfile
2222     = get_dwarf2_per_objfile (objfile);
2223
2224   if (dwarf2_per_objfile == NULL)
2225     {
2226       /* Initialize per-objfile state.  */
2227       dwarf2_per_objfile
2228         = new (&objfile->objfile_obstack) struct dwarf2_per_objfile (objfile,
2229                                                                      names);
2230       set_dwarf2_per_objfile (objfile, dwarf2_per_objfile);
2231     }
2232   return (!dwarf2_per_objfile->info.is_virtual
2233           && dwarf2_per_objfile->info.s.section != NULL
2234           && !dwarf2_per_objfile->abbrev.is_virtual
2235           && dwarf2_per_objfile->abbrev.s.section != NULL);
2236 }
2237
2238 /* Return the containing section of virtual section SECTION.  */
2239
2240 static struct dwarf2_section_info *
2241 get_containing_section (const struct dwarf2_section_info *section)
2242 {
2243   gdb_assert (section->is_virtual);
2244   return section->s.containing_section;
2245 }
2246
2247 /* Return the bfd owner of SECTION.  */
2248
2249 static struct bfd *
2250 get_section_bfd_owner (const struct dwarf2_section_info *section)
2251 {
2252   if (section->is_virtual)
2253     {
2254       section = get_containing_section (section);
2255       gdb_assert (!section->is_virtual);
2256     }
2257   return section->s.section->owner;
2258 }
2259
2260 /* Return the bfd section of SECTION.
2261    Returns NULL if the section is not present.  */
2262
2263 static asection *
2264 get_section_bfd_section (const struct dwarf2_section_info *section)
2265 {
2266   if (section->is_virtual)
2267     {
2268       section = get_containing_section (section);
2269       gdb_assert (!section->is_virtual);
2270     }
2271   return section->s.section;
2272 }
2273
2274 /* Return the name of SECTION.  */
2275
2276 static const char *
2277 get_section_name (const struct dwarf2_section_info *section)
2278 {
2279   asection *sectp = get_section_bfd_section (section);
2280
2281   gdb_assert (sectp != NULL);
2282   return bfd_section_name (get_section_bfd_owner (section), sectp);
2283 }
2284
2285 /* Return the name of the file SECTION is in.  */
2286
2287 static const char *
2288 get_section_file_name (const struct dwarf2_section_info *section)
2289 {
2290   bfd *abfd = get_section_bfd_owner (section);
2291
2292   return bfd_get_filename (abfd);
2293 }
2294
2295 /* Return the id of SECTION.
2296    Returns 0 if SECTION doesn't exist.  */
2297
2298 static int
2299 get_section_id (const struct dwarf2_section_info *section)
2300 {
2301   asection *sectp = get_section_bfd_section (section);
2302
2303   if (sectp == NULL)
2304     return 0;
2305   return sectp->id;
2306 }
2307
2308 /* Return the flags of SECTION.
2309    SECTION (or containing section if this is a virtual section) must exist.  */
2310
2311 static int
2312 get_section_flags (const struct dwarf2_section_info *section)
2313 {
2314   asection *sectp = get_section_bfd_section (section);
2315
2316   gdb_assert (sectp != NULL);
2317   return bfd_get_section_flags (sectp->owner, sectp);
2318 }
2319
2320 /* When loading sections, we look either for uncompressed section or for
2321    compressed section names.  */
2322
2323 static int
2324 section_is_p (const char *section_name,
2325               const struct dwarf2_section_names *names)
2326 {
2327   if (names->normal != NULL
2328       && strcmp (section_name, names->normal) == 0)
2329     return 1;
2330   if (names->compressed != NULL
2331       && strcmp (section_name, names->compressed) == 0)
2332     return 1;
2333   return 0;
2334 }
2335
2336 /* See declaration.  */
2337
2338 void
2339 dwarf2_per_objfile::locate_sections (bfd *abfd, asection *sectp,
2340                                      const dwarf2_debug_sections &names)
2341 {
2342   flagword aflag = bfd_get_section_flags (abfd, sectp);
2343
2344   if ((aflag & SEC_HAS_CONTENTS) == 0)
2345     {
2346     }
2347   else if (section_is_p (sectp->name, &names.info))
2348     {
2349       this->info.s.section = sectp;
2350       this->info.size = bfd_get_section_size (sectp);
2351     }
2352   else if (section_is_p (sectp->name, &names.abbrev))
2353     {
2354       this->abbrev.s.section = sectp;
2355       this->abbrev.size = bfd_get_section_size (sectp);
2356     }
2357   else if (section_is_p (sectp->name, &names.line))
2358     {
2359       this->line.s.section = sectp;
2360       this->line.size = bfd_get_section_size (sectp);
2361     }
2362   else if (section_is_p (sectp->name, &names.loc))
2363     {
2364       this->loc.s.section = sectp;
2365       this->loc.size = bfd_get_section_size (sectp);
2366     }
2367   else if (section_is_p (sectp->name, &names.loclists))
2368     {
2369       this->loclists.s.section = sectp;
2370       this->loclists.size = bfd_get_section_size (sectp);
2371     }
2372   else if (section_is_p (sectp->name, &names.macinfo))
2373     {
2374       this->macinfo.s.section = sectp;
2375       this->macinfo.size = bfd_get_section_size (sectp);
2376     }
2377   else if (section_is_p (sectp->name, &names.macro))
2378     {
2379       this->macro.s.section = sectp;
2380       this->macro.size = bfd_get_section_size (sectp);
2381     }
2382   else if (section_is_p (sectp->name, &names.str))
2383     {
2384       this->str.s.section = sectp;
2385       this->str.size = bfd_get_section_size (sectp);
2386     }
2387   else if (section_is_p (sectp->name, &names.line_str))
2388     {
2389       this->line_str.s.section = sectp;
2390       this->line_str.size = bfd_get_section_size (sectp);
2391     }
2392   else if (section_is_p (sectp->name, &names.addr))
2393     {
2394       this->addr.s.section = sectp;
2395       this->addr.size = bfd_get_section_size (sectp);
2396     }
2397   else if (section_is_p (sectp->name, &names.frame))
2398     {
2399       this->frame.s.section = sectp;
2400       this->frame.size = bfd_get_section_size (sectp);
2401     }
2402   else if (section_is_p (sectp->name, &names.eh_frame))
2403     {
2404       this->eh_frame.s.section = sectp;
2405       this->eh_frame.size = bfd_get_section_size (sectp);
2406     }
2407   else if (section_is_p (sectp->name, &names.ranges))
2408     {
2409       this->ranges.s.section = sectp;
2410       this->ranges.size = bfd_get_section_size (sectp);
2411     }
2412   else if (section_is_p (sectp->name, &names.rnglists))
2413     {
2414       this->rnglists.s.section = sectp;
2415       this->rnglists.size = bfd_get_section_size (sectp);
2416     }
2417   else if (section_is_p (sectp->name, &names.types))
2418     {
2419       struct dwarf2_section_info type_section;
2420
2421       memset (&type_section, 0, sizeof (type_section));
2422       type_section.s.section = sectp;
2423       type_section.size = bfd_get_section_size (sectp);
2424
2425       VEC_safe_push (dwarf2_section_info_def, this->types,
2426                      &type_section);
2427     }
2428   else if (section_is_p (sectp->name, &names.gdb_index))
2429     {
2430       this->gdb_index.s.section = sectp;
2431       this->gdb_index.size = bfd_get_section_size (sectp);
2432     }
2433   else if (section_is_p (sectp->name, &names.debug_names))
2434     {
2435       this->debug_names.s.section = sectp;
2436       this->debug_names.size = bfd_get_section_size (sectp);
2437     }
2438   else if (section_is_p (sectp->name, &names.debug_aranges))
2439     {
2440       this->debug_aranges.s.section = sectp;
2441       this->debug_aranges.size = bfd_get_section_size (sectp);
2442     }
2443
2444   if ((bfd_get_section_flags (abfd, sectp) & (SEC_LOAD | SEC_ALLOC))
2445       && bfd_section_vma (abfd, sectp) == 0)
2446     this->has_section_at_zero = true;
2447 }
2448
2449 /* A helper function that decides whether a section is empty,
2450    or not present.  */
2451
2452 static int
2453 dwarf2_section_empty_p (const struct dwarf2_section_info *section)
2454 {
2455   if (section->is_virtual)
2456     return section->size == 0;
2457   return section->s.section == NULL || section->size == 0;
2458 }
2459
2460 /* See dwarf2read.h.  */
2461
2462 void
2463 dwarf2_read_section (struct objfile *objfile, dwarf2_section_info *info)
2464 {
2465   asection *sectp;
2466   bfd *abfd;
2467   gdb_byte *buf, *retbuf;
2468
2469   if (info->readin)
2470     return;
2471   info->buffer = NULL;
2472   info->readin = 1;
2473
2474   if (dwarf2_section_empty_p (info))
2475     return;
2476
2477   sectp = get_section_bfd_section (info);
2478
2479   /* If this is a virtual section we need to read in the real one first.  */
2480   if (info->is_virtual)
2481     {
2482       struct dwarf2_section_info *containing_section =
2483         get_containing_section (info);
2484
2485       gdb_assert (sectp != NULL);
2486       if ((sectp->flags & SEC_RELOC) != 0)
2487         {
2488           error (_("Dwarf Error: DWP format V2 with relocations is not"
2489                    " supported in section %s [in module %s]"),
2490                  get_section_name (info), get_section_file_name (info));
2491         }
2492       dwarf2_read_section (objfile, containing_section);
2493       /* Other code should have already caught virtual sections that don't
2494          fit.  */
2495       gdb_assert (info->virtual_offset + info->size
2496                   <= containing_section->size);
2497       /* If the real section is empty or there was a problem reading the
2498          section we shouldn't get here.  */
2499       gdb_assert (containing_section->buffer != NULL);
2500       info->buffer = containing_section->buffer + info->virtual_offset;
2501       return;
2502     }
2503
2504   /* If the section has relocations, we must read it ourselves.
2505      Otherwise we attach it to the BFD.  */
2506   if ((sectp->flags & SEC_RELOC) == 0)
2507     {
2508       info->buffer = gdb_bfd_map_section (sectp, &info->size);
2509       return;
2510     }
2511
2512   buf = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, info->size);
2513   info->buffer = buf;
2514
2515   /* When debugging .o files, we may need to apply relocations; see
2516      http://sourceware.org/ml/gdb-patches/2002-04/msg00136.html .
2517      We never compress sections in .o files, so we only need to
2518      try this when the section is not compressed.  */
2519   retbuf = symfile_relocate_debug_section (objfile, sectp, buf);
2520   if (retbuf != NULL)
2521     {
2522       info->buffer = retbuf;
2523       return;
2524     }
2525
2526   abfd = get_section_bfd_owner (info);
2527   gdb_assert (abfd != NULL);
2528
2529   if (bfd_seek (abfd, sectp->filepos, SEEK_SET) != 0
2530       || bfd_bread (buf, info->size, abfd) != info->size)
2531     {
2532       error (_("Dwarf Error: Can't read DWARF data"
2533                " in section %s [in module %s]"),
2534              bfd_section_name (abfd, sectp), bfd_get_filename (abfd));
2535     }
2536 }
2537
2538 /* A helper function that returns the size of a section in a safe way.
2539    If you are positive that the section has been read before using the
2540    size, then it is safe to refer to the dwarf2_section_info object's
2541    "size" field directly.  In other cases, you must call this
2542    function, because for compressed sections the size field is not set
2543    correctly until the section has been read.  */
2544
2545 static bfd_size_type
2546 dwarf2_section_size (struct objfile *objfile,
2547                      struct dwarf2_section_info *info)
2548 {
2549   if (!info->readin)
2550     dwarf2_read_section (objfile, info);
2551   return info->size;
2552 }
2553
2554 /* Fill in SECTP, BUFP and SIZEP with section info, given OBJFILE and
2555    SECTION_NAME.  */
2556
2557 void
2558 dwarf2_get_section_info (struct objfile *objfile,
2559                          enum dwarf2_section_enum sect,
2560                          asection **sectp, const gdb_byte **bufp,
2561                          bfd_size_type *sizep)
2562 {
2563   struct dwarf2_per_objfile *data
2564     = (struct dwarf2_per_objfile *) objfile_data (objfile,
2565                                                   dwarf2_objfile_data_key);
2566   struct dwarf2_section_info *info;
2567
2568   /* We may see an objfile without any DWARF, in which case we just
2569      return nothing.  */
2570   if (data == NULL)
2571     {
2572       *sectp = NULL;
2573       *bufp = NULL;
2574       *sizep = 0;
2575       return;
2576     }
2577   switch (sect)
2578     {
2579     case DWARF2_DEBUG_FRAME:
2580       info = &data->frame;
2581       break;
2582     case DWARF2_EH_FRAME:
2583       info = &data->eh_frame;
2584       break;
2585     default:
2586       gdb_assert_not_reached ("unexpected section");
2587     }
2588
2589   dwarf2_read_section (objfile, info);
2590
2591   *sectp = get_section_bfd_section (info);
2592   *bufp = info->buffer;
2593   *sizep = info->size;
2594 }
2595
2596 /* A helper function to find the sections for a .dwz file.  */
2597
2598 static void
2599 locate_dwz_sections (bfd *abfd, asection *sectp, void *arg)
2600 {
2601   struct dwz_file *dwz_file = (struct dwz_file *) arg;
2602
2603   /* Note that we only support the standard ELF names, because .dwz
2604      is ELF-only (at the time of writing).  */
2605   if (section_is_p (sectp->name, &dwarf2_elf_names.abbrev))
2606     {
2607       dwz_file->abbrev.s.section = sectp;
2608       dwz_file->abbrev.size = bfd_get_section_size (sectp);
2609     }
2610   else if (section_is_p (sectp->name, &dwarf2_elf_names.info))
2611     {
2612       dwz_file->info.s.section = sectp;
2613       dwz_file->info.size = bfd_get_section_size (sectp);
2614     }
2615   else if (section_is_p (sectp->name, &dwarf2_elf_names.str))
2616     {
2617       dwz_file->str.s.section = sectp;
2618       dwz_file->str.size = bfd_get_section_size (sectp);
2619     }
2620   else if (section_is_p (sectp->name, &dwarf2_elf_names.line))
2621     {
2622       dwz_file->line.s.section = sectp;
2623       dwz_file->line.size = bfd_get_section_size (sectp);
2624     }
2625   else if (section_is_p (sectp->name, &dwarf2_elf_names.macro))
2626     {
2627       dwz_file->macro.s.section = sectp;
2628       dwz_file->macro.size = bfd_get_section_size (sectp);
2629     }
2630   else if (section_is_p (sectp->name, &dwarf2_elf_names.gdb_index))
2631     {
2632       dwz_file->gdb_index.s.section = sectp;
2633       dwz_file->gdb_index.size = bfd_get_section_size (sectp);
2634     }
2635   else if (section_is_p (sectp->name, &dwarf2_elf_names.debug_names))
2636     {
2637       dwz_file->debug_names.s.section = sectp;
2638       dwz_file->debug_names.size = bfd_get_section_size (sectp);
2639     }
2640 }
2641
2642 /* Open the separate '.dwz' debug file, if needed.  Return NULL if
2643    there is no .gnu_debugaltlink section in the file.  Error if there
2644    is such a section but the file cannot be found.  */
2645
2646 static struct dwz_file *
2647 dwarf2_get_dwz_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
2648 {
2649   const char *filename;
2650   bfd_size_type buildid_len_arg;
2651   size_t buildid_len;
2652   bfd_byte *buildid;
2653
2654   if (dwarf2_per_objfile->dwz_file != NULL)
2655     return dwarf2_per_objfile->dwz_file.get ();
2656
2657   bfd_set_error (bfd_error_no_error);
2658   gdb::unique_xmalloc_ptr<char> data
2659     (bfd_get_alt_debug_link_info (dwarf2_per_objfile->objfile->obfd,
2660                                   &buildid_len_arg, &buildid));
2661   if (data == NULL)
2662     {
2663       if (bfd_get_error () == bfd_error_no_error)
2664         return NULL;
2665       error (_("could not read '.gnu_debugaltlink' section: %s"),
2666              bfd_errmsg (bfd_get_error ()));
2667     }
2668
2669   gdb::unique_xmalloc_ptr<bfd_byte> buildid_holder (buildid);
2670
2671   buildid_len = (size_t) buildid_len_arg;
2672
2673   filename = data.get ();
2674
2675   std::string abs_storage;
2676   if (!IS_ABSOLUTE_PATH (filename))
2677     {
2678       gdb::unique_xmalloc_ptr<char> abs
2679         = gdb_realpath (objfile_name (dwarf2_per_objfile->objfile));
2680
2681       abs_storage = ldirname (abs.get ()) + SLASH_STRING + filename;
2682       filename = abs_storage.c_str ();
2683     }
2684
2685   /* First try the file name given in the section.  If that doesn't
2686      work, try to use the build-id instead.  */
2687   gdb_bfd_ref_ptr dwz_bfd (gdb_bfd_open (filename, gnutarget, -1));
2688   if (dwz_bfd != NULL)
2689     {
2690       if (!build_id_verify (dwz_bfd.get (), buildid_len, buildid))
2691         dwz_bfd.release ();
2692     }
2693
2694   if (dwz_bfd == NULL)
2695     dwz_bfd = build_id_to_debug_bfd (buildid_len, buildid);
2696
2697   if (dwz_bfd == NULL)
2698     error (_("could not find '.gnu_debugaltlink' file for %s"),
2699            objfile_name (dwarf2_per_objfile->objfile));
2700
2701   std::unique_ptr<struct dwz_file> result
2702     (new struct dwz_file (std::move (dwz_bfd)));
2703
2704   bfd_map_over_sections (result->dwz_bfd.get (), locate_dwz_sections,
2705                          result.get ());
2706
2707   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd,
2708                             result->dwz_bfd.get ());
2709   dwarf2_per_objfile->dwz_file = std::move (result);
2710   return dwarf2_per_objfile->dwz_file.get ();
2711 }
2712 \f
2713 /* DWARF quick_symbols_functions support.  */
2714
2715 /* TUs can share .debug_line entries, and there can be a lot more TUs than
2716    unique line tables, so we maintain a separate table of all .debug_line
2717    derived entries to support the sharing.
2718    All the quick functions need is the list of file names.  We discard the
2719    line_header when we're done and don't need to record it here.  */
2720 struct quick_file_names
2721 {
2722   /* The data used to construct the hash key.  */
2723   struct stmt_list_hash hash;
2724
2725   /* The number of entries in file_names, real_names.  */
2726   unsigned int num_file_names;
2727
2728   /* The file names from the line table, after being run through
2729      file_full_name.  */
2730   const char **file_names;
2731
2732   /* The file names from the line table after being run through
2733      gdb_realpath.  These are computed lazily.  */
2734   const char **real_names;
2735 };
2736
2737 /* When using the index (and thus not using psymtabs), each CU has an
2738    object of this type.  This is used to hold information needed by
2739    the various "quick" methods.  */
2740 struct dwarf2_per_cu_quick_data
2741 {
2742   /* The file table.  This can be NULL if there was no file table
2743      or it's currently not read in.
2744      NOTE: This points into dwarf2_per_objfile->quick_file_names_table.  */
2745   struct quick_file_names *file_names;
2746
2747   /* The corresponding symbol table.  This is NULL if symbols for this
2748      CU have not yet been read.  */
2749   struct compunit_symtab *compunit_symtab;
2750
2751   /* A temporary mark bit used when iterating over all CUs in
2752      expand_symtabs_matching.  */
2753   unsigned int mark : 1;
2754
2755   /* True if we've tried to read the file table and found there isn't one.
2756      There will be no point in trying to read it again next time.  */
2757   unsigned int no_file_data : 1;
2758 };
2759
2760 /* Utility hash function for a stmt_list_hash.  */
2761
2762 static hashval_t
2763 hash_stmt_list_entry (const struct stmt_list_hash *stmt_list_hash)
2764 {
2765   hashval_t v = 0;
2766
2767   if (stmt_list_hash->dwo_unit != NULL)
2768     v += (uintptr_t) stmt_list_hash->dwo_unit->dwo_file;
2769   v += to_underlying (stmt_list_hash->line_sect_off);
2770   return v;
2771 }
2772
2773 /* Utility equality function for a stmt_list_hash.  */
2774
2775 static int
2776 eq_stmt_list_entry (const struct stmt_list_hash *lhs,
2777                     const struct stmt_list_hash *rhs)
2778 {
2779   if ((lhs->dwo_unit != NULL) != (rhs->dwo_unit != NULL))
2780     return 0;
2781   if (lhs->dwo_unit != NULL
2782       && lhs->dwo_unit->dwo_file != rhs->dwo_unit->dwo_file)
2783     return 0;
2784
2785   return lhs->line_sect_off == rhs->line_sect_off;
2786 }
2787
2788 /* Hash function for a quick_file_names.  */
2789
2790 static hashval_t
2791 hash_file_name_entry (const void *e)
2792 {
2793   const struct quick_file_names *file_data
2794     = (const struct quick_file_names *) e;
2795
2796   return hash_stmt_list_entry (&file_data->hash);
2797 }
2798
2799 /* Equality function for a quick_file_names.  */
2800
2801 static int
2802 eq_file_name_entry (const void *a, const void *b)
2803 {
2804   const struct quick_file_names *ea = (const struct quick_file_names *) a;
2805   const struct quick_file_names *eb = (const struct quick_file_names *) b;
2806
2807   return eq_stmt_list_entry (&ea->hash, &eb->hash);
2808 }
2809
2810 /* Delete function for a quick_file_names.  */
2811
2812 static void
2813 delete_file_name_entry (void *e)
2814 {
2815   struct quick_file_names *file_data = (struct quick_file_names *) e;
2816   int i;
2817
2818   for (i = 0; i < file_data->num_file_names; ++i)
2819     {
2820       xfree ((void*) file_data->file_names[i]);
2821       if (file_data->real_names)
2822         xfree ((void*) file_data->real_names[i]);
2823     }
2824
2825   /* The space for the struct itself lives on objfile_obstack,
2826      so we don't free it here.  */
2827 }
2828
2829 /* Create a quick_file_names hash table.  */
2830
2831 static htab_t
2832 create_quick_file_names_table (unsigned int nr_initial_entries)
2833 {
2834   return htab_create_alloc (nr_initial_entries,
2835                             hash_file_name_entry, eq_file_name_entry,
2836                             delete_file_name_entry, xcalloc, xfree);
2837 }
2838
2839 /* Read in PER_CU->CU.  This function is unrelated to symtabs, symtab would
2840    have to be created afterwards.  You should call age_cached_comp_units after
2841    processing PER_CU->CU.  dw2_setup must have been already called.  */
2842
2843 static void
2844 load_cu (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2845 {
2846   if (per_cu->is_debug_types)
2847     load_full_type_unit (per_cu);
2848   else
2849     load_full_comp_unit (per_cu, skip_partial, language_minimal);
2850
2851   if (per_cu->cu == NULL)
2852     return;  /* Dummy CU.  */
2853
2854   dwarf2_find_base_address (per_cu->cu->dies, per_cu->cu);
2855 }
2856
2857 /* Read in the symbols for PER_CU.  */
2858
2859 static void
2860 dw2_do_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2861 {
2862   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2863
2864   /* Skip type_unit_groups, reading the type units they contain
2865      is handled elsewhere.  */
2866   if (IS_TYPE_UNIT_GROUP (per_cu))
2867     return;
2868
2869   /* The destructor of dwarf2_queue_guard frees any entries left on
2870      the queue.  After this point we're guaranteed to leave this function
2871      with the dwarf queue empty.  */
2872   dwarf2_queue_guard q_guard;
2873
2874   if (dwarf2_per_objfile->using_index
2875       ? per_cu->v.quick->compunit_symtab == NULL
2876       : (per_cu->v.psymtab == NULL || !per_cu->v.psymtab->readin))
2877     {
2878       queue_comp_unit (per_cu, language_minimal);
2879       load_cu (per_cu, skip_partial);
2880
2881       /* If we just loaded a CU from a DWO, and we're working with an index
2882          that may badly handle TUs, load all the TUs in that DWO as well.
2883          http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
2884       if (!per_cu->is_debug_types
2885           && per_cu->cu != NULL
2886           && per_cu->cu->dwo_unit != NULL
2887           && dwarf2_per_objfile->index_table != NULL
2888           && dwarf2_per_objfile->index_table->version <= 7
2889           /* DWP files aren't supported yet.  */
2890           && get_dwp_file (dwarf2_per_objfile) == NULL)
2891         queue_and_load_all_dwo_tus (per_cu);
2892     }
2893
2894   process_queue (dwarf2_per_objfile);
2895
2896   /* Age the cache, releasing compilation units that have not
2897      been used recently.  */
2898   age_cached_comp_units (dwarf2_per_objfile);
2899 }
2900
2901 /* Ensure that the symbols for PER_CU have been read in.  OBJFILE is
2902    the objfile from which this CU came.  Returns the resulting symbol
2903    table.  */
2904
2905 static struct compunit_symtab *
2906 dw2_instantiate_symtab (struct dwarf2_per_cu_data *per_cu, bool skip_partial)
2907 {
2908   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
2909
2910   gdb_assert (dwarf2_per_objfile->using_index);
2911   if (!per_cu->v.quick->compunit_symtab)
2912     {
2913       free_cached_comp_units freer (dwarf2_per_objfile);
2914       scoped_restore decrementer = increment_reading_symtab ();
2915       dw2_do_instantiate_symtab (per_cu, skip_partial);
2916       process_cu_includes (dwarf2_per_objfile);
2917     }
2918
2919   return per_cu->v.quick->compunit_symtab;
2920 }
2921
2922 /* See declaration.  */
2923
2924 dwarf2_per_cu_data *
2925 dwarf2_per_objfile::get_cutu (int index)
2926 {
2927   if (index >= this->all_comp_units.size ())
2928     {
2929       index -= this->all_comp_units.size ();
2930       gdb_assert (index < this->all_type_units.size ());
2931       return &this->all_type_units[index]->per_cu;
2932     }
2933
2934   return this->all_comp_units[index];
2935 }
2936
2937 /* See declaration.  */
2938
2939 dwarf2_per_cu_data *
2940 dwarf2_per_objfile::get_cu (int index)
2941 {
2942   gdb_assert (index >= 0 && index < this->all_comp_units.size ());
2943
2944   return this->all_comp_units[index];
2945 }
2946
2947 /* See declaration.  */
2948
2949 signatured_type *
2950 dwarf2_per_objfile::get_tu (int index)
2951 {
2952   gdb_assert (index >= 0 && index < this->all_type_units.size ());
2953
2954   return this->all_type_units[index];
2955 }
2956
2957 /* Return a new dwarf2_per_cu_data allocated on OBJFILE's
2958    objfile_obstack, and constructed with the specified field
2959    values.  */
2960
2961 static dwarf2_per_cu_data *
2962 create_cu_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2963                           struct dwarf2_section_info *section,
2964                           int is_dwz,
2965                           sect_offset sect_off, ULONGEST length)
2966 {
2967   struct objfile *objfile = dwarf2_per_objfile->objfile;
2968   dwarf2_per_cu_data *the_cu
2969     = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2970                      struct dwarf2_per_cu_data);
2971   the_cu->sect_off = sect_off;
2972   the_cu->length = length;
2973   the_cu->dwarf2_per_objfile = dwarf2_per_objfile;
2974   the_cu->section = section;
2975   the_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
2976                                    struct dwarf2_per_cu_quick_data);
2977   the_cu->is_dwz = is_dwz;
2978   return the_cu;
2979 }
2980
2981 /* A helper for create_cus_from_index that handles a given list of
2982    CUs.  */
2983
2984 static void
2985 create_cus_from_index_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
2986                             const gdb_byte *cu_list, offset_type n_elements,
2987                             struct dwarf2_section_info *section,
2988                             int is_dwz)
2989 {
2990   for (offset_type i = 0; i < n_elements; i += 2)
2991     {
2992       gdb_static_assert (sizeof (ULONGEST) >= 8);
2993
2994       sect_offset sect_off
2995         = (sect_offset) extract_unsigned_integer (cu_list, 8, BFD_ENDIAN_LITTLE);
2996       ULONGEST length = extract_unsigned_integer (cu_list + 8, 8, BFD_ENDIAN_LITTLE);
2997       cu_list += 2 * 8;
2998
2999       dwarf2_per_cu_data *per_cu
3000         = create_cu_from_index_list (dwarf2_per_objfile, section, is_dwz,
3001                                      sect_off, length);
3002       dwarf2_per_objfile->all_comp_units.push_back (per_cu);
3003     }
3004 }
3005
3006 /* Read the CU list from the mapped index, and use it to create all
3007    the CU objects for this objfile.  */
3008
3009 static void
3010 create_cus_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3011                        const gdb_byte *cu_list, offset_type cu_list_elements,
3012                        const gdb_byte *dwz_list, offset_type dwz_elements)
3013 {
3014   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
3015   dwarf2_per_objfile->all_comp_units.reserve
3016     ((cu_list_elements + dwz_elements) / 2);
3017
3018   create_cus_from_index_list (dwarf2_per_objfile, cu_list, cu_list_elements,
3019                               &dwarf2_per_objfile->info, 0);
3020
3021   if (dwz_elements == 0)
3022     return;
3023
3024   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3025   create_cus_from_index_list (dwarf2_per_objfile, dwz_list, dwz_elements,
3026                               &dwz->info, 1);
3027 }
3028
3029 /* Create the signatured type hash table from the index.  */
3030
3031 static void
3032 create_signatured_type_table_from_index
3033   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3034    struct dwarf2_section_info *section,
3035    const gdb_byte *bytes,
3036    offset_type elements)
3037 {
3038   struct objfile *objfile = dwarf2_per_objfile->objfile;
3039
3040   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3041   dwarf2_per_objfile->all_type_units.reserve (elements / 3);
3042
3043   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3044
3045   for (offset_type i = 0; i < elements; i += 3)
3046     {
3047       struct signatured_type *sig_type;
3048       ULONGEST signature;
3049       void **slot;
3050       cu_offset type_offset_in_tu;
3051
3052       gdb_static_assert (sizeof (ULONGEST) >= 8);
3053       sect_offset sect_off
3054         = (sect_offset) extract_unsigned_integer (bytes, 8, BFD_ENDIAN_LITTLE);
3055       type_offset_in_tu
3056         = (cu_offset) extract_unsigned_integer (bytes + 8, 8,
3057                                                 BFD_ENDIAN_LITTLE);
3058       signature = extract_unsigned_integer (bytes + 16, 8, BFD_ENDIAN_LITTLE);
3059       bytes += 3 * 8;
3060
3061       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3062                                  struct signatured_type);
3063       sig_type->signature = signature;
3064       sig_type->type_offset_in_tu = type_offset_in_tu;
3065       sig_type->per_cu.is_debug_types = 1;
3066       sig_type->per_cu.section = section;
3067       sig_type->per_cu.sect_off = sect_off;
3068       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3069       sig_type->per_cu.v.quick
3070         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3071                           struct dwarf2_per_cu_quick_data);
3072
3073       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3074       *slot = sig_type;
3075
3076       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3077     }
3078
3079   dwarf2_per_objfile->signatured_types = sig_types_hash;
3080 }
3081
3082 /* Create the signatured type hash table from .debug_names.  */
3083
3084 static void
3085 create_signatured_type_table_from_debug_names
3086   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3087    const mapped_debug_names &map,
3088    struct dwarf2_section_info *section,
3089    struct dwarf2_section_info *abbrev_section)
3090 {
3091   struct objfile *objfile = dwarf2_per_objfile->objfile;
3092
3093   dwarf2_read_section (objfile, section);
3094   dwarf2_read_section (objfile, abbrev_section);
3095
3096   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
3097   dwarf2_per_objfile->all_type_units.reserve (map.tu_count);
3098
3099   htab_t sig_types_hash = allocate_signatured_type_table (objfile);
3100
3101   for (uint32_t i = 0; i < map.tu_count; ++i)
3102     {
3103       struct signatured_type *sig_type;
3104       void **slot;
3105
3106       sect_offset sect_off
3107         = (sect_offset) (extract_unsigned_integer
3108                          (map.tu_table_reordered + i * map.offset_size,
3109                           map.offset_size,
3110                           map.dwarf5_byte_order));
3111
3112       comp_unit_head cu_header;
3113       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
3114                                      abbrev_section,
3115                                      section->buffer + to_underlying (sect_off),
3116                                      rcuh_kind::TYPE);
3117
3118       sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3119                                  struct signatured_type);
3120       sig_type->signature = cu_header.signature;
3121       sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
3122       sig_type->per_cu.is_debug_types = 1;
3123       sig_type->per_cu.section = section;
3124       sig_type->per_cu.sect_off = sect_off;
3125       sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
3126       sig_type->per_cu.v.quick
3127         = OBSTACK_ZALLOC (&objfile->objfile_obstack,
3128                           struct dwarf2_per_cu_quick_data);
3129
3130       slot = htab_find_slot (sig_types_hash, sig_type, INSERT);
3131       *slot = sig_type;
3132
3133       dwarf2_per_objfile->all_type_units.push_back (sig_type);
3134     }
3135
3136   dwarf2_per_objfile->signatured_types = sig_types_hash;
3137 }
3138
3139 /* Read the address map data from the mapped index, and use it to
3140    populate the objfile's psymtabs_addrmap.  */
3141
3142 static void
3143 create_addrmap_from_index (struct dwarf2_per_objfile *dwarf2_per_objfile,
3144                            struct mapped_index *index)
3145 {
3146   struct objfile *objfile = dwarf2_per_objfile->objfile;
3147   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3148   const gdb_byte *iter, *end;
3149   struct addrmap *mutable_map;
3150   CORE_ADDR baseaddr;
3151
3152   auto_obstack temp_obstack;
3153
3154   mutable_map = addrmap_create_mutable (&temp_obstack);
3155
3156   iter = index->address_table.data ();
3157   end = iter + index->address_table.size ();
3158
3159   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
3160
3161   while (iter < end)
3162     {
3163       ULONGEST hi, lo, cu_index;
3164       lo = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3165       iter += 8;
3166       hi = extract_unsigned_integer (iter, 8, BFD_ENDIAN_LITTLE);
3167       iter += 8;
3168       cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE);
3169       iter += 4;
3170
3171       if (lo > hi)
3172         {
3173           complaint (_(".gdb_index address table has invalid range (%s - %s)"),
3174                      hex_string (lo), hex_string (hi));
3175           continue;
3176         }
3177
3178       if (cu_index >= dwarf2_per_objfile->all_comp_units.size ())
3179         {
3180           complaint (_(".gdb_index address table has invalid CU number %u"),
3181                      (unsigned) cu_index);
3182           continue;
3183         }
3184
3185       lo = gdbarch_adjust_dwarf2_addr (gdbarch, lo + baseaddr) - baseaddr;
3186       hi = gdbarch_adjust_dwarf2_addr (gdbarch, hi + baseaddr) - baseaddr;
3187       addrmap_set_empty (mutable_map, lo, hi - 1,
3188                          dwarf2_per_objfile->get_cu (cu_index));
3189     }
3190
3191   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3192                                                     &objfile->objfile_obstack);
3193 }
3194
3195 /* Read the address map data from DWARF-5 .debug_aranges, and use it to
3196    populate the objfile's psymtabs_addrmap.  */
3197
3198 static void
3199 create_addrmap_from_aranges (struct dwarf2_per_objfile *dwarf2_per_objfile,
3200                              struct dwarf2_section_info *section)
3201 {
3202   struct objfile *objfile = dwarf2_per_objfile->objfile;
3203   bfd *abfd = objfile->obfd;
3204   struct gdbarch *gdbarch = get_objfile_arch (objfile);
3205   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
3206                                        SECT_OFF_TEXT (objfile));
3207
3208   auto_obstack temp_obstack;
3209   addrmap *mutable_map = addrmap_create_mutable (&temp_obstack);
3210
3211   std::unordered_map<sect_offset,
3212                      dwarf2_per_cu_data *,
3213                      gdb::hash_enum<sect_offset>>
3214     debug_info_offset_to_per_cu;
3215   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3216     {
3217       const auto insertpair
3218         = debug_info_offset_to_per_cu.emplace (per_cu->sect_off, per_cu);
3219       if (!insertpair.second)
3220         {
3221           warning (_("Section .debug_aranges in %s has duplicate "
3222                      "debug_info_offset %s, ignoring .debug_aranges."),
3223                    objfile_name (objfile), sect_offset_str (per_cu->sect_off));
3224           return;
3225         }
3226     }
3227
3228   dwarf2_read_section (objfile, section);
3229
3230   const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch);
3231
3232   const gdb_byte *addr = section->buffer;
3233
3234   while (addr < section->buffer + section->size)
3235     {
3236       const gdb_byte *const entry_addr = addr;
3237       unsigned int bytes_read;
3238
3239       const LONGEST entry_length = read_initial_length (abfd, addr,
3240                                                         &bytes_read);
3241       addr += bytes_read;
3242
3243       const gdb_byte *const entry_end = addr + entry_length;
3244       const bool dwarf5_is_dwarf64 = bytes_read != 4;
3245       const uint8_t offset_size = dwarf5_is_dwarf64 ? 8 : 4;
3246       if (addr + entry_length > section->buffer + section->size)
3247         {
3248           warning (_("Section .debug_aranges in %s entry at offset %zu "
3249                      "length %s exceeds section length %s, "
3250                      "ignoring .debug_aranges."),
3251                    objfile_name (objfile), entry_addr - section->buffer,
3252                    plongest (bytes_read + entry_length),
3253                    pulongest (section->size));
3254           return;
3255         }
3256
3257       /* The version number.  */
3258       const uint16_t version = read_2_bytes (abfd, addr);
3259       addr += 2;
3260       if (version != 2)
3261         {
3262           warning (_("Section .debug_aranges in %s entry at offset %zu "
3263                      "has unsupported version %d, ignoring .debug_aranges."),
3264                    objfile_name (objfile), entry_addr - section->buffer,
3265                    version);
3266           return;
3267         }
3268
3269       const uint64_t debug_info_offset
3270         = extract_unsigned_integer (addr, offset_size, dwarf5_byte_order);
3271       addr += offset_size;
3272       const auto per_cu_it
3273         = debug_info_offset_to_per_cu.find (sect_offset (debug_info_offset));
3274       if (per_cu_it == debug_info_offset_to_per_cu.cend ())
3275         {
3276           warning (_("Section .debug_aranges in %s entry at offset %zu "
3277                      "debug_info_offset %s does not exists, "
3278                      "ignoring .debug_aranges."),
3279                    objfile_name (objfile), entry_addr - section->buffer,
3280                    pulongest (debug_info_offset));
3281           return;
3282         }
3283       dwarf2_per_cu_data *const per_cu = per_cu_it->second;
3284
3285       const uint8_t address_size = *addr++;
3286       if (address_size < 1 || address_size > 8)
3287         {
3288           warning (_("Section .debug_aranges in %s entry at offset %zu "
3289                      "address_size %u is invalid, ignoring .debug_aranges."),
3290                    objfile_name (objfile), entry_addr - section->buffer,
3291                    address_size);
3292           return;
3293         }
3294
3295       const uint8_t segment_selector_size = *addr++;
3296       if (segment_selector_size != 0)
3297         {
3298           warning (_("Section .debug_aranges in %s entry at offset %zu "
3299                      "segment_selector_size %u is not supported, "
3300                      "ignoring .debug_aranges."),
3301                    objfile_name (objfile), entry_addr - section->buffer,
3302                    segment_selector_size);
3303           return;
3304         }
3305
3306       /* Must pad to an alignment boundary that is twice the address
3307          size.  It is undocumented by the DWARF standard but GCC does
3308          use it.  */
3309       for (size_t padding = ((-(addr - section->buffer))
3310                              & (2 * address_size - 1));
3311            padding > 0; padding--)
3312         if (*addr++ != 0)
3313           {
3314             warning (_("Section .debug_aranges in %s entry at offset %zu "
3315                        "padding is not zero, ignoring .debug_aranges."),
3316                      objfile_name (objfile), entry_addr - section->buffer);
3317             return;
3318           }
3319
3320       for (;;)
3321         {
3322           if (addr + 2 * address_size > entry_end)
3323             {
3324               warning (_("Section .debug_aranges in %s entry at offset %zu "
3325                          "address list is not properly terminated, "
3326                          "ignoring .debug_aranges."),
3327                        objfile_name (objfile), entry_addr - section->buffer);
3328               return;
3329             }
3330           ULONGEST start = extract_unsigned_integer (addr, address_size,
3331                                                      dwarf5_byte_order);
3332           addr += address_size;
3333           ULONGEST length = extract_unsigned_integer (addr, address_size,
3334                                                       dwarf5_byte_order);
3335           addr += address_size;
3336           if (start == 0 && length == 0)
3337             break;
3338           if (start == 0 && !dwarf2_per_objfile->has_section_at_zero)
3339             {
3340               /* Symbol was eliminated due to a COMDAT group.  */
3341               continue;
3342             }
3343           ULONGEST end = start + length;
3344           start = (gdbarch_adjust_dwarf2_addr (gdbarch, start + baseaddr)
3345                    - baseaddr);
3346           end = (gdbarch_adjust_dwarf2_addr (gdbarch, end + baseaddr)
3347                  - baseaddr);
3348           addrmap_set_empty (mutable_map, start, end - 1, per_cu);
3349         }
3350     }
3351
3352   objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,
3353                                                     &objfile->objfile_obstack);
3354 }
3355
3356 /* Find a slot in the mapped index INDEX for the object named NAME.
3357    If NAME is found, set *VEC_OUT to point to the CU vector in the
3358    constant pool and return true.  If NAME cannot be found, return
3359    false.  */
3360
3361 static bool
3362 find_slot_in_mapped_hash (struct mapped_index *index, const char *name,
3363                           offset_type **vec_out)
3364 {
3365   offset_type hash;
3366   offset_type slot, step;
3367   int (*cmp) (const char *, const char *);
3368
3369   gdb::unique_xmalloc_ptr<char> without_params;
3370   if (current_language->la_language == language_cplus
3371       || current_language->la_language == language_fortran
3372       || current_language->la_language == language_d)
3373     {
3374       /* NAME is already canonical.  Drop any qualifiers as .gdb_index does
3375          not contain any.  */
3376
3377       if (strchr (name, '(') != NULL)
3378         {
3379           without_params = cp_remove_params (name);
3380
3381           if (without_params != NULL)
3382             name = without_params.get ();
3383         }
3384     }
3385
3386   /* Index version 4 did not support case insensitive searches.  But the
3387      indices for case insensitive languages are built in lowercase, therefore
3388      simulate our NAME being searched is also lowercased.  */
3389   hash = mapped_index_string_hash ((index->version == 4
3390                                     && case_sensitivity == case_sensitive_off
3391                                     ? 5 : index->version),
3392                                    name);
3393
3394   slot = hash & (index->symbol_table.size () - 1);
3395   step = ((hash * 17) & (index->symbol_table.size () - 1)) | 1;
3396   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
3397
3398   for (;;)
3399     {
3400       const char *str;
3401
3402       const auto &bucket = index->symbol_table[slot];
3403       if (bucket.name == 0 && bucket.vec == 0)
3404         return false;
3405
3406       str = index->constant_pool + MAYBE_SWAP (bucket.name);
3407       if (!cmp (name, str))
3408         {
3409           *vec_out = (offset_type *) (index->constant_pool
3410                                       + MAYBE_SWAP (bucket.vec));
3411           return true;
3412         }
3413
3414       slot = (slot + step) & (index->symbol_table.size () - 1);
3415     }
3416 }
3417
3418 /* A helper function that reads the .gdb_index from BUFFER and fills
3419    in MAP.  FILENAME is the name of the file containing the data;
3420    it is used for error reporting.  DEPRECATED_OK is true if it is
3421    ok to use deprecated sections.
3422
3423    CU_LIST, CU_LIST_ELEMENTS, TYPES_LIST, and TYPES_LIST_ELEMENTS are
3424    out parameters that are filled in with information about the CU and
3425    TU lists in the section.
3426
3427    Returns true if all went well, false otherwise.  */
3428
3429 static bool
3430 read_gdb_index_from_buffer (struct objfile *objfile,
3431                             const char *filename,
3432                             bool deprecated_ok,
3433                             gdb::array_view<const gdb_byte> buffer,
3434                             struct mapped_index *map,
3435                             const gdb_byte **cu_list,
3436                             offset_type *cu_list_elements,
3437                             const gdb_byte **types_list,
3438                             offset_type *types_list_elements)
3439 {
3440   const gdb_byte *addr = &buffer[0];
3441
3442   /* Version check.  */
3443   offset_type version = MAYBE_SWAP (*(offset_type *) addr);
3444   /* Versions earlier than 3 emitted every copy of a psymbol.  This
3445      causes the index to behave very poorly for certain requests.  Version 3
3446      contained incomplete addrmap.  So, it seems better to just ignore such
3447      indices.  */
3448   if (version < 4)
3449     {
3450       static int warning_printed = 0;
3451       if (!warning_printed)
3452         {
3453           warning (_("Skipping obsolete .gdb_index section in %s."),
3454                    filename);
3455           warning_printed = 1;
3456         }
3457       return 0;
3458     }
3459   /* Index version 4 uses a different hash function than index version
3460      5 and later.
3461
3462      Versions earlier than 6 did not emit psymbols for inlined
3463      functions.  Using these files will cause GDB not to be able to
3464      set breakpoints on inlined functions by name, so we ignore these
3465      indices unless the user has done
3466      "set use-deprecated-index-sections on".  */
3467   if (version < 6 && !deprecated_ok)
3468     {
3469       static int warning_printed = 0;
3470       if (!warning_printed)
3471         {
3472           warning (_("\
3473 Skipping deprecated .gdb_index section in %s.\n\
3474 Do \"set use-deprecated-index-sections on\" before the file is read\n\
3475 to use the section anyway."),
3476                    filename);
3477           warning_printed = 1;
3478         }
3479       return 0;
3480     }
3481   /* Version 7 indices generated by gold refer to the CU for a symbol instead
3482      of the TU (for symbols coming from TUs),
3483      http://sourceware.org/bugzilla/show_bug.cgi?id=15021.
3484      Plus gold-generated indices can have duplicate entries for global symbols,
3485      http://sourceware.org/bugzilla/show_bug.cgi?id=15646.
3486      These are just performance bugs, and we can't distinguish gdb-generated
3487      indices from gold-generated ones, so issue no warning here.  */
3488
3489   /* Indexes with higher version than the one supported by GDB may be no
3490      longer backward compatible.  */
3491   if (version > 8)
3492     return 0;
3493
3494   map->version = version;
3495
3496   offset_type *metadata = (offset_type *) (addr + sizeof (offset_type));
3497
3498   int i = 0;
3499   *cu_list = addr + MAYBE_SWAP (metadata[i]);
3500   *cu_list_elements = ((MAYBE_SWAP (metadata[i + 1]) - MAYBE_SWAP (metadata[i]))
3501                        / 8);
3502   ++i;
3503
3504   *types_list = addr + MAYBE_SWAP (metadata[i]);
3505   *types_list_elements = ((MAYBE_SWAP (metadata[i + 1])
3506                            - MAYBE_SWAP (metadata[i]))
3507                           / 8);
3508   ++i;
3509
3510   const gdb_byte *address_table = addr + MAYBE_SWAP (metadata[i]);
3511   const gdb_byte *address_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3512   map->address_table
3513     = gdb::array_view<const gdb_byte> (address_table, address_table_end);
3514   ++i;
3515
3516   const gdb_byte *symbol_table = addr + MAYBE_SWAP (metadata[i]);
3517   const gdb_byte *symbol_table_end = addr + MAYBE_SWAP (metadata[i + 1]);
3518   map->symbol_table
3519     = gdb::array_view<mapped_index::symbol_table_slot>
3520        ((mapped_index::symbol_table_slot *) symbol_table,
3521         (mapped_index::symbol_table_slot *) symbol_table_end);
3522
3523   ++i;
3524   map->constant_pool = (char *) (addr + MAYBE_SWAP (metadata[i]));
3525
3526   return 1;
3527 }
3528
3529 /* Callback types for dwarf2_read_gdb_index.  */
3530
3531 typedef gdb::function_view
3532     <gdb::array_view<const gdb_byte>(objfile *, dwarf2_per_objfile *)>
3533     get_gdb_index_contents_ftype;
3534 typedef gdb::function_view
3535     <gdb::array_view<const gdb_byte>(objfile *, dwz_file *)>
3536     get_gdb_index_contents_dwz_ftype;
3537
3538 /* Read .gdb_index.  If everything went ok, initialize the "quick"
3539    elements of all the CUs and return 1.  Otherwise, return 0.  */
3540
3541 static int
3542 dwarf2_read_gdb_index
3543   (struct dwarf2_per_objfile *dwarf2_per_objfile,
3544    get_gdb_index_contents_ftype get_gdb_index_contents,
3545    get_gdb_index_contents_dwz_ftype get_gdb_index_contents_dwz)
3546 {
3547   const gdb_byte *cu_list, *types_list, *dwz_list = NULL;
3548   offset_type cu_list_elements, types_list_elements, dwz_list_elements = 0;
3549   struct dwz_file *dwz;
3550   struct objfile *objfile = dwarf2_per_objfile->objfile;
3551
3552   gdb::array_view<const gdb_byte> main_index_contents
3553     = get_gdb_index_contents (objfile, dwarf2_per_objfile);
3554
3555   if (main_index_contents.empty ())
3556     return 0;
3557
3558   std::unique_ptr<struct mapped_index> map (new struct mapped_index);
3559   if (!read_gdb_index_from_buffer (objfile, objfile_name (objfile),
3560                                    use_deprecated_index_sections,
3561                                    main_index_contents, map.get (), &cu_list,
3562                                    &cu_list_elements, &types_list,
3563                                    &types_list_elements))
3564     return 0;
3565
3566   /* Don't use the index if it's empty.  */
3567   if (map->symbol_table.empty ())
3568     return 0;
3569
3570   /* If there is a .dwz file, read it so we can get its CU list as
3571      well.  */
3572   dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
3573   if (dwz != NULL)
3574     {
3575       struct mapped_index dwz_map;
3576       const gdb_byte *dwz_types_ignore;
3577       offset_type dwz_types_elements_ignore;
3578
3579       gdb::array_view<const gdb_byte> dwz_index_content
3580         = get_gdb_index_contents_dwz (objfile, dwz);
3581
3582       if (dwz_index_content.empty ())
3583         return 0;
3584
3585       if (!read_gdb_index_from_buffer (objfile,
3586                                        bfd_get_filename (dwz->dwz_bfd), 1,
3587                                        dwz_index_content, &dwz_map,
3588                                        &dwz_list, &dwz_list_elements,
3589                                        &dwz_types_ignore,
3590                                        &dwz_types_elements_ignore))
3591         {
3592           warning (_("could not read '.gdb_index' section from %s; skipping"),
3593                    bfd_get_filename (dwz->dwz_bfd));
3594           return 0;
3595         }
3596     }
3597
3598   create_cus_from_index (dwarf2_per_objfile, cu_list, cu_list_elements,
3599                          dwz_list, dwz_list_elements);
3600
3601   if (types_list_elements)
3602     {
3603       struct dwarf2_section_info *section;
3604
3605       /* We can only handle a single .debug_types when we have an
3606          index.  */
3607       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
3608         return 0;
3609
3610       section = VEC_index (dwarf2_section_info_def,
3611                            dwarf2_per_objfile->types, 0);
3612
3613       create_signatured_type_table_from_index (dwarf2_per_objfile, section,
3614                                                types_list, types_list_elements);
3615     }
3616
3617   create_addrmap_from_index (dwarf2_per_objfile, map.get ());
3618
3619   dwarf2_per_objfile->index_table = std::move (map);
3620   dwarf2_per_objfile->using_index = 1;
3621   dwarf2_per_objfile->quick_file_names_table =
3622     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
3623
3624   return 1;
3625 }
3626
3627 /* die_reader_func for dw2_get_file_names.  */
3628
3629 static void
3630 dw2_get_file_names_reader (const struct die_reader_specs *reader,
3631                            const gdb_byte *info_ptr,
3632                            struct die_info *comp_unit_die,
3633                            int has_children,
3634                            void *data)
3635 {
3636   struct dwarf2_cu *cu = reader->cu;
3637   struct dwarf2_per_cu_data *this_cu = cu->per_cu;
3638   struct dwarf2_per_objfile *dwarf2_per_objfile
3639     = cu->per_cu->dwarf2_per_objfile;
3640   struct objfile *objfile = dwarf2_per_objfile->objfile;
3641   struct dwarf2_per_cu_data *lh_cu;
3642   struct attribute *attr;
3643   int i;
3644   void **slot;
3645   struct quick_file_names *qfn;
3646
3647   gdb_assert (! this_cu->is_debug_types);
3648
3649   /* Our callers never want to match partial units -- instead they
3650      will match the enclosing full CU.  */
3651   if (comp_unit_die->tag == DW_TAG_partial_unit)
3652     {
3653       this_cu->v.quick->no_file_data = 1;
3654       return;
3655     }
3656
3657   lh_cu = this_cu;
3658   slot = NULL;
3659
3660   line_header_up lh;
3661   sect_offset line_offset {};
3662
3663   attr = dwarf2_attr (comp_unit_die, DW_AT_stmt_list, cu);
3664   if (attr)
3665     {
3666       struct quick_file_names find_entry;
3667
3668       line_offset = (sect_offset) DW_UNSND (attr);
3669
3670       /* We may have already read in this line header (TU line header sharing).
3671          If we have we're done.  */
3672       find_entry.hash.dwo_unit = cu->dwo_unit;
3673       find_entry.hash.line_sect_off = line_offset;
3674       slot = htab_find_slot (dwarf2_per_objfile->quick_file_names_table,
3675                              &find_entry, INSERT);
3676       if (*slot != NULL)
3677         {
3678           lh_cu->v.quick->file_names = (struct quick_file_names *) *slot;
3679           return;
3680         }
3681
3682       lh = dwarf_decode_line_header (line_offset, cu);
3683     }
3684   if (lh == NULL)
3685     {
3686       lh_cu->v.quick->no_file_data = 1;
3687       return;
3688     }
3689
3690   qfn = XOBNEW (&objfile->objfile_obstack, struct quick_file_names);
3691   qfn->hash.dwo_unit = cu->dwo_unit;
3692   qfn->hash.line_sect_off = line_offset;
3693   gdb_assert (slot != NULL);
3694   *slot = qfn;
3695
3696   file_and_directory fnd = find_file_and_directory (comp_unit_die, cu);
3697
3698   qfn->num_file_names = lh->file_names.size ();
3699   qfn->file_names =
3700     XOBNEWVEC (&objfile->objfile_obstack, const char *, lh->file_names.size ());
3701   for (i = 0; i < lh->file_names.size (); ++i)
3702     qfn->file_names[i] = file_full_name (i + 1, lh.get (), fnd.comp_dir);
3703   qfn->real_names = NULL;
3704
3705   lh_cu->v.quick->file_names = qfn;
3706 }
3707
3708 /* A helper for the "quick" functions which attempts to read the line
3709    table for THIS_CU.  */
3710
3711 static struct quick_file_names *
3712 dw2_get_file_names (struct dwarf2_per_cu_data *this_cu)
3713 {
3714   /* This should never be called for TUs.  */
3715   gdb_assert (! this_cu->is_debug_types);
3716   /* Nor type unit groups.  */
3717   gdb_assert (! IS_TYPE_UNIT_GROUP (this_cu));
3718
3719   if (this_cu->v.quick->file_names != NULL)
3720     return this_cu->v.quick->file_names;
3721   /* If we know there is no line data, no point in looking again.  */
3722   if (this_cu->v.quick->no_file_data)
3723     return NULL;
3724
3725   init_cutu_and_read_dies_simple (this_cu, dw2_get_file_names_reader, NULL);
3726
3727   if (this_cu->v.quick->no_file_data)
3728     return NULL;
3729   return this_cu->v.quick->file_names;
3730 }
3731
3732 /* A helper for the "quick" functions which computes and caches the
3733    real path for a given file name from the line table.  */
3734
3735 static const char *
3736 dw2_get_real_path (struct objfile *objfile,
3737                    struct quick_file_names *qfn, int index)
3738 {
3739   if (qfn->real_names == NULL)
3740     qfn->real_names = OBSTACK_CALLOC (&objfile->objfile_obstack,
3741                                       qfn->num_file_names, const char *);
3742
3743   if (qfn->real_names[index] == NULL)
3744     qfn->real_names[index] = gdb_realpath (qfn->file_names[index]).release ();
3745
3746   return qfn->real_names[index];
3747 }
3748
3749 static struct symtab *
3750 dw2_find_last_source_symtab (struct objfile *objfile)
3751 {
3752   struct dwarf2_per_objfile *dwarf2_per_objfile
3753     = get_dwarf2_per_objfile (objfile);
3754   dwarf2_per_cu_data *dwarf_cu = dwarf2_per_objfile->all_comp_units.back ();
3755   compunit_symtab *cust = dw2_instantiate_symtab (dwarf_cu, false);
3756
3757   if (cust == NULL)
3758     return NULL;
3759
3760   return compunit_primary_filetab (cust);
3761 }
3762
3763 /* Traversal function for dw2_forget_cached_source_info.  */
3764
3765 static int
3766 dw2_free_cached_file_names (void **slot, void *info)
3767 {
3768   struct quick_file_names *file_data = (struct quick_file_names *) *slot;
3769
3770   if (file_data->real_names)
3771     {
3772       int i;
3773
3774       for (i = 0; i < file_data->num_file_names; ++i)
3775         {
3776           xfree ((void*) file_data->real_names[i]);
3777           file_data->real_names[i] = NULL;
3778         }
3779     }
3780
3781   return 1;
3782 }
3783
3784 static void
3785 dw2_forget_cached_source_info (struct objfile *objfile)
3786 {
3787   struct dwarf2_per_objfile *dwarf2_per_objfile
3788     = get_dwarf2_per_objfile (objfile);
3789
3790   htab_traverse_noresize (dwarf2_per_objfile->quick_file_names_table,
3791                           dw2_free_cached_file_names, NULL);
3792 }
3793
3794 /* Helper function for dw2_map_symtabs_matching_filename that expands
3795    the symtabs and calls the iterator.  */
3796
3797 static int
3798 dw2_map_expand_apply (struct objfile *objfile,
3799                       struct dwarf2_per_cu_data *per_cu,
3800                       const char *name, const char *real_path,
3801                       gdb::function_view<bool (symtab *)> callback)
3802 {
3803   struct compunit_symtab *last_made = objfile->compunit_symtabs;
3804
3805   /* Don't visit already-expanded CUs.  */
3806   if (per_cu->v.quick->compunit_symtab)
3807     return 0;
3808
3809   /* This may expand more than one symtab, and we want to iterate over
3810      all of them.  */
3811   dw2_instantiate_symtab (per_cu, false);
3812
3813   return iterate_over_some_symtabs (name, real_path, objfile->compunit_symtabs,
3814                                     last_made, callback);
3815 }
3816
3817 /* Implementation of the map_symtabs_matching_filename method.  */
3818
3819 static bool
3820 dw2_map_symtabs_matching_filename
3821   (struct objfile *objfile, const char *name, const char *real_path,
3822    gdb::function_view<bool (symtab *)> callback)
3823 {
3824   const char *name_basename = lbasename (name);
3825   struct dwarf2_per_objfile *dwarf2_per_objfile
3826     = get_dwarf2_per_objfile (objfile);
3827
3828   /* The rule is CUs specify all the files, including those used by
3829      any TU, so there's no need to scan TUs here.  */
3830
3831   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
3832     {
3833       /* We only need to look at symtabs not already expanded.  */
3834       if (per_cu->v.quick->compunit_symtab)
3835         continue;
3836
3837       quick_file_names *file_data = dw2_get_file_names (per_cu);
3838       if (file_data == NULL)
3839         continue;
3840
3841       for (int j = 0; j < file_data->num_file_names; ++j)
3842         {
3843           const char *this_name = file_data->file_names[j];
3844           const char *this_real_name;
3845
3846           if (compare_filenames_for_search (this_name, name))
3847             {
3848               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3849                                         callback))
3850                 return true;
3851               continue;
3852             }
3853
3854           /* Before we invoke realpath, which can get expensive when many
3855              files are involved, do a quick comparison of the basenames.  */
3856           if (! basenames_may_differ
3857               && FILENAME_CMP (lbasename (this_name), name_basename) != 0)
3858             continue;
3859
3860           this_real_name = dw2_get_real_path (objfile, file_data, j);
3861           if (compare_filenames_for_search (this_real_name, name))
3862             {
3863               if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3864                                         callback))
3865                 return true;
3866               continue;
3867             }
3868
3869           if (real_path != NULL)
3870             {
3871               gdb_assert (IS_ABSOLUTE_PATH (real_path));
3872               gdb_assert (IS_ABSOLUTE_PATH (name));
3873               if (this_real_name != NULL
3874                   && FILENAME_CMP (real_path, this_real_name) == 0)
3875                 {
3876                   if (dw2_map_expand_apply (objfile, per_cu, name, real_path,
3877                                             callback))
3878                     return true;
3879                   continue;
3880                 }
3881             }
3882         }
3883     }
3884
3885   return false;
3886 }
3887
3888 /* Struct used to manage iterating over all CUs looking for a symbol.  */
3889
3890 struct dw2_symtab_iterator
3891 {
3892   /* The dwarf2_per_objfile owning the CUs we are iterating on.  */
3893   struct dwarf2_per_objfile *dwarf2_per_objfile;
3894   /* If non-zero, only look for symbols that match BLOCK_INDEX.  */
3895   int want_specific_block;
3896   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
3897      Unused if !WANT_SPECIFIC_BLOCK.  */
3898   int block_index;
3899   /* The kind of symbol we're looking for.  */
3900   domain_enum domain;
3901   /* The list of CUs from the index entry of the symbol,
3902      or NULL if not found.  */
3903   offset_type *vec;
3904   /* The next element in VEC to look at.  */
3905   int next;
3906   /* The number of elements in VEC, or zero if there is no match.  */
3907   int length;
3908   /* Have we seen a global version of the symbol?
3909      If so we can ignore all further global instances.
3910      This is to work around gold/15646, inefficient gold-generated
3911      indices.  */
3912   int global_seen;
3913 };
3914
3915 /* Initialize the index symtab iterator ITER.
3916    If WANT_SPECIFIC_BLOCK is non-zero, only look for symbols
3917    in block BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
3918
3919 static void
3920 dw2_symtab_iter_init (struct dw2_symtab_iterator *iter,
3921                       struct dwarf2_per_objfile *dwarf2_per_objfile,
3922                       int want_specific_block,
3923                       int block_index,
3924                       domain_enum domain,
3925                       const char *name)
3926 {
3927   iter->dwarf2_per_objfile = dwarf2_per_objfile;
3928   iter->want_specific_block = want_specific_block;
3929   iter->block_index = block_index;
3930   iter->domain = domain;
3931   iter->next = 0;
3932   iter->global_seen = 0;
3933
3934   mapped_index *index = dwarf2_per_objfile->index_table.get ();
3935
3936   /* index is NULL if OBJF_READNOW.  */
3937   if (index != NULL && find_slot_in_mapped_hash (index, name, &iter->vec))
3938     iter->length = MAYBE_SWAP (*iter->vec);
3939   else
3940     {
3941       iter->vec = NULL;
3942       iter->length = 0;
3943     }
3944 }
3945
3946 /* Return the next matching CU or NULL if there are no more.  */
3947
3948 static struct dwarf2_per_cu_data *
3949 dw2_symtab_iter_next (struct dw2_symtab_iterator *iter)
3950 {
3951   struct dwarf2_per_objfile *dwarf2_per_objfile = iter->dwarf2_per_objfile;
3952
3953   for ( ; iter->next < iter->length; ++iter->next)
3954     {
3955       offset_type cu_index_and_attrs =
3956         MAYBE_SWAP (iter->vec[iter->next + 1]);
3957       offset_type cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
3958       int want_static = iter->block_index != GLOBAL_BLOCK;
3959       /* This value is only valid for index versions >= 7.  */
3960       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
3961       gdb_index_symbol_kind symbol_kind =
3962         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
3963       /* Only check the symbol attributes if they're present.
3964          Indices prior to version 7 don't record them,
3965          and indices >= 7 may elide them for certain symbols
3966          (gold does this).  */
3967       int attrs_valid =
3968         (dwarf2_per_objfile->index_table->version >= 7
3969          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
3970
3971       /* Don't crash on bad data.  */
3972       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
3973                        + dwarf2_per_objfile->all_type_units.size ()))
3974         {
3975           complaint (_(".gdb_index entry has bad CU index"
3976                        " [in module %s]"),
3977                      objfile_name (dwarf2_per_objfile->objfile));
3978           continue;
3979         }
3980
3981       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
3982
3983       /* Skip if already read in.  */
3984       if (per_cu->v.quick->compunit_symtab)
3985         continue;
3986
3987       /* Check static vs global.  */
3988       if (attrs_valid)
3989         {
3990           if (iter->want_specific_block
3991               && want_static != is_static)
3992             continue;
3993           /* Work around gold/15646.  */
3994           if (!is_static && iter->global_seen)
3995             continue;
3996           if (!is_static)
3997             iter->global_seen = 1;
3998         }
3999
4000       /* Only check the symbol's kind if it has one.  */
4001       if (attrs_valid)
4002         {
4003           switch (iter->domain)
4004             {
4005             case VAR_DOMAIN:
4006               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE
4007                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION
4008                   /* Some types are also in VAR_DOMAIN.  */
4009                   && symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4010                 continue;
4011               break;
4012             case STRUCT_DOMAIN:
4013               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
4014                 continue;
4015               break;
4016             case LABEL_DOMAIN:
4017               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_OTHER)
4018                 continue;
4019               break;
4020             default:
4021               break;
4022             }
4023         }
4024
4025       ++iter->next;
4026       return per_cu;
4027     }
4028
4029   return NULL;
4030 }
4031
4032 static struct compunit_symtab *
4033 dw2_lookup_symbol (struct objfile *objfile, int block_index,
4034                    const char *name, domain_enum domain)
4035 {
4036   struct compunit_symtab *stab_best = NULL;
4037   struct dwarf2_per_objfile *dwarf2_per_objfile
4038     = get_dwarf2_per_objfile (objfile);
4039
4040   lookup_name_info lookup_name (name, symbol_name_match_type::FULL);
4041
4042   struct dw2_symtab_iterator iter;
4043   struct dwarf2_per_cu_data *per_cu;
4044
4045   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 1, block_index, domain, name);
4046
4047   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4048     {
4049       struct symbol *sym, *with_opaque = NULL;
4050       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
4051       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
4052       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
4053
4054       sym = block_find_symbol (block, name, domain,
4055                                block_find_non_opaque_type_preferred,
4056                                &with_opaque);
4057
4058       /* Some caution must be observed with overloaded functions
4059          and methods, since the index will not contain any overload
4060          information (but NAME might contain it).  */
4061
4062       if (sym != NULL
4063           && SYMBOL_MATCHES_SEARCH_NAME (sym, lookup_name))
4064         return stab;
4065       if (with_opaque != NULL
4066           && SYMBOL_MATCHES_SEARCH_NAME (with_opaque, lookup_name))
4067         stab_best = stab;
4068
4069       /* Keep looking through other CUs.  */
4070     }
4071
4072   return stab_best;
4073 }
4074
4075 static void
4076 dw2_print_stats (struct objfile *objfile)
4077 {
4078   struct dwarf2_per_objfile *dwarf2_per_objfile
4079     = get_dwarf2_per_objfile (objfile);
4080   int total = (dwarf2_per_objfile->all_comp_units.size ()
4081                + dwarf2_per_objfile->all_type_units.size ());
4082   int count = 0;
4083
4084   for (int i = 0; i < total; ++i)
4085     {
4086       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4087
4088       if (!per_cu->v.quick->compunit_symtab)
4089         ++count;
4090     }
4091   printf_filtered (_("  Number of read CUs: %d\n"), total - count);
4092   printf_filtered (_("  Number of unread CUs: %d\n"), count);
4093 }
4094
4095 /* This dumps minimal information about the index.
4096    It is called via "mt print objfiles".
4097    One use is to verify .gdb_index has been loaded by the
4098    gdb.dwarf2/gdb-index.exp testcase.  */
4099
4100 static void
4101 dw2_dump (struct objfile *objfile)
4102 {
4103   struct dwarf2_per_objfile *dwarf2_per_objfile
4104     = get_dwarf2_per_objfile (objfile);
4105
4106   gdb_assert (dwarf2_per_objfile->using_index);
4107   printf_filtered (".gdb_index:");
4108   if (dwarf2_per_objfile->index_table != NULL)
4109     {
4110       printf_filtered (" version %d\n",
4111                        dwarf2_per_objfile->index_table->version);
4112     }
4113   else
4114     printf_filtered (" faked for \"readnow\"\n");
4115   printf_filtered ("\n");
4116 }
4117
4118 static void
4119 dw2_expand_symtabs_for_function (struct objfile *objfile,
4120                                  const char *func_name)
4121 {
4122   struct dwarf2_per_objfile *dwarf2_per_objfile
4123     = get_dwarf2_per_objfile (objfile);
4124
4125   struct dw2_symtab_iterator iter;
4126   struct dwarf2_per_cu_data *per_cu;
4127
4128   /* Note: It doesn't matter what we pass for block_index here.  */
4129   dw2_symtab_iter_init (&iter, dwarf2_per_objfile, 0, GLOBAL_BLOCK, VAR_DOMAIN,
4130                         func_name);
4131
4132   while ((per_cu = dw2_symtab_iter_next (&iter)) != NULL)
4133     dw2_instantiate_symtab (per_cu, false);
4134
4135 }
4136
4137 static void
4138 dw2_expand_all_symtabs (struct objfile *objfile)
4139 {
4140   struct dwarf2_per_objfile *dwarf2_per_objfile
4141     = get_dwarf2_per_objfile (objfile);
4142   int total_units = (dwarf2_per_objfile->all_comp_units.size ()
4143                      + dwarf2_per_objfile->all_type_units.size ());
4144
4145   for (int i = 0; i < total_units; ++i)
4146     {
4147       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
4148
4149       /* We don't want to directly expand a partial CU, because if we
4150          read it with the wrong language, then assertion failures can
4151          be triggered later on.  See PR symtab/23010.  So, tell
4152          dw2_instantiate_symtab to skip partial CUs -- any important
4153          partial CU will be read via DW_TAG_imported_unit anyway.  */
4154       dw2_instantiate_symtab (per_cu, true);
4155     }
4156 }
4157
4158 static void
4159 dw2_expand_symtabs_with_fullname (struct objfile *objfile,
4160                                   const char *fullname)
4161 {
4162   struct dwarf2_per_objfile *dwarf2_per_objfile
4163     = get_dwarf2_per_objfile (objfile);
4164
4165   /* We don't need to consider type units here.
4166      This is only called for examining code, e.g. expand_line_sal.
4167      There can be an order of magnitude (or more) more type units
4168      than comp units, and we avoid them if we can.  */
4169
4170   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
4171     {
4172       /* We only need to look at symtabs not already expanded.  */
4173       if (per_cu->v.quick->compunit_symtab)
4174         continue;
4175
4176       quick_file_names *file_data = dw2_get_file_names (per_cu);
4177       if (file_data == NULL)
4178         continue;
4179
4180       for (int j = 0; j < file_data->num_file_names; ++j)
4181         {
4182           const char *this_fullname = file_data->file_names[j];
4183
4184           if (filename_cmp (this_fullname, fullname) == 0)
4185             {
4186               dw2_instantiate_symtab (per_cu, false);
4187               break;
4188             }
4189         }
4190     }
4191 }
4192
4193 static void
4194 dw2_map_matching_symbols (struct objfile *objfile,
4195                           const char * name, domain_enum domain,
4196                           int global,
4197                           int (*callback) (struct block *,
4198                                            struct symbol *, void *),
4199                           void *data, symbol_name_match_type match,
4200                           symbol_compare_ftype *ordered_compare)
4201 {
4202   /* Currently unimplemented; used for Ada.  The function can be called if the
4203      current language is Ada for a non-Ada objfile using GNU index.  As Ada
4204      does not look for non-Ada symbols this function should just return.  */
4205 }
4206
4207 /* Symbol name matcher for .gdb_index names.
4208
4209    Symbol names in .gdb_index have a few particularities:
4210
4211    - There's no indication of which is the language of each symbol.
4212
4213      Since each language has its own symbol name matching algorithm,
4214      and we don't know which language is the right one, we must match
4215      each symbol against all languages.  This would be a potential
4216      performance problem if it were not mitigated by the
4217      mapped_index::name_components lookup table, which significantly
4218      reduces the number of times we need to call into this matcher,
4219      making it a non-issue.
4220
4221    - Symbol names in the index have no overload (parameter)
4222      information.  I.e., in C++, "foo(int)" and "foo(long)" both
4223      appear as "foo" in the index, for example.
4224
4225      This means that the lookup names passed to the symbol name
4226      matcher functions must have no parameter information either
4227      because (e.g.) symbol search name "foo" does not match
4228      lookup-name "foo(int)" [while swapping search name for lookup
4229      name would match].
4230 */
4231 class gdb_index_symbol_name_matcher
4232 {
4233 public:
4234   /* Prepares the vector of comparison functions for LOOKUP_NAME.  */
4235   gdb_index_symbol_name_matcher (const lookup_name_info &lookup_name);
4236
4237   /* Walk all the matcher routines and match SYMBOL_NAME against them.
4238      Returns true if any matcher matches.  */
4239   bool matches (const char *symbol_name);
4240
4241 private:
4242   /* A reference to the lookup name we're matching against.  */
4243   const lookup_name_info &m_lookup_name;
4244
4245   /* A vector holding all the different symbol name matchers, for all
4246      languages.  */
4247   std::vector<symbol_name_matcher_ftype *> m_symbol_name_matcher_funcs;
4248 };
4249
4250 gdb_index_symbol_name_matcher::gdb_index_symbol_name_matcher
4251   (const lookup_name_info &lookup_name)
4252     : m_lookup_name (lookup_name)
4253 {
4254   /* Prepare the vector of comparison functions upfront, to avoid
4255      doing the same work for each symbol.  Care is taken to avoid
4256      matching with the same matcher more than once if/when multiple
4257      languages use the same matcher function.  */
4258   auto &matchers = m_symbol_name_matcher_funcs;
4259   matchers.reserve (nr_languages);
4260
4261   matchers.push_back (default_symbol_name_matcher);
4262
4263   for (int i = 0; i < nr_languages; i++)
4264     {
4265       const language_defn *lang = language_def ((enum language) i);
4266       symbol_name_matcher_ftype *name_matcher
4267         = get_symbol_name_matcher (lang, m_lookup_name);
4268
4269       /* Don't insert the same comparison routine more than once.
4270          Note that we do this linear walk instead of a seemingly
4271          cheaper sorted insert, or use a std::set or something like
4272          that, because relative order of function addresses is not
4273          stable.  This is not a problem in practice because the number
4274          of supported languages is low, and the cost here is tiny
4275          compared to the number of searches we'll do afterwards using
4276          this object.  */
4277       if (name_matcher != default_symbol_name_matcher
4278           && (std::find (matchers.begin (), matchers.end (), name_matcher)
4279               == matchers.end ()))
4280         matchers.push_back (name_matcher);
4281     }
4282 }
4283
4284 bool
4285 gdb_index_symbol_name_matcher::matches (const char *symbol_name)
4286 {
4287   for (auto matches_name : m_symbol_name_matcher_funcs)
4288     if (matches_name (symbol_name, m_lookup_name, NULL))
4289       return true;
4290
4291   return false;
4292 }
4293
4294 /* Starting from a search name, return the string that finds the upper
4295    bound of all strings that start with SEARCH_NAME in a sorted name
4296    list.  Returns the empty string to indicate that the upper bound is
4297    the end of the list.  */
4298
4299 static std::string
4300 make_sort_after_prefix_name (const char *search_name)
4301 {
4302   /* When looking to complete "func", we find the upper bound of all
4303      symbols that start with "func" by looking for where we'd insert
4304      the closest string that would follow "func" in lexicographical
4305      order.  Usually, that's "func"-with-last-character-incremented,
4306      i.e. "fund".  Mind non-ASCII characters, though.  Usually those
4307      will be UTF-8 multi-byte sequences, but we can't be certain.
4308      Especially mind the 0xff character, which is a valid character in
4309      non-UTF-8 source character sets (e.g. Latin1 'ÿ'), and we can't
4310      rule out compilers allowing it in identifiers.  Note that
4311      conveniently, strcmp/strcasecmp are specified to compare
4312      characters interpreted as unsigned char.  So what we do is treat
4313      the whole string as a base 256 number composed of a sequence of
4314      base 256 "digits" and add 1 to it.  I.e., adding 1 to 0xff wraps
4315      to 0, and carries 1 to the following more-significant position.
4316      If the very first character in SEARCH_NAME ends up incremented
4317      and carries/overflows, then the upper bound is the end of the
4318      list.  The string after the empty string is also the empty
4319      string.
4320
4321      Some examples of this operation:
4322
4323        SEARCH_NAME  => "+1" RESULT
4324
4325        "abc"              => "abd"
4326        "ab\xff"           => "ac"
4327        "\xff" "a" "\xff"  => "\xff" "b"
4328        "\xff"             => ""
4329        "\xff\xff"         => ""
4330        ""                 => ""
4331
4332      Then, with these symbols for example:
4333
4334       func
4335       func1
4336       fund
4337
4338      completing "func" looks for symbols between "func" and
4339      "func"-with-last-character-incremented, i.e. "fund" (exclusive),
4340      which finds "func" and "func1", but not "fund".
4341
4342      And with:
4343
4344       funcÿ     (Latin1 'ÿ' [0xff])
4345       funcÿ1
4346       fund
4347
4348      completing "funcÿ" looks for symbols between "funcÿ" and "fund"
4349      (exclusive), which finds "funcÿ" and "funcÿ1", but not "fund".
4350
4351      And with:
4352
4353       ÿÿ        (Latin1 'ÿ' [0xff])
4354       ÿÿ1
4355
4356      completing "ÿ" or "ÿÿ" looks for symbols between between "ÿÿ" and
4357      the end of the list.
4358   */
4359   std::string after = search_name;
4360   while (!after.empty () && (unsigned char) after.back () == 0xff)
4361     after.pop_back ();
4362   if (!after.empty ())
4363     after.back () = (unsigned char) after.back () + 1;
4364   return after;
4365 }
4366
4367 /* See declaration.  */
4368
4369 std::pair<std::vector<name_component>::const_iterator,
4370           std::vector<name_component>::const_iterator>
4371 mapped_index_base::find_name_components_bounds
4372   (const lookup_name_info &lookup_name_without_params) const
4373 {
4374   auto *name_cmp
4375     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4376
4377   const char *cplus
4378     = lookup_name_without_params.cplus ().lookup_name ().c_str ();
4379
4380   /* Comparison function object for lower_bound that matches against a
4381      given symbol name.  */
4382   auto lookup_compare_lower = [&] (const name_component &elem,
4383                                    const char *name)
4384     {
4385       const char *elem_qualified = this->symbol_name_at (elem.idx);
4386       const char *elem_name = elem_qualified + elem.name_offset;
4387       return name_cmp (elem_name, name) < 0;
4388     };
4389
4390   /* Comparison function object for upper_bound that matches against a
4391      given symbol name.  */
4392   auto lookup_compare_upper = [&] (const char *name,
4393                                    const name_component &elem)
4394     {
4395       const char *elem_qualified = this->symbol_name_at (elem.idx);
4396       const char *elem_name = elem_qualified + elem.name_offset;
4397       return name_cmp (name, elem_name) < 0;
4398     };
4399
4400   auto begin = this->name_components.begin ();
4401   auto end = this->name_components.end ();
4402
4403   /* Find the lower bound.  */
4404   auto lower = [&] ()
4405     {
4406       if (lookup_name_without_params.completion_mode () && cplus[0] == '\0')
4407         return begin;
4408       else
4409         return std::lower_bound (begin, end, cplus, lookup_compare_lower);
4410     } ();
4411
4412   /* Find the upper bound.  */
4413   auto upper = [&] ()
4414     {
4415       if (lookup_name_without_params.completion_mode ())
4416         {
4417           /* In completion mode, we want UPPER to point past all
4418              symbols names that have the same prefix.  I.e., with
4419              these symbols, and completing "func":
4420
4421               function        << lower bound
4422               function1
4423               other_function  << upper bound
4424
4425              We find the upper bound by looking for the insertion
4426              point of "func"-with-last-character-incremented,
4427              i.e. "fund".  */
4428           std::string after = make_sort_after_prefix_name (cplus);
4429           if (after.empty ())
4430             return end;
4431           return std::lower_bound (lower, end, after.c_str (),
4432                                    lookup_compare_lower);
4433         }
4434       else
4435         return std::upper_bound (lower, end, cplus, lookup_compare_upper);
4436     } ();
4437
4438   return {lower, upper};
4439 }
4440
4441 /* See declaration.  */
4442
4443 void
4444 mapped_index_base::build_name_components ()
4445 {
4446   if (!this->name_components.empty ())
4447     return;
4448
4449   this->name_components_casing = case_sensitivity;
4450   auto *name_cmp
4451     = this->name_components_casing == case_sensitive_on ? strcmp : strcasecmp;
4452
4453   /* The code below only knows how to break apart components of C++
4454      symbol names (and other languages that use '::' as
4455      namespace/module separator).  If we add support for wild matching
4456      to some language that uses some other operator (E.g., Ada, Go and
4457      D use '.'), then we'll need to try splitting the symbol name
4458      according to that language too.  Note that Ada does support wild
4459      matching, but doesn't currently support .gdb_index.  */
4460   auto count = this->symbol_name_count ();
4461   for (offset_type idx = 0; idx < count; idx++)
4462     {
4463       if (this->symbol_name_slot_invalid (idx))
4464         continue;
4465
4466       const char *name = this->symbol_name_at (idx);
4467
4468       /* Add each name component to the name component table.  */
4469       unsigned int previous_len = 0;
4470       for (unsigned int current_len = cp_find_first_component (name);
4471            name[current_len] != '\0';
4472            current_len += cp_find_first_component (name + current_len))
4473         {
4474           gdb_assert (name[current_len] == ':');
4475           this->name_components.push_back ({previous_len, idx});
4476           /* Skip the '::'.  */
4477           current_len += 2;
4478           previous_len = current_len;
4479         }
4480       this->name_components.push_back ({previous_len, idx});
4481     }
4482
4483   /* Sort name_components elements by name.  */
4484   auto name_comp_compare = [&] (const name_component &left,
4485                                 const name_component &right)
4486     {
4487       const char *left_qualified = this->symbol_name_at (left.idx);
4488       const char *right_qualified = this->symbol_name_at (right.idx);
4489
4490       const char *left_name = left_qualified + left.name_offset;
4491       const char *right_name = right_qualified + right.name_offset;
4492
4493       return name_cmp (left_name, right_name) < 0;
4494     };
4495
4496   std::sort (this->name_components.begin (),
4497              this->name_components.end (),
4498              name_comp_compare);
4499 }
4500
4501 /* Helper for dw2_expand_symtabs_matching that works with a
4502    mapped_index_base instead of the containing objfile.  This is split
4503    to a separate function in order to be able to unit test the
4504    name_components matching using a mock mapped_index_base.  For each
4505    symbol name that matches, calls MATCH_CALLBACK, passing it the
4506    symbol's index in the mapped_index_base symbol table.  */
4507
4508 static void
4509 dw2_expand_symtabs_matching_symbol
4510   (mapped_index_base &index,
4511    const lookup_name_info &lookup_name_in,
4512    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
4513    enum search_domain kind,
4514    gdb::function_view<void (offset_type)> match_callback)
4515 {
4516   lookup_name_info lookup_name_without_params
4517     = lookup_name_in.make_ignore_params ();
4518   gdb_index_symbol_name_matcher lookup_name_matcher
4519     (lookup_name_without_params);
4520
4521   /* Build the symbol name component sorted vector, if we haven't
4522      yet.  */
4523   index.build_name_components ();
4524
4525   auto bounds = index.find_name_components_bounds (lookup_name_without_params);
4526
4527   /* Now for each symbol name in range, check to see if we have a name
4528      match, and if so, call the MATCH_CALLBACK callback.  */
4529
4530   /* The same symbol may appear more than once in the range though.
4531      E.g., if we're looking for symbols that complete "w", and we have
4532      a symbol named "w1::w2", we'll find the two name components for
4533      that same symbol in the range.  To be sure we only call the
4534      callback once per symbol, we first collect the symbol name
4535      indexes that matched in a temporary vector and ignore
4536      duplicates.  */
4537   std::vector<offset_type> matches;
4538   matches.reserve (std::distance (bounds.first, bounds.second));
4539
4540   for (; bounds.first != bounds.second; ++bounds.first)
4541     {
4542       const char *qualified = index.symbol_name_at (bounds.first->idx);
4543
4544       if (!lookup_name_matcher.matches (qualified)
4545           || (symbol_matcher != NULL && !symbol_matcher (qualified)))
4546         continue;
4547
4548       matches.push_back (bounds.first->idx);
4549     }
4550
4551   std::sort (matches.begin (), matches.end ());
4552
4553   /* Finally call the callback, once per match.  */
4554   ULONGEST prev = -1;
4555   for (offset_type idx : matches)
4556     {
4557       if (prev != idx)
4558         {
4559           match_callback (idx);
4560           prev = idx;
4561         }
4562     }
4563
4564   /* Above we use a type wider than idx's for 'prev', since 0 and
4565      (offset_type)-1 are both possible values.  */
4566   static_assert (sizeof (prev) > sizeof (offset_type), "");
4567 }
4568
4569 #if GDB_SELF_TEST
4570
4571 namespace selftests { namespace dw2_expand_symtabs_matching {
4572
4573 /* A mock .gdb_index/.debug_names-like name index table, enough to
4574    exercise dw2_expand_symtabs_matching_symbol, which works with the
4575    mapped_index_base interface.  Builds an index from the symbol list
4576    passed as parameter to the constructor.  */
4577 class mock_mapped_index : public mapped_index_base
4578 {
4579 public:
4580   mock_mapped_index (gdb::array_view<const char *> symbols)
4581     : m_symbol_table (symbols)
4582   {}
4583
4584   DISABLE_COPY_AND_ASSIGN (mock_mapped_index);
4585
4586   /* Return the number of names in the symbol table.  */
4587   size_t symbol_name_count () const override
4588   {
4589     return m_symbol_table.size ();
4590   }
4591
4592   /* Get the name of the symbol at IDX in the symbol table.  */
4593   const char *symbol_name_at (offset_type idx) const override
4594   {
4595     return m_symbol_table[idx];
4596   }
4597
4598 private:
4599   gdb::array_view<const char *> m_symbol_table;
4600 };
4601
4602 /* Convenience function that converts a NULL pointer to a "<null>"
4603    string, to pass to print routines.  */
4604
4605 static const char *
4606 string_or_null (const char *str)
4607 {
4608   return str != NULL ? str : "<null>";
4609 }
4610
4611 /* Check if a lookup_name_info built from
4612    NAME/MATCH_TYPE/COMPLETION_MODE matches the symbols in the mock
4613    index.  EXPECTED_LIST is the list of expected matches, in expected
4614    matching order.  If no match expected, then an empty list is
4615    specified.  Returns true on success.  On failure prints a warning
4616    indicating the file:line that failed, and returns false.  */
4617
4618 static bool
4619 check_match (const char *file, int line,
4620              mock_mapped_index &mock_index,
4621              const char *name, symbol_name_match_type match_type,
4622              bool completion_mode,
4623              std::initializer_list<const char *> expected_list)
4624 {
4625   lookup_name_info lookup_name (name, match_type, completion_mode);
4626
4627   bool matched = true;
4628
4629   auto mismatch = [&] (const char *expected_str,
4630                        const char *got)
4631   {
4632     warning (_("%s:%d: match_type=%s, looking-for=\"%s\", "
4633                "expected=\"%s\", got=\"%s\"\n"),
4634              file, line,
4635              (match_type == symbol_name_match_type::FULL
4636               ? "FULL" : "WILD"),
4637              name, string_or_null (expected_str), string_or_null (got));
4638     matched = false;
4639   };
4640
4641   auto expected_it = expected_list.begin ();
4642   auto expected_end = expected_list.end ();
4643
4644   dw2_expand_symtabs_matching_symbol (mock_index, lookup_name,
4645                                       NULL, ALL_DOMAIN,
4646                                       [&] (offset_type idx)
4647   {
4648     const char *matched_name = mock_index.symbol_name_at (idx);
4649     const char *expected_str
4650       = expected_it == expected_end ? NULL : *expected_it++;
4651
4652     if (expected_str == NULL || strcmp (expected_str, matched_name) != 0)
4653       mismatch (expected_str, matched_name);
4654   });
4655
4656   const char *expected_str
4657   = expected_it == expected_end ? NULL : *expected_it++;
4658   if (expected_str != NULL)
4659     mismatch (expected_str, NULL);
4660
4661   return matched;
4662 }
4663
4664 /* The symbols added to the mock mapped_index for testing (in
4665    canonical form).  */
4666 static const char *test_symbols[] = {
4667   "function",
4668   "std::bar",
4669   "std::zfunction",
4670   "std::zfunction2",
4671   "w1::w2",
4672   "ns::foo<char*>",
4673   "ns::foo<int>",
4674   "ns::foo<long>",
4675   "ns2::tmpl<int>::foo2",
4676   "(anonymous namespace)::A::B::C",
4677
4678   /* These are used to check that the increment-last-char in the
4679      matching algorithm for completion doesn't match "t1_fund" when
4680      completing "t1_func".  */
4681   "t1_func",
4682   "t1_func1",
4683   "t1_fund",
4684   "t1_fund1",
4685
4686   /* A UTF-8 name with multi-byte sequences to make sure that
4687      cp-name-parser understands this as a single identifier ("função"
4688      is "function" in PT).  */
4689   u8"u8função",
4690
4691   /* \377 (0xff) is Latin1 'ÿ'.  */
4692   "yfunc\377",
4693
4694   /* \377 (0xff) is Latin1 'ÿ'.  */
4695   "\377",
4696   "\377\377123",
4697
4698   /* A name with all sorts of complications.  Starts with "z" to make
4699      it easier for the completion tests below.  */
4700 #define Z_SYM_NAME \
4701   "z::std::tuple<(anonymous namespace)::ui*, std::bar<(anonymous namespace)::ui> >" \
4702     "::tuple<(anonymous namespace)::ui*, " \
4703     "std::default_delete<(anonymous namespace)::ui>, void>"
4704
4705   Z_SYM_NAME
4706 };
4707
4708 /* Returns true if the mapped_index_base::find_name_component_bounds
4709    method finds EXPECTED_SYMS in INDEX when looking for SEARCH_NAME,
4710    in completion mode.  */
4711
4712 static bool
4713 check_find_bounds_finds (mapped_index_base &index,
4714                          const char *search_name,
4715                          gdb::array_view<const char *> expected_syms)
4716 {
4717   lookup_name_info lookup_name (search_name,
4718                                 symbol_name_match_type::FULL, true);
4719
4720   auto bounds = index.find_name_components_bounds (lookup_name);
4721
4722   size_t distance = std::distance (bounds.first, bounds.second);
4723   if (distance != expected_syms.size ())
4724     return false;
4725
4726   for (size_t exp_elem = 0; exp_elem < distance; exp_elem++)
4727     {
4728       auto nc_elem = bounds.first + exp_elem;
4729       const char *qualified = index.symbol_name_at (nc_elem->idx);
4730       if (strcmp (qualified, expected_syms[exp_elem]) != 0)
4731         return false;
4732     }
4733
4734   return true;
4735 }
4736
4737 /* Test the lower-level mapped_index::find_name_component_bounds
4738    method.  */
4739
4740 static void
4741 test_mapped_index_find_name_component_bounds ()
4742 {
4743   mock_mapped_index mock_index (test_symbols);
4744
4745   mock_index.build_name_components ();
4746
4747   /* Test the lower-level mapped_index::find_name_component_bounds
4748      method in completion mode.  */
4749   {
4750     static const char *expected_syms[] = {
4751       "t1_func",
4752       "t1_func1",
4753     };
4754
4755     SELF_CHECK (check_find_bounds_finds (mock_index,
4756                                          "t1_func", expected_syms));
4757   }
4758
4759   /* Check that the increment-last-char in the name matching algorithm
4760      for completion doesn't get confused with Ansi1 'ÿ' / 0xff.  */
4761   {
4762     static const char *expected_syms1[] = {
4763       "\377",
4764       "\377\377123",
4765     };
4766     SELF_CHECK (check_find_bounds_finds (mock_index,
4767                                          "\377", expected_syms1));
4768
4769     static const char *expected_syms2[] = {
4770       "\377\377123",
4771     };
4772     SELF_CHECK (check_find_bounds_finds (mock_index,
4773                                          "\377\377", expected_syms2));
4774   }
4775 }
4776
4777 /* Test dw2_expand_symtabs_matching_symbol.  */
4778
4779 static void
4780 test_dw2_expand_symtabs_matching_symbol ()
4781 {
4782   mock_mapped_index mock_index (test_symbols);
4783
4784   /* We let all tests run until the end even if some fails, for debug
4785      convenience.  */
4786   bool any_mismatch = false;
4787
4788   /* Create the expected symbols list (an initializer_list).  Needed
4789      because lists have commas, and we need to pass them to CHECK,
4790      which is a macro.  */
4791 #define EXPECT(...) { __VA_ARGS__ }
4792
4793   /* Wrapper for check_match that passes down the current
4794      __FILE__/__LINE__.  */
4795 #define CHECK_MATCH(NAME, MATCH_TYPE, COMPLETION_MODE, EXPECTED_LIST)   \
4796   any_mismatch |= !check_match (__FILE__, __LINE__,                     \
4797                                 mock_index,                             \
4798                                 NAME, MATCH_TYPE, COMPLETION_MODE,      \
4799                                 EXPECTED_LIST)
4800
4801   /* Identity checks.  */
4802   for (const char *sym : test_symbols)
4803     {
4804       /* Should be able to match all existing symbols.  */
4805       CHECK_MATCH (sym, symbol_name_match_type::FULL, false,
4806                    EXPECT (sym));
4807
4808       /* Should be able to match all existing symbols with
4809          parameters.  */
4810       std::string with_params = std::string (sym) + "(int)";
4811       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4812                    EXPECT (sym));
4813
4814       /* Should be able to match all existing symbols with
4815          parameters and qualifiers.  */
4816       with_params = std::string (sym) + " ( int ) const";
4817       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4818                    EXPECT (sym));
4819
4820       /* This should really find sym, but cp-name-parser.y doesn't
4821          know about lvalue/rvalue qualifiers yet.  */
4822       with_params = std::string (sym) + " ( int ) &&";
4823       CHECK_MATCH (with_params.c_str (), symbol_name_match_type::FULL, false,
4824                    {});
4825     }
4826
4827   /* Check that the name matching algorithm for completion doesn't get
4828      confused with Latin1 'ÿ' / 0xff.  */
4829   {
4830     static const char str[] = "\377";
4831     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4832                  EXPECT ("\377", "\377\377123"));
4833   }
4834
4835   /* Check that the increment-last-char in the matching algorithm for
4836      completion doesn't match "t1_fund" when completing "t1_func".  */
4837   {
4838     static const char str[] = "t1_func";
4839     CHECK_MATCH (str, symbol_name_match_type::FULL, true,
4840                  EXPECT ("t1_func", "t1_func1"));
4841   }
4842
4843   /* Check that completion mode works at each prefix of the expected
4844      symbol name.  */
4845   {
4846     static const char str[] = "function(int)";
4847     size_t len = strlen (str);
4848     std::string lookup;
4849
4850     for (size_t i = 1; i < len; i++)
4851       {
4852         lookup.assign (str, i);
4853         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4854                      EXPECT ("function"));
4855       }
4856   }
4857
4858   /* While "w" is a prefix of both components, the match function
4859      should still only be called once.  */
4860   {
4861     CHECK_MATCH ("w", symbol_name_match_type::FULL, true,
4862                  EXPECT ("w1::w2"));
4863     CHECK_MATCH ("w", symbol_name_match_type::WILD, true,
4864                  EXPECT ("w1::w2"));
4865   }
4866
4867   /* Same, with a "complicated" symbol.  */
4868   {
4869     static const char str[] = Z_SYM_NAME;
4870     size_t len = strlen (str);
4871     std::string lookup;
4872
4873     for (size_t i = 1; i < len; i++)
4874       {
4875         lookup.assign (str, i);
4876         CHECK_MATCH (lookup.c_str (), symbol_name_match_type::FULL, true,
4877                      EXPECT (Z_SYM_NAME));
4878       }
4879   }
4880
4881   /* In FULL mode, an incomplete symbol doesn't match.  */
4882   {
4883     CHECK_MATCH ("std::zfunction(int", symbol_name_match_type::FULL, false,
4884                  {});
4885   }
4886
4887   /* A complete symbol with parameters matches any overload, since the
4888      index has no overload info.  */
4889   {
4890     CHECK_MATCH ("std::zfunction(int)", symbol_name_match_type::FULL, true,
4891                  EXPECT ("std::zfunction", "std::zfunction2"));
4892     CHECK_MATCH ("zfunction(int)", symbol_name_match_type::WILD, true,
4893                  EXPECT ("std::zfunction", "std::zfunction2"));
4894     CHECK_MATCH ("zfunc", symbol_name_match_type::WILD, true,
4895                  EXPECT ("std::zfunction", "std::zfunction2"));
4896   }
4897
4898   /* Check that whitespace is ignored appropriately.  A symbol with a
4899      template argument list. */
4900   {
4901     static const char expected[] = "ns::foo<int>";
4902     CHECK_MATCH ("ns :: foo < int > ", symbol_name_match_type::FULL, false,
4903                  EXPECT (expected));
4904     CHECK_MATCH ("foo < int > ", symbol_name_match_type::WILD, false,
4905                  EXPECT (expected));
4906   }
4907
4908   /* Check that whitespace is ignored appropriately.  A symbol with a
4909      template argument list that includes a pointer.  */
4910   {
4911     static const char expected[] = "ns::foo<char*>";
4912     /* Try both completion and non-completion modes.  */
4913     static const bool completion_mode[2] = {false, true};
4914     for (size_t i = 0; i < 2; i++)
4915       {
4916         CHECK_MATCH ("ns :: foo < char * >", symbol_name_match_type::FULL,
4917                      completion_mode[i], EXPECT (expected));
4918         CHECK_MATCH ("foo < char * >", symbol_name_match_type::WILD,
4919                      completion_mode[i], EXPECT (expected));
4920
4921         CHECK_MATCH ("ns :: foo < char * > (int)", symbol_name_match_type::FULL,
4922                      completion_mode[i], EXPECT (expected));
4923         CHECK_MATCH ("foo < char * > (int)", symbol_name_match_type::WILD,
4924                      completion_mode[i], EXPECT (expected));
4925       }
4926   }
4927
4928   {
4929     /* Check method qualifiers are ignored.  */
4930     static const char expected[] = "ns::foo<char*>";
4931     CHECK_MATCH ("ns :: foo < char * >  ( int ) const",
4932                  symbol_name_match_type::FULL, true, EXPECT (expected));
4933     CHECK_MATCH ("ns :: foo < char * >  ( int ) &&",
4934                  symbol_name_match_type::FULL, true, EXPECT (expected));
4935     CHECK_MATCH ("foo < char * >  ( int ) const",
4936                  symbol_name_match_type::WILD, true, EXPECT (expected));
4937     CHECK_MATCH ("foo < char * >  ( int ) &&",
4938                  symbol_name_match_type::WILD, true, EXPECT (expected));
4939   }
4940
4941   /* Test lookup names that don't match anything.  */
4942   {
4943     CHECK_MATCH ("bar2", symbol_name_match_type::WILD, false,
4944                  {});
4945
4946     CHECK_MATCH ("doesntexist", symbol_name_match_type::FULL, false,
4947                  {});
4948   }
4949
4950   /* Some wild matching tests, exercising "(anonymous namespace)",
4951      which should not be confused with a parameter list.  */
4952   {
4953     static const char *syms[] = {
4954       "A::B::C",
4955       "B::C",
4956       "C",
4957       "A :: B :: C ( int )",
4958       "B :: C ( int )",
4959       "C ( int )",
4960     };
4961
4962     for (const char *s : syms)
4963       {
4964         CHECK_MATCH (s, symbol_name_match_type::WILD, false,
4965                      EXPECT ("(anonymous namespace)::A::B::C"));
4966       }
4967   }
4968
4969   {
4970     static const char expected[] = "ns2::tmpl<int>::foo2";
4971     CHECK_MATCH ("tmp", symbol_name_match_type::WILD, true,
4972                  EXPECT (expected));
4973     CHECK_MATCH ("tmpl<", symbol_name_match_type::WILD, true,
4974                  EXPECT (expected));
4975   }
4976
4977   SELF_CHECK (!any_mismatch);
4978
4979 #undef EXPECT
4980 #undef CHECK_MATCH
4981 }
4982
4983 static void
4984 run_test ()
4985 {
4986   test_mapped_index_find_name_component_bounds ();
4987   test_dw2_expand_symtabs_matching_symbol ();
4988 }
4989
4990 }} // namespace selftests::dw2_expand_symtabs_matching
4991
4992 #endif /* GDB_SELF_TEST */
4993
4994 /* If FILE_MATCHER is NULL or if PER_CU has
4995    dwarf2_per_cu_quick_data::MARK set (see
4996    dw_expand_symtabs_matching_file_matcher), expand the CU and call
4997    EXPANSION_NOTIFY on it.  */
4998
4999 static void
5000 dw2_expand_symtabs_matching_one
5001   (struct dwarf2_per_cu_data *per_cu,
5002    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5003    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify)
5004 {
5005   if (file_matcher == NULL || per_cu->v.quick->mark)
5006     {
5007       bool symtab_was_null
5008         = (per_cu->v.quick->compunit_symtab == NULL);
5009
5010       dw2_instantiate_symtab (per_cu, false);
5011
5012       if (expansion_notify != NULL
5013           && symtab_was_null
5014           && per_cu->v.quick->compunit_symtab != NULL)
5015         expansion_notify (per_cu->v.quick->compunit_symtab);
5016     }
5017 }
5018
5019 /* Helper for dw2_expand_matching symtabs.  Called on each symbol
5020    matched, to expand corresponding CUs that were marked.  IDX is the
5021    index of the symbol name that matched.  */
5022
5023 static void
5024 dw2_expand_marked_cus
5025   (struct dwarf2_per_objfile *dwarf2_per_objfile, offset_type idx,
5026    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5027    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5028    search_domain kind)
5029 {
5030   offset_type *vec, vec_len, vec_idx;
5031   bool global_seen = false;
5032   mapped_index &index = *dwarf2_per_objfile->index_table;
5033
5034   vec = (offset_type *) (index.constant_pool
5035                          + MAYBE_SWAP (index.symbol_table[idx].vec));
5036   vec_len = MAYBE_SWAP (vec[0]);
5037   for (vec_idx = 0; vec_idx < vec_len; ++vec_idx)
5038     {
5039       offset_type cu_index_and_attrs = MAYBE_SWAP (vec[vec_idx + 1]);
5040       /* This value is only valid for index versions >= 7.  */
5041       int is_static = GDB_INDEX_SYMBOL_STATIC_VALUE (cu_index_and_attrs);
5042       gdb_index_symbol_kind symbol_kind =
5043         GDB_INDEX_SYMBOL_KIND_VALUE (cu_index_and_attrs);
5044       int cu_index = GDB_INDEX_CU_VALUE (cu_index_and_attrs);
5045       /* Only check the symbol attributes if they're present.
5046          Indices prior to version 7 don't record them,
5047          and indices >= 7 may elide them for certain symbols
5048          (gold does this).  */
5049       int attrs_valid =
5050         (index.version >= 7
5051          && symbol_kind != GDB_INDEX_SYMBOL_KIND_NONE);
5052
5053       /* Work around gold/15646.  */
5054       if (attrs_valid)
5055         {
5056           if (!is_static && global_seen)
5057             continue;
5058           if (!is_static)
5059             global_seen = true;
5060         }
5061
5062       /* Only check the symbol's kind if it has one.  */
5063       if (attrs_valid)
5064         {
5065           switch (kind)
5066             {
5067             case VARIABLES_DOMAIN:
5068               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_VARIABLE)
5069                 continue;
5070               break;
5071             case FUNCTIONS_DOMAIN:
5072               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_FUNCTION)
5073                 continue;
5074               break;
5075             case TYPES_DOMAIN:
5076               if (symbol_kind != GDB_INDEX_SYMBOL_KIND_TYPE)
5077                 continue;
5078               break;
5079             default:
5080               break;
5081             }
5082         }
5083
5084       /* Don't crash on bad data.  */
5085       if (cu_index >= (dwarf2_per_objfile->all_comp_units.size ()
5086                        + dwarf2_per_objfile->all_type_units.size ()))
5087         {
5088           complaint (_(".gdb_index entry has bad CU index"
5089                        " [in module %s]"),
5090                        objfile_name (dwarf2_per_objfile->objfile));
5091           continue;
5092         }
5093
5094       dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (cu_index);
5095       dw2_expand_symtabs_matching_one (per_cu, file_matcher,
5096                                        expansion_notify);
5097     }
5098 }
5099
5100 /* If FILE_MATCHER is non-NULL, set all the
5101    dwarf2_per_cu_quick_data::MARK of the current DWARF2_PER_OBJFILE
5102    that match FILE_MATCHER.  */
5103
5104 static void
5105 dw_expand_symtabs_matching_file_matcher
5106   (struct dwarf2_per_objfile *dwarf2_per_objfile,
5107    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher)
5108 {
5109   if (file_matcher == NULL)
5110     return;
5111
5112   objfile *const objfile = dwarf2_per_objfile->objfile;
5113
5114   htab_up visited_found (htab_create_alloc (10, htab_hash_pointer,
5115                                             htab_eq_pointer,
5116                                             NULL, xcalloc, xfree));
5117   htab_up visited_not_found (htab_create_alloc (10, htab_hash_pointer,
5118                                                 htab_eq_pointer,
5119                                                 NULL, xcalloc, xfree));
5120
5121   /* The rule is CUs specify all the files, including those used by
5122      any TU, so there's no need to scan TUs here.  */
5123
5124   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5125     {
5126       QUIT;
5127
5128       per_cu->v.quick->mark = 0;
5129
5130       /* We only need to look at symtabs not already expanded.  */
5131       if (per_cu->v.quick->compunit_symtab)
5132         continue;
5133
5134       quick_file_names *file_data = dw2_get_file_names (per_cu);
5135       if (file_data == NULL)
5136         continue;
5137
5138       if (htab_find (visited_not_found.get (), file_data) != NULL)
5139         continue;
5140       else if (htab_find (visited_found.get (), file_data) != NULL)
5141         {
5142           per_cu->v.quick->mark = 1;
5143           continue;
5144         }
5145
5146       for (int j = 0; j < file_data->num_file_names; ++j)
5147         {
5148           const char *this_real_name;
5149
5150           if (file_matcher (file_data->file_names[j], false))
5151             {
5152               per_cu->v.quick->mark = 1;
5153               break;
5154             }
5155
5156           /* Before we invoke realpath, which can get expensive when many
5157              files are involved, do a quick comparison of the basenames.  */
5158           if (!basenames_may_differ
5159               && !file_matcher (lbasename (file_data->file_names[j]),
5160                                 true))
5161             continue;
5162
5163           this_real_name = dw2_get_real_path (objfile, file_data, j);
5164           if (file_matcher (this_real_name, false))
5165             {
5166               per_cu->v.quick->mark = 1;
5167               break;
5168             }
5169         }
5170
5171       void **slot = htab_find_slot (per_cu->v.quick->mark
5172                                     ? visited_found.get ()
5173                                     : visited_not_found.get (),
5174                                     file_data, INSERT);
5175       *slot = file_data;
5176     }
5177 }
5178
5179 static void
5180 dw2_expand_symtabs_matching
5181   (struct objfile *objfile,
5182    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
5183    const lookup_name_info &lookup_name,
5184    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
5185    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
5186    enum search_domain kind)
5187 {
5188   struct dwarf2_per_objfile *dwarf2_per_objfile
5189     = get_dwarf2_per_objfile (objfile);
5190
5191   /* index_table is NULL if OBJF_READNOW.  */
5192   if (!dwarf2_per_objfile->index_table)
5193     return;
5194
5195   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
5196
5197   mapped_index &index = *dwarf2_per_objfile->index_table;
5198
5199   dw2_expand_symtabs_matching_symbol (index, lookup_name,
5200                                       symbol_matcher,
5201                                       kind, [&] (offset_type idx)
5202     {
5203       dw2_expand_marked_cus (dwarf2_per_objfile, idx, file_matcher,
5204                              expansion_notify, kind);
5205     });
5206 }
5207
5208 /* A helper for dw2_find_pc_sect_compunit_symtab which finds the most specific
5209    symtab.  */
5210
5211 static struct compunit_symtab *
5212 recursively_find_pc_sect_compunit_symtab (struct compunit_symtab *cust,
5213                                           CORE_ADDR pc)
5214 {
5215   int i;
5216
5217   if (COMPUNIT_BLOCKVECTOR (cust) != NULL
5218       && blockvector_contains_pc (COMPUNIT_BLOCKVECTOR (cust), pc))
5219     return cust;
5220
5221   if (cust->includes == NULL)
5222     return NULL;
5223
5224   for (i = 0; cust->includes[i]; ++i)
5225     {
5226       struct compunit_symtab *s = cust->includes[i];
5227
5228       s = recursively_find_pc_sect_compunit_symtab (s, pc);
5229       if (s != NULL)
5230         return s;
5231     }
5232
5233   return NULL;
5234 }
5235
5236 static struct compunit_symtab *
5237 dw2_find_pc_sect_compunit_symtab (struct objfile *objfile,
5238                                   struct bound_minimal_symbol msymbol,
5239                                   CORE_ADDR pc,
5240                                   struct obj_section *section,
5241                                   int warn_if_readin)
5242 {
5243   struct dwarf2_per_cu_data *data;
5244   struct compunit_symtab *result;
5245
5246   if (!objfile->psymtabs_addrmap)
5247     return NULL;
5248
5249   CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
5250                                  SECT_OFF_TEXT (objfile));
5251   data = (struct dwarf2_per_cu_data *) addrmap_find (objfile->psymtabs_addrmap,
5252                                                      pc - baseaddr);
5253   if (!data)
5254     return NULL;
5255
5256   if (warn_if_readin && data->v.quick->compunit_symtab)
5257     warning (_("(Internal error: pc %s in read in CU, but not in symtab.)"),
5258              paddress (get_objfile_arch (objfile), pc));
5259
5260   result
5261     = recursively_find_pc_sect_compunit_symtab (dw2_instantiate_symtab (data,
5262                                                                         false),
5263                                                 pc);
5264   gdb_assert (result != NULL);
5265   return result;
5266 }
5267
5268 static void
5269 dw2_map_symbol_filenames (struct objfile *objfile, symbol_filename_ftype *fun,
5270                           void *data, int need_fullname)
5271 {
5272   struct dwarf2_per_objfile *dwarf2_per_objfile
5273     = get_dwarf2_per_objfile (objfile);
5274
5275   if (!dwarf2_per_objfile->filenames_cache)
5276     {
5277       dwarf2_per_objfile->filenames_cache.emplace ();
5278
5279       htab_up visited (htab_create_alloc (10,
5280                                           htab_hash_pointer, htab_eq_pointer,
5281                                           NULL, xcalloc, xfree));
5282
5283       /* The rule is CUs specify all the files, including those used
5284          by any TU, so there's no need to scan TUs here.  We can
5285          ignore file names coming from already-expanded CUs.  */
5286
5287       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5288         {
5289           if (per_cu->v.quick->compunit_symtab)
5290             {
5291               void **slot = htab_find_slot (visited.get (),
5292                                             per_cu->v.quick->file_names,
5293                                             INSERT);
5294
5295               *slot = per_cu->v.quick->file_names;
5296             }
5297         }
5298
5299       for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
5300         {
5301           /* We only need to look at symtabs not already expanded.  */
5302           if (per_cu->v.quick->compunit_symtab)
5303             continue;
5304
5305           quick_file_names *file_data = dw2_get_file_names (per_cu);
5306           if (file_data == NULL)
5307             continue;
5308
5309           void **slot = htab_find_slot (visited.get (), file_data, INSERT);
5310           if (*slot)
5311             {
5312               /* Already visited.  */
5313               continue;
5314             }
5315           *slot = file_data;
5316
5317           for (int j = 0; j < file_data->num_file_names; ++j)
5318             {
5319               const char *filename = file_data->file_names[j];
5320               dwarf2_per_objfile->filenames_cache->seen (filename);
5321             }
5322         }
5323     }
5324
5325   dwarf2_per_objfile->filenames_cache->traverse ([&] (const char *filename)
5326     {
5327       gdb::unique_xmalloc_ptr<char> this_real_name;
5328
5329       if (need_fullname)
5330         this_real_name = gdb_realpath (filename);
5331       (*fun) (filename, this_real_name.get (), data);
5332     });
5333 }
5334
5335 static int
5336 dw2_has_symbols (struct objfile *objfile)
5337 {
5338   return 1;
5339 }
5340
5341 const struct quick_symbol_functions dwarf2_gdb_index_functions =
5342 {
5343   dw2_has_symbols,
5344   dw2_find_last_source_symtab,
5345   dw2_forget_cached_source_info,
5346   dw2_map_symtabs_matching_filename,
5347   dw2_lookup_symbol,
5348   dw2_print_stats,
5349   dw2_dump,
5350   dw2_expand_symtabs_for_function,
5351   dw2_expand_all_symtabs,
5352   dw2_expand_symtabs_with_fullname,
5353   dw2_map_matching_symbols,
5354   dw2_expand_symtabs_matching,
5355   dw2_find_pc_sect_compunit_symtab,
5356   NULL,
5357   dw2_map_symbol_filenames
5358 };
5359
5360 /* DWARF-5 debug_names reader.  */
5361
5362 /* DWARF-5 augmentation string for GDB's DW_IDX_GNU_* extension.  */
5363 static const gdb_byte dwarf5_augmentation[] = { 'G', 'D', 'B', 0 };
5364
5365 /* A helper function that reads the .debug_names section in SECTION
5366    and fills in MAP.  FILENAME is the name of the file containing the
5367    section; it is used for error reporting.
5368
5369    Returns true if all went well, false otherwise.  */
5370
5371 static bool
5372 read_debug_names_from_section (struct objfile *objfile,
5373                                const char *filename,
5374                                struct dwarf2_section_info *section,
5375                                mapped_debug_names &map)
5376 {
5377   if (dwarf2_section_empty_p (section))
5378     return false;
5379
5380   /* Older elfutils strip versions could keep the section in the main
5381      executable while splitting it for the separate debug info file.  */
5382   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
5383     return false;
5384
5385   dwarf2_read_section (objfile, section);
5386
5387   map.dwarf5_byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
5388
5389   const gdb_byte *addr = section->buffer;
5390
5391   bfd *const abfd = get_section_bfd_owner (section);
5392
5393   unsigned int bytes_read;
5394   LONGEST length = read_initial_length (abfd, addr, &bytes_read);
5395   addr += bytes_read;
5396
5397   map.dwarf5_is_dwarf64 = bytes_read != 4;
5398   map.offset_size = map.dwarf5_is_dwarf64 ? 8 : 4;
5399   if (bytes_read + length != section->size)
5400     {
5401       /* There may be multiple per-CU indices.  */
5402       warning (_("Section .debug_names in %s length %s does not match "
5403                  "section length %s, ignoring .debug_names."),
5404                filename, plongest (bytes_read + length),
5405                pulongest (section->size));
5406       return false;
5407     }
5408
5409   /* The version number.  */
5410   uint16_t version = read_2_bytes (abfd, addr);
5411   addr += 2;
5412   if (version != 5)
5413     {
5414       warning (_("Section .debug_names in %s has unsupported version %d, "
5415                  "ignoring .debug_names."),
5416                filename, version);
5417       return false;
5418     }
5419
5420   /* Padding.  */
5421   uint16_t padding = read_2_bytes (abfd, addr);
5422   addr += 2;
5423   if (padding != 0)
5424     {
5425       warning (_("Section .debug_names in %s has unsupported padding %d, "
5426                  "ignoring .debug_names."),
5427                filename, padding);
5428       return false;
5429     }
5430
5431   /* comp_unit_count - The number of CUs in the CU list.  */
5432   map.cu_count = read_4_bytes (abfd, addr);
5433   addr += 4;
5434
5435   /* local_type_unit_count - The number of TUs in the local TU
5436      list.  */
5437   map.tu_count = read_4_bytes (abfd, addr);
5438   addr += 4;
5439
5440   /* foreign_type_unit_count - The number of TUs in the foreign TU
5441      list.  */
5442   uint32_t foreign_tu_count = read_4_bytes (abfd, addr);
5443   addr += 4;
5444   if (foreign_tu_count != 0)
5445     {
5446       warning (_("Section .debug_names in %s has unsupported %lu foreign TUs, "
5447                  "ignoring .debug_names."),
5448                filename, static_cast<unsigned long> (foreign_tu_count));
5449       return false;
5450     }
5451
5452   /* bucket_count - The number of hash buckets in the hash lookup
5453      table.  */
5454   map.bucket_count = read_4_bytes (abfd, addr);
5455   addr += 4;
5456
5457   /* name_count - The number of unique names in the index.  */
5458   map.name_count = read_4_bytes (abfd, addr);
5459   addr += 4;
5460
5461   /* abbrev_table_size - The size in bytes of the abbreviations
5462      table.  */
5463   uint32_t abbrev_table_size = read_4_bytes (abfd, addr);
5464   addr += 4;
5465
5466   /* augmentation_string_size - The size in bytes of the augmentation
5467      string.  This value is rounded up to a multiple of 4.  */
5468   uint32_t augmentation_string_size = read_4_bytes (abfd, addr);
5469   addr += 4;
5470   map.augmentation_is_gdb = ((augmentation_string_size
5471                               == sizeof (dwarf5_augmentation))
5472                              && memcmp (addr, dwarf5_augmentation,
5473                                         sizeof (dwarf5_augmentation)) == 0);
5474   augmentation_string_size += (-augmentation_string_size) & 3;
5475   addr += augmentation_string_size;
5476
5477   /* List of CUs */
5478   map.cu_table_reordered = addr;
5479   addr += map.cu_count * map.offset_size;
5480
5481   /* List of Local TUs */
5482   map.tu_table_reordered = addr;
5483   addr += map.tu_count * map.offset_size;
5484
5485   /* Hash Lookup Table */
5486   map.bucket_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5487   addr += map.bucket_count * 4;
5488   map.hash_table_reordered = reinterpret_cast<const uint32_t *> (addr);
5489   addr += map.name_count * 4;
5490
5491   /* Name Table */
5492   map.name_table_string_offs_reordered = addr;
5493   addr += map.name_count * map.offset_size;
5494   map.name_table_entry_offs_reordered = addr;
5495   addr += map.name_count * map.offset_size;
5496
5497   const gdb_byte *abbrev_table_start = addr;
5498   for (;;)
5499     {
5500       unsigned int bytes_read;
5501       const ULONGEST index_num = read_unsigned_leb128 (abfd, addr, &bytes_read);
5502       addr += bytes_read;
5503       if (index_num == 0)
5504         break;
5505
5506       const auto insertpair
5507         = map.abbrev_map.emplace (index_num, mapped_debug_names::index_val ());
5508       if (!insertpair.second)
5509         {
5510           warning (_("Section .debug_names in %s has duplicate index %s, "
5511                      "ignoring .debug_names."),
5512                    filename, pulongest (index_num));
5513           return false;
5514         }
5515       mapped_debug_names::index_val &indexval = insertpair.first->second;
5516       indexval.dwarf_tag = read_unsigned_leb128 (abfd, addr, &bytes_read);
5517       addr += bytes_read;
5518
5519       for (;;)
5520         {
5521           mapped_debug_names::index_val::attr attr;
5522           attr.dw_idx = read_unsigned_leb128 (abfd, addr, &bytes_read);
5523           addr += bytes_read;
5524           attr.form = read_unsigned_leb128 (abfd, addr, &bytes_read);
5525           addr += bytes_read;
5526           if (attr.form == DW_FORM_implicit_const)
5527             {
5528               attr.implicit_const = read_signed_leb128 (abfd, addr,
5529                                                         &bytes_read);
5530               addr += bytes_read;
5531             }
5532           if (attr.dw_idx == 0 && attr.form == 0)
5533             break;
5534           indexval.attr_vec.push_back (std::move (attr));
5535         }
5536     }
5537   if (addr != abbrev_table_start + abbrev_table_size)
5538     {
5539       warning (_("Section .debug_names in %s has abbreviation_table "
5540                  "of size %zu vs. written as %u, ignoring .debug_names."),
5541                filename, addr - abbrev_table_start, abbrev_table_size);
5542       return false;
5543     }
5544   map.entry_pool = addr;
5545
5546   return true;
5547 }
5548
5549 /* A helper for create_cus_from_debug_names that handles the MAP's CU
5550    list.  */
5551
5552 static void
5553 create_cus_from_debug_names_list (struct dwarf2_per_objfile *dwarf2_per_objfile,
5554                                   const mapped_debug_names &map,
5555                                   dwarf2_section_info &section,
5556                                   bool is_dwz)
5557 {
5558   sect_offset sect_off_prev;
5559   for (uint32_t i = 0; i <= map.cu_count; ++i)
5560     {
5561       sect_offset sect_off_next;
5562       if (i < map.cu_count)
5563         {
5564           sect_off_next
5565             = (sect_offset) (extract_unsigned_integer
5566                              (map.cu_table_reordered + i * map.offset_size,
5567                               map.offset_size,
5568                               map.dwarf5_byte_order));
5569         }
5570       else
5571         sect_off_next = (sect_offset) section.size;
5572       if (i >= 1)
5573         {
5574           const ULONGEST length = sect_off_next - sect_off_prev;
5575           dwarf2_per_cu_data *per_cu
5576             = create_cu_from_index_list (dwarf2_per_objfile, &section, is_dwz,
5577                                          sect_off_prev, length);
5578           dwarf2_per_objfile->all_comp_units.push_back (per_cu);
5579         }
5580       sect_off_prev = sect_off_next;
5581     }
5582 }
5583
5584 /* Read the CU list from the mapped index, and use it to create all
5585    the CU objects for this dwarf2_per_objfile.  */
5586
5587 static void
5588 create_cus_from_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile,
5589                              const mapped_debug_names &map,
5590                              const mapped_debug_names &dwz_map)
5591 {
5592   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
5593   dwarf2_per_objfile->all_comp_units.reserve (map.cu_count + dwz_map.cu_count);
5594
5595   create_cus_from_debug_names_list (dwarf2_per_objfile, map,
5596                                     dwarf2_per_objfile->info,
5597                                     false /* is_dwz */);
5598
5599   if (dwz_map.cu_count == 0)
5600     return;
5601
5602   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5603   create_cus_from_debug_names_list (dwarf2_per_objfile, dwz_map, dwz->info,
5604                                     true /* is_dwz */);
5605 }
5606
5607 /* Read .debug_names.  If everything went ok, initialize the "quick"
5608    elements of all the CUs and return true.  Otherwise, return false.  */
5609
5610 static bool
5611 dwarf2_read_debug_names (struct dwarf2_per_objfile *dwarf2_per_objfile)
5612 {
5613   std::unique_ptr<mapped_debug_names> map
5614     (new mapped_debug_names (dwarf2_per_objfile));
5615   mapped_debug_names dwz_map (dwarf2_per_objfile);
5616   struct objfile *objfile = dwarf2_per_objfile->objfile;
5617
5618   if (!read_debug_names_from_section (objfile, objfile_name (objfile),
5619                                       &dwarf2_per_objfile->debug_names,
5620                                       *map))
5621     return false;
5622
5623   /* Don't use the index if it's empty.  */
5624   if (map->name_count == 0)
5625     return false;
5626
5627   /* If there is a .dwz file, read it so we can get its CU list as
5628      well.  */
5629   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
5630   if (dwz != NULL)
5631     {
5632       if (!read_debug_names_from_section (objfile,
5633                                           bfd_get_filename (dwz->dwz_bfd),
5634                                           &dwz->debug_names, dwz_map))
5635         {
5636           warning (_("could not read '.debug_names' section from %s; skipping"),
5637                    bfd_get_filename (dwz->dwz_bfd));
5638           return false;
5639         }
5640     }
5641
5642   create_cus_from_debug_names (dwarf2_per_objfile, *map, dwz_map);
5643
5644   if (map->tu_count != 0)
5645     {
5646       /* We can only handle a single .debug_types when we have an
5647          index.  */
5648       if (VEC_length (dwarf2_section_info_def, dwarf2_per_objfile->types) != 1)
5649         return false;
5650
5651       dwarf2_section_info *section = VEC_index (dwarf2_section_info_def,
5652                                                 dwarf2_per_objfile->types, 0);
5653
5654       create_signatured_type_table_from_debug_names
5655         (dwarf2_per_objfile, *map, section, &dwarf2_per_objfile->abbrev);
5656     }
5657
5658   create_addrmap_from_aranges (dwarf2_per_objfile,
5659                                &dwarf2_per_objfile->debug_aranges);
5660
5661   dwarf2_per_objfile->debug_names_table = std::move (map);
5662   dwarf2_per_objfile->using_index = 1;
5663   dwarf2_per_objfile->quick_file_names_table =
5664     create_quick_file_names_table (dwarf2_per_objfile->all_comp_units.size ());
5665
5666   return true;
5667 }
5668
5669 /* Type used to manage iterating over all CUs looking for a symbol for
5670    .debug_names.  */
5671
5672 class dw2_debug_names_iterator
5673 {
5674 public:
5675   /* If WANT_SPECIFIC_BLOCK is true, only look for symbols in block
5676      BLOCK_INDEX.  Otherwise BLOCK_INDEX is ignored.  */
5677   dw2_debug_names_iterator (const mapped_debug_names &map,
5678                             bool want_specific_block,
5679                             block_enum block_index, domain_enum domain,
5680                             const char *name)
5681     : m_map (map), m_want_specific_block (want_specific_block),
5682       m_block_index (block_index), m_domain (domain),
5683       m_addr (find_vec_in_debug_names (map, name))
5684   {}
5685
5686   dw2_debug_names_iterator (const mapped_debug_names &map,
5687                             search_domain search, uint32_t namei)
5688     : m_map (map),
5689       m_search (search),
5690       m_addr (find_vec_in_debug_names (map, namei))
5691   {}
5692
5693   /* Return the next matching CU or NULL if there are no more.  */
5694   dwarf2_per_cu_data *next ();
5695
5696 private:
5697   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5698                                                   const char *name);
5699   static const gdb_byte *find_vec_in_debug_names (const mapped_debug_names &map,
5700                                                   uint32_t namei);
5701
5702   /* The internalized form of .debug_names.  */
5703   const mapped_debug_names &m_map;
5704
5705   /* If true, only look for symbols that match BLOCK_INDEX.  */
5706   const bool m_want_specific_block = false;
5707
5708   /* One of GLOBAL_BLOCK or STATIC_BLOCK.
5709      Unused if !WANT_SPECIFIC_BLOCK - FIRST_LOCAL_BLOCK is an invalid
5710      value.  */
5711   const block_enum m_block_index = FIRST_LOCAL_BLOCK;
5712
5713   /* The kind of symbol we're looking for.  */
5714   const domain_enum m_domain = UNDEF_DOMAIN;
5715   const search_domain m_search = ALL_DOMAIN;
5716
5717   /* The list of CUs from the index entry of the symbol, or NULL if
5718      not found.  */
5719   const gdb_byte *m_addr;
5720 };
5721
5722 const char *
5723 mapped_debug_names::namei_to_name (uint32_t namei) const
5724 {
5725   const ULONGEST namei_string_offs
5726     = extract_unsigned_integer ((name_table_string_offs_reordered
5727                                  + namei * offset_size),
5728                                 offset_size,
5729                                 dwarf5_byte_order);
5730   return read_indirect_string_at_offset
5731     (dwarf2_per_objfile, dwarf2_per_objfile->objfile->obfd, namei_string_offs);
5732 }
5733
5734 /* Find a slot in .debug_names for the object named NAME.  If NAME is
5735    found, return pointer to its pool data.  If NAME cannot be found,
5736    return NULL.  */
5737
5738 const gdb_byte *
5739 dw2_debug_names_iterator::find_vec_in_debug_names
5740   (const mapped_debug_names &map, const char *name)
5741 {
5742   int (*cmp) (const char *, const char *);
5743
5744   if (current_language->la_language == language_cplus
5745       || current_language->la_language == language_fortran
5746       || current_language->la_language == language_d)
5747     {
5748       /* NAME is already canonical.  Drop any qualifiers as
5749          .debug_names does not contain any.  */
5750
5751       if (strchr (name, '(') != NULL)
5752         {
5753           gdb::unique_xmalloc_ptr<char> without_params
5754             = cp_remove_params (name);
5755
5756           if (without_params != NULL)
5757             {
5758               name = without_params.get();
5759             }
5760         }
5761     }
5762
5763   cmp = (case_sensitivity == case_sensitive_on ? strcmp : strcasecmp);
5764
5765   const uint32_t full_hash = dwarf5_djb_hash (name);
5766   uint32_t namei
5767     = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5768                                 (map.bucket_table_reordered
5769                                  + (full_hash % map.bucket_count)), 4,
5770                                 map.dwarf5_byte_order);
5771   if (namei == 0)
5772     return NULL;
5773   --namei;
5774   if (namei >= map.name_count)
5775     {
5776       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5777                    "[in module %s]"),
5778                  namei, map.name_count,
5779                  objfile_name (map.dwarf2_per_objfile->objfile));
5780       return NULL;
5781     }
5782
5783   for (;;)
5784     {
5785       const uint32_t namei_full_hash
5786         = extract_unsigned_integer (reinterpret_cast<const gdb_byte *>
5787                                     (map.hash_table_reordered + namei), 4,
5788                                     map.dwarf5_byte_order);
5789       if (full_hash % map.bucket_count != namei_full_hash % map.bucket_count)
5790         return NULL;
5791
5792       if (full_hash == namei_full_hash)
5793         {
5794           const char *const namei_string = map.namei_to_name (namei);
5795
5796 #if 0 /* An expensive sanity check.  */
5797           if (namei_full_hash != dwarf5_djb_hash (namei_string))
5798             {
5799               complaint (_("Wrong .debug_names hash for string at index %u "
5800                            "[in module %s]"),
5801                          namei, objfile_name (dwarf2_per_objfile->objfile));
5802               return NULL;
5803             }
5804 #endif
5805
5806           if (cmp (namei_string, name) == 0)
5807             {
5808               const ULONGEST namei_entry_offs
5809                 = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5810                                              + namei * map.offset_size),
5811                                             map.offset_size, map.dwarf5_byte_order);
5812               return map.entry_pool + namei_entry_offs;
5813             }
5814         }
5815
5816       ++namei;
5817       if (namei >= map.name_count)
5818         return NULL;
5819     }
5820 }
5821
5822 const gdb_byte *
5823 dw2_debug_names_iterator::find_vec_in_debug_names
5824   (const mapped_debug_names &map, uint32_t namei)
5825 {
5826   if (namei >= map.name_count)
5827     {
5828       complaint (_("Wrong .debug_names with name index %u but name_count=%u "
5829                    "[in module %s]"),
5830                  namei, map.name_count,
5831                  objfile_name (map.dwarf2_per_objfile->objfile));
5832       return NULL;
5833     }
5834
5835   const ULONGEST namei_entry_offs
5836     = extract_unsigned_integer ((map.name_table_entry_offs_reordered
5837                                  + namei * map.offset_size),
5838                                 map.offset_size, map.dwarf5_byte_order);
5839   return map.entry_pool + namei_entry_offs;
5840 }
5841
5842 /* See dw2_debug_names_iterator.  */
5843
5844 dwarf2_per_cu_data *
5845 dw2_debug_names_iterator::next ()
5846 {
5847   if (m_addr == NULL)
5848     return NULL;
5849
5850   struct dwarf2_per_objfile *dwarf2_per_objfile = m_map.dwarf2_per_objfile;
5851   struct objfile *objfile = dwarf2_per_objfile->objfile;
5852   bfd *const abfd = objfile->obfd;
5853
5854  again:
5855
5856   unsigned int bytes_read;
5857   const ULONGEST abbrev = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5858   m_addr += bytes_read;
5859   if (abbrev == 0)
5860     return NULL;
5861
5862   const auto indexval_it = m_map.abbrev_map.find (abbrev);
5863   if (indexval_it == m_map.abbrev_map.cend ())
5864     {
5865       complaint (_("Wrong .debug_names undefined abbrev code %s "
5866                    "[in module %s]"),
5867                  pulongest (abbrev), objfile_name (objfile));
5868       return NULL;
5869     }
5870   const mapped_debug_names::index_val &indexval = indexval_it->second;
5871   bool have_is_static = false;
5872   bool is_static;
5873   dwarf2_per_cu_data *per_cu = NULL;
5874   for (const mapped_debug_names::index_val::attr &attr : indexval.attr_vec)
5875     {
5876       ULONGEST ull;
5877       switch (attr.form)
5878         {
5879         case DW_FORM_implicit_const:
5880           ull = attr.implicit_const;
5881           break;
5882         case DW_FORM_flag_present:
5883           ull = 1;
5884           break;
5885         case DW_FORM_udata:
5886           ull = read_unsigned_leb128 (abfd, m_addr, &bytes_read);
5887           m_addr += bytes_read;
5888           break;
5889         default:
5890           complaint (_("Unsupported .debug_names form %s [in module %s]"),
5891                      dwarf_form_name (attr.form),
5892                      objfile_name (objfile));
5893           return NULL;
5894         }
5895       switch (attr.dw_idx)
5896         {
5897         case DW_IDX_compile_unit:
5898           /* Don't crash on bad data.  */
5899           if (ull >= dwarf2_per_objfile->all_comp_units.size ())
5900             {
5901               complaint (_(".debug_names entry has bad CU index %s"
5902                            " [in module %s]"),
5903                          pulongest (ull),
5904                          objfile_name (dwarf2_per_objfile->objfile));
5905               continue;
5906             }
5907           per_cu = dwarf2_per_objfile->get_cutu (ull);
5908           break;
5909         case DW_IDX_type_unit:
5910           /* Don't crash on bad data.  */
5911           if (ull >= dwarf2_per_objfile->all_type_units.size ())
5912             {
5913               complaint (_(".debug_names entry has bad TU index %s"
5914                            " [in module %s]"),
5915                          pulongest (ull),
5916                          objfile_name (dwarf2_per_objfile->objfile));
5917               continue;
5918             }
5919           per_cu = &dwarf2_per_objfile->get_tu (ull)->per_cu;
5920           break;
5921         case DW_IDX_GNU_internal:
5922           if (!m_map.augmentation_is_gdb)
5923             break;
5924           have_is_static = true;
5925           is_static = true;
5926           break;
5927         case DW_IDX_GNU_external:
5928           if (!m_map.augmentation_is_gdb)
5929             break;
5930           have_is_static = true;
5931           is_static = false;
5932           break;
5933         }
5934     }
5935
5936   /* Skip if already read in.  */
5937   if (per_cu->v.quick->compunit_symtab)
5938     goto again;
5939
5940   /* Check static vs global.  */
5941   if (have_is_static)
5942     {
5943       const bool want_static = m_block_index != GLOBAL_BLOCK;
5944       if (m_want_specific_block && want_static != is_static)
5945         goto again;
5946     }
5947
5948   /* Match dw2_symtab_iter_next, symbol_kind
5949      and debug_names::psymbol_tag.  */
5950   switch (m_domain)
5951     {
5952     case VAR_DOMAIN:
5953       switch (indexval.dwarf_tag)
5954         {
5955         case DW_TAG_variable:
5956         case DW_TAG_subprogram:
5957         /* Some types are also in VAR_DOMAIN.  */
5958         case DW_TAG_typedef:
5959         case DW_TAG_structure_type:
5960           break;
5961         default:
5962           goto again;
5963         }
5964       break;
5965     case STRUCT_DOMAIN:
5966       switch (indexval.dwarf_tag)
5967         {
5968         case DW_TAG_typedef:
5969         case DW_TAG_structure_type:
5970           break;
5971         default:
5972           goto again;
5973         }
5974       break;
5975     case LABEL_DOMAIN:
5976       switch (indexval.dwarf_tag)
5977         {
5978         case 0:
5979         case DW_TAG_variable:
5980           break;
5981         default:
5982           goto again;
5983         }
5984       break;
5985     default:
5986       break;
5987     }
5988
5989   /* Match dw2_expand_symtabs_matching, symbol_kind and
5990      debug_names::psymbol_tag.  */
5991   switch (m_search)
5992     {
5993     case VARIABLES_DOMAIN:
5994       switch (indexval.dwarf_tag)
5995         {
5996         case DW_TAG_variable:
5997           break;
5998         default:
5999           goto again;
6000         }
6001       break;
6002     case FUNCTIONS_DOMAIN:
6003       switch (indexval.dwarf_tag)
6004         {
6005         case DW_TAG_subprogram:
6006           break;
6007         default:
6008           goto again;
6009         }
6010       break;
6011     case TYPES_DOMAIN:
6012       switch (indexval.dwarf_tag)
6013         {
6014         case DW_TAG_typedef:
6015         case DW_TAG_structure_type:
6016           break;
6017         default:
6018           goto again;
6019         }
6020       break;
6021     default:
6022       break;
6023     }
6024
6025   return per_cu;
6026 }
6027
6028 static struct compunit_symtab *
6029 dw2_debug_names_lookup_symbol (struct objfile *objfile, int block_index_int,
6030                                const char *name, domain_enum domain)
6031 {
6032   const block_enum block_index = static_cast<block_enum> (block_index_int);
6033   struct dwarf2_per_objfile *dwarf2_per_objfile
6034     = get_dwarf2_per_objfile (objfile);
6035
6036   const auto &mapp = dwarf2_per_objfile->debug_names_table;
6037   if (!mapp)
6038     {
6039       /* index is NULL if OBJF_READNOW.  */
6040       return NULL;
6041     }
6042   const auto &map = *mapp;
6043
6044   dw2_debug_names_iterator iter (map, true /* want_specific_block */,
6045                                  block_index, domain, name);
6046
6047   struct compunit_symtab *stab_best = NULL;
6048   struct dwarf2_per_cu_data *per_cu;
6049   while ((per_cu = iter.next ()) != NULL)
6050     {
6051       struct symbol *sym, *with_opaque = NULL;
6052       struct compunit_symtab *stab = dw2_instantiate_symtab (per_cu, false);
6053       const struct blockvector *bv = COMPUNIT_BLOCKVECTOR (stab);
6054       struct block *block = BLOCKVECTOR_BLOCK (bv, block_index);
6055
6056       sym = block_find_symbol (block, name, domain,
6057                                block_find_non_opaque_type_preferred,
6058                                &with_opaque);
6059
6060       /* Some caution must be observed with overloaded functions and
6061          methods, since the index will not contain any overload
6062          information (but NAME might contain it).  */
6063
6064       if (sym != NULL
6065           && strcmp_iw (SYMBOL_SEARCH_NAME (sym), name) == 0)
6066         return stab;
6067       if (with_opaque != NULL
6068           && strcmp_iw (SYMBOL_SEARCH_NAME (with_opaque), name) == 0)
6069         stab_best = stab;
6070
6071       /* Keep looking through other CUs.  */
6072     }
6073
6074   return stab_best;
6075 }
6076
6077 /* This dumps minimal information about .debug_names.  It is called
6078    via "mt print objfiles".  The gdb.dwarf2/gdb-index.exp testcase
6079    uses this to verify that .debug_names has been loaded.  */
6080
6081 static void
6082 dw2_debug_names_dump (struct objfile *objfile)
6083 {
6084   struct dwarf2_per_objfile *dwarf2_per_objfile
6085     = get_dwarf2_per_objfile (objfile);
6086
6087   gdb_assert (dwarf2_per_objfile->using_index);
6088   printf_filtered (".debug_names:");
6089   if (dwarf2_per_objfile->debug_names_table)
6090     printf_filtered (" exists\n");
6091   else
6092     printf_filtered (" faked for \"readnow\"\n");
6093   printf_filtered ("\n");
6094 }
6095
6096 static void
6097 dw2_debug_names_expand_symtabs_for_function (struct objfile *objfile,
6098                                              const char *func_name)
6099 {
6100   struct dwarf2_per_objfile *dwarf2_per_objfile
6101     = get_dwarf2_per_objfile (objfile);
6102
6103   /* dwarf2_per_objfile->debug_names_table is NULL if OBJF_READNOW.  */
6104   if (dwarf2_per_objfile->debug_names_table)
6105     {
6106       const mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6107
6108       /* Note: It doesn't matter what we pass for block_index here.  */
6109       dw2_debug_names_iterator iter (map, false /* want_specific_block */,
6110                                      GLOBAL_BLOCK, VAR_DOMAIN, func_name);
6111
6112       struct dwarf2_per_cu_data *per_cu;
6113       while ((per_cu = iter.next ()) != NULL)
6114         dw2_instantiate_symtab (per_cu, false);
6115     }
6116 }
6117
6118 static void
6119 dw2_debug_names_expand_symtabs_matching
6120   (struct objfile *objfile,
6121    gdb::function_view<expand_symtabs_file_matcher_ftype> file_matcher,
6122    const lookup_name_info &lookup_name,
6123    gdb::function_view<expand_symtabs_symbol_matcher_ftype> symbol_matcher,
6124    gdb::function_view<expand_symtabs_exp_notify_ftype> expansion_notify,
6125    enum search_domain kind)
6126 {
6127   struct dwarf2_per_objfile *dwarf2_per_objfile
6128     = get_dwarf2_per_objfile (objfile);
6129
6130   /* debug_names_table is NULL if OBJF_READNOW.  */
6131   if (!dwarf2_per_objfile->debug_names_table)
6132     return;
6133
6134   dw_expand_symtabs_matching_file_matcher (dwarf2_per_objfile, file_matcher);
6135
6136   mapped_debug_names &map = *dwarf2_per_objfile->debug_names_table;
6137
6138   dw2_expand_symtabs_matching_symbol (map, lookup_name,
6139                                       symbol_matcher,
6140                                       kind, [&] (offset_type namei)
6141     {
6142       /* The name was matched, now expand corresponding CUs that were
6143          marked.  */
6144       dw2_debug_names_iterator iter (map, kind, namei);
6145
6146       struct dwarf2_per_cu_data *per_cu;
6147       while ((per_cu = iter.next ()) != NULL)
6148         dw2_expand_symtabs_matching_one (per_cu, file_matcher,
6149                                          expansion_notify);
6150     });
6151 }
6152
6153 const struct quick_symbol_functions dwarf2_debug_names_functions =
6154 {
6155   dw2_has_symbols,
6156   dw2_find_last_source_symtab,
6157   dw2_forget_cached_source_info,
6158   dw2_map_symtabs_matching_filename,
6159   dw2_debug_names_lookup_symbol,
6160   dw2_print_stats,
6161   dw2_debug_names_dump,
6162   dw2_debug_names_expand_symtabs_for_function,
6163   dw2_expand_all_symtabs,
6164   dw2_expand_symtabs_with_fullname,
6165   dw2_map_matching_symbols,
6166   dw2_debug_names_expand_symtabs_matching,
6167   dw2_find_pc_sect_compunit_symtab,
6168   NULL,
6169   dw2_map_symbol_filenames
6170 };
6171
6172 /* Get the content of the .gdb_index section of OBJ.  SECTION_OWNER should point
6173    to either a dwarf2_per_objfile or dwz_file object.  */
6174
6175 template <typename T>
6176 static gdb::array_view<const gdb_byte>
6177 get_gdb_index_contents_from_section (objfile *obj, T *section_owner)
6178 {
6179   dwarf2_section_info *section = &section_owner->gdb_index;
6180
6181   if (dwarf2_section_empty_p (section))
6182     return {};
6183
6184   /* Older elfutils strip versions could keep the section in the main
6185      executable while splitting it for the separate debug info file.  */
6186   if ((get_section_flags (section) & SEC_HAS_CONTENTS) == 0)
6187     return {};
6188
6189   dwarf2_read_section (obj, section);
6190
6191   return {section->buffer, section->size};
6192 }
6193
6194 /* Lookup the index cache for the contents of the index associated to
6195    DWARF2_OBJ.  */
6196
6197 static gdb::array_view<const gdb_byte>
6198 get_gdb_index_contents_from_cache (objfile *obj, dwarf2_per_objfile *dwarf2_obj)
6199 {
6200   const bfd_build_id *build_id = build_id_bfd_get (obj->obfd);
6201   if (build_id == nullptr)
6202     return {};
6203
6204   return global_index_cache.lookup_gdb_index (build_id,
6205                                               &dwarf2_obj->index_cache_res);
6206 }
6207
6208 /* Same as the above, but for DWZ.  */
6209
6210 static gdb::array_view<const gdb_byte>
6211 get_gdb_index_contents_from_cache_dwz (objfile *obj, dwz_file *dwz)
6212 {
6213   const bfd_build_id *build_id = build_id_bfd_get (dwz->dwz_bfd.get ());
6214   if (build_id == nullptr)
6215     return {};
6216
6217   return global_index_cache.lookup_gdb_index (build_id, &dwz->index_cache_res);
6218 }
6219
6220 /* See symfile.h.  */
6221
6222 bool
6223 dwarf2_initialize_objfile (struct objfile *objfile, dw_index_kind *index_kind)
6224 {
6225   struct dwarf2_per_objfile *dwarf2_per_objfile
6226     = get_dwarf2_per_objfile (objfile);
6227
6228   /* If we're about to read full symbols, don't bother with the
6229      indices.  In this case we also don't care if some other debug
6230      format is making psymtabs, because they are all about to be
6231      expanded anyway.  */
6232   if ((objfile->flags & OBJF_READNOW))
6233     {
6234       dwarf2_per_objfile->using_index = 1;
6235       create_all_comp_units (dwarf2_per_objfile);
6236       create_all_type_units (dwarf2_per_objfile);
6237       dwarf2_per_objfile->quick_file_names_table
6238         = create_quick_file_names_table
6239             (dwarf2_per_objfile->all_comp_units.size ());
6240
6241       for (int i = 0; i < (dwarf2_per_objfile->all_comp_units.size ()
6242                            + dwarf2_per_objfile->all_type_units.size ()); ++i)
6243         {
6244           dwarf2_per_cu_data *per_cu = dwarf2_per_objfile->get_cutu (i);
6245
6246           per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6247                                             struct dwarf2_per_cu_quick_data);
6248         }
6249
6250       /* Return 1 so that gdb sees the "quick" functions.  However,
6251          these functions will be no-ops because we will have expanded
6252          all symtabs.  */
6253       *index_kind = dw_index_kind::GDB_INDEX;
6254       return true;
6255     }
6256
6257   if (dwarf2_read_debug_names (dwarf2_per_objfile))
6258     {
6259       *index_kind = dw_index_kind::DEBUG_NAMES;
6260       return true;
6261     }
6262
6263   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6264                              get_gdb_index_contents_from_section<struct dwarf2_per_objfile>,
6265                              get_gdb_index_contents_from_section<dwz_file>))
6266     {
6267       *index_kind = dw_index_kind::GDB_INDEX;
6268       return true;
6269     }
6270
6271   /* ... otherwise, try to find the index in the index cache.  */
6272   if (dwarf2_read_gdb_index (dwarf2_per_objfile,
6273                              get_gdb_index_contents_from_cache,
6274                              get_gdb_index_contents_from_cache_dwz))
6275     {
6276       global_index_cache.hit ();
6277       *index_kind = dw_index_kind::GDB_INDEX;
6278       return true;
6279     }
6280
6281   global_index_cache.miss ();
6282   return false;
6283 }
6284
6285 \f
6286
6287 /* Build a partial symbol table.  */
6288
6289 void
6290 dwarf2_build_psymtabs (struct objfile *objfile)
6291 {
6292   struct dwarf2_per_objfile *dwarf2_per_objfile
6293     = get_dwarf2_per_objfile (objfile);
6294
6295   if (objfile->global_psymbols.capacity () == 0
6296       && objfile->static_psymbols.capacity () == 0)
6297     init_psymbol_list (objfile, 1024);
6298
6299   TRY
6300     {
6301       /* This isn't really ideal: all the data we allocate on the
6302          objfile's obstack is still uselessly kept around.  However,
6303          freeing it seems unsafe.  */
6304       psymtab_discarder psymtabs (objfile);
6305       dwarf2_build_psymtabs_hard (dwarf2_per_objfile);
6306       psymtabs.keep ();
6307
6308       /* (maybe) store an index in the cache.  */
6309       global_index_cache.store (dwarf2_per_objfile);
6310     }
6311   CATCH (except, RETURN_MASK_ERROR)
6312     {
6313       exception_print (gdb_stderr, except);
6314     }
6315   END_CATCH
6316 }
6317
6318 /* Return the total length of the CU described by HEADER.  */
6319
6320 static unsigned int
6321 get_cu_length (const struct comp_unit_head *header)
6322 {
6323   return header->initial_length_size + header->length;
6324 }
6325
6326 /* Return TRUE if SECT_OFF is within CU_HEADER.  */
6327
6328 static inline bool
6329 offset_in_cu_p (const comp_unit_head *cu_header, sect_offset sect_off)
6330 {
6331   sect_offset bottom = cu_header->sect_off;
6332   sect_offset top = cu_header->sect_off + get_cu_length (cu_header);
6333
6334   return sect_off >= bottom && sect_off < top;
6335 }
6336
6337 /* Find the base address of the compilation unit for range lists and
6338    location lists.  It will normally be specified by DW_AT_low_pc.
6339    In DWARF-3 draft 4, the base address could be overridden by
6340    DW_AT_entry_pc.  It's been removed, but GCC still uses this for
6341    compilation units with discontinuous ranges.  */
6342
6343 static void
6344 dwarf2_find_base_address (struct die_info *die, struct dwarf2_cu *cu)
6345 {
6346   struct attribute *attr;
6347
6348   cu->base_known = 0;
6349   cu->base_address = 0;
6350
6351   attr = dwarf2_attr (die, DW_AT_entry_pc, cu);
6352   if (attr)
6353     {
6354       cu->base_address = attr_value_as_address (attr);
6355       cu->base_known = 1;
6356     }
6357   else
6358     {
6359       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
6360       if (attr)
6361         {
6362           cu->base_address = attr_value_as_address (attr);
6363           cu->base_known = 1;
6364         }
6365     }
6366 }
6367
6368 /* Read in the comp unit header information from the debug_info at info_ptr.
6369    Use rcuh_kind::COMPILE as the default type if not known by the caller.
6370    NOTE: This leaves members offset, first_die_offset to be filled in
6371    by the caller.  */
6372
6373 static const gdb_byte *
6374 read_comp_unit_head (struct comp_unit_head *cu_header,
6375                      const gdb_byte *info_ptr,
6376                      struct dwarf2_section_info *section,
6377                      rcuh_kind section_kind)
6378 {
6379   int signed_addr;
6380   unsigned int bytes_read;
6381   const char *filename = get_section_file_name (section);
6382   bfd *abfd = get_section_bfd_owner (section);
6383
6384   cu_header->length = read_initial_length (abfd, info_ptr, &bytes_read);
6385   cu_header->initial_length_size = bytes_read;
6386   cu_header->offset_size = (bytes_read == 4) ? 4 : 8;
6387   info_ptr += bytes_read;
6388   cu_header->version = read_2_bytes (abfd, info_ptr);
6389   if (cu_header->version < 2 || cu_header->version > 5)
6390     error (_("Dwarf Error: wrong version in compilation unit header "
6391            "(is %d, should be 2, 3, 4 or 5) [in module %s]"),
6392            cu_header->version, filename);
6393   info_ptr += 2;
6394   if (cu_header->version < 5)
6395     switch (section_kind)
6396       {
6397       case rcuh_kind::COMPILE:
6398         cu_header->unit_type = DW_UT_compile;
6399         break;
6400       case rcuh_kind::TYPE:
6401         cu_header->unit_type = DW_UT_type;
6402         break;
6403       default:
6404         internal_error (__FILE__, __LINE__,
6405                         _("read_comp_unit_head: invalid section_kind"));
6406       }
6407   else
6408     {
6409       cu_header->unit_type = static_cast<enum dwarf_unit_type>
6410                                                  (read_1_byte (abfd, info_ptr));
6411       info_ptr += 1;
6412       switch (cu_header->unit_type)
6413         {
6414         case DW_UT_compile:
6415           if (section_kind != rcuh_kind::COMPILE)
6416             error (_("Dwarf Error: wrong unit_type in compilation unit header "
6417                    "(is DW_UT_compile, should be DW_UT_type) [in module %s]"),
6418                    filename);
6419           break;
6420         case DW_UT_type:
6421           section_kind = rcuh_kind::TYPE;
6422           break;
6423         default:
6424           error (_("Dwarf Error: wrong unit_type in compilation unit header "
6425                  "(is %d, should be %d or %d) [in module %s]"),
6426                  cu_header->unit_type, DW_UT_compile, DW_UT_type, filename);
6427         }
6428
6429       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6430       info_ptr += 1;
6431     }
6432   cu_header->abbrev_sect_off = (sect_offset) read_offset (abfd, info_ptr,
6433                                                           cu_header,
6434                                                           &bytes_read);
6435   info_ptr += bytes_read;
6436   if (cu_header->version < 5)
6437     {
6438       cu_header->addr_size = read_1_byte (abfd, info_ptr);
6439       info_ptr += 1;
6440     }
6441   signed_addr = bfd_get_sign_extend_vma (abfd);
6442   if (signed_addr < 0)
6443     internal_error (__FILE__, __LINE__,
6444                     _("read_comp_unit_head: dwarf from non elf file"));
6445   cu_header->signed_addr_p = signed_addr;
6446
6447   if (section_kind == rcuh_kind::TYPE)
6448     {
6449       LONGEST type_offset;
6450
6451       cu_header->signature = read_8_bytes (abfd, info_ptr);
6452       info_ptr += 8;
6453
6454       type_offset = read_offset (abfd, info_ptr, cu_header, &bytes_read);
6455       info_ptr += bytes_read;
6456       cu_header->type_cu_offset_in_tu = (cu_offset) type_offset;
6457       if (to_underlying (cu_header->type_cu_offset_in_tu) != type_offset)
6458         error (_("Dwarf Error: Too big type_offset in compilation unit "
6459                "header (is %s) [in module %s]"), plongest (type_offset),
6460                filename);
6461     }
6462
6463   return info_ptr;
6464 }
6465
6466 /* Helper function that returns the proper abbrev section for
6467    THIS_CU.  */
6468
6469 static struct dwarf2_section_info *
6470 get_abbrev_section_for_cu (struct dwarf2_per_cu_data *this_cu)
6471 {
6472   struct dwarf2_section_info *abbrev;
6473   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
6474
6475   if (this_cu->is_dwz)
6476     abbrev = &dwarf2_get_dwz_file (dwarf2_per_objfile)->abbrev;
6477   else
6478     abbrev = &dwarf2_per_objfile->abbrev;
6479
6480   return abbrev;
6481 }
6482
6483 /* Subroutine of read_and_check_comp_unit_head and
6484    read_and_check_type_unit_head to simplify them.
6485    Perform various error checking on the header.  */
6486
6487 static void
6488 error_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6489                             struct comp_unit_head *header,
6490                             struct dwarf2_section_info *section,
6491                             struct dwarf2_section_info *abbrev_section)
6492 {
6493   const char *filename = get_section_file_name (section);
6494
6495   if (to_underlying (header->abbrev_sect_off)
6496       >= dwarf2_section_size (dwarf2_per_objfile->objfile, abbrev_section))
6497     error (_("Dwarf Error: bad offset (%s) in compilation unit header "
6498            "(offset %s + 6) [in module %s]"),
6499            sect_offset_str (header->abbrev_sect_off),
6500            sect_offset_str (header->sect_off),
6501            filename);
6502
6503   /* Cast to ULONGEST to use 64-bit arithmetic when possible to
6504      avoid potential 32-bit overflow.  */
6505   if (((ULONGEST) header->sect_off + get_cu_length (header))
6506       > section->size)
6507     error (_("Dwarf Error: bad length (0x%x) in compilation unit header "
6508            "(offset %s + 0) [in module %s]"),
6509            header->length, sect_offset_str (header->sect_off),
6510            filename);
6511 }
6512
6513 /* Read in a CU/TU header and perform some basic error checking.
6514    The contents of the header are stored in HEADER.
6515    The result is a pointer to the start of the first DIE.  */
6516
6517 static const gdb_byte *
6518 read_and_check_comp_unit_head (struct dwarf2_per_objfile *dwarf2_per_objfile,
6519                                struct comp_unit_head *header,
6520                                struct dwarf2_section_info *section,
6521                                struct dwarf2_section_info *abbrev_section,
6522                                const gdb_byte *info_ptr,
6523                                rcuh_kind section_kind)
6524 {
6525   const gdb_byte *beg_of_comp_unit = info_ptr;
6526
6527   header->sect_off = (sect_offset) (beg_of_comp_unit - section->buffer);
6528
6529   info_ptr = read_comp_unit_head (header, info_ptr, section, section_kind);
6530
6531   header->first_die_cu_offset = (cu_offset) (info_ptr - beg_of_comp_unit);
6532
6533   error_check_comp_unit_head (dwarf2_per_objfile, header, section,
6534                               abbrev_section);
6535
6536   return info_ptr;
6537 }
6538
6539 /* Fetch the abbreviation table offset from a comp or type unit header.  */
6540
6541 static sect_offset
6542 read_abbrev_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
6543                     struct dwarf2_section_info *section,
6544                     sect_offset sect_off)
6545 {
6546   bfd *abfd = get_section_bfd_owner (section);
6547   const gdb_byte *info_ptr;
6548   unsigned int initial_length_size, offset_size;
6549   uint16_t version;
6550
6551   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
6552   info_ptr = section->buffer + to_underlying (sect_off);
6553   read_initial_length (abfd, info_ptr, &initial_length_size);
6554   offset_size = initial_length_size == 4 ? 4 : 8;
6555   info_ptr += initial_length_size;
6556
6557   version = read_2_bytes (abfd, info_ptr);
6558   info_ptr += 2;
6559   if (version >= 5)
6560     {
6561       /* Skip unit type and address size.  */
6562       info_ptr += 2;
6563     }
6564
6565   return (sect_offset) read_offset_1 (abfd, info_ptr, offset_size);
6566 }
6567
6568 /* Allocate a new partial symtab for file named NAME and mark this new
6569    partial symtab as being an include of PST.  */
6570
6571 static void
6572 dwarf2_create_include_psymtab (const char *name, struct partial_symtab *pst,
6573                                struct objfile *objfile)
6574 {
6575   struct partial_symtab *subpst = allocate_psymtab (name, objfile);
6576
6577   if (!IS_ABSOLUTE_PATH (subpst->filename))
6578     {
6579       /* It shares objfile->objfile_obstack.  */
6580       subpst->dirname = pst->dirname;
6581     }
6582
6583   subpst->dependencies
6584     = XOBNEW (&objfile->objfile_obstack, struct partial_symtab *);
6585   subpst->dependencies[0] = pst;
6586   subpst->number_of_dependencies = 1;
6587
6588   subpst->globals_offset = 0;
6589   subpst->n_global_syms = 0;
6590   subpst->statics_offset = 0;
6591   subpst->n_static_syms = 0;
6592   subpst->compunit_symtab = NULL;
6593   subpst->read_symtab = pst->read_symtab;
6594   subpst->readin = 0;
6595
6596   /* No private part is necessary for include psymtabs.  This property
6597      can be used to differentiate between such include psymtabs and
6598      the regular ones.  */
6599   subpst->read_symtab_private = NULL;
6600 }
6601
6602 /* Read the Line Number Program data and extract the list of files
6603    included by the source file represented by PST.  Build an include
6604    partial symtab for each of these included files.  */
6605
6606 static void
6607 dwarf2_build_include_psymtabs (struct dwarf2_cu *cu,
6608                                struct die_info *die,
6609                                struct partial_symtab *pst)
6610 {
6611   line_header_up lh;
6612   struct attribute *attr;
6613
6614   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
6615   if (attr)
6616     lh = dwarf_decode_line_header ((sect_offset) DW_UNSND (attr), cu);
6617   if (lh == NULL)
6618     return;  /* No linetable, so no includes.  */
6619
6620   /* NOTE: pst->dirname is DW_AT_comp_dir (if present).  Also note
6621      that we pass in the raw text_low here; that is ok because we're
6622      only decoding the line table to make include partial symtabs, and
6623      so the addresses aren't really used.  */
6624   dwarf_decode_lines (lh.get (), pst->dirname, cu, pst,
6625                       pst->raw_text_low (), 1);
6626 }
6627
6628 static hashval_t
6629 hash_signatured_type (const void *item)
6630 {
6631   const struct signatured_type *sig_type
6632     = (const struct signatured_type *) item;
6633
6634   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
6635   return sig_type->signature;
6636 }
6637
6638 static int
6639 eq_signatured_type (const void *item_lhs, const void *item_rhs)
6640 {
6641   const struct signatured_type *lhs = (const struct signatured_type *) item_lhs;
6642   const struct signatured_type *rhs = (const struct signatured_type *) item_rhs;
6643
6644   return lhs->signature == rhs->signature;
6645 }
6646
6647 /* Allocate a hash table for signatured types.  */
6648
6649 static htab_t
6650 allocate_signatured_type_table (struct objfile *objfile)
6651 {
6652   return htab_create_alloc_ex (41,
6653                                hash_signatured_type,
6654                                eq_signatured_type,
6655                                NULL,
6656                                &objfile->objfile_obstack,
6657                                hashtab_obstack_allocate,
6658                                dummy_obstack_deallocate);
6659 }
6660
6661 /* A helper function to add a signatured type CU to a table.  */
6662
6663 static int
6664 add_signatured_type_cu_to_table (void **slot, void *datum)
6665 {
6666   struct signatured_type *sigt = (struct signatured_type *) *slot;
6667   std::vector<signatured_type *> *all_type_units
6668     = (std::vector<signatured_type *> *) datum;
6669
6670   all_type_units->push_back (sigt);
6671
6672   return 1;
6673 }
6674
6675 /* A helper for create_debug_types_hash_table.  Read types from SECTION
6676    and fill them into TYPES_HTAB.  It will process only type units,
6677    therefore DW_UT_type.  */
6678
6679 static void
6680 create_debug_type_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6681                               struct dwo_file *dwo_file,
6682                               dwarf2_section_info *section, htab_t &types_htab,
6683                               rcuh_kind section_kind)
6684 {
6685   struct objfile *objfile = dwarf2_per_objfile->objfile;
6686   struct dwarf2_section_info *abbrev_section;
6687   bfd *abfd;
6688   const gdb_byte *info_ptr, *end_ptr;
6689
6690   abbrev_section = (dwo_file != NULL
6691                     ? &dwo_file->sections.abbrev
6692                     : &dwarf2_per_objfile->abbrev);
6693
6694   if (dwarf_read_debug)
6695     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
6696                         get_section_name (section),
6697                         get_section_file_name (abbrev_section));
6698
6699   dwarf2_read_section (objfile, section);
6700   info_ptr = section->buffer;
6701
6702   if (info_ptr == NULL)
6703     return;
6704
6705   /* We can't set abfd until now because the section may be empty or
6706      not present, in which case the bfd is unknown.  */
6707   abfd = get_section_bfd_owner (section);
6708
6709   /* We don't use init_cutu_and_read_dies_simple, or some such, here
6710      because we don't need to read any dies: the signature is in the
6711      header.  */
6712
6713   end_ptr = info_ptr + section->size;
6714   while (info_ptr < end_ptr)
6715     {
6716       struct signatured_type *sig_type;
6717       struct dwo_unit *dwo_tu;
6718       void **slot;
6719       const gdb_byte *ptr = info_ptr;
6720       struct comp_unit_head header;
6721       unsigned int length;
6722
6723       sect_offset sect_off = (sect_offset) (ptr - section->buffer);
6724
6725       /* Initialize it due to a false compiler warning.  */
6726       header.signature = -1;
6727       header.type_cu_offset_in_tu = (cu_offset) -1;
6728
6729       /* We need to read the type's signature in order to build the hash
6730          table, but we don't need anything else just yet.  */
6731
6732       ptr = read_and_check_comp_unit_head (dwarf2_per_objfile, &header, section,
6733                                            abbrev_section, ptr, section_kind);
6734
6735       length = get_cu_length (&header);
6736
6737       /* Skip dummy type units.  */
6738       if (ptr >= info_ptr + length
6739           || peek_abbrev_code (abfd, ptr) == 0
6740           || header.unit_type != DW_UT_type)
6741         {
6742           info_ptr += length;
6743           continue;
6744         }
6745
6746       if (types_htab == NULL)
6747         {
6748           if (dwo_file)
6749             types_htab = allocate_dwo_unit_table (objfile);
6750           else
6751             types_htab = allocate_signatured_type_table (objfile);
6752         }
6753
6754       if (dwo_file)
6755         {
6756           sig_type = NULL;
6757           dwo_tu = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6758                                    struct dwo_unit);
6759           dwo_tu->dwo_file = dwo_file;
6760           dwo_tu->signature = header.signature;
6761           dwo_tu->type_offset_in_tu = header.type_cu_offset_in_tu;
6762           dwo_tu->section = section;
6763           dwo_tu->sect_off = sect_off;
6764           dwo_tu->length = length;
6765         }
6766       else
6767         {
6768           /* N.B.: type_offset is not usable if this type uses a DWO file.
6769              The real type_offset is in the DWO file.  */
6770           dwo_tu = NULL;
6771           sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6772                                      struct signatured_type);
6773           sig_type->signature = header.signature;
6774           sig_type->type_offset_in_tu = header.type_cu_offset_in_tu;
6775           sig_type->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6776           sig_type->per_cu.is_debug_types = 1;
6777           sig_type->per_cu.section = section;
6778           sig_type->per_cu.sect_off = sect_off;
6779           sig_type->per_cu.length = length;
6780         }
6781
6782       slot = htab_find_slot (types_htab,
6783                              dwo_file ? (void*) dwo_tu : (void *) sig_type,
6784                              INSERT);
6785       gdb_assert (slot != NULL);
6786       if (*slot != NULL)
6787         {
6788           sect_offset dup_sect_off;
6789
6790           if (dwo_file)
6791             {
6792               const struct dwo_unit *dup_tu
6793                 = (const struct dwo_unit *) *slot;
6794
6795               dup_sect_off = dup_tu->sect_off;
6796             }
6797           else
6798             {
6799               const struct signatured_type *dup_tu
6800                 = (const struct signatured_type *) *slot;
6801
6802               dup_sect_off = dup_tu->per_cu.sect_off;
6803             }
6804
6805           complaint (_("debug type entry at offset %s is duplicate to"
6806                        " the entry at offset %s, signature %s"),
6807                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
6808                      hex_string (header.signature));
6809         }
6810       *slot = dwo_file ? (void *) dwo_tu : (void *) sig_type;
6811
6812       if (dwarf_read_debug > 1)
6813         fprintf_unfiltered (gdb_stdlog, "  offset %s, signature %s\n",
6814                             sect_offset_str (sect_off),
6815                             hex_string (header.signature));
6816
6817       info_ptr += length;
6818     }
6819 }
6820
6821 /* Create the hash table of all entries in the .debug_types
6822    (or .debug_types.dwo) section(s).
6823    If reading a DWO file, then DWO_FILE is a pointer to the DWO file object,
6824    otherwise it is NULL.
6825
6826    The result is a pointer to the hash table or NULL if there are no types.
6827
6828    Note: This function processes DWO files only, not DWP files.  */
6829
6830 static void
6831 create_debug_types_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
6832                                struct dwo_file *dwo_file,
6833                                VEC (dwarf2_section_info_def) *types,
6834                                htab_t &types_htab)
6835 {
6836   int ix;
6837   struct dwarf2_section_info *section;
6838
6839   if (VEC_empty (dwarf2_section_info_def, types))
6840     return;
6841
6842   for (ix = 0;
6843        VEC_iterate (dwarf2_section_info_def, types, ix, section);
6844        ++ix)
6845     create_debug_type_hash_table (dwarf2_per_objfile, dwo_file, section,
6846                                   types_htab, rcuh_kind::TYPE);
6847 }
6848
6849 /* Create the hash table of all entries in the .debug_types section,
6850    and initialize all_type_units.
6851    The result is zero if there is an error (e.g. missing .debug_types section),
6852    otherwise non-zero.  */
6853
6854 static int
6855 create_all_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
6856 {
6857   htab_t types_htab = NULL;
6858
6859   create_debug_type_hash_table (dwarf2_per_objfile, NULL,
6860                                 &dwarf2_per_objfile->info, types_htab,
6861                                 rcuh_kind::COMPILE);
6862   create_debug_types_hash_table (dwarf2_per_objfile, NULL,
6863                                  dwarf2_per_objfile->types, types_htab);
6864   if (types_htab == NULL)
6865     {
6866       dwarf2_per_objfile->signatured_types = NULL;
6867       return 0;
6868     }
6869
6870   dwarf2_per_objfile->signatured_types = types_htab;
6871
6872   gdb_assert (dwarf2_per_objfile->all_type_units.empty ());
6873   dwarf2_per_objfile->all_type_units.reserve (htab_elements (types_htab));
6874
6875   htab_traverse_noresize (types_htab, add_signatured_type_cu_to_table,
6876                           &dwarf2_per_objfile->all_type_units);
6877
6878   return 1;
6879 }
6880
6881 /* Add an entry for signature SIG to dwarf2_per_objfile->signatured_types.
6882    If SLOT is non-NULL, it is the entry to use in the hash table.
6883    Otherwise we find one.  */
6884
6885 static struct signatured_type *
6886 add_type_unit (struct dwarf2_per_objfile *dwarf2_per_objfile, ULONGEST sig,
6887                void **slot)
6888 {
6889   struct objfile *objfile = dwarf2_per_objfile->objfile;
6890
6891   if (dwarf2_per_objfile->all_type_units.size ()
6892       == dwarf2_per_objfile->all_type_units.capacity ())
6893     ++dwarf2_per_objfile->tu_stats.nr_all_type_units_reallocs;
6894
6895   signatured_type *sig_type = OBSTACK_ZALLOC (&objfile->objfile_obstack,
6896                                               struct signatured_type);
6897
6898   dwarf2_per_objfile->all_type_units.push_back (sig_type);
6899   sig_type->signature = sig;
6900   sig_type->per_cu.is_debug_types = 1;
6901   if (dwarf2_per_objfile->using_index)
6902     {
6903       sig_type->per_cu.v.quick =
6904         OBSTACK_ZALLOC (&objfile->objfile_obstack,
6905                         struct dwarf2_per_cu_quick_data);
6906     }
6907
6908   if (slot == NULL)
6909     {
6910       slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6911                              sig_type, INSERT);
6912     }
6913   gdb_assert (*slot == NULL);
6914   *slot = sig_type;
6915   /* The rest of sig_type must be filled in by the caller.  */
6916   return sig_type;
6917 }
6918
6919 /* Subroutine of lookup_dwo_signatured_type and lookup_dwp_signatured_type.
6920    Fill in SIG_ENTRY with DWO_ENTRY.  */
6921
6922 static void
6923 fill_in_sig_entry_from_dwo_entry (struct dwarf2_per_objfile *dwarf2_per_objfile,
6924                                   struct signatured_type *sig_entry,
6925                                   struct dwo_unit *dwo_entry)
6926 {
6927   /* Make sure we're not clobbering something we don't expect to.  */
6928   gdb_assert (! sig_entry->per_cu.queued);
6929   gdb_assert (sig_entry->per_cu.cu == NULL);
6930   if (dwarf2_per_objfile->using_index)
6931     {
6932       gdb_assert (sig_entry->per_cu.v.quick != NULL);
6933       gdb_assert (sig_entry->per_cu.v.quick->compunit_symtab == NULL);
6934     }
6935   else
6936       gdb_assert (sig_entry->per_cu.v.psymtab == NULL);
6937   gdb_assert (sig_entry->signature == dwo_entry->signature);
6938   gdb_assert (to_underlying (sig_entry->type_offset_in_section) == 0);
6939   gdb_assert (sig_entry->type_unit_group == NULL);
6940   gdb_assert (sig_entry->dwo_unit == NULL);
6941
6942   sig_entry->per_cu.section = dwo_entry->section;
6943   sig_entry->per_cu.sect_off = dwo_entry->sect_off;
6944   sig_entry->per_cu.length = dwo_entry->length;
6945   sig_entry->per_cu.reading_dwo_directly = 1;
6946   sig_entry->per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
6947   sig_entry->type_offset_in_tu = dwo_entry->type_offset_in_tu;
6948   sig_entry->dwo_unit = dwo_entry;
6949 }
6950
6951 /* Subroutine of lookup_signatured_type.
6952    If we haven't read the TU yet, create the signatured_type data structure
6953    for a TU to be read in directly from a DWO file, bypassing the stub.
6954    This is the "Stay in DWO Optimization": When there is no DWP file and we're
6955    using .gdb_index, then when reading a CU we want to stay in the DWO file
6956    containing that CU.  Otherwise we could end up reading several other DWO
6957    files (due to comdat folding) to process the transitive closure of all the
6958    mentioned TUs, and that can be slow.  The current DWO file will have every
6959    type signature that it needs.
6960    We only do this for .gdb_index because in the psymtab case we already have
6961    to read all the DWOs to build the type unit groups.  */
6962
6963 static struct signatured_type *
6964 lookup_dwo_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
6965 {
6966   struct dwarf2_per_objfile *dwarf2_per_objfile
6967     = cu->per_cu->dwarf2_per_objfile;
6968   struct objfile *objfile = dwarf2_per_objfile->objfile;
6969   struct dwo_file *dwo_file;
6970   struct dwo_unit find_dwo_entry, *dwo_entry;
6971   struct signatured_type find_sig_entry, *sig_entry;
6972   void **slot;
6973
6974   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
6975
6976   /* If TU skeletons have been removed then we may not have read in any
6977      TUs yet.  */
6978   if (dwarf2_per_objfile->signatured_types == NULL)
6979     {
6980       dwarf2_per_objfile->signatured_types
6981         = allocate_signatured_type_table (objfile);
6982     }
6983
6984   /* We only ever need to read in one copy of a signatured type.
6985      Use the global signatured_types array to do our own comdat-folding
6986      of types.  If this is the first time we're reading this TU, and
6987      the TU has an entry in .gdb_index, replace the recorded data from
6988      .gdb_index with this TU.  */
6989
6990   find_sig_entry.signature = sig;
6991   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
6992                          &find_sig_entry, INSERT);
6993   sig_entry = (struct signatured_type *) *slot;
6994
6995   /* We can get here with the TU already read, *or* in the process of being
6996      read.  Don't reassign the global entry to point to this DWO if that's
6997      the case.  Also note that if the TU is already being read, it may not
6998      have come from a DWO, the program may be a mix of Fission-compiled
6999      code and non-Fission-compiled code.  */
7000
7001   /* Have we already tried to read this TU?
7002      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7003      needn't exist in the global table yet).  */
7004   if (sig_entry != NULL && sig_entry->per_cu.tu_read)
7005     return sig_entry;
7006
7007   /* Note: cu->dwo_unit is the dwo_unit that references this TU, not the
7008      dwo_unit of the TU itself.  */
7009   dwo_file = cu->dwo_unit->dwo_file;
7010
7011   /* Ok, this is the first time we're reading this TU.  */
7012   if (dwo_file->tus == NULL)
7013     return NULL;
7014   find_dwo_entry.signature = sig;
7015   dwo_entry = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_entry);
7016   if (dwo_entry == NULL)
7017     return NULL;
7018
7019   /* If the global table doesn't have an entry for this TU, add one.  */
7020   if (sig_entry == NULL)
7021     sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7022
7023   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7024   sig_entry->per_cu.tu_read = 1;
7025   return sig_entry;
7026 }
7027
7028 /* Subroutine of lookup_signatured_type.
7029    Look up the type for signature SIG, and if we can't find SIG in .gdb_index
7030    then try the DWP file.  If the TU stub (skeleton) has been removed then
7031    it won't be in .gdb_index.  */
7032
7033 static struct signatured_type *
7034 lookup_dwp_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7035 {
7036   struct dwarf2_per_objfile *dwarf2_per_objfile
7037     = cu->per_cu->dwarf2_per_objfile;
7038   struct objfile *objfile = dwarf2_per_objfile->objfile;
7039   struct dwp_file *dwp_file = get_dwp_file (dwarf2_per_objfile);
7040   struct dwo_unit *dwo_entry;
7041   struct signatured_type find_sig_entry, *sig_entry;
7042   void **slot;
7043
7044   gdb_assert (cu->dwo_unit && dwarf2_per_objfile->using_index);
7045   gdb_assert (dwp_file != NULL);
7046
7047   /* If TU skeletons have been removed then we may not have read in any
7048      TUs yet.  */
7049   if (dwarf2_per_objfile->signatured_types == NULL)
7050     {
7051       dwarf2_per_objfile->signatured_types
7052         = allocate_signatured_type_table (objfile);
7053     }
7054
7055   find_sig_entry.signature = sig;
7056   slot = htab_find_slot (dwarf2_per_objfile->signatured_types,
7057                          &find_sig_entry, INSERT);
7058   sig_entry = (struct signatured_type *) *slot;
7059
7060   /* Have we already tried to read this TU?
7061      Note: sig_entry can be NULL if the skeleton TU was removed (thus it
7062      needn't exist in the global table yet).  */
7063   if (sig_entry != NULL)
7064     return sig_entry;
7065
7066   if (dwp_file->tus == NULL)
7067     return NULL;
7068   dwo_entry = lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, NULL,
7069                                       sig, 1 /* is_debug_types */);
7070   if (dwo_entry == NULL)
7071     return NULL;
7072
7073   sig_entry = add_type_unit (dwarf2_per_objfile, sig, slot);
7074   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, sig_entry, dwo_entry);
7075
7076   return sig_entry;
7077 }
7078
7079 /* Lookup a signature based type for DW_FORM_ref_sig8.
7080    Returns NULL if signature SIG is not present in the table.
7081    It is up to the caller to complain about this.  */
7082
7083 static struct signatured_type *
7084 lookup_signatured_type (struct dwarf2_cu *cu, ULONGEST sig)
7085 {
7086   struct dwarf2_per_objfile *dwarf2_per_objfile
7087     = cu->per_cu->dwarf2_per_objfile;
7088
7089   if (cu->dwo_unit
7090       && dwarf2_per_objfile->using_index)
7091     {
7092       /* We're in a DWO/DWP file, and we're using .gdb_index.
7093          These cases require special processing.  */
7094       if (get_dwp_file (dwarf2_per_objfile) == NULL)
7095         return lookup_dwo_signatured_type (cu, sig);
7096       else
7097         return lookup_dwp_signatured_type (cu, sig);
7098     }
7099   else
7100     {
7101       struct signatured_type find_entry, *entry;
7102
7103       if (dwarf2_per_objfile->signatured_types == NULL)
7104         return NULL;
7105       find_entry.signature = sig;
7106       entry = ((struct signatured_type *)
7107                htab_find (dwarf2_per_objfile->signatured_types, &find_entry));
7108       return entry;
7109     }
7110 }
7111 \f
7112 /* Low level DIE reading support.  */
7113
7114 /* Initialize a die_reader_specs struct from a dwarf2_cu struct.  */
7115
7116 static void
7117 init_cu_die_reader (struct die_reader_specs *reader,
7118                     struct dwarf2_cu *cu,
7119                     struct dwarf2_section_info *section,
7120                     struct dwo_file *dwo_file,
7121                     struct abbrev_table *abbrev_table)
7122 {
7123   gdb_assert (section->readin && section->buffer != NULL);
7124   reader->abfd = get_section_bfd_owner (section);
7125   reader->cu = cu;
7126   reader->dwo_file = dwo_file;
7127   reader->die_section = section;
7128   reader->buffer = section->buffer;
7129   reader->buffer_end = section->buffer + section->size;
7130   reader->comp_dir = NULL;
7131   reader->abbrev_table = abbrev_table;
7132 }
7133
7134 /* Subroutine of init_cutu_and_read_dies to simplify it.
7135    Read in the rest of a CU/TU top level DIE from DWO_UNIT.
7136    There's just a lot of work to do, and init_cutu_and_read_dies is big enough
7137    already.
7138
7139    STUB_COMP_UNIT_DIE is for the stub DIE, we copy over certain attributes
7140    from it to the DIE in the DWO.  If NULL we are skipping the stub.
7141    STUB_COMP_DIR is similar to STUB_COMP_UNIT_DIE: When reading a TU directly
7142    from the DWO file, bypassing the stub, it contains the DW_AT_comp_dir
7143    attribute of the referencing CU.  At most one of STUB_COMP_UNIT_DIE and
7144    STUB_COMP_DIR may be non-NULL.
7145    *RESULT_READER,*RESULT_INFO_PTR,*RESULT_COMP_UNIT_DIE,*RESULT_HAS_CHILDREN
7146    are filled in with the info of the DIE from the DWO file.
7147    *RESULT_DWO_ABBREV_TABLE will be filled in with the abbrev table allocated
7148    from the dwo.  Since *RESULT_READER references this abbrev table, it must be
7149    kept around for at least as long as *RESULT_READER.
7150
7151    The result is non-zero if a valid (non-dummy) DIE was found.  */
7152
7153 static int
7154 read_cutu_die_from_dwo (struct dwarf2_per_cu_data *this_cu,
7155                         struct dwo_unit *dwo_unit,
7156                         struct die_info *stub_comp_unit_die,
7157                         const char *stub_comp_dir,
7158                         struct die_reader_specs *result_reader,
7159                         const gdb_byte **result_info_ptr,
7160                         struct die_info **result_comp_unit_die,
7161                         int *result_has_children,
7162                         abbrev_table_up *result_dwo_abbrev_table)
7163 {
7164   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7165   struct objfile *objfile = dwarf2_per_objfile->objfile;
7166   struct dwarf2_cu *cu = this_cu->cu;
7167   bfd *abfd;
7168   const gdb_byte *begin_info_ptr, *info_ptr;
7169   struct attribute *comp_dir, *stmt_list, *low_pc, *high_pc, *ranges;
7170   int i,num_extra_attrs;
7171   struct dwarf2_section_info *dwo_abbrev_section;
7172   struct attribute *attr;
7173   struct die_info *comp_unit_die;
7174
7175   /* At most one of these may be provided.  */
7176   gdb_assert ((stub_comp_unit_die != NULL) + (stub_comp_dir != NULL) <= 1);
7177
7178   /* These attributes aren't processed until later:
7179      DW_AT_stmt_list, DW_AT_low_pc, DW_AT_high_pc, DW_AT_ranges.
7180      DW_AT_comp_dir is used now, to find the DWO file, but it is also
7181      referenced later.  However, these attributes are found in the stub
7182      which we won't have later.  In order to not impose this complication
7183      on the rest of the code, we read them here and copy them to the
7184      DWO CU/TU die.  */
7185
7186   stmt_list = NULL;
7187   low_pc = NULL;
7188   high_pc = NULL;
7189   ranges = NULL;
7190   comp_dir = NULL;
7191
7192   if (stub_comp_unit_die != NULL)
7193     {
7194       /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
7195          DWO file.  */
7196       if (! this_cu->is_debug_types)
7197         stmt_list = dwarf2_attr (stub_comp_unit_die, DW_AT_stmt_list, cu);
7198       low_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_low_pc, cu);
7199       high_pc = dwarf2_attr (stub_comp_unit_die, DW_AT_high_pc, cu);
7200       ranges = dwarf2_attr (stub_comp_unit_die, DW_AT_ranges, cu);
7201       comp_dir = dwarf2_attr (stub_comp_unit_die, DW_AT_comp_dir, cu);
7202
7203       /* There should be a DW_AT_addr_base attribute here (if needed).
7204          We need the value before we can process DW_FORM_GNU_addr_index.  */
7205       cu->addr_base = 0;
7206       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_addr_base, cu);
7207       if (attr)
7208         cu->addr_base = DW_UNSND (attr);
7209
7210       /* There should be a DW_AT_ranges_base attribute here (if needed).
7211          We need the value before we can process DW_AT_ranges.  */
7212       cu->ranges_base = 0;
7213       attr = dwarf2_attr (stub_comp_unit_die, DW_AT_GNU_ranges_base, cu);
7214       if (attr)
7215         cu->ranges_base = DW_UNSND (attr);
7216     }
7217   else if (stub_comp_dir != NULL)
7218     {
7219       /* Reconstruct the comp_dir attribute to simplify the code below.  */
7220       comp_dir = XOBNEW (&cu->comp_unit_obstack, struct attribute);
7221       comp_dir->name = DW_AT_comp_dir;
7222       comp_dir->form = DW_FORM_string;
7223       DW_STRING_IS_CANONICAL (comp_dir) = 0;
7224       DW_STRING (comp_dir) = stub_comp_dir;
7225     }
7226
7227   /* Set up for reading the DWO CU/TU.  */
7228   cu->dwo_unit = dwo_unit;
7229   dwarf2_section_info *section = dwo_unit->section;
7230   dwarf2_read_section (objfile, section);
7231   abfd = get_section_bfd_owner (section);
7232   begin_info_ptr = info_ptr = (section->buffer
7233                                + to_underlying (dwo_unit->sect_off));
7234   dwo_abbrev_section = &dwo_unit->dwo_file->sections.abbrev;
7235
7236   if (this_cu->is_debug_types)
7237     {
7238       struct signatured_type *sig_type = (struct signatured_type *) this_cu;
7239
7240       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7241                                                 &cu->header, section,
7242                                                 dwo_abbrev_section,
7243                                                 info_ptr, rcuh_kind::TYPE);
7244       /* This is not an assert because it can be caused by bad debug info.  */
7245       if (sig_type->signature != cu->header.signature)
7246         {
7247           error (_("Dwarf Error: signature mismatch %s vs %s while reading"
7248                    " TU at offset %s [in module %s]"),
7249                  hex_string (sig_type->signature),
7250                  hex_string (cu->header.signature),
7251                  sect_offset_str (dwo_unit->sect_off),
7252                  bfd_get_filename (abfd));
7253         }
7254       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7255       /* For DWOs coming from DWP files, we don't know the CU length
7256          nor the type's offset in the TU until now.  */
7257       dwo_unit->length = get_cu_length (&cu->header);
7258       dwo_unit->type_offset_in_tu = cu->header.type_cu_offset_in_tu;
7259
7260       /* Establish the type offset that can be used to lookup the type.
7261          For DWO files, we don't know it until now.  */
7262       sig_type->type_offset_in_section
7263         = dwo_unit->sect_off + to_underlying (dwo_unit->type_offset_in_tu);
7264     }
7265   else
7266     {
7267       info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7268                                                 &cu->header, section,
7269                                                 dwo_abbrev_section,
7270                                                 info_ptr, rcuh_kind::COMPILE);
7271       gdb_assert (dwo_unit->sect_off == cu->header.sect_off);
7272       /* For DWOs coming from DWP files, we don't know the CU length
7273          until now.  */
7274       dwo_unit->length = get_cu_length (&cu->header);
7275     }
7276
7277   *result_dwo_abbrev_table
7278     = abbrev_table_read_table (dwarf2_per_objfile, dwo_abbrev_section,
7279                                cu->header.abbrev_sect_off);
7280   init_cu_die_reader (result_reader, cu, section, dwo_unit->dwo_file,
7281                       result_dwo_abbrev_table->get ());
7282
7283   /* Read in the die, but leave space to copy over the attributes
7284      from the stub.  This has the benefit of simplifying the rest of
7285      the code - all the work to maintain the illusion of a single
7286      DW_TAG_{compile,type}_unit DIE is done here.  */
7287   num_extra_attrs = ((stmt_list != NULL)
7288                      + (low_pc != NULL)
7289                      + (high_pc != NULL)
7290                      + (ranges != NULL)
7291                      + (comp_dir != NULL));
7292   info_ptr = read_full_die_1 (result_reader, result_comp_unit_die, info_ptr,
7293                               result_has_children, num_extra_attrs);
7294
7295   /* Copy over the attributes from the stub to the DIE we just read in.  */
7296   comp_unit_die = *result_comp_unit_die;
7297   i = comp_unit_die->num_attrs;
7298   if (stmt_list != NULL)
7299     comp_unit_die->attrs[i++] = *stmt_list;
7300   if (low_pc != NULL)
7301     comp_unit_die->attrs[i++] = *low_pc;
7302   if (high_pc != NULL)
7303     comp_unit_die->attrs[i++] = *high_pc;
7304   if (ranges != NULL)
7305     comp_unit_die->attrs[i++] = *ranges;
7306   if (comp_dir != NULL)
7307     comp_unit_die->attrs[i++] = *comp_dir;
7308   comp_unit_die->num_attrs += num_extra_attrs;
7309
7310   if (dwarf_die_debug)
7311     {
7312       fprintf_unfiltered (gdb_stdlog,
7313                           "Read die from %s@0x%x of %s:\n",
7314                           get_section_name (section),
7315                           (unsigned) (begin_info_ptr - section->buffer),
7316                           bfd_get_filename (abfd));
7317       dump_die (comp_unit_die, dwarf_die_debug);
7318     }
7319
7320   /* Save the comp_dir attribute.  If there is no DWP file then we'll read
7321      TUs by skipping the stub and going directly to the entry in the DWO file.
7322      However, skipping the stub means we won't get DW_AT_comp_dir, so we have
7323      to get it via circuitous means.  Blech.  */
7324   if (comp_dir != NULL)
7325     result_reader->comp_dir = DW_STRING (comp_dir);
7326
7327   /* Skip dummy compilation units.  */
7328   if (info_ptr >= begin_info_ptr + dwo_unit->length
7329       || peek_abbrev_code (abfd, info_ptr) == 0)
7330     return 0;
7331
7332   *result_info_ptr = info_ptr;
7333   return 1;
7334 }
7335
7336 /* Subroutine of init_cutu_and_read_dies to simplify it.
7337    Look up the DWO unit specified by COMP_UNIT_DIE of THIS_CU.
7338    Returns NULL if the specified DWO unit cannot be found.  */
7339
7340 static struct dwo_unit *
7341 lookup_dwo_unit (struct dwarf2_per_cu_data *this_cu,
7342                  struct die_info *comp_unit_die)
7343 {
7344   struct dwarf2_cu *cu = this_cu->cu;
7345   ULONGEST signature;
7346   struct dwo_unit *dwo_unit;
7347   const char *comp_dir, *dwo_name;
7348
7349   gdb_assert (cu != NULL);
7350
7351   /* Yeah, we look dwo_name up again, but it simplifies the code.  */
7352   dwo_name = dwarf2_string_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7353   comp_dir = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7354
7355   if (this_cu->is_debug_types)
7356     {
7357       struct signatured_type *sig_type;
7358
7359       /* Since this_cu is the first member of struct signatured_type,
7360          we can go from a pointer to one to a pointer to the other.  */
7361       sig_type = (struct signatured_type *) this_cu;
7362       signature = sig_type->signature;
7363       dwo_unit = lookup_dwo_type_unit (sig_type, dwo_name, comp_dir);
7364     }
7365   else
7366     {
7367       struct attribute *attr;
7368
7369       attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
7370       if (! attr)
7371         error (_("Dwarf Error: missing dwo_id for dwo_name %s"
7372                  " [in module %s]"),
7373                dwo_name, objfile_name (this_cu->dwarf2_per_objfile->objfile));
7374       signature = DW_UNSND (attr);
7375       dwo_unit = lookup_dwo_comp_unit (this_cu, dwo_name, comp_dir,
7376                                        signature);
7377     }
7378
7379   return dwo_unit;
7380 }
7381
7382 /* Subroutine of init_cutu_and_read_dies to simplify it.
7383    See it for a description of the parameters.
7384    Read a TU directly from a DWO file, bypassing the stub.  */
7385
7386 static void
7387 init_tu_and_read_dwo_dies (struct dwarf2_per_cu_data *this_cu,
7388                            int use_existing_cu, int keep,
7389                            die_reader_func_ftype *die_reader_func,
7390                            void *data)
7391 {
7392   std::unique_ptr<dwarf2_cu> new_cu;
7393   struct signatured_type *sig_type;
7394   struct die_reader_specs reader;
7395   const gdb_byte *info_ptr;
7396   struct die_info *comp_unit_die;
7397   int has_children;
7398   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7399
7400   /* Verify we can do the following downcast, and that we have the
7401      data we need.  */
7402   gdb_assert (this_cu->is_debug_types && this_cu->reading_dwo_directly);
7403   sig_type = (struct signatured_type *) this_cu;
7404   gdb_assert (sig_type->dwo_unit != NULL);
7405
7406   if (use_existing_cu && this_cu->cu != NULL)
7407     {
7408       gdb_assert (this_cu->cu->dwo_unit == sig_type->dwo_unit);
7409       /* There's no need to do the rereading_dwo_cu handling that
7410          init_cutu_and_read_dies does since we don't read the stub.  */
7411     }
7412   else
7413     {
7414       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7415       gdb_assert (this_cu->cu == NULL);
7416       new_cu.reset (new dwarf2_cu (this_cu));
7417     }
7418
7419   /* A future optimization, if needed, would be to use an existing
7420      abbrev table.  When reading DWOs with skeletonless TUs, all the TUs
7421      could share abbrev tables.  */
7422
7423   /* The abbreviation table used by READER, this must live at least as long as
7424      READER.  */
7425   abbrev_table_up dwo_abbrev_table;
7426
7427   if (read_cutu_die_from_dwo (this_cu, sig_type->dwo_unit,
7428                               NULL /* stub_comp_unit_die */,
7429                               sig_type->dwo_unit->dwo_file->comp_dir,
7430                               &reader, &info_ptr,
7431                               &comp_unit_die, &has_children,
7432                               &dwo_abbrev_table) == 0)
7433     {
7434       /* Dummy die.  */
7435       return;
7436     }
7437
7438   /* All the "real" work is done here.  */
7439   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7440
7441   /* This duplicates the code in init_cutu_and_read_dies,
7442      but the alternative is making the latter more complex.
7443      This function is only for the special case of using DWO files directly:
7444      no point in overly complicating the general case just to handle this.  */
7445   if (new_cu != NULL && keep)
7446     {
7447       /* Link this CU into read_in_chain.  */
7448       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7449       dwarf2_per_objfile->read_in_chain = this_cu;
7450       /* The chain owns it now.  */
7451       new_cu.release ();
7452     }
7453 }
7454
7455 /* Initialize a CU (or TU) and read its DIEs.
7456    If the CU defers to a DWO file, read the DWO file as well.
7457
7458    ABBREV_TABLE, if non-NULL, is the abbreviation table to use.
7459    Otherwise the table specified in the comp unit header is read in and used.
7460    This is an optimization for when we already have the abbrev table.
7461
7462    If USE_EXISTING_CU is non-zero, and THIS_CU->cu is non-NULL, then use it.
7463    Otherwise, a new CU is allocated with xmalloc.
7464
7465    If KEEP is non-zero, then if we allocated a dwarf2_cu we add it to
7466    read_in_chain.  Otherwise the dwarf2_cu data is freed at the end.
7467
7468    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7469    linker) then DIE_READER_FUNC will not get called.  */
7470
7471 static void
7472 init_cutu_and_read_dies (struct dwarf2_per_cu_data *this_cu,
7473                          struct abbrev_table *abbrev_table,
7474                          int use_existing_cu, int keep,
7475                          bool skip_partial,
7476                          die_reader_func_ftype *die_reader_func,
7477                          void *data)
7478 {
7479   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7480   struct objfile *objfile = dwarf2_per_objfile->objfile;
7481   struct dwarf2_section_info *section = this_cu->section;
7482   bfd *abfd = get_section_bfd_owner (section);
7483   struct dwarf2_cu *cu;
7484   const gdb_byte *begin_info_ptr, *info_ptr;
7485   struct die_reader_specs reader;
7486   struct die_info *comp_unit_die;
7487   int has_children;
7488   struct attribute *attr;
7489   struct signatured_type *sig_type = NULL;
7490   struct dwarf2_section_info *abbrev_section;
7491   /* Non-zero if CU currently points to a DWO file and we need to
7492      reread it.  When this happens we need to reread the skeleton die
7493      before we can reread the DWO file (this only applies to CUs, not TUs).  */
7494   int rereading_dwo_cu = 0;
7495
7496   if (dwarf_die_debug)
7497     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7498                         this_cu->is_debug_types ? "type" : "comp",
7499                         sect_offset_str (this_cu->sect_off));
7500
7501   if (use_existing_cu)
7502     gdb_assert (keep);
7503
7504   /* If we're reading a TU directly from a DWO file, including a virtual DWO
7505      file (instead of going through the stub), short-circuit all of this.  */
7506   if (this_cu->reading_dwo_directly)
7507     {
7508       /* Narrow down the scope of possibilities to have to understand.  */
7509       gdb_assert (this_cu->is_debug_types);
7510       gdb_assert (abbrev_table == NULL);
7511       init_tu_and_read_dwo_dies (this_cu, use_existing_cu, keep,
7512                                  die_reader_func, data);
7513       return;
7514     }
7515
7516   /* This is cheap if the section is already read in.  */
7517   dwarf2_read_section (objfile, section);
7518
7519   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7520
7521   abbrev_section = get_abbrev_section_for_cu (this_cu);
7522
7523   std::unique_ptr<dwarf2_cu> new_cu;
7524   if (use_existing_cu && this_cu->cu != NULL)
7525     {
7526       cu = this_cu->cu;
7527       /* If this CU is from a DWO file we need to start over, we need to
7528          refetch the attributes from the skeleton CU.
7529          This could be optimized by retrieving those attributes from when we
7530          were here the first time: the previous comp_unit_die was stored in
7531          comp_unit_obstack.  But there's no data yet that we need this
7532          optimization.  */
7533       if (cu->dwo_unit != NULL)
7534         rereading_dwo_cu = 1;
7535     }
7536   else
7537     {
7538       /* If !use_existing_cu, this_cu->cu must be NULL.  */
7539       gdb_assert (this_cu->cu == NULL);
7540       new_cu.reset (new dwarf2_cu (this_cu));
7541       cu = new_cu.get ();
7542     }
7543
7544   /* Get the header.  */
7545   if (to_underlying (cu->header.first_die_cu_offset) != 0 && !rereading_dwo_cu)
7546     {
7547       /* We already have the header, there's no need to read it in again.  */
7548       info_ptr += to_underlying (cu->header.first_die_cu_offset);
7549     }
7550   else
7551     {
7552       if (this_cu->is_debug_types)
7553         {
7554           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7555                                                     &cu->header, section,
7556                                                     abbrev_section, info_ptr,
7557                                                     rcuh_kind::TYPE);
7558
7559           /* Since per_cu is the first member of struct signatured_type,
7560              we can go from a pointer to one to a pointer to the other.  */
7561           sig_type = (struct signatured_type *) this_cu;
7562           gdb_assert (sig_type->signature == cu->header.signature);
7563           gdb_assert (sig_type->type_offset_in_tu
7564                       == cu->header.type_cu_offset_in_tu);
7565           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7566
7567           /* LENGTH has not been set yet for type units if we're
7568              using .gdb_index.  */
7569           this_cu->length = get_cu_length (&cu->header);
7570
7571           /* Establish the type offset that can be used to lookup the type.  */
7572           sig_type->type_offset_in_section =
7573             this_cu->sect_off + to_underlying (sig_type->type_offset_in_tu);
7574
7575           this_cu->dwarf_version = cu->header.version;
7576         }
7577       else
7578         {
7579           info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7580                                                     &cu->header, section,
7581                                                     abbrev_section,
7582                                                     info_ptr,
7583                                                     rcuh_kind::COMPILE);
7584
7585           gdb_assert (this_cu->sect_off == cu->header.sect_off);
7586           gdb_assert (this_cu->length == get_cu_length (&cu->header));
7587           this_cu->dwarf_version = cu->header.version;
7588         }
7589     }
7590
7591   /* Skip dummy compilation units.  */
7592   if (info_ptr >= begin_info_ptr + this_cu->length
7593       || peek_abbrev_code (abfd, info_ptr) == 0)
7594     return;
7595
7596   /* If we don't have them yet, read the abbrevs for this compilation unit.
7597      And if we need to read them now, make sure they're freed when we're
7598      done (own the table through ABBREV_TABLE_HOLDER).  */
7599   abbrev_table_up abbrev_table_holder;
7600   if (abbrev_table != NULL)
7601     gdb_assert (cu->header.abbrev_sect_off == abbrev_table->sect_off);
7602   else
7603     {
7604       abbrev_table_holder
7605         = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7606                                    cu->header.abbrev_sect_off);
7607       abbrev_table = abbrev_table_holder.get ();
7608     }
7609
7610   /* Read the top level CU/TU die.  */
7611   init_cu_die_reader (&reader, cu, section, NULL, abbrev_table);
7612   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7613
7614   if (skip_partial && comp_unit_die->tag == DW_TAG_partial_unit)
7615     return;
7616
7617   /* If we are in a DWO stub, process it and then read in the "real" CU/TU
7618      from the DWO file.  read_cutu_die_from_dwo will allocate the abbreviation
7619      table from the DWO file and pass the ownership over to us.  It will be
7620      referenced from READER, so we must make sure to free it after we're done
7621      with READER.
7622
7623      Note that if USE_EXISTING_OK != 0, and THIS_CU->cu already contains a
7624      DWO CU, that this test will fail (the attribute will not be present).  */
7625   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_name, cu);
7626   abbrev_table_up dwo_abbrev_table;
7627   if (attr)
7628     {
7629       struct dwo_unit *dwo_unit;
7630       struct die_info *dwo_comp_unit_die;
7631
7632       if (has_children)
7633         {
7634           complaint (_("compilation unit with DW_AT_GNU_dwo_name"
7635                        " has children (offset %s) [in module %s]"),
7636                      sect_offset_str (this_cu->sect_off),
7637                      bfd_get_filename (abfd));
7638         }
7639       dwo_unit = lookup_dwo_unit (this_cu, comp_unit_die);
7640       if (dwo_unit != NULL)
7641         {
7642           if (read_cutu_die_from_dwo (this_cu, dwo_unit,
7643                                       comp_unit_die, NULL,
7644                                       &reader, &info_ptr,
7645                                       &dwo_comp_unit_die, &has_children,
7646                                       &dwo_abbrev_table) == 0)
7647             {
7648               /* Dummy die.  */
7649               return;
7650             }
7651           comp_unit_die = dwo_comp_unit_die;
7652         }
7653       else
7654         {
7655           /* Yikes, we couldn't find the rest of the DIE, we only have
7656              the stub.  A complaint has already been logged.  There's
7657              not much more we can do except pass on the stub DIE to
7658              die_reader_func.  We don't want to throw an error on bad
7659              debug info.  */
7660         }
7661     }
7662
7663   /* All of the above is setup for this call.  Yikes.  */
7664   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7665
7666   /* Done, clean up.  */
7667   if (new_cu != NULL && keep)
7668     {
7669       /* Link this CU into read_in_chain.  */
7670       this_cu->cu->read_in_chain = dwarf2_per_objfile->read_in_chain;
7671       dwarf2_per_objfile->read_in_chain = this_cu;
7672       /* The chain owns it now.  */
7673       new_cu.release ();
7674     }
7675 }
7676
7677 /* Read CU/TU THIS_CU but do not follow DW_AT_GNU_dwo_name if present.
7678    DWO_FILE, if non-NULL, is the DWO file to read (the caller is assumed
7679    to have already done the lookup to find the DWO file).
7680
7681    The caller is required to fill in THIS_CU->section, THIS_CU->offset, and
7682    THIS_CU->is_debug_types, but nothing else.
7683
7684    We fill in THIS_CU->length.
7685
7686    WARNING: If THIS_CU is a "dummy CU" (used as filler by the incremental
7687    linker) then DIE_READER_FUNC will not get called.
7688
7689    THIS_CU->cu is always freed when done.
7690    This is done in order to not leave THIS_CU->cu in a state where we have
7691    to care whether it refers to the "main" CU or the DWO CU.  */
7692
7693 static void
7694 init_cutu_and_read_dies_no_follow (struct dwarf2_per_cu_data *this_cu,
7695                                    struct dwo_file *dwo_file,
7696                                    die_reader_func_ftype *die_reader_func,
7697                                    void *data)
7698 {
7699   struct dwarf2_per_objfile *dwarf2_per_objfile = this_cu->dwarf2_per_objfile;
7700   struct objfile *objfile = dwarf2_per_objfile->objfile;
7701   struct dwarf2_section_info *section = this_cu->section;
7702   bfd *abfd = get_section_bfd_owner (section);
7703   struct dwarf2_section_info *abbrev_section;
7704   const gdb_byte *begin_info_ptr, *info_ptr;
7705   struct die_reader_specs reader;
7706   struct die_info *comp_unit_die;
7707   int has_children;
7708
7709   if (dwarf_die_debug)
7710     fprintf_unfiltered (gdb_stdlog, "Reading %s unit at offset %s\n",
7711                         this_cu->is_debug_types ? "type" : "comp",
7712                         sect_offset_str (this_cu->sect_off));
7713
7714   gdb_assert (this_cu->cu == NULL);
7715
7716   abbrev_section = (dwo_file != NULL
7717                     ? &dwo_file->sections.abbrev
7718                     : get_abbrev_section_for_cu (this_cu));
7719
7720   /* This is cheap if the section is already read in.  */
7721   dwarf2_read_section (objfile, section);
7722
7723   struct dwarf2_cu cu (this_cu);
7724
7725   begin_info_ptr = info_ptr = section->buffer + to_underlying (this_cu->sect_off);
7726   info_ptr = read_and_check_comp_unit_head (dwarf2_per_objfile,
7727                                             &cu.header, section,
7728                                             abbrev_section, info_ptr,
7729                                             (this_cu->is_debug_types
7730                                              ? rcuh_kind::TYPE
7731                                              : rcuh_kind::COMPILE));
7732
7733   this_cu->length = get_cu_length (&cu.header);
7734
7735   /* Skip dummy compilation units.  */
7736   if (info_ptr >= begin_info_ptr + this_cu->length
7737       || peek_abbrev_code (abfd, info_ptr) == 0)
7738     return;
7739
7740   abbrev_table_up abbrev_table
7741     = abbrev_table_read_table (dwarf2_per_objfile, abbrev_section,
7742                                cu.header.abbrev_sect_off);
7743
7744   init_cu_die_reader (&reader, &cu, section, dwo_file, abbrev_table.get ());
7745   info_ptr = read_full_die (&reader, &comp_unit_die, info_ptr, &has_children);
7746
7747   die_reader_func (&reader, info_ptr, comp_unit_die, has_children, data);
7748 }
7749
7750 /* Read a CU/TU, except that this does not look for DW_AT_GNU_dwo_name and
7751    does not lookup the specified DWO file.
7752    This cannot be used to read DWO files.
7753
7754    THIS_CU->cu is always freed when done.
7755    This is done in order to not leave THIS_CU->cu in a state where we have
7756    to care whether it refers to the "main" CU or the DWO CU.
7757    We can revisit this if the data shows there's a performance issue.  */
7758
7759 static void
7760 init_cutu_and_read_dies_simple (struct dwarf2_per_cu_data *this_cu,
7761                                 die_reader_func_ftype *die_reader_func,
7762                                 void *data)
7763 {
7764   init_cutu_and_read_dies_no_follow (this_cu, NULL, die_reader_func, data);
7765 }
7766 \f
7767 /* Type Unit Groups.
7768
7769    Type Unit Groups are a way to collapse the set of all TUs (type units) into
7770    a more manageable set.  The grouping is done by DW_AT_stmt_list entry
7771    so that all types coming from the same compilation (.o file) are grouped
7772    together.  A future step could be to put the types in the same symtab as
7773    the CU the types ultimately came from.  */
7774
7775 static hashval_t
7776 hash_type_unit_group (const void *item)
7777 {
7778   const struct type_unit_group *tu_group
7779     = (const struct type_unit_group *) item;
7780
7781   return hash_stmt_list_entry (&tu_group->hash);
7782 }
7783
7784 static int
7785 eq_type_unit_group (const void *item_lhs, const void *item_rhs)
7786 {
7787   const struct type_unit_group *lhs = (const struct type_unit_group *) item_lhs;
7788   const struct type_unit_group *rhs = (const struct type_unit_group *) item_rhs;
7789
7790   return eq_stmt_list_entry (&lhs->hash, &rhs->hash);
7791 }
7792
7793 /* Allocate a hash table for type unit groups.  */
7794
7795 static htab_t
7796 allocate_type_unit_groups_table (struct objfile *objfile)
7797 {
7798   return htab_create_alloc_ex (3,
7799                                hash_type_unit_group,
7800                                eq_type_unit_group,
7801                                NULL,
7802                                &objfile->objfile_obstack,
7803                                hashtab_obstack_allocate,
7804                                dummy_obstack_deallocate);
7805 }
7806
7807 /* Type units that don't have DW_AT_stmt_list are grouped into their own
7808    partial symtabs.  We combine several TUs per psymtab to not let the size
7809    of any one psymtab grow too big.  */
7810 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB (1 << 31)
7811 #define NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE 10
7812
7813 /* Helper routine for get_type_unit_group.
7814    Create the type_unit_group object used to hold one or more TUs.  */
7815
7816 static struct type_unit_group *
7817 create_type_unit_group (struct dwarf2_cu *cu, sect_offset line_offset_struct)
7818 {
7819   struct dwarf2_per_objfile *dwarf2_per_objfile
7820     = cu->per_cu->dwarf2_per_objfile;
7821   struct objfile *objfile = dwarf2_per_objfile->objfile;
7822   struct dwarf2_per_cu_data *per_cu;
7823   struct type_unit_group *tu_group;
7824
7825   tu_group = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7826                              struct type_unit_group);
7827   per_cu = &tu_group->per_cu;
7828   per_cu->dwarf2_per_objfile = dwarf2_per_objfile;
7829
7830   if (dwarf2_per_objfile->using_index)
7831     {
7832       per_cu->v.quick = OBSTACK_ZALLOC (&objfile->objfile_obstack,
7833                                         struct dwarf2_per_cu_quick_data);
7834     }
7835   else
7836     {
7837       unsigned int line_offset = to_underlying (line_offset_struct);
7838       struct partial_symtab *pst;
7839       std::string name;
7840
7841       /* Give the symtab a useful name for debug purposes.  */
7842       if ((line_offset & NO_STMT_LIST_TYPE_UNIT_PSYMTAB) != 0)
7843         name = string_printf ("<type_units_%d>",
7844                               (line_offset & ~NO_STMT_LIST_TYPE_UNIT_PSYMTAB));
7845       else
7846         name = string_printf ("<type_units_at_0x%x>", line_offset);
7847
7848       pst = create_partial_symtab (per_cu, name.c_str ());
7849       pst->anonymous = 1;
7850     }
7851
7852   tu_group->hash.dwo_unit = cu->dwo_unit;
7853   tu_group->hash.line_sect_off = line_offset_struct;
7854
7855   return tu_group;
7856 }
7857
7858 /* Look up the type_unit_group for type unit CU, and create it if necessary.
7859    STMT_LIST is a DW_AT_stmt_list attribute.  */
7860
7861 static struct type_unit_group *
7862 get_type_unit_group (struct dwarf2_cu *cu, const struct attribute *stmt_list)
7863 {
7864   struct dwarf2_per_objfile *dwarf2_per_objfile
7865     = cu->per_cu->dwarf2_per_objfile;
7866   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
7867   struct type_unit_group *tu_group;
7868   void **slot;
7869   unsigned int line_offset;
7870   struct type_unit_group type_unit_group_for_lookup;
7871
7872   if (dwarf2_per_objfile->type_unit_groups == NULL)
7873     {
7874       dwarf2_per_objfile->type_unit_groups =
7875         allocate_type_unit_groups_table (dwarf2_per_objfile->objfile);
7876     }
7877
7878   /* Do we need to create a new group, or can we use an existing one?  */
7879
7880   if (stmt_list)
7881     {
7882       line_offset = DW_UNSND (stmt_list);
7883       ++tu_stats->nr_symtab_sharers;
7884     }
7885   else
7886     {
7887       /* Ugh, no stmt_list.  Rare, but we have to handle it.
7888          We can do various things here like create one group per TU or
7889          spread them over multiple groups to split up the expansion work.
7890          To avoid worst case scenarios (too many groups or too large groups)
7891          we, umm, group them in bunches.  */
7892       line_offset = (NO_STMT_LIST_TYPE_UNIT_PSYMTAB
7893                      | (tu_stats->nr_stmt_less_type_units
7894                         / NO_STMT_LIST_TYPE_UNIT_PSYMTAB_SIZE));
7895       ++tu_stats->nr_stmt_less_type_units;
7896     }
7897
7898   type_unit_group_for_lookup.hash.dwo_unit = cu->dwo_unit;
7899   type_unit_group_for_lookup.hash.line_sect_off = (sect_offset) line_offset;
7900   slot = htab_find_slot (dwarf2_per_objfile->type_unit_groups,
7901                          &type_unit_group_for_lookup, INSERT);
7902   if (*slot != NULL)
7903     {
7904       tu_group = (struct type_unit_group *) *slot;
7905       gdb_assert (tu_group != NULL);
7906     }
7907   else
7908     {
7909       sect_offset line_offset_struct = (sect_offset) line_offset;
7910       tu_group = create_type_unit_group (cu, line_offset_struct);
7911       *slot = tu_group;
7912       ++tu_stats->nr_symtabs;
7913     }
7914
7915   return tu_group;
7916 }
7917 \f
7918 /* Partial symbol tables.  */
7919
7920 /* Create a psymtab named NAME and assign it to PER_CU.
7921
7922    The caller must fill in the following details:
7923    dirname, textlow, texthigh.  */
7924
7925 static struct partial_symtab *
7926 create_partial_symtab (struct dwarf2_per_cu_data *per_cu, const char *name)
7927 {
7928   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
7929   struct partial_symtab *pst;
7930
7931   pst = start_psymtab_common (objfile, name, 0,
7932                               objfile->global_psymbols,
7933                               objfile->static_psymbols);
7934
7935   pst->psymtabs_addrmap_supported = 1;
7936
7937   /* This is the glue that links PST into GDB's symbol API.  */
7938   pst->read_symtab_private = per_cu;
7939   pst->read_symtab = dwarf2_read_symtab;
7940   per_cu->v.psymtab = pst;
7941
7942   return pst;
7943 }
7944
7945 /* The DATA object passed to process_psymtab_comp_unit_reader has this
7946    type.  */
7947
7948 struct process_psymtab_comp_unit_data
7949 {
7950   /* True if we are reading a DW_TAG_partial_unit.  */
7951
7952   int want_partial_unit;
7953
7954   /* The "pretend" language that is used if the CU doesn't declare a
7955      language.  */
7956
7957   enum language pretend_language;
7958 };
7959
7960 /* die_reader_func for process_psymtab_comp_unit.  */
7961
7962 static void
7963 process_psymtab_comp_unit_reader (const struct die_reader_specs *reader,
7964                                   const gdb_byte *info_ptr,
7965                                   struct die_info *comp_unit_die,
7966                                   int has_children,
7967                                   void *data)
7968 {
7969   struct dwarf2_cu *cu = reader->cu;
7970   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
7971   struct gdbarch *gdbarch = get_objfile_arch (objfile);
7972   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
7973   CORE_ADDR baseaddr;
7974   CORE_ADDR best_lowpc = 0, best_highpc = 0;
7975   struct partial_symtab *pst;
7976   enum pc_bounds_kind cu_bounds_kind;
7977   const char *filename;
7978   struct process_psymtab_comp_unit_data *info
7979     = (struct process_psymtab_comp_unit_data *) data;
7980
7981   if (comp_unit_die->tag == DW_TAG_partial_unit && !info->want_partial_unit)
7982     return;
7983
7984   gdb_assert (! per_cu->is_debug_types);
7985
7986   prepare_one_comp_unit (cu, comp_unit_die, info->pretend_language);
7987
7988   /* Allocate a new partial symbol table structure.  */
7989   filename = dwarf2_string_attr (comp_unit_die, DW_AT_name, cu);
7990   if (filename == NULL)
7991     filename = "";
7992
7993   pst = create_partial_symtab (per_cu, filename);
7994
7995   /* This must be done before calling dwarf2_build_include_psymtabs.  */
7996   pst->dirname = dwarf2_string_attr (comp_unit_die, DW_AT_comp_dir, cu);
7997
7998   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
7999
8000   dwarf2_find_base_address (comp_unit_die, cu);
8001
8002   /* Possibly set the default values of LOWPC and HIGHPC from
8003      `DW_AT_ranges'.  */
8004   cu_bounds_kind = dwarf2_get_pc_bounds (comp_unit_die, &best_lowpc,
8005                                          &best_highpc, cu, pst);
8006   if (cu_bounds_kind == PC_BOUNDS_HIGH_LOW && best_lowpc < best_highpc)
8007     {
8008       CORE_ADDR low
8009         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_lowpc + baseaddr)
8010            - baseaddr);
8011       CORE_ADDR high
8012         = (gdbarch_adjust_dwarf2_addr (gdbarch, best_highpc + baseaddr)
8013            - baseaddr - 1);
8014       /* Store the contiguous range if it is not empty; it can be
8015          empty for CUs with no code.  */
8016       addrmap_set_empty (objfile->psymtabs_addrmap, low, high, pst);
8017     }
8018
8019   /* Check if comp unit has_children.
8020      If so, read the rest of the partial symbols from this comp unit.
8021      If not, there's no more debug_info for this comp unit.  */
8022   if (has_children)
8023     {
8024       struct partial_die_info *first_die;
8025       CORE_ADDR lowpc, highpc;
8026
8027       lowpc = ((CORE_ADDR) -1);
8028       highpc = ((CORE_ADDR) 0);
8029
8030       first_die = load_partial_dies (reader, info_ptr, 1);
8031
8032       scan_partial_symbols (first_die, &lowpc, &highpc,
8033                             cu_bounds_kind <= PC_BOUNDS_INVALID, cu);
8034
8035       /* If we didn't find a lowpc, set it to highpc to avoid
8036          complaints from `maint check'.  */
8037       if (lowpc == ((CORE_ADDR) -1))
8038         lowpc = highpc;
8039
8040       /* If the compilation unit didn't have an explicit address range,
8041          then use the information extracted from its child dies.  */
8042       if (cu_bounds_kind <= PC_BOUNDS_INVALID)
8043         {
8044           best_lowpc = lowpc;
8045           best_highpc = highpc;
8046         }
8047     }
8048   pst->set_text_low (gdbarch_adjust_dwarf2_addr (gdbarch,
8049                                                  best_lowpc + baseaddr)
8050                      - baseaddr);
8051   pst->set_text_high (gdbarch_adjust_dwarf2_addr (gdbarch,
8052                                                   best_highpc + baseaddr)
8053                       - baseaddr);
8054
8055   end_psymtab_common (objfile, pst);
8056
8057   if (!VEC_empty (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs))
8058     {
8059       int i;
8060       int len = VEC_length (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8061       struct dwarf2_per_cu_data *iter;
8062
8063       /* Fill in 'dependencies' here; we fill in 'users' in a
8064          post-pass.  */
8065       pst->number_of_dependencies = len;
8066       pst->dependencies =
8067         XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8068       for (i = 0;
8069            VEC_iterate (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
8070                         i, iter);
8071            ++i)
8072         pst->dependencies[i] = iter->v.psymtab;
8073
8074       VEC_free (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs);
8075     }
8076
8077   /* Get the list of files included in the current compilation unit,
8078      and build a psymtab for each of them.  */
8079   dwarf2_build_include_psymtabs (cu, comp_unit_die, pst);
8080
8081   if (dwarf_read_debug)
8082     {
8083       struct gdbarch *gdbarch = get_objfile_arch (objfile);
8084
8085       fprintf_unfiltered (gdb_stdlog,
8086                           "Psymtab for %s unit @%s: %s - %s"
8087                           ", %d global, %d static syms\n",
8088                           per_cu->is_debug_types ? "type" : "comp",
8089                           sect_offset_str (per_cu->sect_off),
8090                           paddress (gdbarch, pst->text_low (objfile)),
8091                           paddress (gdbarch, pst->text_high (objfile)),
8092                           pst->n_global_syms, pst->n_static_syms);
8093     }
8094 }
8095
8096 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8097    Process compilation unit THIS_CU for a psymtab.  */
8098
8099 static void
8100 process_psymtab_comp_unit (struct dwarf2_per_cu_data *this_cu,
8101                            int want_partial_unit,
8102                            enum language pretend_language)
8103 {
8104   /* If this compilation unit was already read in, free the
8105      cached copy in order to read it in again.  This is
8106      necessary because we skipped some symbols when we first
8107      read in the compilation unit (see load_partial_dies).
8108      This problem could be avoided, but the benefit is unclear.  */
8109   if (this_cu->cu != NULL)
8110     free_one_cached_comp_unit (this_cu);
8111
8112   if (this_cu->is_debug_types)
8113     init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8114                              build_type_psymtabs_reader, NULL);
8115   else
8116     {
8117       process_psymtab_comp_unit_data info;
8118       info.want_partial_unit = want_partial_unit;
8119       info.pretend_language = pretend_language;
8120       init_cutu_and_read_dies (this_cu, NULL, 0, 0, false,
8121                                process_psymtab_comp_unit_reader, &info);
8122     }
8123
8124   /* Age out any secondary CUs.  */
8125   age_cached_comp_units (this_cu->dwarf2_per_objfile);
8126 }
8127
8128 /* Reader function for build_type_psymtabs.  */
8129
8130 static void
8131 build_type_psymtabs_reader (const struct die_reader_specs *reader,
8132                             const gdb_byte *info_ptr,
8133                             struct die_info *type_unit_die,
8134                             int has_children,
8135                             void *data)
8136 {
8137   struct dwarf2_per_objfile *dwarf2_per_objfile
8138     = reader->cu->per_cu->dwarf2_per_objfile;
8139   struct objfile *objfile = dwarf2_per_objfile->objfile;
8140   struct dwarf2_cu *cu = reader->cu;
8141   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
8142   struct signatured_type *sig_type;
8143   struct type_unit_group *tu_group;
8144   struct attribute *attr;
8145   struct partial_die_info *first_die;
8146   CORE_ADDR lowpc, highpc;
8147   struct partial_symtab *pst;
8148
8149   gdb_assert (data == NULL);
8150   gdb_assert (per_cu->is_debug_types);
8151   sig_type = (struct signatured_type *) per_cu;
8152
8153   if (! has_children)
8154     return;
8155
8156   attr = dwarf2_attr_no_follow (type_unit_die, DW_AT_stmt_list);
8157   tu_group = get_type_unit_group (cu, attr);
8158
8159   VEC_safe_push (sig_type_ptr, tu_group->tus, sig_type);
8160
8161   prepare_one_comp_unit (cu, type_unit_die, language_minimal);
8162   pst = create_partial_symtab (per_cu, "");
8163   pst->anonymous = 1;
8164
8165   first_die = load_partial_dies (reader, info_ptr, 1);
8166
8167   lowpc = (CORE_ADDR) -1;
8168   highpc = (CORE_ADDR) 0;
8169   scan_partial_symbols (first_die, &lowpc, &highpc, 0, cu);
8170
8171   end_psymtab_common (objfile, pst);
8172 }
8173
8174 /* Struct used to sort TUs by their abbreviation table offset.  */
8175
8176 struct tu_abbrev_offset
8177 {
8178   tu_abbrev_offset (signatured_type *sig_type_, sect_offset abbrev_offset_)
8179   : sig_type (sig_type_), abbrev_offset (abbrev_offset_)
8180   {}
8181
8182   signatured_type *sig_type;
8183   sect_offset abbrev_offset;
8184 };
8185
8186 /* Helper routine for build_type_psymtabs_1, passed to std::sort.  */
8187
8188 static bool
8189 sort_tu_by_abbrev_offset (const struct tu_abbrev_offset &a,
8190                           const struct tu_abbrev_offset &b)
8191 {
8192   return a.abbrev_offset < b.abbrev_offset;
8193 }
8194
8195 /* Efficiently read all the type units.
8196    This does the bulk of the work for build_type_psymtabs.
8197
8198    The efficiency is because we sort TUs by the abbrev table they use and
8199    only read each abbrev table once.  In one program there are 200K TUs
8200    sharing 8K abbrev tables.
8201
8202    The main purpose of this function is to support building the
8203    dwarf2_per_objfile->type_unit_groups table.
8204    TUs typically share the DW_AT_stmt_list of the CU they came from, so we
8205    can collapse the search space by grouping them by stmt_list.
8206    The savings can be significant, in the same program from above the 200K TUs
8207    share 8K stmt_list tables.
8208
8209    FUNC is expected to call get_type_unit_group, which will create the
8210    struct type_unit_group if necessary and add it to
8211    dwarf2_per_objfile->type_unit_groups.  */
8212
8213 static void
8214 build_type_psymtabs_1 (struct dwarf2_per_objfile *dwarf2_per_objfile)
8215 {
8216   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8217   abbrev_table_up abbrev_table;
8218   sect_offset abbrev_offset;
8219
8220   /* It's up to the caller to not call us multiple times.  */
8221   gdb_assert (dwarf2_per_objfile->type_unit_groups == NULL);
8222
8223   if (dwarf2_per_objfile->all_type_units.empty ())
8224     return;
8225
8226   /* TUs typically share abbrev tables, and there can be way more TUs than
8227      abbrev tables.  Sort by abbrev table to reduce the number of times we
8228      read each abbrev table in.
8229      Alternatives are to punt or to maintain a cache of abbrev tables.
8230      This is simpler and efficient enough for now.
8231
8232      Later we group TUs by their DW_AT_stmt_list value (as this defines the
8233      symtab to use).  Typically TUs with the same abbrev offset have the same
8234      stmt_list value too so in practice this should work well.
8235
8236      The basic algorithm here is:
8237
8238       sort TUs by abbrev table
8239       for each TU with same abbrev table:
8240         read abbrev table if first user
8241         read TU top level DIE
8242           [IWBN if DWO skeletons had DW_AT_stmt_list]
8243         call FUNC  */
8244
8245   if (dwarf_read_debug)
8246     fprintf_unfiltered (gdb_stdlog, "Building type unit groups ...\n");
8247
8248   /* Sort in a separate table to maintain the order of all_type_units
8249      for .gdb_index: TU indices directly index all_type_units.  */
8250   std::vector<tu_abbrev_offset> sorted_by_abbrev;
8251   sorted_by_abbrev.reserve (dwarf2_per_objfile->all_type_units.size ());
8252
8253   for (signatured_type *sig_type : dwarf2_per_objfile->all_type_units)
8254     sorted_by_abbrev.emplace_back
8255       (sig_type, read_abbrev_offset (dwarf2_per_objfile,
8256                                      sig_type->per_cu.section,
8257                                      sig_type->per_cu.sect_off));
8258
8259   std::sort (sorted_by_abbrev.begin (), sorted_by_abbrev.end (),
8260              sort_tu_by_abbrev_offset);
8261
8262   abbrev_offset = (sect_offset) ~(unsigned) 0;
8263
8264   for (const tu_abbrev_offset &tu : sorted_by_abbrev)
8265     {
8266       /* Switch to the next abbrev table if necessary.  */
8267       if (abbrev_table == NULL
8268           || tu.abbrev_offset != abbrev_offset)
8269         {
8270           abbrev_offset = tu.abbrev_offset;
8271           abbrev_table =
8272             abbrev_table_read_table (dwarf2_per_objfile,
8273                                      &dwarf2_per_objfile->abbrev,
8274                                      abbrev_offset);
8275           ++tu_stats->nr_uniq_abbrev_tables;
8276         }
8277
8278       init_cutu_and_read_dies (&tu.sig_type->per_cu, abbrev_table.get (),
8279                                0, 0, false, build_type_psymtabs_reader, NULL);
8280     }
8281 }
8282
8283 /* Print collected type unit statistics.  */
8284
8285 static void
8286 print_tu_stats (struct dwarf2_per_objfile *dwarf2_per_objfile)
8287 {
8288   struct tu_stats *tu_stats = &dwarf2_per_objfile->tu_stats;
8289
8290   fprintf_unfiltered (gdb_stdlog, "Type unit statistics:\n");
8291   fprintf_unfiltered (gdb_stdlog, "  %zu TUs\n",
8292                       dwarf2_per_objfile->all_type_units.size ());
8293   fprintf_unfiltered (gdb_stdlog, "  %d uniq abbrev tables\n",
8294                       tu_stats->nr_uniq_abbrev_tables);
8295   fprintf_unfiltered (gdb_stdlog, "  %d symtabs from stmt_list entries\n",
8296                       tu_stats->nr_symtabs);
8297   fprintf_unfiltered (gdb_stdlog, "  %d symtab sharers\n",
8298                       tu_stats->nr_symtab_sharers);
8299   fprintf_unfiltered (gdb_stdlog, "  %d type units without a stmt_list\n",
8300                       tu_stats->nr_stmt_less_type_units);
8301   fprintf_unfiltered (gdb_stdlog, "  %d all_type_units reallocs\n",
8302                       tu_stats->nr_all_type_units_reallocs);
8303 }
8304
8305 /* Traversal function for build_type_psymtabs.  */
8306
8307 static int
8308 build_type_psymtab_dependencies (void **slot, void *info)
8309 {
8310   struct dwarf2_per_objfile *dwarf2_per_objfile
8311     = (struct dwarf2_per_objfile *) info;
8312   struct objfile *objfile = dwarf2_per_objfile->objfile;
8313   struct type_unit_group *tu_group = (struct type_unit_group *) *slot;
8314   struct dwarf2_per_cu_data *per_cu = &tu_group->per_cu;
8315   struct partial_symtab *pst = per_cu->v.psymtab;
8316   int len = VEC_length (sig_type_ptr, tu_group->tus);
8317   struct signatured_type *iter;
8318   int i;
8319
8320   gdb_assert (len > 0);
8321   gdb_assert (IS_TYPE_UNIT_GROUP (per_cu));
8322
8323   pst->number_of_dependencies = len;
8324   pst->dependencies =
8325     XOBNEWVEC (&objfile->objfile_obstack, struct partial_symtab *, len);
8326   for (i = 0;
8327        VEC_iterate (sig_type_ptr, tu_group->tus, i, iter);
8328        ++i)
8329     {
8330       gdb_assert (iter->per_cu.is_debug_types);
8331       pst->dependencies[i] = iter->per_cu.v.psymtab;
8332       iter->type_unit_group = tu_group;
8333     }
8334
8335   VEC_free (sig_type_ptr, tu_group->tus);
8336
8337   return 1;
8338 }
8339
8340 /* Subroutine of dwarf2_build_psymtabs_hard to simplify it.
8341    Build partial symbol tables for the .debug_types comp-units.  */
8342
8343 static void
8344 build_type_psymtabs (struct dwarf2_per_objfile *dwarf2_per_objfile)
8345 {
8346   if (! create_all_type_units (dwarf2_per_objfile))
8347     return;
8348
8349   build_type_psymtabs_1 (dwarf2_per_objfile);
8350 }
8351
8352 /* Traversal function for process_skeletonless_type_unit.
8353    Read a TU in a DWO file and build partial symbols for it.  */
8354
8355 static int
8356 process_skeletonless_type_unit (void **slot, void *info)
8357 {
8358   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
8359   struct dwarf2_per_objfile *dwarf2_per_objfile
8360     = (struct dwarf2_per_objfile *) info;
8361   struct signatured_type find_entry, *entry;
8362
8363   /* If this TU doesn't exist in the global table, add it and read it in.  */
8364
8365   if (dwarf2_per_objfile->signatured_types == NULL)
8366     {
8367       dwarf2_per_objfile->signatured_types
8368         = allocate_signatured_type_table (dwarf2_per_objfile->objfile);
8369     }
8370
8371   find_entry.signature = dwo_unit->signature;
8372   slot = htab_find_slot (dwarf2_per_objfile->signatured_types, &find_entry,
8373                          INSERT);
8374   /* If we've already seen this type there's nothing to do.  What's happening
8375      is we're doing our own version of comdat-folding here.  */
8376   if (*slot != NULL)
8377     return 1;
8378
8379   /* This does the job that create_all_type_units would have done for
8380      this TU.  */
8381   entry = add_type_unit (dwarf2_per_objfile, dwo_unit->signature, slot);
8382   fill_in_sig_entry_from_dwo_entry (dwarf2_per_objfile, entry, dwo_unit);
8383   *slot = entry;
8384
8385   /* This does the job that build_type_psymtabs_1 would have done.  */
8386   init_cutu_and_read_dies (&entry->per_cu, NULL, 0, 0, false,
8387                            build_type_psymtabs_reader, NULL);
8388
8389   return 1;
8390 }
8391
8392 /* Traversal function for process_skeletonless_type_units.  */
8393
8394 static int
8395 process_dwo_file_for_skeletonless_type_units (void **slot, void *info)
8396 {
8397   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
8398
8399   if (dwo_file->tus != NULL)
8400     {
8401       htab_traverse_noresize (dwo_file->tus,
8402                               process_skeletonless_type_unit, info);
8403     }
8404
8405   return 1;
8406 }
8407
8408 /* Scan all TUs of DWO files, verifying we've processed them.
8409    This is needed in case a TU was emitted without its skeleton.
8410    Note: This can't be done until we know what all the DWO files are.  */
8411
8412 static void
8413 process_skeletonless_type_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8414 {
8415   /* Skeletonless TUs in DWP files without .gdb_index is not supported yet.  */
8416   if (get_dwp_file (dwarf2_per_objfile) == NULL
8417       && dwarf2_per_objfile->dwo_files != NULL)
8418     {
8419       htab_traverse_noresize (dwarf2_per_objfile->dwo_files,
8420                               process_dwo_file_for_skeletonless_type_units,
8421                               dwarf2_per_objfile);
8422     }
8423 }
8424
8425 /* Compute the 'user' field for each psymtab in DWARF2_PER_OBJFILE.  */
8426
8427 static void
8428 set_partial_user (struct dwarf2_per_objfile *dwarf2_per_objfile)
8429 {
8430   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8431     {
8432       struct partial_symtab *pst = per_cu->v.psymtab;
8433
8434       if (pst == NULL)
8435         continue;
8436
8437       for (int j = 0; j < pst->number_of_dependencies; ++j)
8438         {
8439           /* Set the 'user' field only if it is not already set.  */
8440           if (pst->dependencies[j]->user == NULL)
8441             pst->dependencies[j]->user = pst;
8442         }
8443     }
8444 }
8445
8446 /* Build the partial symbol table by doing a quick pass through the
8447    .debug_info and .debug_abbrev sections.  */
8448
8449 static void
8450 dwarf2_build_psymtabs_hard (struct dwarf2_per_objfile *dwarf2_per_objfile)
8451 {
8452   struct objfile *objfile = dwarf2_per_objfile->objfile;
8453
8454   if (dwarf_read_debug)
8455     {
8456       fprintf_unfiltered (gdb_stdlog, "Building psymtabs of objfile %s ...\n",
8457                           objfile_name (objfile));
8458     }
8459
8460   dwarf2_per_objfile->reading_partial_symbols = 1;
8461
8462   dwarf2_read_section (objfile, &dwarf2_per_objfile->info);
8463
8464   /* Any cached compilation units will be linked by the per-objfile
8465      read_in_chain.  Make sure to free them when we're done.  */
8466   free_cached_comp_units freer (dwarf2_per_objfile);
8467
8468   build_type_psymtabs (dwarf2_per_objfile);
8469
8470   create_all_comp_units (dwarf2_per_objfile);
8471
8472   /* Create a temporary address map on a temporary obstack.  We later
8473      copy this to the final obstack.  */
8474   auto_obstack temp_obstack;
8475
8476   scoped_restore save_psymtabs_addrmap
8477     = make_scoped_restore (&objfile->psymtabs_addrmap,
8478                            addrmap_create_mutable (&temp_obstack));
8479
8480   for (dwarf2_per_cu_data *per_cu : dwarf2_per_objfile->all_comp_units)
8481     process_psymtab_comp_unit (per_cu, 0, language_minimal);
8482
8483   /* This has to wait until we read the CUs, we need the list of DWOs.  */
8484   process_skeletonless_type_units (dwarf2_per_objfile);
8485
8486   /* Now that all TUs have been processed we can fill in the dependencies.  */
8487   if (dwarf2_per_objfile->type_unit_groups != NULL)
8488     {
8489       htab_traverse_noresize (dwarf2_per_objfile->type_unit_groups,
8490                               build_type_psymtab_dependencies, dwarf2_per_objfile);
8491     }
8492
8493   if (dwarf_read_debug)
8494     print_tu_stats (dwarf2_per_objfile);
8495
8496   set_partial_user (dwarf2_per_objfile);
8497
8498   objfile->psymtabs_addrmap = addrmap_create_fixed (objfile->psymtabs_addrmap,
8499                                                     &objfile->objfile_obstack);
8500   /* At this point we want to keep the address map.  */
8501   save_psymtabs_addrmap.release ();
8502
8503   if (dwarf_read_debug)
8504     fprintf_unfiltered (gdb_stdlog, "Done building psymtabs of %s\n",
8505                         objfile_name (objfile));
8506 }
8507
8508 /* die_reader_func for load_partial_comp_unit.  */
8509
8510 static void
8511 load_partial_comp_unit_reader (const struct die_reader_specs *reader,
8512                                const gdb_byte *info_ptr,
8513                                struct die_info *comp_unit_die,
8514                                int has_children,
8515                                void *data)
8516 {
8517   struct dwarf2_cu *cu = reader->cu;
8518
8519   prepare_one_comp_unit (cu, comp_unit_die, language_minimal);
8520
8521   /* Check if comp unit has_children.
8522      If so, read the rest of the partial symbols from this comp unit.
8523      If not, there's no more debug_info for this comp unit.  */
8524   if (has_children)
8525     load_partial_dies (reader, info_ptr, 0);
8526 }
8527
8528 /* Load the partial DIEs for a secondary CU into memory.
8529    This is also used when rereading a primary CU with load_all_dies.  */
8530
8531 static void
8532 load_partial_comp_unit (struct dwarf2_per_cu_data *this_cu)
8533 {
8534   init_cutu_and_read_dies (this_cu, NULL, 1, 1, false,
8535                            load_partial_comp_unit_reader, NULL);
8536 }
8537
8538 static void
8539 read_comp_units_from_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
8540                               struct dwarf2_section_info *section,
8541                               struct dwarf2_section_info *abbrev_section,
8542                               unsigned int is_dwz)
8543 {
8544   const gdb_byte *info_ptr;
8545   struct objfile *objfile = dwarf2_per_objfile->objfile;
8546
8547   if (dwarf_read_debug)
8548     fprintf_unfiltered (gdb_stdlog, "Reading %s for %s\n",
8549                         get_section_name (section),
8550                         get_section_file_name (section));
8551
8552   dwarf2_read_section (objfile, section);
8553
8554   info_ptr = section->buffer;
8555
8556   while (info_ptr < section->buffer + section->size)
8557     {
8558       struct dwarf2_per_cu_data *this_cu;
8559
8560       sect_offset sect_off = (sect_offset) (info_ptr - section->buffer);
8561
8562       comp_unit_head cu_header;
8563       read_and_check_comp_unit_head (dwarf2_per_objfile, &cu_header, section,
8564                                      abbrev_section, info_ptr,
8565                                      rcuh_kind::COMPILE);
8566
8567       /* Save the compilation unit for later lookup.  */
8568       if (cu_header.unit_type != DW_UT_type)
8569         {
8570           this_cu = XOBNEW (&objfile->objfile_obstack,
8571                             struct dwarf2_per_cu_data);
8572           memset (this_cu, 0, sizeof (*this_cu));
8573         }
8574       else
8575         {
8576           auto sig_type = XOBNEW (&objfile->objfile_obstack,
8577                                   struct signatured_type);
8578           memset (sig_type, 0, sizeof (*sig_type));
8579           sig_type->signature = cu_header.signature;
8580           sig_type->type_offset_in_tu = cu_header.type_cu_offset_in_tu;
8581           this_cu = &sig_type->per_cu;
8582         }
8583       this_cu->is_debug_types = (cu_header.unit_type == DW_UT_type);
8584       this_cu->sect_off = sect_off;
8585       this_cu->length = cu_header.length + cu_header.initial_length_size;
8586       this_cu->is_dwz = is_dwz;
8587       this_cu->dwarf2_per_objfile = dwarf2_per_objfile;
8588       this_cu->section = section;
8589
8590       dwarf2_per_objfile->all_comp_units.push_back (this_cu);
8591
8592       info_ptr = info_ptr + this_cu->length;
8593     }
8594 }
8595
8596 /* Create a list of all compilation units in OBJFILE.
8597    This is only done for -readnow and building partial symtabs.  */
8598
8599 static void
8600 create_all_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
8601 {
8602   gdb_assert (dwarf2_per_objfile->all_comp_units.empty ());
8603   read_comp_units_from_section (dwarf2_per_objfile, &dwarf2_per_objfile->info,
8604                                 &dwarf2_per_objfile->abbrev, 0);
8605
8606   dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
8607   if (dwz != NULL)
8608     read_comp_units_from_section (dwarf2_per_objfile, &dwz->info, &dwz->abbrev,
8609                                   1);
8610 }
8611
8612 /* Process all loaded DIEs for compilation unit CU, starting at
8613    FIRST_DIE.  The caller should pass SET_ADDRMAP == 1 if the compilation
8614    unit DIE did not have PC info (DW_AT_low_pc and DW_AT_high_pc, or
8615    DW_AT_ranges).  See the comments of add_partial_subprogram on how
8616    SET_ADDRMAP is used and how *LOWPC and *HIGHPC are updated.  */
8617
8618 static void
8619 scan_partial_symbols (struct partial_die_info *first_die, CORE_ADDR *lowpc,
8620                       CORE_ADDR *highpc, int set_addrmap,
8621                       struct dwarf2_cu *cu)
8622 {
8623   struct partial_die_info *pdi;
8624
8625   /* Now, march along the PDI's, descending into ones which have
8626      interesting children but skipping the children of the other ones,
8627      until we reach the end of the compilation unit.  */
8628
8629   pdi = first_die;
8630
8631   while (pdi != NULL)
8632     {
8633       pdi->fixup (cu);
8634
8635       /* Anonymous namespaces or modules have no name but have interesting
8636          children, so we need to look at them.  Ditto for anonymous
8637          enums.  */
8638
8639       if (pdi->name != NULL || pdi->tag == DW_TAG_namespace
8640           || pdi->tag == DW_TAG_module || pdi->tag == DW_TAG_enumeration_type
8641           || pdi->tag == DW_TAG_imported_unit
8642           || pdi->tag == DW_TAG_inlined_subroutine)
8643         {
8644           switch (pdi->tag)
8645             {
8646             case DW_TAG_subprogram:
8647             case DW_TAG_inlined_subroutine:
8648               add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
8649               break;
8650             case DW_TAG_constant:
8651             case DW_TAG_variable:
8652             case DW_TAG_typedef:
8653             case DW_TAG_union_type:
8654               if (!pdi->is_declaration)
8655                 {
8656                   add_partial_symbol (pdi, cu);
8657                 }
8658               break;
8659             case DW_TAG_class_type:
8660             case DW_TAG_interface_type:
8661             case DW_TAG_structure_type:
8662               if (!pdi->is_declaration)
8663                 {
8664                   add_partial_symbol (pdi, cu);
8665                 }
8666               if ((cu->language == language_rust
8667                    || cu->language == language_cplus) && pdi->has_children)
8668                 scan_partial_symbols (pdi->die_child, lowpc, highpc,
8669                                       set_addrmap, cu);
8670               break;
8671             case DW_TAG_enumeration_type:
8672               if (!pdi->is_declaration)
8673                 add_partial_enumeration (pdi, cu);
8674               break;
8675             case DW_TAG_base_type:
8676             case DW_TAG_subrange_type:
8677               /* File scope base type definitions are added to the partial
8678                  symbol table.  */
8679               add_partial_symbol (pdi, cu);
8680               break;
8681             case DW_TAG_namespace:
8682               add_partial_namespace (pdi, lowpc, highpc, set_addrmap, cu);
8683               break;
8684             case DW_TAG_module:
8685               add_partial_module (pdi, lowpc, highpc, set_addrmap, cu);
8686               break;
8687             case DW_TAG_imported_unit:
8688               {
8689                 struct dwarf2_per_cu_data *per_cu;
8690
8691                 /* For now we don't handle imported units in type units.  */
8692                 if (cu->per_cu->is_debug_types)
8693                   {
8694                     error (_("Dwarf Error: DW_TAG_imported_unit is not"
8695                              " supported in type units [in module %s]"),
8696                            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
8697                   }
8698
8699                 per_cu = dwarf2_find_containing_comp_unit
8700                            (pdi->d.sect_off, pdi->is_dwz,
8701                             cu->per_cu->dwarf2_per_objfile);
8702
8703                 /* Go read the partial unit, if needed.  */
8704                 if (per_cu->v.psymtab == NULL)
8705                   process_psymtab_comp_unit (per_cu, 1, cu->language);
8706
8707                 VEC_safe_push (dwarf2_per_cu_ptr,
8708                                cu->per_cu->imported_symtabs, per_cu);
8709               }
8710               break;
8711             case DW_TAG_imported_declaration:
8712               add_partial_symbol (pdi, cu);
8713               break;
8714             default:
8715               break;
8716             }
8717         }
8718
8719       /* If the die has a sibling, skip to the sibling.  */
8720
8721       pdi = pdi->die_sibling;
8722     }
8723 }
8724
8725 /* Functions used to compute the fully scoped name of a partial DIE.
8726
8727    Normally, this is simple.  For C++, the parent DIE's fully scoped
8728    name is concatenated with "::" and the partial DIE's name.
8729    Enumerators are an exception; they use the scope of their parent
8730    enumeration type, i.e. the name of the enumeration type is not
8731    prepended to the enumerator.
8732
8733    There are two complexities.  One is DW_AT_specification; in this
8734    case "parent" means the parent of the target of the specification,
8735    instead of the direct parent of the DIE.  The other is compilers
8736    which do not emit DW_TAG_namespace; in this case we try to guess
8737    the fully qualified name of structure types from their members'
8738    linkage names.  This must be done using the DIE's children rather
8739    than the children of any DW_AT_specification target.  We only need
8740    to do this for structures at the top level, i.e. if the target of
8741    any DW_AT_specification (if any; otherwise the DIE itself) does not
8742    have a parent.  */
8743
8744 /* Compute the scope prefix associated with PDI's parent, in
8745    compilation unit CU.  The result will be allocated on CU's
8746    comp_unit_obstack, or a copy of the already allocated PDI->NAME
8747    field.  NULL is returned if no prefix is necessary.  */
8748 static const char *
8749 partial_die_parent_scope (struct partial_die_info *pdi,
8750                           struct dwarf2_cu *cu)
8751 {
8752   const char *grandparent_scope;
8753   struct partial_die_info *parent, *real_pdi;
8754
8755   /* We need to look at our parent DIE; if we have a DW_AT_specification,
8756      then this means the parent of the specification DIE.  */
8757
8758   real_pdi = pdi;
8759   while (real_pdi->has_specification)
8760     real_pdi = find_partial_die (real_pdi->spec_offset,
8761                                  real_pdi->spec_is_dwz, cu);
8762
8763   parent = real_pdi->die_parent;
8764   if (parent == NULL)
8765     return NULL;
8766
8767   if (parent->scope_set)
8768     return parent->scope;
8769
8770   parent->fixup (cu);
8771
8772   grandparent_scope = partial_die_parent_scope (parent, cu);
8773
8774   /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
8775      DW_TAG_namespace DIEs with a name of "::" for the global namespace.
8776      Work around this problem here.  */
8777   if (cu->language == language_cplus
8778       && parent->tag == DW_TAG_namespace
8779       && strcmp (parent->name, "::") == 0
8780       && grandparent_scope == NULL)
8781     {
8782       parent->scope = NULL;
8783       parent->scope_set = 1;
8784       return NULL;
8785     }
8786
8787   if (pdi->tag == DW_TAG_enumerator)
8788     /* Enumerators should not get the name of the enumeration as a prefix.  */
8789     parent->scope = grandparent_scope;
8790   else if (parent->tag == DW_TAG_namespace
8791       || parent->tag == DW_TAG_module
8792       || parent->tag == DW_TAG_structure_type
8793       || parent->tag == DW_TAG_class_type
8794       || parent->tag == DW_TAG_interface_type
8795       || parent->tag == DW_TAG_union_type
8796       || parent->tag == DW_TAG_enumeration_type)
8797     {
8798       if (grandparent_scope == NULL)
8799         parent->scope = parent->name;
8800       else
8801         parent->scope = typename_concat (&cu->comp_unit_obstack,
8802                                          grandparent_scope,
8803                                          parent->name, 0, cu);
8804     }
8805   else
8806     {
8807       /* FIXME drow/2004-04-01: What should we be doing with
8808          function-local names?  For partial symbols, we should probably be
8809          ignoring them.  */
8810       complaint (_("unhandled containing DIE tag %d for DIE at %s"),
8811                  parent->tag, sect_offset_str (pdi->sect_off));
8812       parent->scope = grandparent_scope;
8813     }
8814
8815   parent->scope_set = 1;
8816   return parent->scope;
8817 }
8818
8819 /* Return the fully scoped name associated with PDI, from compilation unit
8820    CU.  The result will be allocated with malloc.  */
8821
8822 static char *
8823 partial_die_full_name (struct partial_die_info *pdi,
8824                        struct dwarf2_cu *cu)
8825 {
8826   const char *parent_scope;
8827
8828   /* If this is a template instantiation, we can not work out the
8829      template arguments from partial DIEs.  So, unfortunately, we have
8830      to go through the full DIEs.  At least any work we do building
8831      types here will be reused if full symbols are loaded later.  */
8832   if (pdi->has_template_arguments)
8833     {
8834       pdi->fixup (cu);
8835
8836       if (pdi->name != NULL && strchr (pdi->name, '<') == NULL)
8837         {
8838           struct die_info *die;
8839           struct attribute attr;
8840           struct dwarf2_cu *ref_cu = cu;
8841
8842           /* DW_FORM_ref_addr is using section offset.  */
8843           attr.name = (enum dwarf_attribute) 0;
8844           attr.form = DW_FORM_ref_addr;
8845           attr.u.unsnd = to_underlying (pdi->sect_off);
8846           die = follow_die_ref (NULL, &attr, &ref_cu);
8847
8848           return xstrdup (dwarf2_full_name (NULL, die, ref_cu));
8849         }
8850     }
8851
8852   parent_scope = partial_die_parent_scope (pdi, cu);
8853   if (parent_scope == NULL)
8854     return NULL;
8855   else
8856     return typename_concat (NULL, parent_scope, pdi->name, 0, cu);
8857 }
8858
8859 static void
8860 add_partial_symbol (struct partial_die_info *pdi, struct dwarf2_cu *cu)
8861 {
8862   struct dwarf2_per_objfile *dwarf2_per_objfile
8863     = cu->per_cu->dwarf2_per_objfile;
8864   struct objfile *objfile = dwarf2_per_objfile->objfile;
8865   struct gdbarch *gdbarch = get_objfile_arch (objfile);
8866   CORE_ADDR addr = 0;
8867   const char *actual_name = NULL;
8868   CORE_ADDR baseaddr;
8869   char *built_actual_name;
8870
8871   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
8872
8873   built_actual_name = partial_die_full_name (pdi, cu);
8874   if (built_actual_name != NULL)
8875     actual_name = built_actual_name;
8876
8877   if (actual_name == NULL)
8878     actual_name = pdi->name;
8879
8880   switch (pdi->tag)
8881     {
8882     case DW_TAG_inlined_subroutine:
8883     case DW_TAG_subprogram:
8884       addr = (gdbarch_adjust_dwarf2_addr (gdbarch, pdi->lowpc + baseaddr)
8885               - baseaddr);
8886       if (pdi->is_external || cu->language == language_ada)
8887         {
8888           /* brobecker/2007-12-26: Normally, only "external" DIEs are part
8889              of the global scope.  But in Ada, we want to be able to access
8890              nested procedures globally.  So all Ada subprograms are stored
8891              in the global scope.  */
8892           add_psymbol_to_list (actual_name, strlen (actual_name),
8893                                built_actual_name != NULL,
8894                                VAR_DOMAIN, LOC_BLOCK,
8895                                SECT_OFF_TEXT (objfile),
8896                                &objfile->global_psymbols,
8897                                addr,
8898                                cu->language, objfile);
8899         }
8900       else
8901         {
8902           add_psymbol_to_list (actual_name, strlen (actual_name),
8903                                built_actual_name != NULL,
8904                                VAR_DOMAIN, LOC_BLOCK,
8905                                SECT_OFF_TEXT (objfile),
8906                                &objfile->static_psymbols,
8907                                addr, cu->language, objfile);
8908         }
8909
8910       if (pdi->main_subprogram && actual_name != NULL)
8911         set_objfile_main_name (objfile, actual_name, cu->language);
8912       break;
8913     case DW_TAG_constant:
8914       {
8915         std::vector<partial_symbol *> *list;
8916
8917         if (pdi->is_external)
8918           list = &objfile->global_psymbols;
8919         else
8920           list = &objfile->static_psymbols;
8921         add_psymbol_to_list (actual_name, strlen (actual_name),
8922                              built_actual_name != NULL, VAR_DOMAIN, LOC_STATIC,
8923                              -1, list, 0, cu->language, objfile);
8924       }
8925       break;
8926     case DW_TAG_variable:
8927       if (pdi->d.locdesc)
8928         addr = decode_locdesc (pdi->d.locdesc, cu);
8929
8930       if (pdi->d.locdesc
8931           && addr == 0
8932           && !dwarf2_per_objfile->has_section_at_zero)
8933         {
8934           /* A global or static variable may also have been stripped
8935              out by the linker if unused, in which case its address
8936              will be nullified; do not add such variables into partial
8937              symbol table then.  */
8938         }
8939       else if (pdi->is_external)
8940         {
8941           /* Global Variable.
8942              Don't enter into the minimal symbol tables as there is
8943              a minimal symbol table entry from the ELF symbols already.
8944              Enter into partial symbol table if it has a location
8945              descriptor or a type.
8946              If the location descriptor is missing, new_symbol will create
8947              a LOC_UNRESOLVED symbol, the address of the variable will then
8948              be determined from the minimal symbol table whenever the variable
8949              is referenced.
8950              The address for the partial symbol table entry is not
8951              used by GDB, but it comes in handy for debugging partial symbol
8952              table building.  */
8953
8954           if (pdi->d.locdesc || pdi->has_type)
8955             add_psymbol_to_list (actual_name, strlen (actual_name),
8956                                  built_actual_name != NULL,
8957                                  VAR_DOMAIN, LOC_STATIC,
8958                                  SECT_OFF_TEXT (objfile),
8959                                  &objfile->global_psymbols,
8960                                  addr, cu->language, objfile);
8961         }
8962       else
8963         {
8964           int has_loc = pdi->d.locdesc != NULL;
8965
8966           /* Static Variable.  Skip symbols whose value we cannot know (those
8967              without location descriptors or constant values).  */
8968           if (!has_loc && !pdi->has_const_value)
8969             {
8970               xfree (built_actual_name);
8971               return;
8972             }
8973
8974           add_psymbol_to_list (actual_name, strlen (actual_name),
8975                                built_actual_name != NULL,
8976                                VAR_DOMAIN, LOC_STATIC,
8977                                SECT_OFF_TEXT (objfile),
8978                                &objfile->static_psymbols,
8979                                has_loc ? addr : 0,
8980                                cu->language, objfile);
8981         }
8982       break;
8983     case DW_TAG_typedef:
8984     case DW_TAG_base_type:
8985     case DW_TAG_subrange_type:
8986       add_psymbol_to_list (actual_name, strlen (actual_name),
8987                            built_actual_name != NULL,
8988                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8989                            &objfile->static_psymbols,
8990                            0, cu->language, objfile);
8991       break;
8992     case DW_TAG_imported_declaration:
8993     case DW_TAG_namespace:
8994       add_psymbol_to_list (actual_name, strlen (actual_name),
8995                            built_actual_name != NULL,
8996                            VAR_DOMAIN, LOC_TYPEDEF, -1,
8997                            &objfile->global_psymbols,
8998                            0, cu->language, objfile);
8999       break;
9000     case DW_TAG_module:
9001       add_psymbol_to_list (actual_name, strlen (actual_name),
9002                            built_actual_name != NULL,
9003                            MODULE_DOMAIN, LOC_TYPEDEF, -1,
9004                            &objfile->global_psymbols,
9005                            0, cu->language, objfile);
9006       break;
9007     case DW_TAG_class_type:
9008     case DW_TAG_interface_type:
9009     case DW_TAG_structure_type:
9010     case DW_TAG_union_type:
9011     case DW_TAG_enumeration_type:
9012       /* Skip external references.  The DWARF standard says in the section
9013          about "Structure, Union, and Class Type Entries": "An incomplete
9014          structure, union or class type is represented by a structure,
9015          union or class entry that does not have a byte size attribute
9016          and that has a DW_AT_declaration attribute."  */
9017       if (!pdi->has_byte_size && pdi->is_declaration)
9018         {
9019           xfree (built_actual_name);
9020           return;
9021         }
9022
9023       /* NOTE: carlton/2003-10-07: See comment in new_symbol about
9024          static vs. global.  */
9025       add_psymbol_to_list (actual_name, strlen (actual_name),
9026                            built_actual_name != NULL,
9027                            STRUCT_DOMAIN, LOC_TYPEDEF, -1,
9028                            cu->language == language_cplus
9029                            ? &objfile->global_psymbols
9030                            : &objfile->static_psymbols,
9031                            0, cu->language, objfile);
9032
9033       break;
9034     case DW_TAG_enumerator:
9035       add_psymbol_to_list (actual_name, strlen (actual_name),
9036                            built_actual_name != NULL,
9037                            VAR_DOMAIN, LOC_CONST, -1,
9038                            cu->language == language_cplus
9039                            ? &objfile->global_psymbols
9040                            : &objfile->static_psymbols,
9041                            0, cu->language, objfile);
9042       break;
9043     default:
9044       break;
9045     }
9046
9047   xfree (built_actual_name);
9048 }
9049
9050 /* Read a partial die corresponding to a namespace; also, add a symbol
9051    corresponding to that namespace to the symbol table.  NAMESPACE is
9052    the name of the enclosing namespace.  */
9053
9054 static void
9055 add_partial_namespace (struct partial_die_info *pdi,
9056                        CORE_ADDR *lowpc, CORE_ADDR *highpc,
9057                        int set_addrmap, struct dwarf2_cu *cu)
9058 {
9059   /* Add a symbol for the namespace.  */
9060
9061   add_partial_symbol (pdi, cu);
9062
9063   /* Now scan partial symbols in that namespace.  */
9064
9065   if (pdi->has_children)
9066     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9067 }
9068
9069 /* Read a partial die corresponding to a Fortran module.  */
9070
9071 static void
9072 add_partial_module (struct partial_die_info *pdi, CORE_ADDR *lowpc,
9073                     CORE_ADDR *highpc, int set_addrmap, struct dwarf2_cu *cu)
9074 {
9075   /* Add a symbol for the namespace.  */
9076
9077   add_partial_symbol (pdi, cu);
9078
9079   /* Now scan partial symbols in that module.  */
9080
9081   if (pdi->has_children)
9082     scan_partial_symbols (pdi->die_child, lowpc, highpc, set_addrmap, cu);
9083 }
9084
9085 /* Read a partial die corresponding to a subprogram or an inlined
9086    subprogram and create a partial symbol for that subprogram.
9087    When the CU language allows it, this routine also defines a partial
9088    symbol for each nested subprogram that this subprogram contains.
9089    If SET_ADDRMAP is true, record the covered ranges in the addrmap.
9090    Set *LOWPC and *HIGHPC to the lowest and highest PC values found in PDI.
9091
9092    PDI may also be a lexical block, in which case we simply search
9093    recursively for subprograms defined inside that lexical block.
9094    Again, this is only performed when the CU language allows this
9095    type of definitions.  */
9096
9097 static void
9098 add_partial_subprogram (struct partial_die_info *pdi,
9099                         CORE_ADDR *lowpc, CORE_ADDR *highpc,
9100                         int set_addrmap, struct dwarf2_cu *cu)
9101 {
9102   if (pdi->tag == DW_TAG_subprogram || pdi->tag == DW_TAG_inlined_subroutine)
9103     {
9104       if (pdi->has_pc_info)
9105         {
9106           if (pdi->lowpc < *lowpc)
9107             *lowpc = pdi->lowpc;
9108           if (pdi->highpc > *highpc)
9109             *highpc = pdi->highpc;
9110           if (set_addrmap)
9111             {
9112               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9113               struct gdbarch *gdbarch = get_objfile_arch (objfile);
9114               CORE_ADDR baseaddr;
9115               CORE_ADDR highpc;
9116               CORE_ADDR lowpc;
9117
9118               baseaddr = ANOFFSET (objfile->section_offsets,
9119                                    SECT_OFF_TEXT (objfile));
9120               lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9121                                                    pdi->lowpc + baseaddr)
9122                        - baseaddr);
9123               highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
9124                                                     pdi->highpc + baseaddr)
9125                         - baseaddr);
9126               addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
9127                                  cu->per_cu->v.psymtab);
9128             }
9129         }
9130
9131       if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
9132         {
9133           if (!pdi->is_declaration)
9134             /* Ignore subprogram DIEs that do not have a name, they are
9135                illegal.  Do not emit a complaint at this point, we will
9136                do so when we convert this psymtab into a symtab.  */
9137             if (pdi->name)
9138               add_partial_symbol (pdi, cu);
9139         }
9140     }
9141
9142   if (! pdi->has_children)
9143     return;
9144
9145   if (cu->language == language_ada)
9146     {
9147       pdi = pdi->die_child;
9148       while (pdi != NULL)
9149         {
9150           pdi->fixup (cu);
9151           if (pdi->tag == DW_TAG_subprogram
9152               || pdi->tag == DW_TAG_inlined_subroutine
9153               || pdi->tag == DW_TAG_lexical_block)
9154             add_partial_subprogram (pdi, lowpc, highpc, set_addrmap, cu);
9155           pdi = pdi->die_sibling;
9156         }
9157     }
9158 }
9159
9160 /* Read a partial die corresponding to an enumeration type.  */
9161
9162 static void
9163 add_partial_enumeration (struct partial_die_info *enum_pdi,
9164                          struct dwarf2_cu *cu)
9165 {
9166   struct partial_die_info *pdi;
9167
9168   if (enum_pdi->name != NULL)
9169     add_partial_symbol (enum_pdi, cu);
9170
9171   pdi = enum_pdi->die_child;
9172   while (pdi)
9173     {
9174       if (pdi->tag != DW_TAG_enumerator || pdi->name == NULL)
9175         complaint (_("malformed enumerator DIE ignored"));
9176       else
9177         add_partial_symbol (pdi, cu);
9178       pdi = pdi->die_sibling;
9179     }
9180 }
9181
9182 /* Return the initial uleb128 in the die at INFO_PTR.  */
9183
9184 static unsigned int
9185 peek_abbrev_code (bfd *abfd, const gdb_byte *info_ptr)
9186 {
9187   unsigned int bytes_read;
9188
9189   return read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9190 }
9191
9192 /* Read the initial uleb128 in the die at INFO_PTR in compilation unit
9193    READER::CU.  Use READER::ABBREV_TABLE to lookup any abbreviation.
9194
9195    Return the corresponding abbrev, or NULL if the number is zero (indicating
9196    an empty DIE).  In either case *BYTES_READ will be set to the length of
9197    the initial number.  */
9198
9199 static struct abbrev_info *
9200 peek_die_abbrev (const die_reader_specs &reader,
9201                  const gdb_byte *info_ptr, unsigned int *bytes_read)
9202 {
9203   dwarf2_cu *cu = reader.cu;
9204   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
9205   unsigned int abbrev_number
9206     = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
9207
9208   if (abbrev_number == 0)
9209     return NULL;
9210
9211   abbrev_info *abbrev = reader.abbrev_table->lookup_abbrev (abbrev_number);
9212   if (!abbrev)
9213     {
9214       error (_("Dwarf Error: Could not find abbrev number %d in %s"
9215                " at offset %s [in module %s]"),
9216              abbrev_number, cu->per_cu->is_debug_types ? "TU" : "CU",
9217              sect_offset_str (cu->header.sect_off), bfd_get_filename (abfd));
9218     }
9219
9220   return abbrev;
9221 }
9222
9223 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9224    Returns a pointer to the end of a series of DIEs, terminated by an empty
9225    DIE.  Any children of the skipped DIEs will also be skipped.  */
9226
9227 static const gdb_byte *
9228 skip_children (const struct die_reader_specs *reader, const gdb_byte *info_ptr)
9229 {
9230   while (1)
9231     {
9232       unsigned int bytes_read;
9233       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
9234
9235       if (abbrev == NULL)
9236         return info_ptr + bytes_read;
9237       else
9238         info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
9239     }
9240 }
9241
9242 /* Scan the debug information for CU starting at INFO_PTR in buffer BUFFER.
9243    INFO_PTR should point just after the initial uleb128 of a DIE, and the
9244    abbrev corresponding to that skipped uleb128 should be passed in
9245    ABBREV.  Returns a pointer to this DIE's sibling, skipping any
9246    children.  */
9247
9248 static const gdb_byte *
9249 skip_one_die (const struct die_reader_specs *reader, const gdb_byte *info_ptr,
9250               struct abbrev_info *abbrev)
9251 {
9252   unsigned int bytes_read;
9253   struct attribute attr;
9254   bfd *abfd = reader->abfd;
9255   struct dwarf2_cu *cu = reader->cu;
9256   const gdb_byte *buffer = reader->buffer;
9257   const gdb_byte *buffer_end = reader->buffer_end;
9258   unsigned int form, i;
9259
9260   for (i = 0; i < abbrev->num_attrs; i++)
9261     {
9262       /* The only abbrev we care about is DW_AT_sibling.  */
9263       if (abbrev->attrs[i].name == DW_AT_sibling)
9264         {
9265           read_attribute (reader, &attr, &abbrev->attrs[i], info_ptr);
9266           if (attr.form == DW_FORM_ref_addr)
9267             complaint (_("ignoring absolute DW_AT_sibling"));
9268           else
9269             {
9270               sect_offset off = dwarf2_get_ref_die_offset (&attr);
9271               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
9272
9273               if (sibling_ptr < info_ptr)
9274                 complaint (_("DW_AT_sibling points backwards"));
9275               else if (sibling_ptr > reader->buffer_end)
9276                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
9277               else
9278                 return sibling_ptr;
9279             }
9280         }
9281
9282       /* If it isn't DW_AT_sibling, skip this attribute.  */
9283       form = abbrev->attrs[i].form;
9284     skip_attribute:
9285       switch (form)
9286         {
9287         case DW_FORM_ref_addr:
9288           /* In DWARF 2, DW_FORM_ref_addr is address sized; in DWARF 3
9289              and later it is offset sized.  */
9290           if (cu->header.version == 2)
9291             info_ptr += cu->header.addr_size;
9292           else
9293             info_ptr += cu->header.offset_size;
9294           break;
9295         case DW_FORM_GNU_ref_alt:
9296           info_ptr += cu->header.offset_size;
9297           break;
9298         case DW_FORM_addr:
9299           info_ptr += cu->header.addr_size;
9300           break;
9301         case DW_FORM_data1:
9302         case DW_FORM_ref1:
9303         case DW_FORM_flag:
9304           info_ptr += 1;
9305           break;
9306         case DW_FORM_flag_present:
9307         case DW_FORM_implicit_const:
9308           break;
9309         case DW_FORM_data2:
9310         case DW_FORM_ref2:
9311           info_ptr += 2;
9312           break;
9313         case DW_FORM_data4:
9314         case DW_FORM_ref4:
9315           info_ptr += 4;
9316           break;
9317         case DW_FORM_data8:
9318         case DW_FORM_ref8:
9319         case DW_FORM_ref_sig8:
9320           info_ptr += 8;
9321           break;
9322         case DW_FORM_data16:
9323           info_ptr += 16;
9324           break;
9325         case DW_FORM_string:
9326           read_direct_string (abfd, info_ptr, &bytes_read);
9327           info_ptr += bytes_read;
9328           break;
9329         case DW_FORM_sec_offset:
9330         case DW_FORM_strp:
9331         case DW_FORM_GNU_strp_alt:
9332           info_ptr += cu->header.offset_size;
9333           break;
9334         case DW_FORM_exprloc:
9335         case DW_FORM_block:
9336           info_ptr += read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9337           info_ptr += bytes_read;
9338           break;
9339         case DW_FORM_block1:
9340           info_ptr += 1 + read_1_byte (abfd, info_ptr);
9341           break;
9342         case DW_FORM_block2:
9343           info_ptr += 2 + read_2_bytes (abfd, info_ptr);
9344           break;
9345         case DW_FORM_block4:
9346           info_ptr += 4 + read_4_bytes (abfd, info_ptr);
9347           break;
9348         case DW_FORM_sdata:
9349         case DW_FORM_udata:
9350         case DW_FORM_ref_udata:
9351         case DW_FORM_GNU_addr_index:
9352         case DW_FORM_GNU_str_index:
9353           info_ptr = safe_skip_leb128 (info_ptr, buffer_end);
9354           break;
9355         case DW_FORM_indirect:
9356           form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
9357           info_ptr += bytes_read;
9358           /* We need to continue parsing from here, so just go back to
9359              the top.  */
9360           goto skip_attribute;
9361
9362         default:
9363           error (_("Dwarf Error: Cannot handle %s "
9364                    "in DWARF reader [in module %s]"),
9365                  dwarf_form_name (form),
9366                  bfd_get_filename (abfd));
9367         }
9368     }
9369
9370   if (abbrev->has_children)
9371     return skip_children (reader, info_ptr);
9372   else
9373     return info_ptr;
9374 }
9375
9376 /* Locate ORIG_PDI's sibling.
9377    INFO_PTR should point to the start of the next DIE after ORIG_PDI.  */
9378
9379 static const gdb_byte *
9380 locate_pdi_sibling (const struct die_reader_specs *reader,
9381                     struct partial_die_info *orig_pdi,
9382                     const gdb_byte *info_ptr)
9383 {
9384   /* Do we know the sibling already?  */
9385
9386   if (orig_pdi->sibling)
9387     return orig_pdi->sibling;
9388
9389   /* Are there any children to deal with?  */
9390
9391   if (!orig_pdi->has_children)
9392     return info_ptr;
9393
9394   /* Skip the children the long way.  */
9395
9396   return skip_children (reader, info_ptr);
9397 }
9398
9399 /* Expand this partial symbol table into a full symbol table.  SELF is
9400    not NULL.  */
9401
9402 static void
9403 dwarf2_read_symtab (struct partial_symtab *self,
9404                     struct objfile *objfile)
9405 {
9406   struct dwarf2_per_objfile *dwarf2_per_objfile
9407     = get_dwarf2_per_objfile (objfile);
9408
9409   if (self->readin)
9410     {
9411       warning (_("bug: psymtab for %s is already read in."),
9412                self->filename);
9413     }
9414   else
9415     {
9416       if (info_verbose)
9417         {
9418           printf_filtered (_("Reading in symbols for %s..."),
9419                            self->filename);
9420           gdb_flush (gdb_stdout);
9421         }
9422
9423       /* If this psymtab is constructed from a debug-only objfile, the
9424          has_section_at_zero flag will not necessarily be correct.  We
9425          can get the correct value for this flag by looking at the data
9426          associated with the (presumably stripped) associated objfile.  */
9427       if (objfile->separate_debug_objfile_backlink)
9428         {
9429           struct dwarf2_per_objfile *dpo_backlink
9430             = get_dwarf2_per_objfile (objfile->separate_debug_objfile_backlink);
9431
9432           dwarf2_per_objfile->has_section_at_zero
9433             = dpo_backlink->has_section_at_zero;
9434         }
9435
9436       dwarf2_per_objfile->reading_partial_symbols = 0;
9437
9438       psymtab_to_symtab_1 (self);
9439
9440       /* Finish up the debug error message.  */
9441       if (info_verbose)
9442         printf_filtered (_("done.\n"));
9443     }
9444
9445   process_cu_includes (dwarf2_per_objfile);
9446 }
9447 \f
9448 /* Reading in full CUs.  */
9449
9450 /* Add PER_CU to the queue.  */
9451
9452 static void
9453 queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
9454                  enum language pretend_language)
9455 {
9456   struct dwarf2_queue_item *item;
9457
9458   per_cu->queued = 1;
9459   item = XNEW (struct dwarf2_queue_item);
9460   item->per_cu = per_cu;
9461   item->pretend_language = pretend_language;
9462   item->next = NULL;
9463
9464   if (dwarf2_queue == NULL)
9465     dwarf2_queue = item;
9466   else
9467     dwarf2_queue_tail->next = item;
9468
9469   dwarf2_queue_tail = item;
9470 }
9471
9472 /* If PER_CU is not yet queued, add it to the queue.
9473    If DEPENDENT_CU is non-NULL, it has a reference to PER_CU so add a
9474    dependency.
9475    The result is non-zero if PER_CU was queued, otherwise the result is zero
9476    meaning either PER_CU is already queued or it is already loaded.
9477
9478    N.B. There is an invariant here that if a CU is queued then it is loaded.
9479    The caller is required to load PER_CU if we return non-zero.  */
9480
9481 static int
9482 maybe_queue_comp_unit (struct dwarf2_cu *dependent_cu,
9483                        struct dwarf2_per_cu_data *per_cu,
9484                        enum language pretend_language)
9485 {
9486   /* We may arrive here during partial symbol reading, if we need full
9487      DIEs to process an unusual case (e.g. template arguments).  Do
9488      not queue PER_CU, just tell our caller to load its DIEs.  */
9489   if (per_cu->dwarf2_per_objfile->reading_partial_symbols)
9490     {
9491       if (per_cu->cu == NULL || per_cu->cu->dies == NULL)
9492         return 1;
9493       return 0;
9494     }
9495
9496   /* Mark the dependence relation so that we don't flush PER_CU
9497      too early.  */
9498   if (dependent_cu != NULL)
9499     dwarf2_add_dependence (dependent_cu, per_cu);
9500
9501   /* If it's already on the queue, we have nothing to do.  */
9502   if (per_cu->queued)
9503     return 0;
9504
9505   /* If the compilation unit is already loaded, just mark it as
9506      used.  */
9507   if (per_cu->cu != NULL)
9508     {
9509       per_cu->cu->last_used = 0;
9510       return 0;
9511     }
9512
9513   /* Add it to the queue.  */
9514   queue_comp_unit (per_cu, pretend_language);
9515
9516   return 1;
9517 }
9518
9519 /* Process the queue.  */
9520
9521 static void
9522 process_queue (struct dwarf2_per_objfile *dwarf2_per_objfile)
9523 {
9524   struct dwarf2_queue_item *item, *next_item;
9525
9526   if (dwarf_read_debug)
9527     {
9528       fprintf_unfiltered (gdb_stdlog,
9529                           "Expanding one or more symtabs of objfile %s ...\n",
9530                           objfile_name (dwarf2_per_objfile->objfile));
9531     }
9532
9533   /* The queue starts out with one item, but following a DIE reference
9534      may load a new CU, adding it to the end of the queue.  */
9535   for (item = dwarf2_queue; item != NULL; dwarf2_queue = item = next_item)
9536     {
9537       if ((dwarf2_per_objfile->using_index
9538            ? !item->per_cu->v.quick->compunit_symtab
9539            : (item->per_cu->v.psymtab && !item->per_cu->v.psymtab->readin))
9540           /* Skip dummy CUs.  */
9541           && item->per_cu->cu != NULL)
9542         {
9543           struct dwarf2_per_cu_data *per_cu = item->per_cu;
9544           unsigned int debug_print_threshold;
9545           char buf[100];
9546
9547           if (per_cu->is_debug_types)
9548             {
9549               struct signatured_type *sig_type =
9550                 (struct signatured_type *) per_cu;
9551
9552               sprintf (buf, "TU %s at offset %s",
9553                        hex_string (sig_type->signature),
9554                        sect_offset_str (per_cu->sect_off));
9555               /* There can be 100s of TUs.
9556                  Only print them in verbose mode.  */
9557               debug_print_threshold = 2;
9558             }
9559           else
9560             {
9561               sprintf (buf, "CU at offset %s",
9562                        sect_offset_str (per_cu->sect_off));
9563               debug_print_threshold = 1;
9564             }
9565
9566           if (dwarf_read_debug >= debug_print_threshold)
9567             fprintf_unfiltered (gdb_stdlog, "Expanding symtab of %s\n", buf);
9568
9569           if (per_cu->is_debug_types)
9570             process_full_type_unit (per_cu, item->pretend_language);
9571           else
9572             process_full_comp_unit (per_cu, item->pretend_language);
9573
9574           if (dwarf_read_debug >= debug_print_threshold)
9575             fprintf_unfiltered (gdb_stdlog, "Done expanding %s\n", buf);
9576         }
9577
9578       item->per_cu->queued = 0;
9579       next_item = item->next;
9580       xfree (item);
9581     }
9582
9583   dwarf2_queue_tail = NULL;
9584
9585   if (dwarf_read_debug)
9586     {
9587       fprintf_unfiltered (gdb_stdlog, "Done expanding symtabs of %s.\n",
9588                           objfile_name (dwarf2_per_objfile->objfile));
9589     }
9590 }
9591
9592 /* Read in full symbols for PST, and anything it depends on.  */
9593
9594 static void
9595 psymtab_to_symtab_1 (struct partial_symtab *pst)
9596 {
9597   struct dwarf2_per_cu_data *per_cu;
9598   int i;
9599
9600   if (pst->readin)
9601     return;
9602
9603   for (i = 0; i < pst->number_of_dependencies; i++)
9604     if (!pst->dependencies[i]->readin
9605         && pst->dependencies[i]->user == NULL)
9606       {
9607         /* Inform about additional files that need to be read in.  */
9608         if (info_verbose)
9609           {
9610             /* FIXME: i18n: Need to make this a single string.  */
9611             fputs_filtered (" ", gdb_stdout);
9612             wrap_here ("");
9613             fputs_filtered ("and ", gdb_stdout);
9614             wrap_here ("");
9615             printf_filtered ("%s...", pst->dependencies[i]->filename);
9616             wrap_here ("");     /* Flush output.  */
9617             gdb_flush (gdb_stdout);
9618           }
9619         psymtab_to_symtab_1 (pst->dependencies[i]);
9620       }
9621
9622   per_cu = (struct dwarf2_per_cu_data *) pst->read_symtab_private;
9623
9624   if (per_cu == NULL)
9625     {
9626       /* It's an include file, no symbols to read for it.
9627          Everything is in the parent symtab.  */
9628       pst->readin = 1;
9629       return;
9630     }
9631
9632   dw2_do_instantiate_symtab (per_cu, false);
9633 }
9634
9635 /* Trivial hash function for die_info: the hash value of a DIE
9636    is its offset in .debug_info for this objfile.  */
9637
9638 static hashval_t
9639 die_hash (const void *item)
9640 {
9641   const struct die_info *die = (const struct die_info *) item;
9642
9643   return to_underlying (die->sect_off);
9644 }
9645
9646 /* Trivial comparison function for die_info structures: two DIEs
9647    are equal if they have the same offset.  */
9648
9649 static int
9650 die_eq (const void *item_lhs, const void *item_rhs)
9651 {
9652   const struct die_info *die_lhs = (const struct die_info *) item_lhs;
9653   const struct die_info *die_rhs = (const struct die_info *) item_rhs;
9654
9655   return die_lhs->sect_off == die_rhs->sect_off;
9656 }
9657
9658 /* die_reader_func for load_full_comp_unit.
9659    This is identical to read_signatured_type_reader,
9660    but is kept separate for now.  */
9661
9662 static void
9663 load_full_comp_unit_reader (const struct die_reader_specs *reader,
9664                             const gdb_byte *info_ptr,
9665                             struct die_info *comp_unit_die,
9666                             int has_children,
9667                             void *data)
9668 {
9669   struct dwarf2_cu *cu = reader->cu;
9670   enum language *language_ptr = (enum language *) data;
9671
9672   gdb_assert (cu->die_hash == NULL);
9673   cu->die_hash =
9674     htab_create_alloc_ex (cu->header.length / 12,
9675                           die_hash,
9676                           die_eq,
9677                           NULL,
9678                           &cu->comp_unit_obstack,
9679                           hashtab_obstack_allocate,
9680                           dummy_obstack_deallocate);
9681
9682   if (has_children)
9683     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
9684                                                   &info_ptr, comp_unit_die);
9685   cu->dies = comp_unit_die;
9686   /* comp_unit_die is not stored in die_hash, no need.  */
9687
9688   /* We try not to read any attributes in this function, because not
9689      all CUs needed for references have been loaded yet, and symbol
9690      table processing isn't initialized.  But we have to set the CU language,
9691      or we won't be able to build types correctly.
9692      Similarly, if we do not read the producer, we can not apply
9693      producer-specific interpretation.  */
9694   prepare_one_comp_unit (cu, cu->dies, *language_ptr);
9695 }
9696
9697 /* Load the DIEs associated with PER_CU into memory.  */
9698
9699 static void
9700 load_full_comp_unit (struct dwarf2_per_cu_data *this_cu,
9701                      bool skip_partial,
9702                      enum language pretend_language)
9703 {
9704   gdb_assert (! this_cu->is_debug_types);
9705
9706   init_cutu_and_read_dies (this_cu, NULL, 1, 1, skip_partial,
9707                            load_full_comp_unit_reader, &pretend_language);
9708 }
9709
9710 /* Add a DIE to the delayed physname list.  */
9711
9712 static void
9713 add_to_method_list (struct type *type, int fnfield_index, int index,
9714                     const char *name, struct die_info *die,
9715                     struct dwarf2_cu *cu)
9716 {
9717   struct delayed_method_info mi;
9718   mi.type = type;
9719   mi.fnfield_index = fnfield_index;
9720   mi.index = index;
9721   mi.name = name;
9722   mi.die = die;
9723   cu->method_list.push_back (mi);
9724 }
9725
9726 /* Check whether [PHYSNAME, PHYSNAME+LEN) ends with a modifier like
9727    "const" / "volatile".  If so, decrements LEN by the length of the
9728    modifier and return true.  Otherwise return false.  */
9729
9730 template<size_t N>
9731 static bool
9732 check_modifier (const char *physname, size_t &len, const char (&mod)[N])
9733 {
9734   size_t mod_len = sizeof (mod) - 1;
9735   if (len > mod_len && startswith (physname + (len - mod_len), mod))
9736     {
9737       len -= mod_len;
9738       return true;
9739     }
9740   return false;
9741 }
9742
9743 /* Compute the physnames of any methods on the CU's method list.
9744
9745    The computation of method physnames is delayed in order to avoid the
9746    (bad) condition that one of the method's formal parameters is of an as yet
9747    incomplete type.  */
9748
9749 static void
9750 compute_delayed_physnames (struct dwarf2_cu *cu)
9751 {
9752   /* Only C++ delays computing physnames.  */
9753   if (cu->method_list.empty ())
9754     return;
9755   gdb_assert (cu->language == language_cplus);
9756
9757   for (const delayed_method_info &mi : cu->method_list)
9758     {
9759       const char *physname;
9760       struct fn_fieldlist *fn_flp
9761         = &TYPE_FN_FIELDLIST (mi.type, mi.fnfield_index);
9762       physname = dwarf2_physname (mi.name, mi.die, cu);
9763       TYPE_FN_FIELD_PHYSNAME (fn_flp->fn_fields, mi.index)
9764         = physname ? physname : "";
9765
9766       /* Since there's no tag to indicate whether a method is a
9767          const/volatile overload, extract that information out of the
9768          demangled name.  */
9769       if (physname != NULL)
9770         {
9771           size_t len = strlen (physname);
9772
9773           while (1)
9774             {
9775               if (physname[len] == ')') /* shortcut */
9776                 break;
9777               else if (check_modifier (physname, len, " const"))
9778                 TYPE_FN_FIELD_CONST (fn_flp->fn_fields, mi.index) = 1;
9779               else if (check_modifier (physname, len, " volatile"))
9780                 TYPE_FN_FIELD_VOLATILE (fn_flp->fn_fields, mi.index) = 1;
9781               else
9782                 break;
9783             }
9784         }
9785     }
9786
9787   /* The list is no longer needed.  */
9788   cu->method_list.clear ();
9789 }
9790
9791 /* A wrapper for add_symbol_to_list to ensure that SYMBOL's language is
9792    the same as all other symbols in LISTHEAD.  If a new symbol is added
9793    with a different language, this function asserts.  */
9794
9795 static inline void
9796 dw2_add_symbol_to_list (struct symbol *symbol, struct pending **listhead)
9797 {
9798   /* Only assert if LISTHEAD already contains symbols of a different
9799      language (dict_create_hashed/insert_symbol_hashed requires that all
9800      symbols in this list are of the same language).  */
9801   gdb_assert ((*listhead) == NULL
9802               || (SYMBOL_LANGUAGE ((*listhead)->symbol[0])
9803                   == SYMBOL_LANGUAGE (symbol)));
9804
9805   add_symbol_to_list (symbol, listhead);
9806 }
9807
9808 /* Go objects should be embedded in a DW_TAG_module DIE,
9809    and it's not clear if/how imported objects will appear.
9810    To keep Go support simple until that's worked out,
9811    go back through what we've read and create something usable.
9812    We could do this while processing each DIE, and feels kinda cleaner,
9813    but that way is more invasive.
9814    This is to, for example, allow the user to type "p var" or "b main"
9815    without having to specify the package name, and allow lookups
9816    of module.object to work in contexts that use the expression
9817    parser.  */
9818
9819 static void
9820 fixup_go_packaging (struct dwarf2_cu *cu)
9821 {
9822   char *package_name = NULL;
9823   struct pending *list;
9824   int i;
9825
9826   for (list = *cu->builder->get_global_symbols ();
9827        list != NULL;
9828        list = list->next)
9829     {
9830       for (i = 0; i < list->nsyms; ++i)
9831         {
9832           struct symbol *sym = list->symbol[i];
9833
9834           if (SYMBOL_LANGUAGE (sym) == language_go
9835               && SYMBOL_CLASS (sym) == LOC_BLOCK)
9836             {
9837               char *this_package_name = go_symbol_package_name (sym);
9838
9839               if (this_package_name == NULL)
9840                 continue;
9841               if (package_name == NULL)
9842                 package_name = this_package_name;
9843               else
9844                 {
9845                   struct objfile *objfile
9846                     = cu->per_cu->dwarf2_per_objfile->objfile;
9847                   if (strcmp (package_name, this_package_name) != 0)
9848                     complaint (_("Symtab %s has objects from two different Go packages: %s and %s"),
9849                                (symbol_symtab (sym) != NULL
9850                                 ? symtab_to_filename_for_display
9851                                     (symbol_symtab (sym))
9852                                 : objfile_name (objfile)),
9853                                this_package_name, package_name);
9854                   xfree (this_package_name);
9855                 }
9856             }
9857         }
9858     }
9859
9860   if (package_name != NULL)
9861     {
9862       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
9863       const char *saved_package_name
9864         = (const char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
9865                                         package_name,
9866                                         strlen (package_name));
9867       struct type *type = init_type (objfile, TYPE_CODE_MODULE, 0,
9868                                      saved_package_name);
9869       struct symbol *sym;
9870
9871       sym = allocate_symbol (objfile);
9872       SYMBOL_SET_LANGUAGE (sym, language_go, &objfile->objfile_obstack);
9873       SYMBOL_SET_NAMES (sym, saved_package_name,
9874                         strlen (saved_package_name), 0, objfile);
9875       /* This is not VAR_DOMAIN because we want a way to ensure a lookup of,
9876          e.g., "main" finds the "main" module and not C's main().  */
9877       SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
9878       SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
9879       SYMBOL_TYPE (sym) = type;
9880
9881       dw2_add_symbol_to_list (sym, cu->builder->get_global_symbols ());
9882
9883       xfree (package_name);
9884     }
9885 }
9886
9887 /* Allocate a fully-qualified name consisting of the two parts on the
9888    obstack.  */
9889
9890 static const char *
9891 rust_fully_qualify (struct obstack *obstack, const char *p1, const char *p2)
9892 {
9893   return obconcat (obstack, p1, "::", p2, (char *) NULL);
9894 }
9895
9896 /* A helper that allocates a struct discriminant_info to attach to a
9897    union type.  */
9898
9899 static struct discriminant_info *
9900 alloc_discriminant_info (struct type *type, int discriminant_index,
9901                          int default_index)
9902 {
9903   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9904   gdb_assert (discriminant_index == -1
9905               || (discriminant_index >= 0
9906                   && discriminant_index < TYPE_NFIELDS (type)));
9907   gdb_assert (default_index == -1
9908               || (default_index >= 0 && default_index < TYPE_NFIELDS (type)));
9909
9910   TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
9911
9912   struct discriminant_info *disc
9913     = ((struct discriminant_info *)
9914        TYPE_ZALLOC (type,
9915                     offsetof (struct discriminant_info, discriminants)
9916                     + TYPE_NFIELDS (type) * sizeof (disc->discriminants[0])));
9917   disc->default_index = default_index;
9918   disc->discriminant_index = discriminant_index;
9919
9920   struct dynamic_prop prop;
9921   prop.kind = PROP_UNDEFINED;
9922   prop.data.baton = disc;
9923
9924   add_dyn_prop (DYN_PROP_DISCRIMINATED, prop, type);
9925
9926   return disc;
9927 }
9928
9929 /* Some versions of rustc emitted enums in an unusual way.
9930
9931    Ordinary enums were emitted as unions.  The first element of each
9932    structure in the union was named "RUST$ENUM$DISR".  This element
9933    held the discriminant.
9934
9935    These versions of Rust also implemented the "non-zero"
9936    optimization.  When the enum had two values, and one is empty and
9937    the other holds a pointer that cannot be zero, the pointer is used
9938    as the discriminant, with a zero value meaning the empty variant.
9939    Here, the union's first member is of the form
9940    RUST$ENCODED$ENUM$<fieldno>$<fieldno>$...$<variantname>
9941    where the fieldnos are the indices of the fields that should be
9942    traversed in order to find the field (which may be several fields deep)
9943    and the variantname is the name of the variant of the case when the
9944    field is zero.
9945
9946    This function recognizes whether TYPE is of one of these forms,
9947    and, if so, smashes it to be a variant type.  */
9948
9949 static void
9950 quirk_rust_enum (struct type *type, struct objfile *objfile)
9951 {
9952   gdb_assert (TYPE_CODE (type) == TYPE_CODE_UNION);
9953
9954   /* We don't need to deal with empty enums.  */
9955   if (TYPE_NFIELDS (type) == 0)
9956     return;
9957
9958 #define RUST_ENUM_PREFIX "RUST$ENCODED$ENUM$"
9959   if (TYPE_NFIELDS (type) == 1
9960       && startswith (TYPE_FIELD_NAME (type, 0), RUST_ENUM_PREFIX))
9961     {
9962       const char *name = TYPE_FIELD_NAME (type, 0) + strlen (RUST_ENUM_PREFIX);
9963
9964       /* Decode the field name to find the offset of the
9965          discriminant.  */
9966       ULONGEST bit_offset = 0;
9967       struct type *field_type = TYPE_FIELD_TYPE (type, 0);
9968       while (name[0] >= '0' && name[0] <= '9')
9969         {
9970           char *tail;
9971           unsigned long index = strtoul (name, &tail, 10);
9972           name = tail;
9973           if (*name != '$'
9974               || index >= TYPE_NFIELDS (field_type)
9975               || (TYPE_FIELD_LOC_KIND (field_type, index)
9976                   != FIELD_LOC_KIND_BITPOS))
9977             {
9978               complaint (_("Could not parse Rust enum encoding string \"%s\""
9979                            "[in module %s]"),
9980                          TYPE_FIELD_NAME (type, 0),
9981                          objfile_name (objfile));
9982               return;
9983             }
9984           ++name;
9985
9986           bit_offset += TYPE_FIELD_BITPOS (field_type, index);
9987           field_type = TYPE_FIELD_TYPE (field_type, index);
9988         }
9989
9990       /* Make a union to hold the variants.  */
9991       struct type *union_type = alloc_type (objfile);
9992       TYPE_CODE (union_type) = TYPE_CODE_UNION;
9993       TYPE_NFIELDS (union_type) = 3;
9994       TYPE_FIELDS (union_type)
9995         = (struct field *) TYPE_ZALLOC (type, 3 * sizeof (struct field));
9996       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
9997       set_type_align (union_type, TYPE_RAW_ALIGN (type));
9998
9999       /* Put the discriminant must at index 0.  */
10000       TYPE_FIELD_TYPE (union_type, 0) = field_type;
10001       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10002       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10003       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 0), bit_offset);
10004
10005       /* The order of fields doesn't really matter, so put the real
10006          field at index 1 and the data-less field at index 2.  */
10007       struct discriminant_info *disc
10008         = alloc_discriminant_info (union_type, 0, 1);
10009       TYPE_FIELD (union_type, 1) = TYPE_FIELD (type, 0);
10010       TYPE_FIELD_NAME (union_type, 1)
10011         = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1)));
10012       TYPE_NAME (TYPE_FIELD_TYPE (union_type, 1))
10013         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10014                               TYPE_FIELD_NAME (union_type, 1));
10015
10016       const char *dataless_name
10017         = rust_fully_qualify (&objfile->objfile_obstack, TYPE_NAME (type),
10018                               name);
10019       struct type *dataless_type = init_type (objfile, TYPE_CODE_VOID, 0,
10020                                               dataless_name);
10021       TYPE_FIELD_TYPE (union_type, 2) = dataless_type;
10022       /* NAME points into the original discriminant name, which
10023          already has the correct lifetime.  */
10024       TYPE_FIELD_NAME (union_type, 2) = name;
10025       SET_FIELD_BITPOS (TYPE_FIELD (union_type, 2), 0);
10026       disc->discriminants[2] = 0;
10027
10028       /* Smash this type to be a structure type.  We have to do this
10029          because the type has already been recorded.  */
10030       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10031       TYPE_NFIELDS (type) = 1;
10032       TYPE_FIELDS (type)
10033         = (struct field *) TYPE_ZALLOC (type, sizeof (struct field));
10034
10035       /* Install the variant part.  */
10036       TYPE_FIELD_TYPE (type, 0) = union_type;
10037       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10038       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10039     }
10040   else if (TYPE_NFIELDS (type) == 1)
10041     {
10042       /* We assume that a union with a single field is a univariant
10043          enum.  */
10044       /* Smash this type to be a structure type.  We have to do this
10045          because the type has already been recorded.  */
10046       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10047
10048       /* Make a union to hold the variants.  */
10049       struct type *union_type = alloc_type (objfile);
10050       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10051       TYPE_NFIELDS (union_type) = TYPE_NFIELDS (type);
10052       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10053       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10054       TYPE_FIELDS (union_type) = TYPE_FIELDS (type);
10055
10056       struct type *field_type = TYPE_FIELD_TYPE (union_type, 0);
10057       const char *variant_name
10058         = rust_last_path_segment (TYPE_NAME (field_type));
10059       TYPE_FIELD_NAME (union_type, 0) = variant_name;
10060       TYPE_NAME (field_type)
10061         = rust_fully_qualify (&objfile->objfile_obstack,
10062                               TYPE_NAME (type), variant_name);
10063
10064       /* Install the union in the outer struct type.  */
10065       TYPE_NFIELDS (type) = 1;
10066       TYPE_FIELDS (type)
10067         = (struct field *) TYPE_ZALLOC (union_type, sizeof (struct field));
10068       TYPE_FIELD_TYPE (type, 0) = union_type;
10069       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10070       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10071
10072       alloc_discriminant_info (union_type, -1, 0);
10073     }
10074   else
10075     {
10076       struct type *disr_type = nullptr;
10077       for (int i = 0; i < TYPE_NFIELDS (type); ++i)
10078         {
10079           disr_type = TYPE_FIELD_TYPE (type, i);
10080
10081           if (TYPE_CODE (disr_type) != TYPE_CODE_STRUCT)
10082             {
10083               /* All fields of a true enum will be structs.  */
10084               return;
10085             }
10086           else if (TYPE_NFIELDS (disr_type) == 0)
10087             {
10088               /* Could be data-less variant, so keep going.  */
10089               disr_type = nullptr;
10090             }
10091           else if (strcmp (TYPE_FIELD_NAME (disr_type, 0),
10092                            "RUST$ENUM$DISR") != 0)
10093             {
10094               /* Not a Rust enum.  */
10095               return;
10096             }
10097           else
10098             {
10099               /* Found one.  */
10100               break;
10101             }
10102         }
10103
10104       /* If we got here without a discriminant, then it's probably
10105          just a union.  */
10106       if (disr_type == nullptr)
10107         return;
10108
10109       /* Smash this type to be a structure type.  We have to do this
10110          because the type has already been recorded.  */
10111       TYPE_CODE (type) = TYPE_CODE_STRUCT;
10112
10113       /* Make a union to hold the variants.  */
10114       struct field *disr_field = &TYPE_FIELD (disr_type, 0);
10115       struct type *union_type = alloc_type (objfile);
10116       TYPE_CODE (union_type) = TYPE_CODE_UNION;
10117       TYPE_NFIELDS (union_type) = 1 + TYPE_NFIELDS (type);
10118       TYPE_LENGTH (union_type) = TYPE_LENGTH (type);
10119       set_type_align (union_type, TYPE_RAW_ALIGN (type));
10120       TYPE_FIELDS (union_type)
10121         = (struct field *) TYPE_ZALLOC (union_type,
10122                                         (TYPE_NFIELDS (union_type)
10123                                          * sizeof (struct field)));
10124
10125       memcpy (TYPE_FIELDS (union_type) + 1, TYPE_FIELDS (type),
10126               TYPE_NFIELDS (type) * sizeof (struct field));
10127
10128       /* Install the discriminant at index 0 in the union.  */
10129       TYPE_FIELD (union_type, 0) = *disr_field;
10130       TYPE_FIELD_ARTIFICIAL (union_type, 0) = 1;
10131       TYPE_FIELD_NAME (union_type, 0) = "<<discriminant>>";
10132
10133       /* Install the union in the outer struct type.  */
10134       TYPE_FIELD_TYPE (type, 0) = union_type;
10135       TYPE_FIELD_NAME (type, 0) = "<<variants>>";
10136       TYPE_NFIELDS (type) = 1;
10137
10138       /* Set the size and offset of the union type.  */
10139       SET_FIELD_BITPOS (TYPE_FIELD (type, 0), 0);
10140
10141       /* We need a way to find the correct discriminant given a
10142          variant name.  For convenience we build a map here.  */
10143       struct type *enum_type = FIELD_TYPE (*disr_field);
10144       std::unordered_map<std::string, ULONGEST> discriminant_map;
10145       for (int i = 0; i < TYPE_NFIELDS (enum_type); ++i)
10146         {
10147           if (TYPE_FIELD_LOC_KIND (enum_type, i) == FIELD_LOC_KIND_ENUMVAL)
10148             {
10149               const char *name
10150                 = rust_last_path_segment (TYPE_FIELD_NAME (enum_type, i));
10151               discriminant_map[name] = TYPE_FIELD_ENUMVAL (enum_type, i);
10152             }
10153         }
10154
10155       int n_fields = TYPE_NFIELDS (union_type);
10156       struct discriminant_info *disc
10157         = alloc_discriminant_info (union_type, 0, -1);
10158       /* Skip the discriminant here.  */
10159       for (int i = 1; i < n_fields; ++i)
10160         {
10161           /* Find the final word in the name of this variant's type.
10162              That name can be used to look up the correct
10163              discriminant.  */
10164           const char *variant_name
10165             = rust_last_path_segment (TYPE_NAME (TYPE_FIELD_TYPE (union_type,
10166                                                                   i)));
10167
10168           auto iter = discriminant_map.find (variant_name);
10169           if (iter != discriminant_map.end ())
10170             disc->discriminants[i] = iter->second;
10171
10172           /* Remove the discriminant field, if it exists.  */
10173           struct type *sub_type = TYPE_FIELD_TYPE (union_type, i);
10174           if (TYPE_NFIELDS (sub_type) > 0)
10175             {
10176               --TYPE_NFIELDS (sub_type);
10177               ++TYPE_FIELDS (sub_type);
10178             }
10179           TYPE_FIELD_NAME (union_type, i) = variant_name;
10180           TYPE_NAME (sub_type)
10181             = rust_fully_qualify (&objfile->objfile_obstack,
10182                                   TYPE_NAME (type), variant_name);
10183         }
10184     }
10185 }
10186
10187 /* Rewrite some Rust unions to be structures with variants parts.  */
10188
10189 static void
10190 rust_union_quirks (struct dwarf2_cu *cu)
10191 {
10192   gdb_assert (cu->language == language_rust);
10193   for (type *type_ : cu->rust_unions)
10194     quirk_rust_enum (type_, cu->per_cu->dwarf2_per_objfile->objfile);
10195   /* We don't need this any more.  */
10196   cu->rust_unions.clear ();
10197 }
10198
10199 /* Return the symtab for PER_CU.  This works properly regardless of
10200    whether we're using the index or psymtabs.  */
10201
10202 static struct compunit_symtab *
10203 get_compunit_symtab (struct dwarf2_per_cu_data *per_cu)
10204 {
10205   return (per_cu->dwarf2_per_objfile->using_index
10206           ? per_cu->v.quick->compunit_symtab
10207           : per_cu->v.psymtab->compunit_symtab);
10208 }
10209
10210 /* A helper function for computing the list of all symbol tables
10211    included by PER_CU.  */
10212
10213 static void
10214 recursively_compute_inclusions (VEC (compunit_symtab_ptr) **result,
10215                                 htab_t all_children, htab_t all_type_symtabs,
10216                                 struct dwarf2_per_cu_data *per_cu,
10217                                 struct compunit_symtab *immediate_parent)
10218 {
10219   void **slot;
10220   int ix;
10221   struct compunit_symtab *cust;
10222   struct dwarf2_per_cu_data *iter;
10223
10224   slot = htab_find_slot (all_children, per_cu, INSERT);
10225   if (*slot != NULL)
10226     {
10227       /* This inclusion and its children have been processed.  */
10228       return;
10229     }
10230
10231   *slot = per_cu;
10232   /* Only add a CU if it has a symbol table.  */
10233   cust = get_compunit_symtab (per_cu);
10234   if (cust != NULL)
10235     {
10236       /* If this is a type unit only add its symbol table if we haven't
10237          seen it yet (type unit per_cu's can share symtabs).  */
10238       if (per_cu->is_debug_types)
10239         {
10240           slot = htab_find_slot (all_type_symtabs, cust, INSERT);
10241           if (*slot == NULL)
10242             {
10243               *slot = cust;
10244               VEC_safe_push (compunit_symtab_ptr, *result, cust);
10245               if (cust->user == NULL)
10246                 cust->user = immediate_parent;
10247             }
10248         }
10249       else
10250         {
10251           VEC_safe_push (compunit_symtab_ptr, *result, cust);
10252           if (cust->user == NULL)
10253             cust->user = immediate_parent;
10254         }
10255     }
10256
10257   for (ix = 0;
10258        VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs, ix, iter);
10259        ++ix)
10260     {
10261       recursively_compute_inclusions (result, all_children,
10262                                       all_type_symtabs, iter, cust);
10263     }
10264 }
10265
10266 /* Compute the compunit_symtab 'includes' fields for the compunit_symtab of
10267    PER_CU.  */
10268
10269 static void
10270 compute_compunit_symtab_includes (struct dwarf2_per_cu_data *per_cu)
10271 {
10272   gdb_assert (! per_cu->is_debug_types);
10273
10274   if (!VEC_empty (dwarf2_per_cu_ptr, per_cu->imported_symtabs))
10275     {
10276       int ix, len;
10277       struct dwarf2_per_cu_data *per_cu_iter;
10278       struct compunit_symtab *compunit_symtab_iter;
10279       VEC (compunit_symtab_ptr) *result_symtabs = NULL;
10280       htab_t all_children, all_type_symtabs;
10281       struct compunit_symtab *cust = get_compunit_symtab (per_cu);
10282
10283       /* If we don't have a symtab, we can just skip this case.  */
10284       if (cust == NULL)
10285         return;
10286
10287       all_children = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10288                                         NULL, xcalloc, xfree);
10289       all_type_symtabs = htab_create_alloc (1, htab_hash_pointer, htab_eq_pointer,
10290                                             NULL, xcalloc, xfree);
10291
10292       for (ix = 0;
10293            VEC_iterate (dwarf2_per_cu_ptr, per_cu->imported_symtabs,
10294                         ix, per_cu_iter);
10295            ++ix)
10296         {
10297           recursively_compute_inclusions (&result_symtabs, all_children,
10298                                           all_type_symtabs, per_cu_iter,
10299                                           cust);
10300         }
10301
10302       /* Now we have a transitive closure of all the included symtabs.  */
10303       len = VEC_length (compunit_symtab_ptr, result_symtabs);
10304       cust->includes
10305         = XOBNEWVEC (&per_cu->dwarf2_per_objfile->objfile->objfile_obstack,
10306                      struct compunit_symtab *, len + 1);
10307       for (ix = 0;
10308            VEC_iterate (compunit_symtab_ptr, result_symtabs, ix,
10309                         compunit_symtab_iter);
10310            ++ix)
10311         cust->includes[ix] = compunit_symtab_iter;
10312       cust->includes[len] = NULL;
10313
10314       VEC_free (compunit_symtab_ptr, result_symtabs);
10315       htab_delete (all_children);
10316       htab_delete (all_type_symtabs);
10317     }
10318 }
10319
10320 /* Compute the 'includes' field for the symtabs of all the CUs we just
10321    read.  */
10322
10323 static void
10324 process_cu_includes (struct dwarf2_per_objfile *dwarf2_per_objfile)
10325 {
10326   for (dwarf2_per_cu_data *iter : dwarf2_per_objfile->just_read_cus)
10327     {
10328       if (! iter->is_debug_types)
10329         compute_compunit_symtab_includes (iter);
10330     }
10331
10332   dwarf2_per_objfile->just_read_cus.clear ();
10333 }
10334
10335 /* Generate full symbol information for PER_CU, whose DIEs have
10336    already been loaded into memory.  */
10337
10338 static void
10339 process_full_comp_unit (struct dwarf2_per_cu_data *per_cu,
10340                         enum language pretend_language)
10341 {
10342   struct dwarf2_cu *cu = per_cu->cu;
10343   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10344   struct objfile *objfile = dwarf2_per_objfile->objfile;
10345   struct gdbarch *gdbarch = get_objfile_arch (objfile);
10346   CORE_ADDR lowpc, highpc;
10347   struct compunit_symtab *cust;
10348   CORE_ADDR baseaddr;
10349   struct block *static_block;
10350   CORE_ADDR addr;
10351
10352   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
10353
10354   /* Clear the list here in case something was left over.  */
10355   cu->method_list.clear ();
10356
10357   cu->language = pretend_language;
10358   cu->language_defn = language_def (cu->language);
10359
10360   /* Do line number decoding in read_file_scope () */
10361   process_die (cu->dies, cu);
10362
10363   /* For now fudge the Go package.  */
10364   if (cu->language == language_go)
10365     fixup_go_packaging (cu);
10366
10367   /* Now that we have processed all the DIEs in the CU, all the types 
10368      should be complete, and it should now be safe to compute all of the
10369      physnames.  */
10370   compute_delayed_physnames (cu);
10371
10372   if (cu->language == language_rust)
10373     rust_union_quirks (cu);
10374
10375   /* Some compilers don't define a DW_AT_high_pc attribute for the
10376      compilation unit.  If the DW_AT_high_pc is missing, synthesize
10377      it, by scanning the DIE's below the compilation unit.  */
10378   get_scope_pc_bounds (cu->dies, &lowpc, &highpc, cu);
10379
10380   addr = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
10381   static_block = cu->builder->end_symtab_get_static_block (addr, 0, 1);
10382
10383   /* If the comp unit has DW_AT_ranges, it may have discontiguous ranges.
10384      Also, DW_AT_ranges may record ranges not belonging to any child DIEs
10385      (such as virtual method tables).  Record the ranges in STATIC_BLOCK's
10386      addrmap to help ensure it has an accurate map of pc values belonging to
10387      this comp unit.  */
10388   dwarf2_record_block_ranges (cu->dies, static_block, baseaddr, cu);
10389
10390   cust = cu->builder->end_symtab_from_static_block (static_block,
10391                                                     SECT_OFF_TEXT (objfile),
10392                                                     0);
10393
10394   if (cust != NULL)
10395     {
10396       int gcc_4_minor = producer_is_gcc_ge_4 (cu->producer);
10397
10398       /* Set symtab language to language from DW_AT_language.  If the
10399          compilation is from a C file generated by language preprocessors, do
10400          not set the language if it was already deduced by start_subfile.  */
10401       if (!(cu->language == language_c
10402             && COMPUNIT_FILETABS (cust)->language != language_unknown))
10403         COMPUNIT_FILETABS (cust)->language = cu->language;
10404
10405       /* GCC-4.0 has started to support -fvar-tracking.  GCC-3.x still can
10406          produce DW_AT_location with location lists but it can be possibly
10407          invalid without -fvar-tracking.  Still up to GCC-4.4.x incl. 4.4.0
10408          there were bugs in prologue debug info, fixed later in GCC-4.5
10409          by "unwind info for epilogues" patch (which is not directly related).
10410
10411          For -gdwarf-4 type units LOCATIONS_VALID indication is fortunately not
10412          needed, it would be wrong due to missing DW_AT_producer there.
10413
10414          Still one can confuse GDB by using non-standard GCC compilation
10415          options - this waits on GCC PR other/32998 (-frecord-gcc-switches).
10416          */ 
10417       if (cu->has_loclist && gcc_4_minor >= 5)
10418         cust->locations_valid = 1;
10419
10420       if (gcc_4_minor >= 5)
10421         cust->epilogue_unwind_valid = 1;
10422
10423       cust->call_site_htab = cu->call_site_htab;
10424     }
10425
10426   if (dwarf2_per_objfile->using_index)
10427     per_cu->v.quick->compunit_symtab = cust;
10428   else
10429     {
10430       struct partial_symtab *pst = per_cu->v.psymtab;
10431       pst->compunit_symtab = cust;
10432       pst->readin = 1;
10433     }
10434
10435   /* Push it for inclusion processing later.  */
10436   dwarf2_per_objfile->just_read_cus.push_back (per_cu);
10437
10438   /* Not needed any more.  */
10439   cu->builder.reset ();
10440 }
10441
10442 /* Generate full symbol information for type unit PER_CU, whose DIEs have
10443    already been loaded into memory.  */
10444
10445 static void
10446 process_full_type_unit (struct dwarf2_per_cu_data *per_cu,
10447                         enum language pretend_language)
10448 {
10449   struct dwarf2_cu *cu = per_cu->cu;
10450   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
10451   struct objfile *objfile = dwarf2_per_objfile->objfile;
10452   struct compunit_symtab *cust;
10453   struct signatured_type *sig_type;
10454
10455   gdb_assert (per_cu->is_debug_types);
10456   sig_type = (struct signatured_type *) per_cu;
10457
10458   /* Clear the list here in case something was left over.  */
10459   cu->method_list.clear ();
10460
10461   cu->language = pretend_language;
10462   cu->language_defn = language_def (cu->language);
10463
10464   /* The symbol tables are set up in read_type_unit_scope.  */
10465   process_die (cu->dies, cu);
10466
10467   /* For now fudge the Go package.  */
10468   if (cu->language == language_go)
10469     fixup_go_packaging (cu);
10470
10471   /* Now that we have processed all the DIEs in the CU, all the types 
10472      should be complete, and it should now be safe to compute all of the
10473      physnames.  */
10474   compute_delayed_physnames (cu);
10475
10476   if (cu->language == language_rust)
10477     rust_union_quirks (cu);
10478
10479   /* TUs share symbol tables.
10480      If this is the first TU to use this symtab, complete the construction
10481      of it with end_expandable_symtab.  Otherwise, complete the addition of
10482      this TU's symbols to the existing symtab.  */
10483   if (sig_type->type_unit_group->compunit_symtab == NULL)
10484     {
10485       cust = cu->builder->end_expandable_symtab (0, SECT_OFF_TEXT (objfile));
10486       sig_type->type_unit_group->compunit_symtab = cust;
10487
10488       if (cust != NULL)
10489         {
10490           /* Set symtab language to language from DW_AT_language.  If the
10491              compilation is from a C file generated by language preprocessors,
10492              do not set the language if it was already deduced by
10493              start_subfile.  */
10494           if (!(cu->language == language_c
10495                 && COMPUNIT_FILETABS (cust)->language != language_c))
10496             COMPUNIT_FILETABS (cust)->language = cu->language;
10497         }
10498     }
10499   else
10500     {
10501       cu->builder->augment_type_symtab ();
10502       cust = sig_type->type_unit_group->compunit_symtab;
10503     }
10504
10505   if (dwarf2_per_objfile->using_index)
10506     per_cu->v.quick->compunit_symtab = cust;
10507   else
10508     {
10509       struct partial_symtab *pst = per_cu->v.psymtab;
10510       pst->compunit_symtab = cust;
10511       pst->readin = 1;
10512     }
10513
10514   /* Not needed any more.  */
10515   cu->builder.reset ();
10516 }
10517
10518 /* Process an imported unit DIE.  */
10519
10520 static void
10521 process_imported_unit_die (struct die_info *die, struct dwarf2_cu *cu)
10522 {
10523   struct attribute *attr;
10524
10525   /* For now we don't handle imported units in type units.  */
10526   if (cu->per_cu->is_debug_types)
10527     {
10528       error (_("Dwarf Error: DW_TAG_imported_unit is not"
10529                " supported in type units [in module %s]"),
10530              objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
10531     }
10532
10533   attr = dwarf2_attr (die, DW_AT_import, cu);
10534   if (attr != NULL)
10535     {
10536       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
10537       bool is_dwz = (attr->form == DW_FORM_GNU_ref_alt || cu->per_cu->is_dwz);
10538       dwarf2_per_cu_data *per_cu
10539         = dwarf2_find_containing_comp_unit (sect_off, is_dwz,
10540                                             cu->per_cu->dwarf2_per_objfile);
10541
10542       /* If necessary, add it to the queue and load its DIEs.  */
10543       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
10544         load_full_comp_unit (per_cu, false, cu->language);
10545
10546       VEC_safe_push (dwarf2_per_cu_ptr, cu->per_cu->imported_symtabs,
10547                      per_cu);
10548     }
10549 }
10550
10551 /* RAII object that represents a process_die scope: i.e.,
10552    starts/finishes processing a DIE.  */
10553 class process_die_scope
10554 {
10555 public:
10556   process_die_scope (die_info *die, dwarf2_cu *cu)
10557     : m_die (die), m_cu (cu)
10558   {
10559     /* We should only be processing DIEs not already in process.  */
10560     gdb_assert (!m_die->in_process);
10561     m_die->in_process = true;
10562   }
10563
10564   ~process_die_scope ()
10565   {
10566     m_die->in_process = false;
10567
10568     /* If we're done processing the DIE for the CU that owns the line
10569        header, we don't need the line header anymore.  */
10570     if (m_cu->line_header_die_owner == m_die)
10571       {
10572         delete m_cu->line_header;
10573         m_cu->line_header = NULL;
10574         m_cu->line_header_die_owner = NULL;
10575       }
10576   }
10577
10578 private:
10579   die_info *m_die;
10580   dwarf2_cu *m_cu;
10581 };
10582
10583 /* Process a die and its children.  */
10584
10585 static void
10586 process_die (struct die_info *die, struct dwarf2_cu *cu)
10587 {
10588   process_die_scope scope (die, cu);
10589
10590   switch (die->tag)
10591     {
10592     case DW_TAG_padding:
10593       break;
10594     case DW_TAG_compile_unit:
10595     case DW_TAG_partial_unit:
10596       read_file_scope (die, cu);
10597       break;
10598     case DW_TAG_type_unit:
10599       read_type_unit_scope (die, cu);
10600       break;
10601     case DW_TAG_subprogram:
10602     case DW_TAG_inlined_subroutine:
10603       read_func_scope (die, cu);
10604       break;
10605     case DW_TAG_lexical_block:
10606     case DW_TAG_try_block:
10607     case DW_TAG_catch_block:
10608       read_lexical_block_scope (die, cu);
10609       break;
10610     case DW_TAG_call_site:
10611     case DW_TAG_GNU_call_site:
10612       read_call_site_scope (die, cu);
10613       break;
10614     case DW_TAG_class_type:
10615     case DW_TAG_interface_type:
10616     case DW_TAG_structure_type:
10617     case DW_TAG_union_type:
10618       process_structure_scope (die, cu);
10619       break;
10620     case DW_TAG_enumeration_type:
10621       process_enumeration_scope (die, cu);
10622       break;
10623
10624     /* These dies have a type, but processing them does not create
10625        a symbol or recurse to process the children.  Therefore we can
10626        read them on-demand through read_type_die.  */
10627     case DW_TAG_subroutine_type:
10628     case DW_TAG_set_type:
10629     case DW_TAG_array_type:
10630     case DW_TAG_pointer_type:
10631     case DW_TAG_ptr_to_member_type:
10632     case DW_TAG_reference_type:
10633     case DW_TAG_rvalue_reference_type:
10634     case DW_TAG_string_type:
10635       break;
10636
10637     case DW_TAG_base_type:
10638     case DW_TAG_subrange_type:
10639     case DW_TAG_typedef:
10640       /* Add a typedef symbol for the type definition, if it has a
10641          DW_AT_name.  */
10642       new_symbol (die, read_type_die (die, cu), cu);
10643       break;
10644     case DW_TAG_common_block:
10645       read_common_block (die, cu);
10646       break;
10647     case DW_TAG_common_inclusion:
10648       break;
10649     case DW_TAG_namespace:
10650       cu->processing_has_namespace_info = 1;
10651       read_namespace (die, cu);
10652       break;
10653     case DW_TAG_module:
10654       cu->processing_has_namespace_info = 1;
10655       read_module (die, cu);
10656       break;
10657     case DW_TAG_imported_declaration:
10658       cu->processing_has_namespace_info = 1;
10659       if (read_namespace_alias (die, cu))
10660         break;
10661       /* The declaration is not a global namespace alias.  */
10662       /* Fall through.  */
10663     case DW_TAG_imported_module:
10664       cu->processing_has_namespace_info = 1;
10665       if (die->child != NULL && (die->tag == DW_TAG_imported_declaration
10666                                  || cu->language != language_fortran))
10667         complaint (_("Tag '%s' has unexpected children"),
10668                    dwarf_tag_name (die->tag));
10669       read_import_statement (die, cu);
10670       break;
10671
10672     case DW_TAG_imported_unit:
10673       process_imported_unit_die (die, cu);
10674       break;
10675
10676     case DW_TAG_variable:
10677       read_variable (die, cu);
10678       break;
10679
10680     default:
10681       new_symbol (die, NULL, cu);
10682       break;
10683     }
10684 }
10685 \f
10686 /* DWARF name computation.  */
10687
10688 /* A helper function for dwarf2_compute_name which determines whether DIE
10689    needs to have the name of the scope prepended to the name listed in the
10690    die.  */
10691
10692 static int
10693 die_needs_namespace (struct die_info *die, struct dwarf2_cu *cu)
10694 {
10695   struct attribute *attr;
10696
10697   switch (die->tag)
10698     {
10699     case DW_TAG_namespace:
10700     case DW_TAG_typedef:
10701     case DW_TAG_class_type:
10702     case DW_TAG_interface_type:
10703     case DW_TAG_structure_type:
10704     case DW_TAG_union_type:
10705     case DW_TAG_enumeration_type:
10706     case DW_TAG_enumerator:
10707     case DW_TAG_subprogram:
10708     case DW_TAG_inlined_subroutine:
10709     case DW_TAG_member:
10710     case DW_TAG_imported_declaration:
10711       return 1;
10712
10713     case DW_TAG_variable:
10714     case DW_TAG_constant:
10715       /* We only need to prefix "globally" visible variables.  These include
10716          any variable marked with DW_AT_external or any variable that
10717          lives in a namespace.  [Variables in anonymous namespaces
10718          require prefixing, but they are not DW_AT_external.]  */
10719
10720       if (dwarf2_attr (die, DW_AT_specification, cu))
10721         {
10722           struct dwarf2_cu *spec_cu = cu;
10723
10724           return die_needs_namespace (die_specification (die, &spec_cu),
10725                                       spec_cu);
10726         }
10727
10728       attr = dwarf2_attr (die, DW_AT_external, cu);
10729       if (attr == NULL && die->parent->tag != DW_TAG_namespace
10730           && die->parent->tag != DW_TAG_module)
10731         return 0;
10732       /* A variable in a lexical block of some kind does not need a
10733          namespace, even though in C++ such variables may be external
10734          and have a mangled name.  */
10735       if (die->parent->tag ==  DW_TAG_lexical_block
10736           || die->parent->tag ==  DW_TAG_try_block
10737           || die->parent->tag ==  DW_TAG_catch_block
10738           || die->parent->tag == DW_TAG_subprogram)
10739         return 0;
10740       return 1;
10741
10742     default:
10743       return 0;
10744     }
10745 }
10746
10747 /* Return the DIE's linkage name attribute, either DW_AT_linkage_name
10748    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10749    defined for the given DIE.  */
10750
10751 static struct attribute *
10752 dw2_linkage_name_attr (struct die_info *die, struct dwarf2_cu *cu)
10753 {
10754   struct attribute *attr;
10755
10756   attr = dwarf2_attr (die, DW_AT_linkage_name, cu);
10757   if (attr == NULL)
10758     attr = dwarf2_attr (die, DW_AT_MIPS_linkage_name, cu);
10759
10760   return attr;
10761 }
10762
10763 /* Return the DIE's linkage name as a string, either DW_AT_linkage_name
10764    or DW_AT_MIPS_linkage_name.  Returns NULL if the attribute is not
10765    defined for the given DIE.  */
10766
10767 static const char *
10768 dw2_linkage_name (struct die_info *die, struct dwarf2_cu *cu)
10769 {
10770   const char *linkage_name;
10771
10772   linkage_name = dwarf2_string_attr (die, DW_AT_linkage_name, cu);
10773   if (linkage_name == NULL)
10774     linkage_name = dwarf2_string_attr (die, DW_AT_MIPS_linkage_name, cu);
10775
10776   return linkage_name;
10777 }
10778
10779 /* Compute the fully qualified name of DIE in CU.  If PHYSNAME is nonzero,
10780    compute the physname for the object, which include a method's:
10781    - formal parameters (C++),
10782    - receiver type (Go),
10783
10784    The term "physname" is a bit confusing.
10785    For C++, for example, it is the demangled name.
10786    For Go, for example, it's the mangled name.
10787
10788    For Ada, return the DIE's linkage name rather than the fully qualified
10789    name.  PHYSNAME is ignored..
10790
10791    The result is allocated on the objfile_obstack and canonicalized.  */
10792
10793 static const char *
10794 dwarf2_compute_name (const char *name,
10795                      struct die_info *die, struct dwarf2_cu *cu,
10796                      int physname)
10797 {
10798   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
10799
10800   if (name == NULL)
10801     name = dwarf2_name (die, cu);
10802
10803   /* For Fortran GDB prefers DW_AT_*linkage_name for the physname if present
10804      but otherwise compute it by typename_concat inside GDB.
10805      FIXME: Actually this is not really true, or at least not always true.
10806      It's all very confusing.  SYMBOL_SET_NAMES doesn't try to demangle
10807      Fortran names because there is no mangling standard.  So new_symbol
10808      will set the demangled name to the result of dwarf2_full_name, and it is
10809      the demangled name that GDB uses if it exists.  */
10810   if (cu->language == language_ada
10811       || (cu->language == language_fortran && physname))
10812     {
10813       /* For Ada unit, we prefer the linkage name over the name, as
10814          the former contains the exported name, which the user expects
10815          to be able to reference.  Ideally, we want the user to be able
10816          to reference this entity using either natural or linkage name,
10817          but we haven't started looking at this enhancement yet.  */
10818       const char *linkage_name = dw2_linkage_name (die, cu);
10819
10820       if (linkage_name != NULL)
10821         return linkage_name;
10822     }
10823
10824   /* These are the only languages we know how to qualify names in.  */
10825   if (name != NULL
10826       && (cu->language == language_cplus
10827           || cu->language == language_fortran || cu->language == language_d
10828           || cu->language == language_rust))
10829     {
10830       if (die_needs_namespace (die, cu))
10831         {
10832           const char *prefix;
10833           const char *canonical_name = NULL;
10834
10835           string_file buf;
10836
10837           prefix = determine_prefix (die, cu);
10838           if (*prefix != '\0')
10839             {
10840               char *prefixed_name = typename_concat (NULL, prefix, name,
10841                                                      physname, cu);
10842
10843               buf.puts (prefixed_name);
10844               xfree (prefixed_name);
10845             }
10846           else
10847             buf.puts (name);
10848
10849           /* Template parameters may be specified in the DIE's DW_AT_name, or
10850              as children with DW_TAG_template_type_param or
10851              DW_TAG_value_type_param.  If the latter, add them to the name
10852              here.  If the name already has template parameters, then
10853              skip this step; some versions of GCC emit both, and
10854              it is more efficient to use the pre-computed name.
10855
10856              Something to keep in mind about this process: it is very
10857              unlikely, or in some cases downright impossible, to produce
10858              something that will match the mangled name of a function.
10859              If the definition of the function has the same debug info,
10860              we should be able to match up with it anyway.  But fallbacks
10861              using the minimal symbol, for instance to find a method
10862              implemented in a stripped copy of libstdc++, will not work.
10863              If we do not have debug info for the definition, we will have to
10864              match them up some other way.
10865
10866              When we do name matching there is a related problem with function
10867              templates; two instantiated function templates are allowed to
10868              differ only by their return types, which we do not add here.  */
10869
10870           if (cu->language == language_cplus && strchr (name, '<') == NULL)
10871             {
10872               struct attribute *attr;
10873               struct die_info *child;
10874               int first = 1;
10875
10876               die->building_fullname = 1;
10877
10878               for (child = die->child; child != NULL; child = child->sibling)
10879                 {
10880                   struct type *type;
10881                   LONGEST value;
10882                   const gdb_byte *bytes;
10883                   struct dwarf2_locexpr_baton *baton;
10884                   struct value *v;
10885
10886                   if (child->tag != DW_TAG_template_type_param
10887                       && child->tag != DW_TAG_template_value_param)
10888                     continue;
10889
10890                   if (first)
10891                     {
10892                       buf.puts ("<");
10893                       first = 0;
10894                     }
10895                   else
10896                     buf.puts (", ");
10897
10898                   attr = dwarf2_attr (child, DW_AT_type, cu);
10899                   if (attr == NULL)
10900                     {
10901                       complaint (_("template parameter missing DW_AT_type"));
10902                       buf.puts ("UNKNOWN_TYPE");
10903                       continue;
10904                     }
10905                   type = die_type (child, cu);
10906
10907                   if (child->tag == DW_TAG_template_type_param)
10908                     {
10909                       c_print_type (type, "", &buf, -1, 0, cu->language,
10910                                     &type_print_raw_options);
10911                       continue;
10912                     }
10913
10914                   attr = dwarf2_attr (child, DW_AT_const_value, cu);
10915                   if (attr == NULL)
10916                     {
10917                       complaint (_("template parameter missing "
10918                                    "DW_AT_const_value"));
10919                       buf.puts ("UNKNOWN_VALUE");
10920                       continue;
10921                     }
10922
10923                   dwarf2_const_value_attr (attr, type, name,
10924                                            &cu->comp_unit_obstack, cu,
10925                                            &value, &bytes, &baton);
10926
10927                   if (TYPE_NOSIGN (type))
10928                     /* GDB prints characters as NUMBER 'CHAR'.  If that's
10929                        changed, this can use value_print instead.  */
10930                     c_printchar (value, type, &buf);
10931                   else
10932                     {
10933                       struct value_print_options opts;
10934
10935                       if (baton != NULL)
10936                         v = dwarf2_evaluate_loc_desc (type, NULL,
10937                                                       baton->data,
10938                                                       baton->size,
10939                                                       baton->per_cu);
10940                       else if (bytes != NULL)
10941                         {
10942                           v = allocate_value (type);
10943                           memcpy (value_contents_writeable (v), bytes,
10944                                   TYPE_LENGTH (type));
10945                         }
10946                       else
10947                         v = value_from_longest (type, value);
10948
10949                       /* Specify decimal so that we do not depend on
10950                          the radix.  */
10951                       get_formatted_print_options (&opts, 'd');
10952                       opts.raw = 1;
10953                       value_print (v, &buf, &opts);
10954                       release_value (v);
10955                     }
10956                 }
10957
10958               die->building_fullname = 0;
10959
10960               if (!first)
10961                 {
10962                   /* Close the argument list, with a space if necessary
10963                      (nested templates).  */
10964                   if (!buf.empty () && buf.string ().back () == '>')
10965                     buf.puts (" >");
10966                   else
10967                     buf.puts (">");
10968                 }
10969             }
10970
10971           /* For C++ methods, append formal parameter type
10972              information, if PHYSNAME.  */
10973
10974           if (physname && die->tag == DW_TAG_subprogram
10975               && cu->language == language_cplus)
10976             {
10977               struct type *type = read_type_die (die, cu);
10978
10979               c_type_print_args (type, &buf, 1, cu->language,
10980                                  &type_print_raw_options);
10981
10982               if (cu->language == language_cplus)
10983                 {
10984                   /* Assume that an artificial first parameter is
10985                      "this", but do not crash if it is not.  RealView
10986                      marks unnamed (and thus unused) parameters as
10987                      artificial; there is no way to differentiate
10988                      the two cases.  */
10989                   if (TYPE_NFIELDS (type) > 0
10990                       && TYPE_FIELD_ARTIFICIAL (type, 0)
10991                       && TYPE_CODE (TYPE_FIELD_TYPE (type, 0)) == TYPE_CODE_PTR
10992                       && TYPE_CONST (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type,
10993                                                                         0))))
10994                     buf.puts (" const");
10995                 }
10996             }
10997
10998           const std::string &intermediate_name = buf.string ();
10999
11000           if (cu->language == language_cplus)
11001             canonical_name
11002               = dwarf2_canonicalize_name (intermediate_name.c_str (), cu,
11003                                           &objfile->per_bfd->storage_obstack);
11004
11005           /* If we only computed INTERMEDIATE_NAME, or if
11006              INTERMEDIATE_NAME is already canonical, then we need to
11007              copy it to the appropriate obstack.  */
11008           if (canonical_name == NULL || canonical_name == intermediate_name.c_str ())
11009             name = ((const char *)
11010                     obstack_copy0 (&objfile->per_bfd->storage_obstack,
11011                                    intermediate_name.c_str (),
11012                                    intermediate_name.length ()));
11013           else
11014             name = canonical_name;
11015         }
11016     }
11017
11018   return name;
11019 }
11020
11021 /* Return the fully qualified name of DIE, based on its DW_AT_name.
11022    If scope qualifiers are appropriate they will be added.  The result
11023    will be allocated on the storage_obstack, or NULL if the DIE does
11024    not have a name.  NAME may either be from a previous call to
11025    dwarf2_name or NULL.
11026
11027    The output string will be canonicalized (if C++).  */
11028
11029 static const char *
11030 dwarf2_full_name (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11031 {
11032   return dwarf2_compute_name (name, die, cu, 0);
11033 }
11034
11035 /* Construct a physname for the given DIE in CU.  NAME may either be
11036    from a previous call to dwarf2_name or NULL.  The result will be
11037    allocated on the objfile_objstack or NULL if the DIE does not have a
11038    name.
11039
11040    The output string will be canonicalized (if C++).  */
11041
11042 static const char *
11043 dwarf2_physname (const char *name, struct die_info *die, struct dwarf2_cu *cu)
11044 {
11045   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11046   const char *retval, *mangled = NULL, *canon = NULL;
11047   int need_copy = 1;
11048
11049   /* In this case dwarf2_compute_name is just a shortcut not building anything
11050      on its own.  */
11051   if (!die_needs_namespace (die, cu))
11052     return dwarf2_compute_name (name, die, cu, 1);
11053
11054   mangled = dw2_linkage_name (die, cu);
11055
11056   /* rustc emits invalid values for DW_AT_linkage_name.  Ignore these.
11057      See https://github.com/rust-lang/rust/issues/32925.  */
11058   if (cu->language == language_rust && mangled != NULL
11059       && strchr (mangled, '{') != NULL)
11060     mangled = NULL;
11061
11062   /* DW_AT_linkage_name is missing in some cases - depend on what GDB
11063      has computed.  */
11064   gdb::unique_xmalloc_ptr<char> demangled;
11065   if (mangled != NULL)
11066     {
11067
11068       if (language_def (cu->language)->la_store_sym_names_in_linkage_form_p)
11069         {
11070           /* Do nothing (do not demangle the symbol name).  */
11071         }
11072       else if (cu->language == language_go)
11073         {
11074           /* This is a lie, but we already lie to the caller new_symbol.
11075              new_symbol assumes we return the mangled name.
11076              This just undoes that lie until things are cleaned up.  */
11077         }
11078       else
11079         {
11080           /* Use DMGL_RET_DROP for C++ template functions to suppress
11081              their return type.  It is easier for GDB users to search
11082              for such functions as `name(params)' than `long name(params)'.
11083              In such case the minimal symbol names do not match the full
11084              symbol names but for template functions there is never a need
11085              to look up their definition from their declaration so
11086              the only disadvantage remains the minimal symbol variant
11087              `long name(params)' does not have the proper inferior type.  */
11088           demangled.reset (gdb_demangle (mangled,
11089                                          (DMGL_PARAMS | DMGL_ANSI
11090                                           | DMGL_RET_DROP)));
11091         }
11092       if (demangled)
11093         canon = demangled.get ();
11094       else
11095         {
11096           canon = mangled;
11097           need_copy = 0;
11098         }
11099     }
11100
11101   if (canon == NULL || check_physname)
11102     {
11103       const char *physname = dwarf2_compute_name (name, die, cu, 1);
11104
11105       if (canon != NULL && strcmp (physname, canon) != 0)
11106         {
11107           /* It may not mean a bug in GDB.  The compiler could also
11108              compute DW_AT_linkage_name incorrectly.  But in such case
11109              GDB would need to be bug-to-bug compatible.  */
11110
11111           complaint (_("Computed physname <%s> does not match demangled <%s> "
11112                        "(from linkage <%s>) - DIE at %s [in module %s]"),
11113                      physname, canon, mangled, sect_offset_str (die->sect_off),
11114                      objfile_name (objfile));
11115
11116           /* Prefer DW_AT_linkage_name (in the CANON form) - when it
11117              is available here - over computed PHYSNAME.  It is safer
11118              against both buggy GDB and buggy compilers.  */
11119
11120           retval = canon;
11121         }
11122       else
11123         {
11124           retval = physname;
11125           need_copy = 0;
11126         }
11127     }
11128   else
11129     retval = canon;
11130
11131   if (need_copy)
11132     retval = ((const char *)
11133               obstack_copy0 (&objfile->per_bfd->storage_obstack,
11134                              retval, strlen (retval)));
11135
11136   return retval;
11137 }
11138
11139 /* Inspect DIE in CU for a namespace alias.  If one exists, record
11140    a new symbol for it.
11141
11142    Returns 1 if a namespace alias was recorded, 0 otherwise.  */
11143
11144 static int
11145 read_namespace_alias (struct die_info *die, struct dwarf2_cu *cu)
11146 {
11147   struct attribute *attr;
11148
11149   /* If the die does not have a name, this is not a namespace
11150      alias.  */
11151   attr = dwarf2_attr (die, DW_AT_name, cu);
11152   if (attr != NULL)
11153     {
11154       int num;
11155       struct die_info *d = die;
11156       struct dwarf2_cu *imported_cu = cu;
11157
11158       /* If the compiler has nested DW_AT_imported_declaration DIEs,
11159          keep inspecting DIEs until we hit the underlying import.  */
11160 #define MAX_NESTED_IMPORTED_DECLARATIONS 100
11161       for (num = 0; num  < MAX_NESTED_IMPORTED_DECLARATIONS; ++num)
11162         {
11163           attr = dwarf2_attr (d, DW_AT_import, cu);
11164           if (attr == NULL)
11165             break;
11166
11167           d = follow_die_ref (d, attr, &imported_cu);
11168           if (d->tag != DW_TAG_imported_declaration)
11169             break;
11170         }
11171
11172       if (num == MAX_NESTED_IMPORTED_DECLARATIONS)
11173         {
11174           complaint (_("DIE at %s has too many recursively imported "
11175                        "declarations"), sect_offset_str (d->sect_off));
11176           return 0;
11177         }
11178
11179       if (attr != NULL)
11180         {
11181           struct type *type;
11182           sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
11183
11184           type = get_die_type_at_offset (sect_off, cu->per_cu);
11185           if (type != NULL && TYPE_CODE (type) == TYPE_CODE_NAMESPACE)
11186             {
11187               /* This declaration is a global namespace alias.  Add
11188                  a symbol for it whose type is the aliased namespace.  */
11189               new_symbol (die, type, cu);
11190               return 1;
11191             }
11192         }
11193     }
11194
11195   return 0;
11196 }
11197
11198 /* Return the using directives repository (global or local?) to use in the
11199    current context for CU.
11200
11201    For Ada, imported declarations can materialize renamings, which *may* be
11202    global.  However it is impossible (for now?) in DWARF to distinguish
11203    "external" imported declarations and "static" ones.  As all imported
11204    declarations seem to be static in all other languages, make them all CU-wide
11205    global only in Ada.  */
11206
11207 static struct using_direct **
11208 using_directives (struct dwarf2_cu *cu)
11209 {
11210   if (cu->language == language_ada && cu->builder->outermost_context_p ())
11211     return cu->builder->get_global_using_directives ();
11212   else
11213     return cu->builder->get_local_using_directives ();
11214 }
11215
11216 /* Read the import statement specified by the given die and record it.  */
11217
11218 static void
11219 read_import_statement (struct die_info *die, struct dwarf2_cu *cu)
11220 {
11221   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
11222   struct attribute *import_attr;
11223   struct die_info *imported_die, *child_die;
11224   struct dwarf2_cu *imported_cu;
11225   const char *imported_name;
11226   const char *imported_name_prefix;
11227   const char *canonical_name;
11228   const char *import_alias;
11229   const char *imported_declaration = NULL;
11230   const char *import_prefix;
11231   std::vector<const char *> excludes;
11232
11233   import_attr = dwarf2_attr (die, DW_AT_import, cu);
11234   if (import_attr == NULL)
11235     {
11236       complaint (_("Tag '%s' has no DW_AT_import"),
11237                  dwarf_tag_name (die->tag));
11238       return;
11239     }
11240
11241   imported_cu = cu;
11242   imported_die = follow_die_ref_or_sig (die, import_attr, &imported_cu);
11243   imported_name = dwarf2_name (imported_die, imported_cu);
11244   if (imported_name == NULL)
11245     {
11246       /* GCC bug: https://bugzilla.redhat.com/show_bug.cgi?id=506524
11247
11248         The import in the following code:
11249         namespace A
11250           {
11251             typedef int B;
11252           }
11253
11254         int main ()
11255           {
11256             using A::B;
11257             B b;
11258             return b;
11259           }
11260
11261         ...
11262          <2><51>: Abbrev Number: 3 (DW_TAG_imported_declaration)
11263             <52>   DW_AT_decl_file   : 1
11264             <53>   DW_AT_decl_line   : 6
11265             <54>   DW_AT_import      : <0x75>
11266          <2><58>: Abbrev Number: 4 (DW_TAG_typedef)
11267             <59>   DW_AT_name        : B
11268             <5b>   DW_AT_decl_file   : 1
11269             <5c>   DW_AT_decl_line   : 2
11270             <5d>   DW_AT_type        : <0x6e>
11271         ...
11272          <1><75>: Abbrev Number: 7 (DW_TAG_base_type)
11273             <76>   DW_AT_byte_size   : 4
11274             <77>   DW_AT_encoding    : 5        (signed)
11275
11276         imports the wrong die ( 0x75 instead of 0x58 ).
11277         This case will be ignored until the gcc bug is fixed.  */
11278       return;
11279     }
11280
11281   /* Figure out the local name after import.  */
11282   import_alias = dwarf2_name (die, cu);
11283
11284   /* Figure out where the statement is being imported to.  */
11285   import_prefix = determine_prefix (die, cu);
11286
11287   /* Figure out what the scope of the imported die is and prepend it
11288      to the name of the imported die.  */
11289   imported_name_prefix = determine_prefix (imported_die, imported_cu);
11290
11291   if (imported_die->tag != DW_TAG_namespace
11292       && imported_die->tag != DW_TAG_module)
11293     {
11294       imported_declaration = imported_name;
11295       canonical_name = imported_name_prefix;
11296     }
11297   else if (strlen (imported_name_prefix) > 0)
11298     canonical_name = obconcat (&objfile->objfile_obstack,
11299                                imported_name_prefix,
11300                                (cu->language == language_d ? "." : "::"),
11301                                imported_name, (char *) NULL);
11302   else
11303     canonical_name = imported_name;
11304
11305   if (die->tag == DW_TAG_imported_module && cu->language == language_fortran)
11306     for (child_die = die->child; child_die && child_die->tag;
11307          child_die = sibling_die (child_die))
11308       {
11309         /* DWARF-4: A Fortran use statement with a “rename list” may be
11310            represented by an imported module entry with an import attribute
11311            referring to the module and owned entries corresponding to those
11312            entities that are renamed as part of being imported.  */
11313
11314         if (child_die->tag != DW_TAG_imported_declaration)
11315           {
11316             complaint (_("child DW_TAG_imported_declaration expected "
11317                          "- DIE at %s [in module %s]"),
11318                        sect_offset_str (child_die->sect_off),
11319                        objfile_name (objfile));
11320             continue;
11321           }
11322
11323         import_attr = dwarf2_attr (child_die, DW_AT_import, cu);
11324         if (import_attr == NULL)
11325           {
11326             complaint (_("Tag '%s' has no DW_AT_import"),
11327                        dwarf_tag_name (child_die->tag));
11328             continue;
11329           }
11330
11331         imported_cu = cu;
11332         imported_die = follow_die_ref_or_sig (child_die, import_attr,
11333                                               &imported_cu);
11334         imported_name = dwarf2_name (imported_die, imported_cu);
11335         if (imported_name == NULL)
11336           {
11337             complaint (_("child DW_TAG_imported_declaration has unknown "
11338                          "imported name - DIE at %s [in module %s]"),
11339                        sect_offset_str (child_die->sect_off),
11340                        objfile_name (objfile));
11341             continue;
11342           }
11343
11344         excludes.push_back (imported_name);
11345
11346         process_die (child_die, cu);
11347       }
11348
11349   add_using_directive (using_directives (cu),
11350                        import_prefix,
11351                        canonical_name,
11352                        import_alias,
11353                        imported_declaration,
11354                        excludes,
11355                        0,
11356                        &objfile->objfile_obstack);
11357 }
11358
11359 /* ICC<14 does not output the required DW_AT_declaration on incomplete
11360    types, but gives them a size of zero.  Starting with version 14,
11361    ICC is compatible with GCC.  */
11362
11363 static int
11364 producer_is_icc_lt_14 (struct dwarf2_cu *cu)
11365 {
11366   if (!cu->checked_producer)
11367     check_producer (cu);
11368
11369   return cu->producer_is_icc_lt_14;
11370 }
11371
11372 /* Check for possibly missing DW_AT_comp_dir with relative .debug_line
11373    directory paths.  GCC SVN r127613 (new option -fdebug-prefix-map) fixed
11374    this, it was first present in GCC release 4.3.0.  */
11375
11376 static int
11377 producer_is_gcc_lt_4_3 (struct dwarf2_cu *cu)
11378 {
11379   if (!cu->checked_producer)
11380     check_producer (cu);
11381
11382   return cu->producer_is_gcc_lt_4_3;
11383 }
11384
11385 static file_and_directory
11386 find_file_and_directory (struct die_info *die, struct dwarf2_cu *cu)
11387 {
11388   file_and_directory res;
11389
11390   /* Find the filename.  Do not use dwarf2_name here, since the filename
11391      is not a source language identifier.  */
11392   res.name = dwarf2_string_attr (die, DW_AT_name, cu);
11393   res.comp_dir = dwarf2_string_attr (die, DW_AT_comp_dir, cu);
11394
11395   if (res.comp_dir == NULL
11396       && producer_is_gcc_lt_4_3 (cu) && res.name != NULL
11397       && IS_ABSOLUTE_PATH (res.name))
11398     {
11399       res.comp_dir_storage = ldirname (res.name);
11400       if (!res.comp_dir_storage.empty ())
11401         res.comp_dir = res.comp_dir_storage.c_str ();
11402     }
11403   if (res.comp_dir != NULL)
11404     {
11405       /* Irix 6.2 native cc prepends <machine>.: to the compilation
11406          directory, get rid of it.  */
11407       const char *cp = strchr (res.comp_dir, ':');
11408
11409       if (cp && cp != res.comp_dir && cp[-1] == '.' && cp[1] == '/')
11410         res.comp_dir = cp + 1;
11411     }
11412
11413   if (res.name == NULL)
11414     res.name = "<unknown>";
11415
11416   return res;
11417 }
11418
11419 /* Handle DW_AT_stmt_list for a compilation unit.
11420    DIE is the DW_TAG_compile_unit die for CU.
11421    COMP_DIR is the compilation directory.  LOWPC is passed to
11422    dwarf_decode_lines.  See dwarf_decode_lines comments about it.  */
11423
11424 static void
11425 handle_DW_AT_stmt_list (struct die_info *die, struct dwarf2_cu *cu,
11426                         const char *comp_dir, CORE_ADDR lowpc) /* ARI: editCase function */
11427 {
11428   struct dwarf2_per_objfile *dwarf2_per_objfile
11429     = cu->per_cu->dwarf2_per_objfile;
11430   struct objfile *objfile = dwarf2_per_objfile->objfile;
11431   struct attribute *attr;
11432   struct line_header line_header_local;
11433   hashval_t line_header_local_hash;
11434   void **slot;
11435   int decode_mapping;
11436
11437   gdb_assert (! cu->per_cu->is_debug_types);
11438
11439   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11440   if (attr == NULL)
11441     return;
11442
11443   sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11444
11445   /* The line header hash table is only created if needed (it exists to
11446      prevent redundant reading of the line table for partial_units).
11447      If we're given a partial_unit, we'll need it.  If we're given a
11448      compile_unit, then use the line header hash table if it's already
11449      created, but don't create one just yet.  */
11450
11451   if (dwarf2_per_objfile->line_header_hash == NULL
11452       && die->tag == DW_TAG_partial_unit)
11453     {
11454       dwarf2_per_objfile->line_header_hash
11455         = htab_create_alloc_ex (127, line_header_hash_voidp,
11456                                 line_header_eq_voidp,
11457                                 free_line_header_voidp,
11458                                 &objfile->objfile_obstack,
11459                                 hashtab_obstack_allocate,
11460                                 dummy_obstack_deallocate);
11461     }
11462
11463   line_header_local.sect_off = line_offset;
11464   line_header_local.offset_in_dwz = cu->per_cu->is_dwz;
11465   line_header_local_hash = line_header_hash (&line_header_local);
11466   if (dwarf2_per_objfile->line_header_hash != NULL)
11467     {
11468       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11469                                        &line_header_local,
11470                                        line_header_local_hash, NO_INSERT);
11471
11472       /* For DW_TAG_compile_unit we need info like symtab::linetable which
11473          is not present in *SLOT (since if there is something in *SLOT then
11474          it will be for a partial_unit).  */
11475       if (die->tag == DW_TAG_partial_unit && slot != NULL)
11476         {
11477           gdb_assert (*slot != NULL);
11478           cu->line_header = (struct line_header *) *slot;
11479           return;
11480         }
11481     }
11482
11483   /* dwarf_decode_line_header does not yet provide sufficient information.
11484      We always have to call also dwarf_decode_lines for it.  */
11485   line_header_up lh = dwarf_decode_line_header (line_offset, cu);
11486   if (lh == NULL)
11487     return;
11488
11489   cu->line_header = lh.release ();
11490   cu->line_header_die_owner = die;
11491
11492   if (dwarf2_per_objfile->line_header_hash == NULL)
11493     slot = NULL;
11494   else
11495     {
11496       slot = htab_find_slot_with_hash (dwarf2_per_objfile->line_header_hash,
11497                                        &line_header_local,
11498                                        line_header_local_hash, INSERT);
11499       gdb_assert (slot != NULL);
11500     }
11501   if (slot != NULL && *slot == NULL)
11502     {
11503       /* This newly decoded line number information unit will be owned
11504          by line_header_hash hash table.  */
11505       *slot = cu->line_header;
11506       cu->line_header_die_owner = NULL;
11507     }
11508   else
11509     {
11510       /* We cannot free any current entry in (*slot) as that struct line_header
11511          may be already used by multiple CUs.  Create only temporary decoded
11512          line_header for this CU - it may happen at most once for each line
11513          number information unit.  And if we're not using line_header_hash
11514          then this is what we want as well.  */
11515       gdb_assert (die->tag != DW_TAG_partial_unit);
11516     }
11517   decode_mapping = (die->tag != DW_TAG_partial_unit);
11518   dwarf_decode_lines (cu->line_header, comp_dir, cu, NULL, lowpc,
11519                       decode_mapping);
11520
11521 }
11522
11523 /* Process DW_TAG_compile_unit or DW_TAG_partial_unit.  */
11524
11525 static void
11526 read_file_scope (struct die_info *die, struct dwarf2_cu *cu)
11527 {
11528   struct dwarf2_per_objfile *dwarf2_per_objfile
11529     = cu->per_cu->dwarf2_per_objfile;
11530   struct objfile *objfile = dwarf2_per_objfile->objfile;
11531   struct gdbarch *gdbarch = get_objfile_arch (objfile);
11532   CORE_ADDR lowpc = ((CORE_ADDR) -1);
11533   CORE_ADDR highpc = ((CORE_ADDR) 0);
11534   struct attribute *attr;
11535   struct die_info *child_die;
11536   CORE_ADDR baseaddr;
11537
11538   prepare_one_comp_unit (cu, die, cu->language);
11539   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
11540
11541   get_scope_pc_bounds (die, &lowpc, &highpc, cu);
11542
11543   /* If we didn't find a lowpc, set it to highpc to avoid complaints
11544      from finish_block.  */
11545   if (lowpc == ((CORE_ADDR) -1))
11546     lowpc = highpc;
11547   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
11548
11549   file_and_directory fnd = find_file_and_directory (die, cu);
11550
11551   /* The XLCL doesn't generate DW_LANG_OpenCL because this attribute is not
11552      standardised yet.  As a workaround for the language detection we fall
11553      back to the DW_AT_producer string.  */
11554   if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL") != NULL)
11555     cu->language = language_opencl;
11556
11557   /* Similar hack for Go.  */
11558   if (cu->producer && strstr (cu->producer, "GNU Go ") != NULL)
11559     set_cu_language (DW_LANG_Go, cu);
11560
11561   dwarf2_start_symtab (cu, fnd.name, fnd.comp_dir, lowpc);
11562
11563   /* Decode line number information if present.  We do this before
11564      processing child DIEs, so that the line header table is available
11565      for DW_AT_decl_file.  */
11566   handle_DW_AT_stmt_list (die, cu, fnd.comp_dir, lowpc);
11567
11568   /* Process all dies in compilation unit.  */
11569   if (die->child != NULL)
11570     {
11571       child_die = die->child;
11572       while (child_die && child_die->tag)
11573         {
11574           process_die (child_die, cu);
11575           child_die = sibling_die (child_die);
11576         }
11577     }
11578
11579   /* Decode macro information, if present.  Dwarf 2 macro information
11580      refers to information in the line number info statement program
11581      header, so we can only read it if we've read the header
11582      successfully.  */
11583   attr = dwarf2_attr (die, DW_AT_macros, cu);
11584   if (attr == NULL)
11585     attr = dwarf2_attr (die, DW_AT_GNU_macros, cu);
11586   if (attr && cu->line_header)
11587     {
11588       if (dwarf2_attr (die, DW_AT_macro_info, cu))
11589         complaint (_("CU refers to both DW_AT_macros and DW_AT_macro_info"));
11590
11591       dwarf_decode_macros (cu, DW_UNSND (attr), 1);
11592     }
11593   else
11594     {
11595       attr = dwarf2_attr (die, DW_AT_macro_info, cu);
11596       if (attr && cu->line_header)
11597         {
11598           unsigned int macro_offset = DW_UNSND (attr);
11599
11600           dwarf_decode_macros (cu, macro_offset, 0);
11601         }
11602     }
11603 }
11604
11605 /* TU version of handle_DW_AT_stmt_list for read_type_unit_scope.
11606    Create the set of symtabs used by this TU, or if this TU is sharing
11607    symtabs with another TU and the symtabs have already been created
11608    then restore those symtabs in the line header.
11609    We don't need the pc/line-number mapping for type units.  */
11610
11611 static void
11612 setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu)
11613 {
11614   struct dwarf2_per_cu_data *per_cu = cu->per_cu;
11615   struct type_unit_group *tu_group;
11616   int first_time;
11617   struct attribute *attr;
11618   unsigned int i;
11619   struct signatured_type *sig_type;
11620
11621   gdb_assert (per_cu->is_debug_types);
11622   sig_type = (struct signatured_type *) per_cu;
11623
11624   attr = dwarf2_attr (die, DW_AT_stmt_list, cu);
11625
11626   /* If we're using .gdb_index (includes -readnow) then
11627      per_cu->type_unit_group may not have been set up yet.  */
11628   if (sig_type->type_unit_group == NULL)
11629     sig_type->type_unit_group = get_type_unit_group (cu, attr);
11630   tu_group = sig_type->type_unit_group;
11631
11632   /* If we've already processed this stmt_list there's no real need to
11633      do it again, we could fake it and just recreate the part we need
11634      (file name,index -> symtab mapping).  If data shows this optimization
11635      is useful we can do it then.  */
11636   first_time = tu_group->compunit_symtab == NULL;
11637
11638   /* We have to handle the case of both a missing DW_AT_stmt_list or bad
11639      debug info.  */
11640   line_header_up lh;
11641   if (attr != NULL)
11642     {
11643       sect_offset line_offset = (sect_offset) DW_UNSND (attr);
11644       lh = dwarf_decode_line_header (line_offset, cu);
11645     }
11646   if (lh == NULL)
11647     {
11648       if (first_time)
11649         dwarf2_start_symtab (cu, "", NULL, 0);
11650       else
11651         {
11652           gdb_assert (tu_group->symtabs == NULL);
11653           gdb_assert (cu->builder == nullptr);
11654           struct compunit_symtab *cust = tu_group->compunit_symtab;
11655           cu->builder.reset (new struct buildsym_compunit
11656                              (COMPUNIT_OBJFILE (cust), "",
11657                               COMPUNIT_DIRNAME (cust),
11658                               compunit_language (cust),
11659                               0, cust));
11660         }
11661       return;
11662     }
11663
11664   cu->line_header = lh.release ();
11665   cu->line_header_die_owner = die;
11666
11667   if (first_time)
11668     {
11669       struct compunit_symtab *cust = dwarf2_start_symtab (cu, "", NULL, 0);
11670
11671       /* Note: We don't assign tu_group->compunit_symtab yet because we're
11672          still initializing it, and our caller (a few levels up)
11673          process_full_type_unit still needs to know if this is the first
11674          time.  */
11675
11676       tu_group->num_symtabs = cu->line_header->file_names.size ();
11677       tu_group->symtabs = XNEWVEC (struct symtab *,
11678                                    cu->line_header->file_names.size ());
11679
11680       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11681         {
11682           file_entry &fe = cu->line_header->file_names[i];
11683
11684           dwarf2_start_subfile (cu, fe.name, fe.include_dir (cu->line_header));
11685
11686           if (cu->builder->get_current_subfile ()->symtab == NULL)
11687             {
11688               /* NOTE: start_subfile will recognize when it's been
11689                  passed a file it has already seen.  So we can't
11690                  assume there's a simple mapping from
11691                  cu->line_header->file_names to subfiles, plus
11692                  cu->line_header->file_names may contain dups.  */
11693               cu->builder->get_current_subfile ()->symtab
11694                 = allocate_symtab (cust,
11695                                    cu->builder->get_current_subfile ()->name);
11696             }
11697
11698           fe.symtab = cu->builder->get_current_subfile ()->symtab;
11699           tu_group->symtabs[i] = fe.symtab;
11700         }
11701     }
11702   else
11703     {
11704       gdb_assert (cu->builder == nullptr);
11705       struct compunit_symtab *cust = tu_group->compunit_symtab;
11706       cu->builder.reset (new struct buildsym_compunit
11707                          (COMPUNIT_OBJFILE (cust), "",
11708                           COMPUNIT_DIRNAME (cust),
11709                           compunit_language (cust),
11710                           0, cust));
11711
11712       for (i = 0; i < cu->line_header->file_names.size (); ++i)
11713         {
11714           file_entry &fe = cu->line_header->file_names[i];
11715
11716           fe.symtab = tu_group->symtabs[i];
11717         }
11718     }
11719
11720   /* The main symtab is allocated last.  Type units don't have DW_AT_name
11721      so they don't have a "real" (so to speak) symtab anyway.
11722      There is later code that will assign the main symtab to all symbols
11723      that don't have one.  We need to handle the case of a symbol with a
11724      missing symtab (DW_AT_decl_file) anyway.  */
11725 }
11726
11727 /* Process DW_TAG_type_unit.
11728    For TUs we want to skip the first top level sibling if it's not the
11729    actual type being defined by this TU.  In this case the first top
11730    level sibling is there to provide context only.  */
11731
11732 static void
11733 read_type_unit_scope (struct die_info *die, struct dwarf2_cu *cu)
11734 {
11735   struct die_info *child_die;
11736
11737   prepare_one_comp_unit (cu, die, language_minimal);
11738
11739   /* Initialize (or reinitialize) the machinery for building symtabs.
11740      We do this before processing child DIEs, so that the line header table
11741      is available for DW_AT_decl_file.  */
11742   setup_type_unit_groups (die, cu);
11743
11744   if (die->child != NULL)
11745     {
11746       child_die = die->child;
11747       while (child_die && child_die->tag)
11748         {
11749           process_die (child_die, cu);
11750           child_die = sibling_die (child_die);
11751         }
11752     }
11753 }
11754 \f
11755 /* DWO/DWP files.
11756
11757    http://gcc.gnu.org/wiki/DebugFission
11758    http://gcc.gnu.org/wiki/DebugFissionDWP
11759
11760    To simplify handling of both DWO files ("object" files with the DWARF info)
11761    and DWP files (a file with the DWOs packaged up into one file), we treat
11762    DWP files as having a collection of virtual DWO files.  */
11763
11764 static hashval_t
11765 hash_dwo_file (const void *item)
11766 {
11767   const struct dwo_file *dwo_file = (const struct dwo_file *) item;
11768   hashval_t hash;
11769
11770   hash = htab_hash_string (dwo_file->dwo_name);
11771   if (dwo_file->comp_dir != NULL)
11772     hash += htab_hash_string (dwo_file->comp_dir);
11773   return hash;
11774 }
11775
11776 static int
11777 eq_dwo_file (const void *item_lhs, const void *item_rhs)
11778 {
11779   const struct dwo_file *lhs = (const struct dwo_file *) item_lhs;
11780   const struct dwo_file *rhs = (const struct dwo_file *) item_rhs;
11781
11782   if (strcmp (lhs->dwo_name, rhs->dwo_name) != 0)
11783     return 0;
11784   if (lhs->comp_dir == NULL || rhs->comp_dir == NULL)
11785     return lhs->comp_dir == rhs->comp_dir;
11786   return strcmp (lhs->comp_dir, rhs->comp_dir) == 0;
11787 }
11788
11789 /* Allocate a hash table for DWO files.  */
11790
11791 static htab_t
11792 allocate_dwo_file_hash_table (struct objfile *objfile)
11793 {
11794   return htab_create_alloc_ex (41,
11795                                hash_dwo_file,
11796                                eq_dwo_file,
11797                                NULL,
11798                                &objfile->objfile_obstack,
11799                                hashtab_obstack_allocate,
11800                                dummy_obstack_deallocate);
11801 }
11802
11803 /* Lookup DWO file DWO_NAME.  */
11804
11805 static void **
11806 lookup_dwo_file_slot (struct dwarf2_per_objfile *dwarf2_per_objfile,
11807                       const char *dwo_name,
11808                       const char *comp_dir)
11809 {
11810   struct dwo_file find_entry;
11811   void **slot;
11812
11813   if (dwarf2_per_objfile->dwo_files == NULL)
11814     dwarf2_per_objfile->dwo_files
11815       = allocate_dwo_file_hash_table (dwarf2_per_objfile->objfile);
11816
11817   memset (&find_entry, 0, sizeof (find_entry));
11818   find_entry.dwo_name = dwo_name;
11819   find_entry.comp_dir = comp_dir;
11820   slot = htab_find_slot (dwarf2_per_objfile->dwo_files, &find_entry, INSERT);
11821
11822   return slot;
11823 }
11824
11825 static hashval_t
11826 hash_dwo_unit (const void *item)
11827 {
11828   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
11829
11830   /* This drops the top 32 bits of the id, but is ok for a hash.  */
11831   return dwo_unit->signature;
11832 }
11833
11834 static int
11835 eq_dwo_unit (const void *item_lhs, const void *item_rhs)
11836 {
11837   const struct dwo_unit *lhs = (const struct dwo_unit *) item_lhs;
11838   const struct dwo_unit *rhs = (const struct dwo_unit *) item_rhs;
11839
11840   /* The signature is assumed to be unique within the DWO file.
11841      So while object file CU dwo_id's always have the value zero,
11842      that's OK, assuming each object file DWO file has only one CU,
11843      and that's the rule for now.  */
11844   return lhs->signature == rhs->signature;
11845 }
11846
11847 /* Allocate a hash table for DWO CUs,TUs.
11848    There is one of these tables for each of CUs,TUs for each DWO file.  */
11849
11850 static htab_t
11851 allocate_dwo_unit_table (struct objfile *objfile)
11852 {
11853   /* Start out with a pretty small number.
11854      Generally DWO files contain only one CU and maybe some TUs.  */
11855   return htab_create_alloc_ex (3,
11856                                hash_dwo_unit,
11857                                eq_dwo_unit,
11858                                NULL,
11859                                &objfile->objfile_obstack,
11860                                hashtab_obstack_allocate,
11861                                dummy_obstack_deallocate);
11862 }
11863
11864 /* Structure used to pass data to create_dwo_debug_info_hash_table_reader.  */
11865
11866 struct create_dwo_cu_data
11867 {
11868   struct dwo_file *dwo_file;
11869   struct dwo_unit dwo_unit;
11870 };
11871
11872 /* die_reader_func for create_dwo_cu.  */
11873
11874 static void
11875 create_dwo_cu_reader (const struct die_reader_specs *reader,
11876                       const gdb_byte *info_ptr,
11877                       struct die_info *comp_unit_die,
11878                       int has_children,
11879                       void *datap)
11880 {
11881   struct dwarf2_cu *cu = reader->cu;
11882   sect_offset sect_off = cu->per_cu->sect_off;
11883   struct dwarf2_section_info *section = cu->per_cu->section;
11884   struct create_dwo_cu_data *data = (struct create_dwo_cu_data *) datap;
11885   struct dwo_file *dwo_file = data->dwo_file;
11886   struct dwo_unit *dwo_unit = &data->dwo_unit;
11887   struct attribute *attr;
11888
11889   attr = dwarf2_attr (comp_unit_die, DW_AT_GNU_dwo_id, cu);
11890   if (attr == NULL)
11891     {
11892       complaint (_("Dwarf Error: debug entry at offset %s is missing"
11893                    " its dwo_id [in module %s]"),
11894                  sect_offset_str (sect_off), dwo_file->dwo_name);
11895       return;
11896     }
11897
11898   dwo_unit->dwo_file = dwo_file;
11899   dwo_unit->signature = DW_UNSND (attr);
11900   dwo_unit->section = section;
11901   dwo_unit->sect_off = sect_off;
11902   dwo_unit->length = cu->per_cu->length;
11903
11904   if (dwarf_read_debug)
11905     fprintf_unfiltered (gdb_stdlog, "  offset %s, dwo_id %s\n",
11906                         sect_offset_str (sect_off),
11907                         hex_string (dwo_unit->signature));
11908 }
11909
11910 /* Create the dwo_units for the CUs in a DWO_FILE.
11911    Note: This function processes DWO files only, not DWP files.  */
11912
11913 static void
11914 create_cus_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
11915                        struct dwo_file &dwo_file, dwarf2_section_info &section,
11916                        htab_t &cus_htab)
11917 {
11918   struct objfile *objfile = dwarf2_per_objfile->objfile;
11919   const gdb_byte *info_ptr, *end_ptr;
11920
11921   dwarf2_read_section (objfile, &section);
11922   info_ptr = section.buffer;
11923
11924   if (info_ptr == NULL)
11925     return;
11926
11927   if (dwarf_read_debug)
11928     {
11929       fprintf_unfiltered (gdb_stdlog, "Reading %s for %s:\n",
11930                           get_section_name (&section),
11931                           get_section_file_name (&section));
11932     }
11933
11934   end_ptr = info_ptr + section.size;
11935   while (info_ptr < end_ptr)
11936     {
11937       struct dwarf2_per_cu_data per_cu;
11938       struct create_dwo_cu_data create_dwo_cu_data;
11939       struct dwo_unit *dwo_unit;
11940       void **slot;
11941       sect_offset sect_off = (sect_offset) (info_ptr - section.buffer);
11942
11943       memset (&create_dwo_cu_data.dwo_unit, 0,
11944               sizeof (create_dwo_cu_data.dwo_unit));
11945       memset (&per_cu, 0, sizeof (per_cu));
11946       per_cu.dwarf2_per_objfile = dwarf2_per_objfile;
11947       per_cu.is_debug_types = 0;
11948       per_cu.sect_off = sect_offset (info_ptr - section.buffer);
11949       per_cu.section = &section;
11950       create_dwo_cu_data.dwo_file = &dwo_file;
11951
11952       init_cutu_and_read_dies_no_follow (
11953           &per_cu, &dwo_file, create_dwo_cu_reader, &create_dwo_cu_data);
11954       info_ptr += per_cu.length;
11955
11956       // If the unit could not be parsed, skip it.
11957       if (create_dwo_cu_data.dwo_unit.dwo_file == NULL)
11958         continue;
11959
11960       if (cus_htab == NULL)
11961         cus_htab = allocate_dwo_unit_table (objfile);
11962
11963       dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
11964       *dwo_unit = create_dwo_cu_data.dwo_unit;
11965       slot = htab_find_slot (cus_htab, dwo_unit, INSERT);
11966       gdb_assert (slot != NULL);
11967       if (*slot != NULL)
11968         {
11969           const struct dwo_unit *dup_cu = (const struct dwo_unit *)*slot;
11970           sect_offset dup_sect_off = dup_cu->sect_off;
11971
11972           complaint (_("debug cu entry at offset %s is duplicate to"
11973                        " the entry at offset %s, signature %s"),
11974                      sect_offset_str (sect_off), sect_offset_str (dup_sect_off),
11975                      hex_string (dwo_unit->signature));
11976         }
11977       *slot = (void *)dwo_unit;
11978     }
11979 }
11980
11981 /* DWP file .debug_{cu,tu}_index section format:
11982    [ref: http://gcc.gnu.org/wiki/DebugFissionDWP]
11983
11984    DWP Version 1:
11985
11986    Both index sections have the same format, and serve to map a 64-bit
11987    signature to a set of section numbers.  Each section begins with a header,
11988    followed by a hash table of 64-bit signatures, a parallel table of 32-bit
11989    indexes, and a pool of 32-bit section numbers.  The index sections will be
11990    aligned at 8-byte boundaries in the file.
11991
11992    The index section header consists of:
11993
11994     V, 32 bit version number
11995     -, 32 bits unused
11996     N, 32 bit number of compilation units or type units in the index
11997     M, 32 bit number of slots in the hash table
11998
11999    Numbers are recorded using the byte order of the application binary.
12000
12001    The hash table begins at offset 16 in the section, and consists of an array
12002    of M 64-bit slots.  Each slot contains a 64-bit signature (using the byte
12003    order of the application binary).  Unused slots in the hash table are 0.
12004    (We rely on the extreme unlikeliness of a signature being exactly 0.)
12005
12006    The parallel table begins immediately after the hash table
12007    (at offset 16 + 8 * M from the beginning of the section), and consists of an
12008    array of 32-bit indexes (using the byte order of the application binary),
12009    corresponding 1-1 with slots in the hash table.  Each entry in the parallel
12010    table contains a 32-bit index into the pool of section numbers.  For unused
12011    hash table slots, the corresponding entry in the parallel table will be 0.
12012
12013    The pool of section numbers begins immediately following the hash table
12014    (at offset 16 + 12 * M from the beginning of the section).  The pool of
12015    section numbers consists of an array of 32-bit words (using the byte order
12016    of the application binary).  Each item in the array is indexed starting
12017    from 0.  The hash table entry provides the index of the first section
12018    number in the set.  Additional section numbers in the set follow, and the
12019    set is terminated by a 0 entry (section number 0 is not used in ELF).
12020
12021    In each set of section numbers, the .debug_info.dwo or .debug_types.dwo
12022    section must be the first entry in the set, and the .debug_abbrev.dwo must
12023    be the second entry. Other members of the set may follow in any order.
12024
12025    ---
12026
12027    DWP Version 2:
12028
12029    DWP Version 2 combines all the .debug_info, etc. sections into one,
12030    and the entries in the index tables are now offsets into these sections.
12031    CU offsets begin at 0.  TU offsets begin at the size of the .debug_info
12032    section.
12033
12034    Index Section Contents:
12035     Header
12036     Hash Table of Signatures   dwp_hash_table.hash_table
12037     Parallel Table of Indices  dwp_hash_table.unit_table
12038     Table of Section Offsets   dwp_hash_table.v2.{section_ids,offsets}
12039     Table of Section Sizes     dwp_hash_table.v2.sizes
12040
12041    The index section header consists of:
12042
12043     V, 32 bit version number
12044     L, 32 bit number of columns in the table of section offsets
12045     N, 32 bit number of compilation units or type units in the index
12046     M, 32 bit number of slots in the hash table
12047
12048    Numbers are recorded using the byte order of the application binary.
12049
12050    The hash table has the same format as version 1.
12051    The parallel table of indices has the same format as version 1,
12052    except that the entries are origin-1 indices into the table of sections
12053    offsets and the table of section sizes.
12054
12055    The table of offsets begins immediately following the parallel table
12056    (at offset 16 + 12 * M from the beginning of the section).  The table is
12057    a two-dimensional array of 32-bit words (using the byte order of the
12058    application binary), with L columns and N+1 rows, in row-major order.
12059    Each row in the array is indexed starting from 0.  The first row provides
12060    a key to the remaining rows: each column in this row provides an identifier
12061    for a debug section, and the offsets in the same column of subsequent rows
12062    refer to that section.  The section identifiers are:
12063
12064     DW_SECT_INFO         1  .debug_info.dwo
12065     DW_SECT_TYPES        2  .debug_types.dwo
12066     DW_SECT_ABBREV       3  .debug_abbrev.dwo
12067     DW_SECT_LINE         4  .debug_line.dwo
12068     DW_SECT_LOC          5  .debug_loc.dwo
12069     DW_SECT_STR_OFFSETS  6  .debug_str_offsets.dwo
12070     DW_SECT_MACINFO      7  .debug_macinfo.dwo
12071     DW_SECT_MACRO        8  .debug_macro.dwo
12072
12073    The offsets provided by the CU and TU index sections are the base offsets
12074    for the contributions made by each CU or TU to the corresponding section
12075    in the package file.  Each CU and TU header contains an abbrev_offset
12076    field, used to find the abbreviations table for that CU or TU within the
12077    contribution to the .debug_abbrev.dwo section for that CU or TU, and should
12078    be interpreted as relative to the base offset given in the index section.
12079    Likewise, offsets into .debug_line.dwo from DW_AT_stmt_list attributes
12080    should be interpreted as relative to the base offset for .debug_line.dwo,
12081    and offsets into other debug sections obtained from DWARF attributes should
12082    also be interpreted as relative to the corresponding base offset.
12083
12084    The table of sizes begins immediately following the table of offsets.
12085    Like the table of offsets, it is a two-dimensional array of 32-bit words,
12086    with L columns and N rows, in row-major order.  Each row in the array is
12087    indexed starting from 1 (row 0 is shared by the two tables).
12088
12089    ---
12090
12091    Hash table lookup is handled the same in version 1 and 2:
12092
12093    We assume that N and M will not exceed 2^32 - 1.
12094    The size of the hash table, M, must be 2^k such that 2^k > 3*N/2.
12095
12096    Given a 64-bit compilation unit signature or a type signature S, an entry
12097    in the hash table is located as follows:
12098
12099    1) Calculate a primary hash H = S & MASK(k), where MASK(k) is a mask with
12100       the low-order k bits all set to 1.
12101
12102    2) Calculate a secondary hash H' = (((S >> 32) & MASK(k)) | 1).
12103
12104    3) If the hash table entry at index H matches the signature, use that
12105       entry.  If the hash table entry at index H is unused (all zeroes),
12106       terminate the search: the signature is not present in the table.
12107
12108    4) Let H = (H + H') modulo M. Repeat at Step 3.
12109
12110    Because M > N and H' and M are relatively prime, the search is guaranteed
12111    to stop at an unused slot or find the match.  */
12112
12113 /* Create a hash table to map DWO IDs to their CU/TU entry in
12114    .debug_{info,types}.dwo in DWP_FILE.
12115    Returns NULL if there isn't one.
12116    Note: This function processes DWP files only, not DWO files.  */
12117
12118 static struct dwp_hash_table *
12119 create_dwp_hash_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
12120                        struct dwp_file *dwp_file, int is_debug_types)
12121 {
12122   struct objfile *objfile = dwarf2_per_objfile->objfile;
12123   bfd *dbfd = dwp_file->dbfd.get ();
12124   const gdb_byte *index_ptr, *index_end;
12125   struct dwarf2_section_info *index;
12126   uint32_t version, nr_columns, nr_units, nr_slots;
12127   struct dwp_hash_table *htab;
12128
12129   if (is_debug_types)
12130     index = &dwp_file->sections.tu_index;
12131   else
12132     index = &dwp_file->sections.cu_index;
12133
12134   if (dwarf2_section_empty_p (index))
12135     return NULL;
12136   dwarf2_read_section (objfile, index);
12137
12138   index_ptr = index->buffer;
12139   index_end = index_ptr + index->size;
12140
12141   version = read_4_bytes (dbfd, index_ptr);
12142   index_ptr += 4;
12143   if (version == 2)
12144     nr_columns = read_4_bytes (dbfd, index_ptr);
12145   else
12146     nr_columns = 0;
12147   index_ptr += 4;
12148   nr_units = read_4_bytes (dbfd, index_ptr);
12149   index_ptr += 4;
12150   nr_slots = read_4_bytes (dbfd, index_ptr);
12151   index_ptr += 4;
12152
12153   if (version != 1 && version != 2)
12154     {
12155       error (_("Dwarf Error: unsupported DWP file version (%s)"
12156                " [in module %s]"),
12157              pulongest (version), dwp_file->name);
12158     }
12159   if (nr_slots != (nr_slots & -nr_slots))
12160     {
12161       error (_("Dwarf Error: number of slots in DWP hash table (%s)"
12162                " is not power of 2 [in module %s]"),
12163              pulongest (nr_slots), dwp_file->name);
12164     }
12165
12166   htab = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwp_hash_table);
12167   htab->version = version;
12168   htab->nr_columns = nr_columns;
12169   htab->nr_units = nr_units;
12170   htab->nr_slots = nr_slots;
12171   htab->hash_table = index_ptr;
12172   htab->unit_table = htab->hash_table + sizeof (uint64_t) * nr_slots;
12173
12174   /* Exit early if the table is empty.  */
12175   if (nr_slots == 0 || nr_units == 0
12176       || (version == 2 && nr_columns == 0))
12177     {
12178       /* All must be zero.  */
12179       if (nr_slots != 0 || nr_units != 0
12180           || (version == 2 && nr_columns != 0))
12181         {
12182           complaint (_("Empty DWP but nr_slots,nr_units,nr_columns not"
12183                        " all zero [in modules %s]"),
12184                      dwp_file->name);
12185         }
12186       return htab;
12187     }
12188
12189   if (version == 1)
12190     {
12191       htab->section_pool.v1.indices =
12192         htab->unit_table + sizeof (uint32_t) * nr_slots;
12193       /* It's harder to decide whether the section is too small in v1.
12194          V1 is deprecated anyway so we punt.  */
12195     }
12196   else
12197     {
12198       const gdb_byte *ids_ptr = htab->unit_table + sizeof (uint32_t) * nr_slots;
12199       int *ids = htab->section_pool.v2.section_ids;
12200       /* Reverse map for error checking.  */
12201       int ids_seen[DW_SECT_MAX + 1];
12202       int i;
12203
12204       if (nr_columns < 2)
12205         {
12206           error (_("Dwarf Error: bad DWP hash table, too few columns"
12207                    " in section table [in module %s]"),
12208                  dwp_file->name);
12209         }
12210       if (nr_columns > MAX_NR_V2_DWO_SECTIONS)
12211         {
12212           error (_("Dwarf Error: bad DWP hash table, too many columns"
12213                    " in section table [in module %s]"),
12214                  dwp_file->name);
12215         }
12216       memset (ids, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12217       memset (ids_seen, 255, (DW_SECT_MAX + 1) * sizeof (int32_t));
12218       for (i = 0; i < nr_columns; ++i)
12219         {
12220           int id = read_4_bytes (dbfd, ids_ptr + i * sizeof (uint32_t));
12221
12222           if (id < DW_SECT_MIN || id > DW_SECT_MAX)
12223             {
12224               error (_("Dwarf Error: bad DWP hash table, bad section id %d"
12225                        " in section table [in module %s]"),
12226                      id, dwp_file->name);
12227             }
12228           if (ids_seen[id] != -1)
12229             {
12230               error (_("Dwarf Error: bad DWP hash table, duplicate section"
12231                        " id %d in section table [in module %s]"),
12232                      id, dwp_file->name);
12233             }
12234           ids_seen[id] = i;
12235           ids[i] = id;
12236         }
12237       /* Must have exactly one info or types section.  */
12238       if (((ids_seen[DW_SECT_INFO] != -1)
12239            + (ids_seen[DW_SECT_TYPES] != -1))
12240           != 1)
12241         {
12242           error (_("Dwarf Error: bad DWP hash table, missing/duplicate"
12243                    " DWO info/types section [in module %s]"),
12244                  dwp_file->name);
12245         }
12246       /* Must have an abbrev section.  */
12247       if (ids_seen[DW_SECT_ABBREV] == -1)
12248         {
12249           error (_("Dwarf Error: bad DWP hash table, missing DWO abbrev"
12250                    " section [in module %s]"),
12251                  dwp_file->name);
12252         }
12253       htab->section_pool.v2.offsets = ids_ptr + sizeof (uint32_t) * nr_columns;
12254       htab->section_pool.v2.sizes =
12255         htab->section_pool.v2.offsets + (sizeof (uint32_t)
12256                                          * nr_units * nr_columns);
12257       if ((htab->section_pool.v2.sizes + (sizeof (uint32_t)
12258                                           * nr_units * nr_columns))
12259           > index_end)
12260         {
12261           error (_("Dwarf Error: DWP index section is corrupt (too small)"
12262                    " [in module %s]"),
12263                  dwp_file->name);
12264         }
12265     }
12266
12267   return htab;
12268 }
12269
12270 /* Update SECTIONS with the data from SECTP.
12271
12272    This function is like the other "locate" section routines that are
12273    passed to bfd_map_over_sections, but in this context the sections to
12274    read comes from the DWP V1 hash table, not the full ELF section table.
12275
12276    The result is non-zero for success, or zero if an error was found.  */
12277
12278 static int
12279 locate_v1_virtual_dwo_sections (asection *sectp,
12280                                 struct virtual_v1_dwo_sections *sections)
12281 {
12282   const struct dwop_section_names *names = &dwop_section_names;
12283
12284   if (section_is_p (sectp->name, &names->abbrev_dwo))
12285     {
12286       /* There can be only one.  */
12287       if (sections->abbrev.s.section != NULL)
12288         return 0;
12289       sections->abbrev.s.section = sectp;
12290       sections->abbrev.size = bfd_get_section_size (sectp);
12291     }
12292   else if (section_is_p (sectp->name, &names->info_dwo)
12293            || section_is_p (sectp->name, &names->types_dwo))
12294     {
12295       /* There can be only one.  */
12296       if (sections->info_or_types.s.section != NULL)
12297         return 0;
12298       sections->info_or_types.s.section = sectp;
12299       sections->info_or_types.size = bfd_get_section_size (sectp);
12300     }
12301   else if (section_is_p (sectp->name, &names->line_dwo))
12302     {
12303       /* There can be only one.  */
12304       if (sections->line.s.section != NULL)
12305         return 0;
12306       sections->line.s.section = sectp;
12307       sections->line.size = bfd_get_section_size (sectp);
12308     }
12309   else if (section_is_p (sectp->name, &names->loc_dwo))
12310     {
12311       /* There can be only one.  */
12312       if (sections->loc.s.section != NULL)
12313         return 0;
12314       sections->loc.s.section = sectp;
12315       sections->loc.size = bfd_get_section_size (sectp);
12316     }
12317   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12318     {
12319       /* There can be only one.  */
12320       if (sections->macinfo.s.section != NULL)
12321         return 0;
12322       sections->macinfo.s.section = sectp;
12323       sections->macinfo.size = bfd_get_section_size (sectp);
12324     }
12325   else if (section_is_p (sectp->name, &names->macro_dwo))
12326     {
12327       /* There can be only one.  */
12328       if (sections->macro.s.section != NULL)
12329         return 0;
12330       sections->macro.s.section = sectp;
12331       sections->macro.size = bfd_get_section_size (sectp);
12332     }
12333   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12334     {
12335       /* There can be only one.  */
12336       if (sections->str_offsets.s.section != NULL)
12337         return 0;
12338       sections->str_offsets.s.section = sectp;
12339       sections->str_offsets.size = bfd_get_section_size (sectp);
12340     }
12341   else
12342     {
12343       /* No other kind of section is valid.  */
12344       return 0;
12345     }
12346
12347   return 1;
12348 }
12349
12350 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12351    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12352    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12353    This is for DWP version 1 files.  */
12354
12355 static struct dwo_unit *
12356 create_dwo_unit_in_dwp_v1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12357                            struct dwp_file *dwp_file,
12358                            uint32_t unit_index,
12359                            const char *comp_dir,
12360                            ULONGEST signature, int is_debug_types)
12361 {
12362   struct objfile *objfile = dwarf2_per_objfile->objfile;
12363   const struct dwp_hash_table *dwp_htab =
12364     is_debug_types ? dwp_file->tus : dwp_file->cus;
12365   bfd *dbfd = dwp_file->dbfd.get ();
12366   const char *kind = is_debug_types ? "TU" : "CU";
12367   struct dwo_file *dwo_file;
12368   struct dwo_unit *dwo_unit;
12369   struct virtual_v1_dwo_sections sections;
12370   void **dwo_file_slot;
12371   int i;
12372
12373   gdb_assert (dwp_file->version == 1);
12374
12375   if (dwarf_read_debug)
12376     {
12377       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V1 file: %s\n",
12378                           kind,
12379                           pulongest (unit_index), hex_string (signature),
12380                           dwp_file->name);
12381     }
12382
12383   /* Fetch the sections of this DWO unit.
12384      Put a limit on the number of sections we look for so that bad data
12385      doesn't cause us to loop forever.  */
12386
12387 #define MAX_NR_V1_DWO_SECTIONS \
12388   (1 /* .debug_info or .debug_types */ \
12389    + 1 /* .debug_abbrev */ \
12390    + 1 /* .debug_line */ \
12391    + 1 /* .debug_loc */ \
12392    + 1 /* .debug_str_offsets */ \
12393    + 1 /* .debug_macro or .debug_macinfo */ \
12394    + 1 /* trailing zero */)
12395
12396   memset (&sections, 0, sizeof (sections));
12397
12398   for (i = 0; i < MAX_NR_V1_DWO_SECTIONS; ++i)
12399     {
12400       asection *sectp;
12401       uint32_t section_nr =
12402         read_4_bytes (dbfd,
12403                       dwp_htab->section_pool.v1.indices
12404                       + (unit_index + i) * sizeof (uint32_t));
12405
12406       if (section_nr == 0)
12407         break;
12408       if (section_nr >= dwp_file->num_sections)
12409         {
12410           error (_("Dwarf Error: bad DWP hash table, section number too large"
12411                    " [in module %s]"),
12412                  dwp_file->name);
12413         }
12414
12415       sectp = dwp_file->elf_sections[section_nr];
12416       if (! locate_v1_virtual_dwo_sections (sectp, &sections))
12417         {
12418           error (_("Dwarf Error: bad DWP hash table, invalid section found"
12419                    " [in module %s]"),
12420                  dwp_file->name);
12421         }
12422     }
12423
12424   if (i < 2
12425       || dwarf2_section_empty_p (&sections.info_or_types)
12426       || dwarf2_section_empty_p (&sections.abbrev))
12427     {
12428       error (_("Dwarf Error: bad DWP hash table, missing DWO sections"
12429                " [in module %s]"),
12430              dwp_file->name);
12431     }
12432   if (i == MAX_NR_V1_DWO_SECTIONS)
12433     {
12434       error (_("Dwarf Error: bad DWP hash table, too many DWO sections"
12435                " [in module %s]"),
12436              dwp_file->name);
12437     }
12438
12439   /* It's easier for the rest of the code if we fake a struct dwo_file and
12440      have dwo_unit "live" in that.  At least for now.
12441
12442      The DWP file can be made up of a random collection of CUs and TUs.
12443      However, for each CU + set of TUs that came from the same original DWO
12444      file, we can combine them back into a virtual DWO file to save space
12445      (fewer struct dwo_file objects to allocate).  Remember that for really
12446      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12447
12448   std::string virtual_dwo_name =
12449     string_printf ("virtual-dwo/%d-%d-%d-%d",
12450                    get_section_id (&sections.abbrev),
12451                    get_section_id (&sections.line),
12452                    get_section_id (&sections.loc),
12453                    get_section_id (&sections.str_offsets));
12454   /* Can we use an existing virtual DWO file?  */
12455   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12456                                         virtual_dwo_name.c_str (),
12457                                         comp_dir);
12458   /* Create one if necessary.  */
12459   if (*dwo_file_slot == NULL)
12460     {
12461       if (dwarf_read_debug)
12462         {
12463           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12464                               virtual_dwo_name.c_str ());
12465         }
12466       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12467       dwo_file->dwo_name
12468         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12469                                         virtual_dwo_name.c_str (),
12470                                         virtual_dwo_name.size ());
12471       dwo_file->comp_dir = comp_dir;
12472       dwo_file->sections.abbrev = sections.abbrev;
12473       dwo_file->sections.line = sections.line;
12474       dwo_file->sections.loc = sections.loc;
12475       dwo_file->sections.macinfo = sections.macinfo;
12476       dwo_file->sections.macro = sections.macro;
12477       dwo_file->sections.str_offsets = sections.str_offsets;
12478       /* The "str" section is global to the entire DWP file.  */
12479       dwo_file->sections.str = dwp_file->sections.str;
12480       /* The info or types section is assigned below to dwo_unit,
12481          there's no need to record it in dwo_file.
12482          Also, we can't simply record type sections in dwo_file because
12483          we record a pointer into the vector in dwo_unit.  As we collect more
12484          types we'll grow the vector and eventually have to reallocate space
12485          for it, invalidating all copies of pointers into the previous
12486          contents.  */
12487       *dwo_file_slot = dwo_file;
12488     }
12489   else
12490     {
12491       if (dwarf_read_debug)
12492         {
12493           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12494                               virtual_dwo_name.c_str ());
12495         }
12496       dwo_file = (struct dwo_file *) *dwo_file_slot;
12497     }
12498
12499   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12500   dwo_unit->dwo_file = dwo_file;
12501   dwo_unit->signature = signature;
12502   dwo_unit->section =
12503     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12504   *dwo_unit->section = sections.info_or_types;
12505   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12506
12507   return dwo_unit;
12508 }
12509
12510 /* Subroutine of create_dwo_unit_in_dwp_v2 to simplify it.
12511    Given a pointer to the containing section SECTION, and OFFSET,SIZE of the
12512    piece within that section used by a TU/CU, return a virtual section
12513    of just that piece.  */
12514
12515 static struct dwarf2_section_info
12516 create_dwp_v2_section (struct dwarf2_per_objfile *dwarf2_per_objfile,
12517                        struct dwarf2_section_info *section,
12518                        bfd_size_type offset, bfd_size_type size)
12519 {
12520   struct dwarf2_section_info result;
12521   asection *sectp;
12522
12523   gdb_assert (section != NULL);
12524   gdb_assert (!section->is_virtual);
12525
12526   memset (&result, 0, sizeof (result));
12527   result.s.containing_section = section;
12528   result.is_virtual = 1;
12529
12530   if (size == 0)
12531     return result;
12532
12533   sectp = get_section_bfd_section (section);
12534
12535   /* Flag an error if the piece denoted by OFFSET,SIZE is outside the
12536      bounds of the real section.  This is a pretty-rare event, so just
12537      flag an error (easier) instead of a warning and trying to cope.  */
12538   if (sectp == NULL
12539       || offset + size > bfd_get_section_size (sectp))
12540     {
12541       error (_("Dwarf Error: Bad DWP V2 section info, doesn't fit"
12542                " in section %s [in module %s]"),
12543              sectp ? bfd_section_name (abfd, sectp) : "<unknown>",
12544              objfile_name (dwarf2_per_objfile->objfile));
12545     }
12546
12547   result.virtual_offset = offset;
12548   result.size = size;
12549   return result;
12550 }
12551
12552 /* Create a dwo_unit object for the DWO unit with signature SIGNATURE.
12553    UNIT_INDEX is the index of the DWO unit in the DWP hash table.
12554    COMP_DIR is the DW_AT_comp_dir attribute of the referencing CU.
12555    This is for DWP version 2 files.  */
12556
12557 static struct dwo_unit *
12558 create_dwo_unit_in_dwp_v2 (struct dwarf2_per_objfile *dwarf2_per_objfile,
12559                            struct dwp_file *dwp_file,
12560                            uint32_t unit_index,
12561                            const char *comp_dir,
12562                            ULONGEST signature, int is_debug_types)
12563 {
12564   struct objfile *objfile = dwarf2_per_objfile->objfile;
12565   const struct dwp_hash_table *dwp_htab =
12566     is_debug_types ? dwp_file->tus : dwp_file->cus;
12567   bfd *dbfd = dwp_file->dbfd.get ();
12568   const char *kind = is_debug_types ? "TU" : "CU";
12569   struct dwo_file *dwo_file;
12570   struct dwo_unit *dwo_unit;
12571   struct virtual_v2_dwo_sections sections;
12572   void **dwo_file_slot;
12573   int i;
12574
12575   gdb_assert (dwp_file->version == 2);
12576
12577   if (dwarf_read_debug)
12578     {
12579       fprintf_unfiltered (gdb_stdlog, "Reading %s %s/%s in DWP V2 file: %s\n",
12580                           kind,
12581                           pulongest (unit_index), hex_string (signature),
12582                           dwp_file->name);
12583     }
12584
12585   /* Fetch the section offsets of this DWO unit.  */
12586
12587   memset (&sections, 0, sizeof (sections));
12588
12589   for (i = 0; i < dwp_htab->nr_columns; ++i)
12590     {
12591       uint32_t offset = read_4_bytes (dbfd,
12592                                       dwp_htab->section_pool.v2.offsets
12593                                       + (((unit_index - 1) * dwp_htab->nr_columns
12594                                           + i)
12595                                          * sizeof (uint32_t)));
12596       uint32_t size = read_4_bytes (dbfd,
12597                                     dwp_htab->section_pool.v2.sizes
12598                                     + (((unit_index - 1) * dwp_htab->nr_columns
12599                                         + i)
12600                                        * sizeof (uint32_t)));
12601
12602       switch (dwp_htab->section_pool.v2.section_ids[i])
12603         {
12604         case DW_SECT_INFO:
12605         case DW_SECT_TYPES:
12606           sections.info_or_types_offset = offset;
12607           sections.info_or_types_size = size;
12608           break;
12609         case DW_SECT_ABBREV:
12610           sections.abbrev_offset = offset;
12611           sections.abbrev_size = size;
12612           break;
12613         case DW_SECT_LINE:
12614           sections.line_offset = offset;
12615           sections.line_size = size;
12616           break;
12617         case DW_SECT_LOC:
12618           sections.loc_offset = offset;
12619           sections.loc_size = size;
12620           break;
12621         case DW_SECT_STR_OFFSETS:
12622           sections.str_offsets_offset = offset;
12623           sections.str_offsets_size = size;
12624           break;
12625         case DW_SECT_MACINFO:
12626           sections.macinfo_offset = offset;
12627           sections.macinfo_size = size;
12628           break;
12629         case DW_SECT_MACRO:
12630           sections.macro_offset = offset;
12631           sections.macro_size = size;
12632           break;
12633         }
12634     }
12635
12636   /* It's easier for the rest of the code if we fake a struct dwo_file and
12637      have dwo_unit "live" in that.  At least for now.
12638
12639      The DWP file can be made up of a random collection of CUs and TUs.
12640      However, for each CU + set of TUs that came from the same original DWO
12641      file, we can combine them back into a virtual DWO file to save space
12642      (fewer struct dwo_file objects to allocate).  Remember that for really
12643      large apps there can be on the order of 8K CUs and 200K TUs, or more.  */
12644
12645   std::string virtual_dwo_name =
12646     string_printf ("virtual-dwo/%ld-%ld-%ld-%ld",
12647                    (long) (sections.abbrev_size ? sections.abbrev_offset : 0),
12648                    (long) (sections.line_size ? sections.line_offset : 0),
12649                    (long) (sections.loc_size ? sections.loc_offset : 0),
12650                    (long) (sections.str_offsets_size
12651                            ? sections.str_offsets_offset : 0));
12652   /* Can we use an existing virtual DWO file?  */
12653   dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
12654                                         virtual_dwo_name.c_str (),
12655                                         comp_dir);
12656   /* Create one if necessary.  */
12657   if (*dwo_file_slot == NULL)
12658     {
12659       if (dwarf_read_debug)
12660         {
12661           fprintf_unfiltered (gdb_stdlog, "Creating virtual DWO: %s\n",
12662                               virtual_dwo_name.c_str ());
12663         }
12664       dwo_file = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_file);
12665       dwo_file->dwo_name
12666         = (const char *) obstack_copy0 (&objfile->objfile_obstack,
12667                                         virtual_dwo_name.c_str (),
12668                                         virtual_dwo_name.size ());
12669       dwo_file->comp_dir = comp_dir;
12670       dwo_file->sections.abbrev =
12671         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.abbrev,
12672                                sections.abbrev_offset, sections.abbrev_size);
12673       dwo_file->sections.line =
12674         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.line,
12675                                sections.line_offset, sections.line_size);
12676       dwo_file->sections.loc =
12677         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.loc,
12678                                sections.loc_offset, sections.loc_size);
12679       dwo_file->sections.macinfo =
12680         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macinfo,
12681                                sections.macinfo_offset, sections.macinfo_size);
12682       dwo_file->sections.macro =
12683         create_dwp_v2_section (dwarf2_per_objfile, &dwp_file->sections.macro,
12684                                sections.macro_offset, sections.macro_size);
12685       dwo_file->sections.str_offsets =
12686         create_dwp_v2_section (dwarf2_per_objfile,
12687                                &dwp_file->sections.str_offsets,
12688                                sections.str_offsets_offset,
12689                                sections.str_offsets_size);
12690       /* The "str" section is global to the entire DWP file.  */
12691       dwo_file->sections.str = dwp_file->sections.str;
12692       /* The info or types section is assigned below to dwo_unit,
12693          there's no need to record it in dwo_file.
12694          Also, we can't simply record type sections in dwo_file because
12695          we record a pointer into the vector in dwo_unit.  As we collect more
12696          types we'll grow the vector and eventually have to reallocate space
12697          for it, invalidating all copies of pointers into the previous
12698          contents.  */
12699       *dwo_file_slot = dwo_file;
12700     }
12701   else
12702     {
12703       if (dwarf_read_debug)
12704         {
12705           fprintf_unfiltered (gdb_stdlog, "Using existing virtual DWO: %s\n",
12706                               virtual_dwo_name.c_str ());
12707         }
12708       dwo_file = (struct dwo_file *) *dwo_file_slot;
12709     }
12710
12711   dwo_unit = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct dwo_unit);
12712   dwo_unit->dwo_file = dwo_file;
12713   dwo_unit->signature = signature;
12714   dwo_unit->section =
12715     XOBNEW (&objfile->objfile_obstack, struct dwarf2_section_info);
12716   *dwo_unit->section = create_dwp_v2_section (dwarf2_per_objfile,
12717                                               is_debug_types
12718                                               ? &dwp_file->sections.types
12719                                               : &dwp_file->sections.info,
12720                                               sections.info_or_types_offset,
12721                                               sections.info_or_types_size);
12722   /* dwo_unit->{offset,length,type_offset_in_tu} are set later.  */
12723
12724   return dwo_unit;
12725 }
12726
12727 /* Lookup the DWO unit with SIGNATURE in DWP_FILE.
12728    Returns NULL if the signature isn't found.  */
12729
12730 static struct dwo_unit *
12731 lookup_dwo_unit_in_dwp (struct dwarf2_per_objfile *dwarf2_per_objfile,
12732                         struct dwp_file *dwp_file, const char *comp_dir,
12733                         ULONGEST signature, int is_debug_types)
12734 {
12735   const struct dwp_hash_table *dwp_htab =
12736     is_debug_types ? dwp_file->tus : dwp_file->cus;
12737   bfd *dbfd = dwp_file->dbfd.get ();
12738   uint32_t mask = dwp_htab->nr_slots - 1;
12739   uint32_t hash = signature & mask;
12740   uint32_t hash2 = ((signature >> 32) & mask) | 1;
12741   unsigned int i;
12742   void **slot;
12743   struct dwo_unit find_dwo_cu;
12744
12745   memset (&find_dwo_cu, 0, sizeof (find_dwo_cu));
12746   find_dwo_cu.signature = signature;
12747   slot = htab_find_slot (is_debug_types
12748                          ? dwp_file->loaded_tus
12749                          : dwp_file->loaded_cus,
12750                          &find_dwo_cu, INSERT);
12751
12752   if (*slot != NULL)
12753     return (struct dwo_unit *) *slot;
12754
12755   /* Use a for loop so that we don't loop forever on bad debug info.  */
12756   for (i = 0; i < dwp_htab->nr_slots; ++i)
12757     {
12758       ULONGEST signature_in_table;
12759
12760       signature_in_table =
12761         read_8_bytes (dbfd, dwp_htab->hash_table + hash * sizeof (uint64_t));
12762       if (signature_in_table == signature)
12763         {
12764           uint32_t unit_index =
12765             read_4_bytes (dbfd,
12766                           dwp_htab->unit_table + hash * sizeof (uint32_t));
12767
12768           if (dwp_file->version == 1)
12769             {
12770               *slot = create_dwo_unit_in_dwp_v1 (dwarf2_per_objfile,
12771                                                  dwp_file, unit_index,
12772                                                  comp_dir, signature,
12773                                                  is_debug_types);
12774             }
12775           else
12776             {
12777               *slot = create_dwo_unit_in_dwp_v2 (dwarf2_per_objfile,
12778                                                  dwp_file, unit_index,
12779                                                  comp_dir, signature,
12780                                                  is_debug_types);
12781             }
12782           return (struct dwo_unit *) *slot;
12783         }
12784       if (signature_in_table == 0)
12785         return NULL;
12786       hash = (hash + hash2) & mask;
12787     }
12788
12789   error (_("Dwarf Error: bad DWP hash table, lookup didn't terminate"
12790            " [in module %s]"),
12791          dwp_file->name);
12792 }
12793
12794 /* Subroutine of open_dwo_file,open_dwp_file to simplify them.
12795    Open the file specified by FILE_NAME and hand it off to BFD for
12796    preliminary analysis.  Return a newly initialized bfd *, which
12797    includes a canonicalized copy of FILE_NAME.
12798    If IS_DWP is TRUE, we're opening a DWP file, otherwise a DWO file.
12799    SEARCH_CWD is true if the current directory is to be searched.
12800    It will be searched before debug-file-directory.
12801    If successful, the file is added to the bfd include table of the
12802    objfile's bfd (see gdb_bfd_record_inclusion).
12803    If unable to find/open the file, return NULL.
12804    NOTE: This function is derived from symfile_bfd_open.  */
12805
12806 static gdb_bfd_ref_ptr
12807 try_open_dwop_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12808                     const char *file_name, int is_dwp, int search_cwd)
12809 {
12810   int desc;
12811   /* Blech.  OPF_TRY_CWD_FIRST also disables searching the path list if
12812      FILE_NAME contains a '/'.  So we can't use it.  Instead prepend "."
12813      to debug_file_directory.  */
12814   const char *search_path;
12815   static const char dirname_separator_string[] = { DIRNAME_SEPARATOR, '\0' };
12816
12817   gdb::unique_xmalloc_ptr<char> search_path_holder;
12818   if (search_cwd)
12819     {
12820       if (*debug_file_directory != '\0')
12821         {
12822           search_path_holder.reset (concat (".", dirname_separator_string,
12823                                             debug_file_directory,
12824                                             (char *) NULL));
12825           search_path = search_path_holder.get ();
12826         }
12827       else
12828         search_path = ".";
12829     }
12830   else
12831     search_path = debug_file_directory;
12832
12833   openp_flags flags = OPF_RETURN_REALPATH;
12834   if (is_dwp)
12835     flags |= OPF_SEARCH_IN_PATH;
12836
12837   gdb::unique_xmalloc_ptr<char> absolute_name;
12838   desc = openp (search_path, flags, file_name,
12839                 O_RDONLY | O_BINARY, &absolute_name);
12840   if (desc < 0)
12841     return NULL;
12842
12843   gdb_bfd_ref_ptr sym_bfd (gdb_bfd_open (absolute_name.get (),
12844                                          gnutarget, desc));
12845   if (sym_bfd == NULL)
12846     return NULL;
12847   bfd_set_cacheable (sym_bfd.get (), 1);
12848
12849   if (!bfd_check_format (sym_bfd.get (), bfd_object))
12850     return NULL;
12851
12852   /* Success.  Record the bfd as having been included by the objfile's bfd.
12853      This is important because things like demangled_names_hash lives in the
12854      objfile's per_bfd space and may have references to things like symbol
12855      names that live in the DWO/DWP file's per_bfd space.  PR 16426.  */
12856   gdb_bfd_record_inclusion (dwarf2_per_objfile->objfile->obfd, sym_bfd.get ());
12857
12858   return sym_bfd;
12859 }
12860
12861 /* Try to open DWO file FILE_NAME.
12862    COMP_DIR is the DW_AT_comp_dir attribute.
12863    The result is the bfd handle of the file.
12864    If there is a problem finding or opening the file, return NULL.
12865    Upon success, the canonicalized path of the file is stored in the bfd,
12866    same as symfile_bfd_open.  */
12867
12868 static gdb_bfd_ref_ptr
12869 open_dwo_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
12870                const char *file_name, const char *comp_dir)
12871 {
12872   if (IS_ABSOLUTE_PATH (file_name))
12873     return try_open_dwop_file (dwarf2_per_objfile, file_name,
12874                                0 /*is_dwp*/, 0 /*search_cwd*/);
12875
12876   /* Before trying the search path, try DWO_NAME in COMP_DIR.  */
12877
12878   if (comp_dir != NULL)
12879     {
12880       char *path_to_try = concat (comp_dir, SLASH_STRING,
12881                                   file_name, (char *) NULL);
12882
12883       /* NOTE: If comp_dir is a relative path, this will also try the
12884          search path, which seems useful.  */
12885       gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile,
12886                                                 path_to_try,
12887                                                 0 /*is_dwp*/,
12888                                                 1 /*search_cwd*/));
12889       xfree (path_to_try);
12890       if (abfd != NULL)
12891         return abfd;
12892     }
12893
12894   /* That didn't work, try debug-file-directory, which, despite its name,
12895      is a list of paths.  */
12896
12897   if (*debug_file_directory == '\0')
12898     return NULL;
12899
12900   return try_open_dwop_file (dwarf2_per_objfile, file_name,
12901                              0 /*is_dwp*/, 1 /*search_cwd*/);
12902 }
12903
12904 /* This function is mapped across the sections and remembers the offset and
12905    size of each of the DWO debugging sections we are interested in.  */
12906
12907 static void
12908 dwarf2_locate_dwo_sections (bfd *abfd, asection *sectp, void *dwo_sections_ptr)
12909 {
12910   struct dwo_sections *dwo_sections = (struct dwo_sections *) dwo_sections_ptr;
12911   const struct dwop_section_names *names = &dwop_section_names;
12912
12913   if (section_is_p (sectp->name, &names->abbrev_dwo))
12914     {
12915       dwo_sections->abbrev.s.section = sectp;
12916       dwo_sections->abbrev.size = bfd_get_section_size (sectp);
12917     }
12918   else if (section_is_p (sectp->name, &names->info_dwo))
12919     {
12920       dwo_sections->info.s.section = sectp;
12921       dwo_sections->info.size = bfd_get_section_size (sectp);
12922     }
12923   else if (section_is_p (sectp->name, &names->line_dwo))
12924     {
12925       dwo_sections->line.s.section = sectp;
12926       dwo_sections->line.size = bfd_get_section_size (sectp);
12927     }
12928   else if (section_is_p (sectp->name, &names->loc_dwo))
12929     {
12930       dwo_sections->loc.s.section = sectp;
12931       dwo_sections->loc.size = bfd_get_section_size (sectp);
12932     }
12933   else if (section_is_p (sectp->name, &names->macinfo_dwo))
12934     {
12935       dwo_sections->macinfo.s.section = sectp;
12936       dwo_sections->macinfo.size = bfd_get_section_size (sectp);
12937     }
12938   else if (section_is_p (sectp->name, &names->macro_dwo))
12939     {
12940       dwo_sections->macro.s.section = sectp;
12941       dwo_sections->macro.size = bfd_get_section_size (sectp);
12942     }
12943   else if (section_is_p (sectp->name, &names->str_dwo))
12944     {
12945       dwo_sections->str.s.section = sectp;
12946       dwo_sections->str.size = bfd_get_section_size (sectp);
12947     }
12948   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
12949     {
12950       dwo_sections->str_offsets.s.section = sectp;
12951       dwo_sections->str_offsets.size = bfd_get_section_size (sectp);
12952     }
12953   else if (section_is_p (sectp->name, &names->types_dwo))
12954     {
12955       struct dwarf2_section_info type_section;
12956
12957       memset (&type_section, 0, sizeof (type_section));
12958       type_section.s.section = sectp;
12959       type_section.size = bfd_get_section_size (sectp);
12960       VEC_safe_push (dwarf2_section_info_def, dwo_sections->types,
12961                      &type_section);
12962     }
12963 }
12964
12965 /* Initialize the use of the DWO file specified by DWO_NAME and referenced
12966    by PER_CU.  This is for the non-DWP case.
12967    The result is NULL if DWO_NAME can't be found.  */
12968
12969 static struct dwo_file *
12970 open_and_init_dwo_file (struct dwarf2_per_cu_data *per_cu,
12971                         const char *dwo_name, const char *comp_dir)
12972 {
12973   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
12974   struct objfile *objfile = dwarf2_per_objfile->objfile;
12975
12976   gdb_bfd_ref_ptr dbfd (open_dwo_file (dwarf2_per_objfile, dwo_name, comp_dir));
12977   if (dbfd == NULL)
12978     {
12979       if (dwarf_read_debug)
12980         fprintf_unfiltered (gdb_stdlog, "DWO file not found: %s\n", dwo_name);
12981       return NULL;
12982     }
12983
12984   /* We use a unique pointer here, despite the obstack allocation,
12985      because a dwo_file needs some cleanup if it is abandoned.  */
12986   dwo_file_up dwo_file (OBSTACK_ZALLOC (&objfile->objfile_obstack,
12987                                         struct dwo_file));
12988   dwo_file->dwo_name = dwo_name;
12989   dwo_file->comp_dir = comp_dir;
12990   dwo_file->dbfd = dbfd.release ();
12991
12992   bfd_map_over_sections (dwo_file->dbfd, dwarf2_locate_dwo_sections,
12993                          &dwo_file->sections);
12994
12995   create_cus_hash_table (dwarf2_per_objfile, *dwo_file, dwo_file->sections.info,
12996                          dwo_file->cus);
12997
12998   create_debug_types_hash_table (dwarf2_per_objfile, dwo_file.get (),
12999                                  dwo_file->sections.types, dwo_file->tus);
13000
13001   if (dwarf_read_debug)
13002     fprintf_unfiltered (gdb_stdlog, "DWO file found: %s\n", dwo_name);
13003
13004   return dwo_file.release ();
13005 }
13006
13007 /* This function is mapped across the sections and remembers the offset and
13008    size of each of the DWP debugging sections common to version 1 and 2 that
13009    we are interested in.  */
13010
13011 static void
13012 dwarf2_locate_common_dwp_sections (bfd *abfd, asection *sectp,
13013                                    void *dwp_file_ptr)
13014 {
13015   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13016   const struct dwop_section_names *names = &dwop_section_names;
13017   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13018
13019   /* Record the ELF section number for later lookup: this is what the
13020      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13021   gdb_assert (elf_section_nr < dwp_file->num_sections);
13022   dwp_file->elf_sections[elf_section_nr] = sectp;
13023
13024   /* Look for specific sections that we need.  */
13025   if (section_is_p (sectp->name, &names->str_dwo))
13026     {
13027       dwp_file->sections.str.s.section = sectp;
13028       dwp_file->sections.str.size = bfd_get_section_size (sectp);
13029     }
13030   else if (section_is_p (sectp->name, &names->cu_index))
13031     {
13032       dwp_file->sections.cu_index.s.section = sectp;
13033       dwp_file->sections.cu_index.size = bfd_get_section_size (sectp);
13034     }
13035   else if (section_is_p (sectp->name, &names->tu_index))
13036     {
13037       dwp_file->sections.tu_index.s.section = sectp;
13038       dwp_file->sections.tu_index.size = bfd_get_section_size (sectp);
13039     }
13040 }
13041
13042 /* This function is mapped across the sections and remembers the offset and
13043    size of each of the DWP version 2 debugging sections that we are interested
13044    in.  This is split into a separate function because we don't know if we
13045    have version 1 or 2 until we parse the cu_index/tu_index sections.  */
13046
13047 static void
13048 dwarf2_locate_v2_dwp_sections (bfd *abfd, asection *sectp, void *dwp_file_ptr)
13049 {
13050   struct dwp_file *dwp_file = (struct dwp_file *) dwp_file_ptr;
13051   const struct dwop_section_names *names = &dwop_section_names;
13052   unsigned int elf_section_nr = elf_section_data (sectp)->this_idx;
13053
13054   /* Record the ELF section number for later lookup: this is what the
13055      .debug_cu_index,.debug_tu_index tables use in DWP V1.  */
13056   gdb_assert (elf_section_nr < dwp_file->num_sections);
13057   dwp_file->elf_sections[elf_section_nr] = sectp;
13058
13059   /* Look for specific sections that we need.  */
13060   if (section_is_p (sectp->name, &names->abbrev_dwo))
13061     {
13062       dwp_file->sections.abbrev.s.section = sectp;
13063       dwp_file->sections.abbrev.size = bfd_get_section_size (sectp);
13064     }
13065   else if (section_is_p (sectp->name, &names->info_dwo))
13066     {
13067       dwp_file->sections.info.s.section = sectp;
13068       dwp_file->sections.info.size = bfd_get_section_size (sectp);
13069     }
13070   else if (section_is_p (sectp->name, &names->line_dwo))
13071     {
13072       dwp_file->sections.line.s.section = sectp;
13073       dwp_file->sections.line.size = bfd_get_section_size (sectp);
13074     }
13075   else if (section_is_p (sectp->name, &names->loc_dwo))
13076     {
13077       dwp_file->sections.loc.s.section = sectp;
13078       dwp_file->sections.loc.size = bfd_get_section_size (sectp);
13079     }
13080   else if (section_is_p (sectp->name, &names->macinfo_dwo))
13081     {
13082       dwp_file->sections.macinfo.s.section = sectp;
13083       dwp_file->sections.macinfo.size = bfd_get_section_size (sectp);
13084     }
13085   else if (section_is_p (sectp->name, &names->macro_dwo))
13086     {
13087       dwp_file->sections.macro.s.section = sectp;
13088       dwp_file->sections.macro.size = bfd_get_section_size (sectp);
13089     }
13090   else if (section_is_p (sectp->name, &names->str_offsets_dwo))
13091     {
13092       dwp_file->sections.str_offsets.s.section = sectp;
13093       dwp_file->sections.str_offsets.size = bfd_get_section_size (sectp);
13094     }
13095   else if (section_is_p (sectp->name, &names->types_dwo))
13096     {
13097       dwp_file->sections.types.s.section = sectp;
13098       dwp_file->sections.types.size = bfd_get_section_size (sectp);
13099     }
13100 }
13101
13102 /* Hash function for dwp_file loaded CUs/TUs.  */
13103
13104 static hashval_t
13105 hash_dwp_loaded_cutus (const void *item)
13106 {
13107   const struct dwo_unit *dwo_unit = (const struct dwo_unit *) item;
13108
13109   /* This drops the top 32 bits of the signature, but is ok for a hash.  */
13110   return dwo_unit->signature;
13111 }
13112
13113 /* Equality function for dwp_file loaded CUs/TUs.  */
13114
13115 static int
13116 eq_dwp_loaded_cutus (const void *a, const void *b)
13117 {
13118   const struct dwo_unit *dua = (const struct dwo_unit *) a;
13119   const struct dwo_unit *dub = (const struct dwo_unit *) b;
13120
13121   return dua->signature == dub->signature;
13122 }
13123
13124 /* Allocate a hash table for dwp_file loaded CUs/TUs.  */
13125
13126 static htab_t
13127 allocate_dwp_loaded_cutus_table (struct objfile *objfile)
13128 {
13129   return htab_create_alloc_ex (3,
13130                                hash_dwp_loaded_cutus,
13131                                eq_dwp_loaded_cutus,
13132                                NULL,
13133                                &objfile->objfile_obstack,
13134                                hashtab_obstack_allocate,
13135                                dummy_obstack_deallocate);
13136 }
13137
13138 /* Try to open DWP file FILE_NAME.
13139    The result is the bfd handle of the file.
13140    If there is a problem finding or opening the file, return NULL.
13141    Upon success, the canonicalized path of the file is stored in the bfd,
13142    same as symfile_bfd_open.  */
13143
13144 static gdb_bfd_ref_ptr
13145 open_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile,
13146                const char *file_name)
13147 {
13148   gdb_bfd_ref_ptr abfd (try_open_dwop_file (dwarf2_per_objfile, file_name,
13149                                             1 /*is_dwp*/,
13150                                             1 /*search_cwd*/));
13151   if (abfd != NULL)
13152     return abfd;
13153
13154   /* Work around upstream bug 15652.
13155      http://sourceware.org/bugzilla/show_bug.cgi?id=15652
13156      [Whether that's a "bug" is debatable, but it is getting in our way.]
13157      We have no real idea where the dwp file is, because gdb's realpath-ing
13158      of the executable's path may have discarded the needed info.
13159      [IWBN if the dwp file name was recorded in the executable, akin to
13160      .gnu_debuglink, but that doesn't exist yet.]
13161      Strip the directory from FILE_NAME and search again.  */
13162   if (*debug_file_directory != '\0')
13163     {
13164       /* Don't implicitly search the current directory here.
13165          If the user wants to search "." to handle this case,
13166          it must be added to debug-file-directory.  */
13167       return try_open_dwop_file (dwarf2_per_objfile,
13168                                  lbasename (file_name), 1 /*is_dwp*/,
13169                                  0 /*search_cwd*/);
13170     }
13171
13172   return NULL;
13173 }
13174
13175 /* Initialize the use of the DWP file for the current objfile.
13176    By convention the name of the DWP file is ${objfile}.dwp.
13177    The result is NULL if it can't be found.  */
13178
13179 static std::unique_ptr<struct dwp_file>
13180 open_and_init_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13181 {
13182   struct objfile *objfile = dwarf2_per_objfile->objfile;
13183
13184   /* Try to find first .dwp for the binary file before any symbolic links
13185      resolving.  */
13186
13187   /* If the objfile is a debug file, find the name of the real binary
13188      file and get the name of dwp file from there.  */
13189   std::string dwp_name;
13190   if (objfile->separate_debug_objfile_backlink != NULL)
13191     {
13192       struct objfile *backlink = objfile->separate_debug_objfile_backlink;
13193       const char *backlink_basename = lbasename (backlink->original_name);
13194
13195       dwp_name = ldirname (objfile->original_name) + SLASH_STRING + backlink_basename;
13196     }
13197   else
13198     dwp_name = objfile->original_name;
13199
13200   dwp_name += ".dwp";
13201
13202   gdb_bfd_ref_ptr dbfd (open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ()));
13203   if (dbfd == NULL
13204       && strcmp (objfile->original_name, objfile_name (objfile)) != 0)
13205     {
13206       /* Try to find .dwp for the binary file after gdb_realpath resolving.  */
13207       dwp_name = objfile_name (objfile);
13208       dwp_name += ".dwp";
13209       dbfd = open_dwp_file (dwarf2_per_objfile, dwp_name.c_str ());
13210     }
13211
13212   if (dbfd == NULL)
13213     {
13214       if (dwarf_read_debug)
13215         fprintf_unfiltered (gdb_stdlog, "DWP file not found: %s\n", dwp_name.c_str ());
13216       return std::unique_ptr<dwp_file> ();
13217     }
13218
13219   const char *name = bfd_get_filename (dbfd.get ());
13220   std::unique_ptr<struct dwp_file> dwp_file
13221     (new struct dwp_file (name, std::move (dbfd)));
13222
13223   /* +1: section 0 is unused */
13224   dwp_file->num_sections = bfd_count_sections (dwp_file->dbfd) + 1;
13225   dwp_file->elf_sections =
13226     OBSTACK_CALLOC (&objfile->objfile_obstack,
13227                     dwp_file->num_sections, asection *);
13228
13229   bfd_map_over_sections (dwp_file->dbfd.get (),
13230                          dwarf2_locate_common_dwp_sections,
13231                          dwp_file.get ());
13232
13233   dwp_file->cus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13234                                          0);
13235
13236   dwp_file->tus = create_dwp_hash_table (dwarf2_per_objfile, dwp_file.get (),
13237                                          1);
13238
13239   /* The DWP file version is stored in the hash table.  Oh well.  */
13240   if (dwp_file->cus && dwp_file->tus
13241       && dwp_file->cus->version != dwp_file->tus->version)
13242     {
13243       /* Technically speaking, we should try to limp along, but this is
13244          pretty bizarre.  We use pulongest here because that's the established
13245          portability solution (e.g, we cannot use %u for uint32_t).  */
13246       error (_("Dwarf Error: DWP file CU version %s doesn't match"
13247                " TU version %s [in DWP file %s]"),
13248              pulongest (dwp_file->cus->version),
13249              pulongest (dwp_file->tus->version), dwp_name.c_str ());
13250     }
13251
13252   if (dwp_file->cus)
13253     dwp_file->version = dwp_file->cus->version;
13254   else if (dwp_file->tus)
13255     dwp_file->version = dwp_file->tus->version;
13256   else
13257     dwp_file->version = 2;
13258
13259   if (dwp_file->version == 2)
13260     bfd_map_over_sections (dwp_file->dbfd.get (),
13261                            dwarf2_locate_v2_dwp_sections,
13262                            dwp_file.get ());
13263
13264   dwp_file->loaded_cus = allocate_dwp_loaded_cutus_table (objfile);
13265   dwp_file->loaded_tus = allocate_dwp_loaded_cutus_table (objfile);
13266
13267   if (dwarf_read_debug)
13268     {
13269       fprintf_unfiltered (gdb_stdlog, "DWP file found: %s\n", dwp_file->name);
13270       fprintf_unfiltered (gdb_stdlog,
13271                           "    %s CUs, %s TUs\n",
13272                           pulongest (dwp_file->cus ? dwp_file->cus->nr_units : 0),
13273                           pulongest (dwp_file->tus ? dwp_file->tus->nr_units : 0));
13274     }
13275
13276   return dwp_file;
13277 }
13278
13279 /* Wrapper around open_and_init_dwp_file, only open it once.  */
13280
13281 static struct dwp_file *
13282 get_dwp_file (struct dwarf2_per_objfile *dwarf2_per_objfile)
13283 {
13284   if (! dwarf2_per_objfile->dwp_checked)
13285     {
13286       dwarf2_per_objfile->dwp_file
13287         = open_and_init_dwp_file (dwarf2_per_objfile);
13288       dwarf2_per_objfile->dwp_checked = 1;
13289     }
13290   return dwarf2_per_objfile->dwp_file.get ();
13291 }
13292
13293 /* Subroutine of lookup_dwo_comp_unit, lookup_dwo_type_unit.
13294    Look up the CU/TU with signature SIGNATURE, either in DWO file DWO_NAME
13295    or in the DWP file for the objfile, referenced by THIS_UNIT.
13296    If non-NULL, comp_dir is the DW_AT_comp_dir attribute.
13297    IS_DEBUG_TYPES is non-zero if reading a TU, otherwise read a CU.
13298
13299    This is called, for example, when wanting to read a variable with a
13300    complex location.  Therefore we don't want to do file i/o for every call.
13301    Therefore we don't want to look for a DWO file on every call.
13302    Therefore we first see if we've already seen SIGNATURE in a DWP file,
13303    then we check if we've already seen DWO_NAME, and only THEN do we check
13304    for a DWO file.
13305
13306    The result is a pointer to the dwo_unit object or NULL if we didn't find it
13307    (dwo_id mismatch or couldn't find the DWO/DWP file).  */
13308
13309 static struct dwo_unit *
13310 lookup_dwo_cutu (struct dwarf2_per_cu_data *this_unit,
13311                  const char *dwo_name, const char *comp_dir,
13312                  ULONGEST signature, int is_debug_types)
13313 {
13314   struct dwarf2_per_objfile *dwarf2_per_objfile = this_unit->dwarf2_per_objfile;
13315   struct objfile *objfile = dwarf2_per_objfile->objfile;
13316   const char *kind = is_debug_types ? "TU" : "CU";
13317   void **dwo_file_slot;
13318   struct dwo_file *dwo_file;
13319   struct dwp_file *dwp_file;
13320
13321   /* First see if there's a DWP file.
13322      If we have a DWP file but didn't find the DWO inside it, don't
13323      look for the original DWO file.  It makes gdb behave differently
13324      depending on whether one is debugging in the build tree.  */
13325
13326   dwp_file = get_dwp_file (dwarf2_per_objfile);
13327   if (dwp_file != NULL)
13328     {
13329       const struct dwp_hash_table *dwp_htab =
13330         is_debug_types ? dwp_file->tus : dwp_file->cus;
13331
13332       if (dwp_htab != NULL)
13333         {
13334           struct dwo_unit *dwo_cutu =
13335             lookup_dwo_unit_in_dwp (dwarf2_per_objfile, dwp_file, comp_dir,
13336                                     signature, is_debug_types);
13337
13338           if (dwo_cutu != NULL)
13339             {
13340               if (dwarf_read_debug)
13341                 {
13342                   fprintf_unfiltered (gdb_stdlog,
13343                                       "Virtual DWO %s %s found: @%s\n",
13344                                       kind, hex_string (signature),
13345                                       host_address_to_string (dwo_cutu));
13346                 }
13347               return dwo_cutu;
13348             }
13349         }
13350     }
13351   else
13352     {
13353       /* No DWP file, look for the DWO file.  */
13354
13355       dwo_file_slot = lookup_dwo_file_slot (dwarf2_per_objfile,
13356                                             dwo_name, comp_dir);
13357       if (*dwo_file_slot == NULL)
13358         {
13359           /* Read in the file and build a table of the CUs/TUs it contains.  */
13360           *dwo_file_slot = open_and_init_dwo_file (this_unit, dwo_name, comp_dir);
13361         }
13362       /* NOTE: This will be NULL if unable to open the file.  */
13363       dwo_file = (struct dwo_file *) *dwo_file_slot;
13364
13365       if (dwo_file != NULL)
13366         {
13367           struct dwo_unit *dwo_cutu = NULL;
13368
13369           if (is_debug_types && dwo_file->tus)
13370             {
13371               struct dwo_unit find_dwo_cutu;
13372
13373               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13374               find_dwo_cutu.signature = signature;
13375               dwo_cutu
13376                 = (struct dwo_unit *) htab_find (dwo_file->tus, &find_dwo_cutu);
13377             }
13378           else if (!is_debug_types && dwo_file->cus)
13379             {
13380               struct dwo_unit find_dwo_cutu;
13381
13382               memset (&find_dwo_cutu, 0, sizeof (find_dwo_cutu));
13383               find_dwo_cutu.signature = signature;
13384               dwo_cutu = (struct dwo_unit *)htab_find (dwo_file->cus,
13385                                                        &find_dwo_cutu);
13386             }
13387
13388           if (dwo_cutu != NULL)
13389             {
13390               if (dwarf_read_debug)
13391                 {
13392                   fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) found: @%s\n",
13393                                       kind, dwo_name, hex_string (signature),
13394                                       host_address_to_string (dwo_cutu));
13395                 }
13396               return dwo_cutu;
13397             }
13398         }
13399     }
13400
13401   /* We didn't find it.  This could mean a dwo_id mismatch, or
13402      someone deleted the DWO/DWP file, or the search path isn't set up
13403      correctly to find the file.  */
13404
13405   if (dwarf_read_debug)
13406     {
13407       fprintf_unfiltered (gdb_stdlog, "DWO %s %s(%s) not found\n",
13408                           kind, dwo_name, hex_string (signature));
13409     }
13410
13411   /* This is a warning and not a complaint because it can be caused by
13412      pilot error (e.g., user accidentally deleting the DWO).  */
13413   {
13414     /* Print the name of the DWP file if we looked there, helps the user
13415        better diagnose the problem.  */
13416     std::string dwp_text;
13417
13418     if (dwp_file != NULL)
13419       dwp_text = string_printf (" [in DWP file %s]",
13420                                 lbasename (dwp_file->name));
13421
13422     warning (_("Could not find DWO %s %s(%s)%s referenced by %s at offset %s"
13423                " [in module %s]"),
13424              kind, dwo_name, hex_string (signature),
13425              dwp_text.c_str (),
13426              this_unit->is_debug_types ? "TU" : "CU",
13427              sect_offset_str (this_unit->sect_off), objfile_name (objfile));
13428   }
13429   return NULL;
13430 }
13431
13432 /* Lookup the DWO CU DWO_NAME/SIGNATURE referenced from THIS_CU.
13433    See lookup_dwo_cutu_unit for details.  */
13434
13435 static struct dwo_unit *
13436 lookup_dwo_comp_unit (struct dwarf2_per_cu_data *this_cu,
13437                       const char *dwo_name, const char *comp_dir,
13438                       ULONGEST signature)
13439 {
13440   return lookup_dwo_cutu (this_cu, dwo_name, comp_dir, signature, 0);
13441 }
13442
13443 /* Lookup the DWO TU DWO_NAME/SIGNATURE referenced from THIS_TU.
13444    See lookup_dwo_cutu_unit for details.  */
13445
13446 static struct dwo_unit *
13447 lookup_dwo_type_unit (struct signatured_type *this_tu,
13448                       const char *dwo_name, const char *comp_dir)
13449 {
13450   return lookup_dwo_cutu (&this_tu->per_cu, dwo_name, comp_dir, this_tu->signature, 1);
13451 }
13452
13453 /* Traversal function for queue_and_load_all_dwo_tus.  */
13454
13455 static int
13456 queue_and_load_dwo_tu (void **slot, void *info)
13457 {
13458   struct dwo_unit *dwo_unit = (struct dwo_unit *) *slot;
13459   struct dwarf2_per_cu_data *per_cu = (struct dwarf2_per_cu_data *) info;
13460   ULONGEST signature = dwo_unit->signature;
13461   struct signatured_type *sig_type =
13462     lookup_dwo_signatured_type (per_cu->cu, signature);
13463
13464   if (sig_type != NULL)
13465     {
13466       struct dwarf2_per_cu_data *sig_cu = &sig_type->per_cu;
13467
13468       /* We pass NULL for DEPENDENT_CU because we don't yet know if there's
13469          a real dependency of PER_CU on SIG_TYPE.  That is detected later
13470          while processing PER_CU.  */
13471       if (maybe_queue_comp_unit (NULL, sig_cu, per_cu->cu->language))
13472         load_full_type_unit (sig_cu);
13473       VEC_safe_push (dwarf2_per_cu_ptr, per_cu->imported_symtabs, sig_cu);
13474     }
13475
13476   return 1;
13477 }
13478
13479 /* Queue all TUs contained in the DWO of PER_CU to be read in.
13480    The DWO may have the only definition of the type, though it may not be
13481    referenced anywhere in PER_CU.  Thus we have to load *all* its TUs.
13482    http://sourceware.org/bugzilla/show_bug.cgi?id=15021  */
13483
13484 static void
13485 queue_and_load_all_dwo_tus (struct dwarf2_per_cu_data *per_cu)
13486 {
13487   struct dwo_unit *dwo_unit;
13488   struct dwo_file *dwo_file;
13489
13490   gdb_assert (!per_cu->is_debug_types);
13491   gdb_assert (get_dwp_file (per_cu->dwarf2_per_objfile) == NULL);
13492   gdb_assert (per_cu->cu != NULL);
13493
13494   dwo_unit = per_cu->cu->dwo_unit;
13495   gdb_assert (dwo_unit != NULL);
13496
13497   dwo_file = dwo_unit->dwo_file;
13498   if (dwo_file->tus != NULL)
13499     htab_traverse_noresize (dwo_file->tus, queue_and_load_dwo_tu, per_cu);
13500 }
13501
13502 /* Free all resources associated with DWO_FILE.
13503    Close the DWO file and munmap the sections.  */
13504
13505 static void
13506 free_dwo_file (struct dwo_file *dwo_file)
13507 {
13508   /* Note: dbfd is NULL for virtual DWO files.  */
13509   gdb_bfd_unref (dwo_file->dbfd);
13510
13511   VEC_free (dwarf2_section_info_def, dwo_file->sections.types);
13512 }
13513
13514 /* Traversal function for free_dwo_files.  */
13515
13516 static int
13517 free_dwo_file_from_slot (void **slot, void *info)
13518 {
13519   struct dwo_file *dwo_file = (struct dwo_file *) *slot;
13520
13521   free_dwo_file (dwo_file);
13522
13523   return 1;
13524 }
13525
13526 /* Free all resources associated with DWO_FILES.  */
13527
13528 static void
13529 free_dwo_files (htab_t dwo_files, struct objfile *objfile)
13530 {
13531   htab_traverse_noresize (dwo_files, free_dwo_file_from_slot, objfile);
13532 }
13533 \f
13534 /* Read in various DIEs.  */
13535
13536 /* DW_AT_abstract_origin inherits whole DIEs (not just their attributes).
13537    Inherit only the children of the DW_AT_abstract_origin DIE not being
13538    already referenced by DW_AT_abstract_origin from the children of the
13539    current DIE.  */
13540
13541 static void
13542 inherit_abstract_dies (struct die_info *die, struct dwarf2_cu *cu)
13543 {
13544   struct die_info *child_die;
13545   sect_offset *offsetp;
13546   /* Parent of DIE - referenced by DW_AT_abstract_origin.  */
13547   struct die_info *origin_die;
13548   /* Iterator of the ORIGIN_DIE children.  */
13549   struct die_info *origin_child_die;
13550   struct attribute *attr;
13551   struct dwarf2_cu *origin_cu;
13552   struct pending **origin_previous_list_in_scope;
13553
13554   attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
13555   if (!attr)
13556     return;
13557
13558   /* Note that following die references may follow to a die in a
13559      different cu.  */
13560
13561   origin_cu = cu;
13562   origin_die = follow_die_ref (die, attr, &origin_cu);
13563
13564   /* We're inheriting ORIGIN's children into the scope we'd put DIE's
13565      symbols in.  */
13566   origin_previous_list_in_scope = origin_cu->list_in_scope;
13567   origin_cu->list_in_scope = cu->list_in_scope;
13568
13569   if (die->tag != origin_die->tag
13570       && !(die->tag == DW_TAG_inlined_subroutine
13571            && origin_die->tag == DW_TAG_subprogram))
13572     complaint (_("DIE %s and its abstract origin %s have different tags"),
13573                sect_offset_str (die->sect_off),
13574                sect_offset_str (origin_die->sect_off));
13575
13576   std::vector<sect_offset> offsets;
13577
13578   for (child_die = die->child;
13579        child_die && child_die->tag;
13580        child_die = sibling_die (child_die))
13581     {
13582       struct die_info *child_origin_die;
13583       struct dwarf2_cu *child_origin_cu;
13584
13585       /* We are trying to process concrete instance entries:
13586          DW_TAG_call_site DIEs indeed have a DW_AT_abstract_origin tag, but
13587          it's not relevant to our analysis here. i.e. detecting DIEs that are
13588          present in the abstract instance but not referenced in the concrete
13589          one.  */
13590       if (child_die->tag == DW_TAG_call_site
13591           || child_die->tag == DW_TAG_GNU_call_site)
13592         continue;
13593
13594       /* For each CHILD_DIE, find the corresponding child of
13595          ORIGIN_DIE.  If there is more than one layer of
13596          DW_AT_abstract_origin, follow them all; there shouldn't be,
13597          but GCC versions at least through 4.4 generate this (GCC PR
13598          40573).  */
13599       child_origin_die = child_die;
13600       child_origin_cu = cu;
13601       while (1)
13602         {
13603           attr = dwarf2_attr (child_origin_die, DW_AT_abstract_origin,
13604                               child_origin_cu);
13605           if (attr == NULL)
13606             break;
13607           child_origin_die = follow_die_ref (child_origin_die, attr,
13608                                              &child_origin_cu);
13609         }
13610
13611       /* According to DWARF3 3.3.8.2 #3 new entries without their abstract
13612          counterpart may exist.  */
13613       if (child_origin_die != child_die)
13614         {
13615           if (child_die->tag != child_origin_die->tag
13616               && !(child_die->tag == DW_TAG_inlined_subroutine
13617                    && child_origin_die->tag == DW_TAG_subprogram))
13618             complaint (_("Child DIE %s and its abstract origin %s have "
13619                          "different tags"),
13620                        sect_offset_str (child_die->sect_off),
13621                        sect_offset_str (child_origin_die->sect_off));
13622           if (child_origin_die->parent != origin_die)
13623             complaint (_("Child DIE %s and its abstract origin %s have "
13624                          "different parents"),
13625                        sect_offset_str (child_die->sect_off),
13626                        sect_offset_str (child_origin_die->sect_off));
13627           else
13628             offsets.push_back (child_origin_die->sect_off);
13629         }
13630     }
13631   std::sort (offsets.begin (), offsets.end ());
13632   sect_offset *offsets_end = offsets.data () + offsets.size ();
13633   for (offsetp = offsets.data () + 1; offsetp < offsets_end; offsetp++)
13634     if (offsetp[-1] == *offsetp)
13635       complaint (_("Multiple children of DIE %s refer "
13636                    "to DIE %s as their abstract origin"),
13637                  sect_offset_str (die->sect_off), sect_offset_str (*offsetp));
13638
13639   offsetp = offsets.data ();
13640   origin_child_die = origin_die->child;
13641   while (origin_child_die && origin_child_die->tag)
13642     {
13643       /* Is ORIGIN_CHILD_DIE referenced by any of the DIE children?  */
13644       while (offsetp < offsets_end
13645              && *offsetp < origin_child_die->sect_off)
13646         offsetp++;
13647       if (offsetp >= offsets_end
13648           || *offsetp > origin_child_die->sect_off)
13649         {
13650           /* Found that ORIGIN_CHILD_DIE is really not referenced.
13651              Check whether we're already processing ORIGIN_CHILD_DIE.
13652              This can happen with mutually referenced abstract_origins.
13653              PR 16581.  */
13654           if (!origin_child_die->in_process)
13655             process_die (origin_child_die, origin_cu);
13656         }
13657       origin_child_die = sibling_die (origin_child_die);
13658     }
13659   origin_cu->list_in_scope = origin_previous_list_in_scope;
13660 }
13661
13662 static void
13663 read_func_scope (struct die_info *die, struct dwarf2_cu *cu)
13664 {
13665   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13666   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13667   struct context_stack *newobj;
13668   CORE_ADDR lowpc;
13669   CORE_ADDR highpc;
13670   struct die_info *child_die;
13671   struct attribute *attr, *call_line, *call_file;
13672   const char *name;
13673   CORE_ADDR baseaddr;
13674   struct block *block;
13675   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
13676   std::vector<struct symbol *> template_args;
13677   struct template_symbol *templ_func = NULL;
13678
13679   if (inlined_func)
13680     {
13681       /* If we do not have call site information, we can't show the
13682          caller of this inlined function.  That's too confusing, so
13683          only use the scope for local variables.  */
13684       call_line = dwarf2_attr (die, DW_AT_call_line, cu);
13685       call_file = dwarf2_attr (die, DW_AT_call_file, cu);
13686       if (call_line == NULL || call_file == NULL)
13687         {
13688           read_lexical_block_scope (die, cu);
13689           return;
13690         }
13691     }
13692
13693   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13694
13695   name = dwarf2_name (die, cu);
13696
13697   /* Ignore functions with missing or empty names.  These are actually
13698      illegal according to the DWARF standard.  */
13699   if (name == NULL)
13700     {
13701       complaint (_("missing name for subprogram DIE at %s"),
13702                  sect_offset_str (die->sect_off));
13703       return;
13704     }
13705
13706   /* Ignore functions with missing or invalid low and high pc attributes.  */
13707   if (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL)
13708       <= PC_BOUNDS_INVALID)
13709     {
13710       attr = dwarf2_attr (die, DW_AT_external, cu);
13711       if (!attr || !DW_UNSND (attr))
13712         complaint (_("cannot get low and high bounds "
13713                      "for subprogram DIE at %s"),
13714                    sect_offset_str (die->sect_off));
13715       return;
13716     }
13717
13718   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13719   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13720
13721   /* If we have any template arguments, then we must allocate a
13722      different sort of symbol.  */
13723   for (child_die = die->child; child_die; child_die = sibling_die (child_die))
13724     {
13725       if (child_die->tag == DW_TAG_template_type_param
13726           || child_die->tag == DW_TAG_template_value_param)
13727         {
13728           templ_func = allocate_template_symbol (objfile);
13729           templ_func->subclass = SYMBOL_TEMPLATE;
13730           break;
13731         }
13732     }
13733
13734   newobj = cu->builder->push_context (0, lowpc);
13735   newobj->name = new_symbol (die, read_type_die (die, cu), cu,
13736                              (struct symbol *) templ_func);
13737
13738   /* If there is a location expression for DW_AT_frame_base, record
13739      it.  */
13740   attr = dwarf2_attr (die, DW_AT_frame_base, cu);
13741   if (attr)
13742     dwarf2_symbol_mark_computed (attr, newobj->name, cu, 1);
13743
13744   /* If there is a location for the static link, record it.  */
13745   newobj->static_link = NULL;
13746   attr = dwarf2_attr (die, DW_AT_static_link, cu);
13747   if (attr)
13748     {
13749       newobj->static_link
13750         = XOBNEW (&objfile->objfile_obstack, struct dynamic_prop);
13751       attr_to_dynamic_prop (attr, die, cu, newobj->static_link);
13752     }
13753
13754   cu->list_in_scope = cu->builder->get_local_symbols ();
13755
13756   if (die->child != NULL)
13757     {
13758       child_die = die->child;
13759       while (child_die && child_die->tag)
13760         {
13761           if (child_die->tag == DW_TAG_template_type_param
13762               || child_die->tag == DW_TAG_template_value_param)
13763             {
13764               struct symbol *arg = new_symbol (child_die, NULL, cu);
13765
13766               if (arg != NULL)
13767                 template_args.push_back (arg);
13768             }
13769           else
13770             process_die (child_die, cu);
13771           child_die = sibling_die (child_die);
13772         }
13773     }
13774
13775   inherit_abstract_dies (die, cu);
13776
13777   /* If we have a DW_AT_specification, we might need to import using
13778      directives from the context of the specification DIE.  See the
13779      comment in determine_prefix.  */
13780   if (cu->language == language_cplus
13781       && dwarf2_attr (die, DW_AT_specification, cu))
13782     {
13783       struct dwarf2_cu *spec_cu = cu;
13784       struct die_info *spec_die = die_specification (die, &spec_cu);
13785
13786       while (spec_die)
13787         {
13788           child_die = spec_die->child;
13789           while (child_die && child_die->tag)
13790             {
13791               if (child_die->tag == DW_TAG_imported_module)
13792                 process_die (child_die, spec_cu);
13793               child_die = sibling_die (child_die);
13794             }
13795
13796           /* In some cases, GCC generates specification DIEs that
13797              themselves contain DW_AT_specification attributes.  */
13798           spec_die = die_specification (spec_die, &spec_cu);
13799         }
13800     }
13801
13802   struct context_stack cstk = cu->builder->pop_context ();
13803   /* Make a block for the local symbols within.  */
13804   block = cu->builder->finish_block (cstk.name, cstk.old_blocks,
13805                                      cstk.static_link, lowpc, highpc);
13806
13807   /* For C++, set the block's scope.  */
13808   if ((cu->language == language_cplus
13809        || cu->language == language_fortran
13810        || cu->language == language_d
13811        || cu->language == language_rust)
13812       && cu->processing_has_namespace_info)
13813     block_set_scope (block, determine_prefix (die, cu),
13814                      &objfile->objfile_obstack);
13815
13816   /* If we have address ranges, record them.  */
13817   dwarf2_record_block_ranges (die, block, baseaddr, cu);
13818
13819   gdbarch_make_symbol_special (gdbarch, cstk.name, objfile);
13820
13821   /* Attach template arguments to function.  */
13822   if (!template_args.empty ())
13823     {
13824       gdb_assert (templ_func != NULL);
13825
13826       templ_func->n_template_arguments = template_args.size ();
13827       templ_func->template_arguments
13828         = XOBNEWVEC (&objfile->objfile_obstack, struct symbol *,
13829                      templ_func->n_template_arguments);
13830       memcpy (templ_func->template_arguments,
13831               template_args.data (),
13832               (templ_func->n_template_arguments * sizeof (struct symbol *)));
13833
13834       /* Make sure that the symtab is set on the new symbols.  Even
13835          though they don't appear in this symtab directly, other parts
13836          of gdb assume that symbols do, and this is reasonably
13837          true.  */
13838       for (struct symbol *sym : template_args)
13839         symbol_set_symtab (sym, symbol_symtab (templ_func));
13840     }
13841
13842   /* In C++, we can have functions nested inside functions (e.g., when
13843      a function declares a class that has methods).  This means that
13844      when we finish processing a function scope, we may need to go
13845      back to building a containing block's symbol lists.  */
13846   *cu->builder->get_local_symbols () = cstk.locals;
13847   cu->builder->set_local_using_directives (cstk.local_using_directives);
13848
13849   /* If we've finished processing a top-level function, subsequent
13850      symbols go in the file symbol list.  */
13851   if (cu->builder->outermost_context_p ())
13852     cu->list_in_scope = cu->builder->get_file_symbols ();
13853 }
13854
13855 /* Process all the DIES contained within a lexical block scope.  Start
13856    a new scope, process the dies, and then close the scope.  */
13857
13858 static void
13859 read_lexical_block_scope (struct die_info *die, struct dwarf2_cu *cu)
13860 {
13861   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13862   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13863   CORE_ADDR lowpc, highpc;
13864   struct die_info *child_die;
13865   CORE_ADDR baseaddr;
13866
13867   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13868
13869   /* Ignore blocks with missing or invalid low and high pc attributes.  */
13870   /* ??? Perhaps consider discontiguous blocks defined by DW_AT_ranges
13871      as multiple lexical blocks?  Handling children in a sane way would
13872      be nasty.  Might be easier to properly extend generic blocks to
13873      describe ranges.  */
13874   switch (dwarf2_get_pc_bounds (die, &lowpc, &highpc, cu, NULL))
13875     {
13876     case PC_BOUNDS_NOT_PRESENT:
13877       /* DW_TAG_lexical_block has no attributes, process its children as if
13878          there was no wrapping by that DW_TAG_lexical_block.
13879          GCC does no longer produces such DWARF since GCC r224161.  */
13880       for (child_die = die->child;
13881            child_die != NULL && child_die->tag;
13882            child_die = sibling_die (child_die))
13883         process_die (child_die, cu);
13884       return;
13885     case PC_BOUNDS_INVALID:
13886       return;
13887     }
13888   lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
13889   highpc = gdbarch_adjust_dwarf2_addr (gdbarch, highpc + baseaddr);
13890
13891   cu->builder->push_context (0, lowpc);
13892   if (die->child != NULL)
13893     {
13894       child_die = die->child;
13895       while (child_die && child_die->tag)
13896         {
13897           process_die (child_die, cu);
13898           child_die = sibling_die (child_die);
13899         }
13900     }
13901   inherit_abstract_dies (die, cu);
13902   struct context_stack cstk = cu->builder->pop_context ();
13903
13904   if (*cu->builder->get_local_symbols () != NULL
13905       || (*cu->builder->get_local_using_directives ()) != NULL)
13906     {
13907       struct block *block
13908         = cu->builder->finish_block (0, cstk.old_blocks, NULL,
13909                                      cstk.start_addr, highpc);
13910
13911       /* Note that recording ranges after traversing children, as we
13912          do here, means that recording a parent's ranges entails
13913          walking across all its children's ranges as they appear in
13914          the address map, which is quadratic behavior.
13915
13916          It would be nicer to record the parent's ranges before
13917          traversing its children, simply overriding whatever you find
13918          there.  But since we don't even decide whether to create a
13919          block until after we've traversed its children, that's hard
13920          to do.  */
13921       dwarf2_record_block_ranges (die, block, baseaddr, cu);
13922     }
13923   *cu->builder->get_local_symbols () = cstk.locals;
13924   cu->builder->set_local_using_directives (cstk.local_using_directives);
13925 }
13926
13927 /* Read in DW_TAG_call_site and insert it to CU->call_site_htab.  */
13928
13929 static void
13930 read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
13931 {
13932   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
13933   struct gdbarch *gdbarch = get_objfile_arch (objfile);
13934   CORE_ADDR pc, baseaddr;
13935   struct attribute *attr;
13936   struct call_site *call_site, call_site_local;
13937   void **slot;
13938   int nparams;
13939   struct die_info *child_die;
13940
13941   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
13942
13943   attr = dwarf2_attr (die, DW_AT_call_return_pc, cu);
13944   if (attr == NULL)
13945     {
13946       /* This was a pre-DWARF-5 GNU extension alias
13947          for DW_AT_call_return_pc.  */
13948       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
13949     }
13950   if (!attr)
13951     {
13952       complaint (_("missing DW_AT_call_return_pc for DW_TAG_call_site "
13953                    "DIE %s [in module %s]"),
13954                  sect_offset_str (die->sect_off), objfile_name (objfile));
13955       return;
13956     }
13957   pc = attr_value_as_address (attr) + baseaddr;
13958   pc = gdbarch_adjust_dwarf2_addr (gdbarch, pc);
13959
13960   if (cu->call_site_htab == NULL)
13961     cu->call_site_htab = htab_create_alloc_ex (16, core_addr_hash, core_addr_eq,
13962                                                NULL, &objfile->objfile_obstack,
13963                                                hashtab_obstack_allocate, NULL);
13964   call_site_local.pc = pc;
13965   slot = htab_find_slot (cu->call_site_htab, &call_site_local, INSERT);
13966   if (*slot != NULL)
13967     {
13968       complaint (_("Duplicate PC %s for DW_TAG_call_site "
13969                    "DIE %s [in module %s]"),
13970                  paddress (gdbarch, pc), sect_offset_str (die->sect_off),
13971                  objfile_name (objfile));
13972       return;
13973     }
13974
13975   /* Count parameters at the caller.  */
13976
13977   nparams = 0;
13978   for (child_die = die->child; child_die && child_die->tag;
13979        child_die = sibling_die (child_die))
13980     {
13981       if (child_die->tag != DW_TAG_call_site_parameter
13982           && child_die->tag != DW_TAG_GNU_call_site_parameter)
13983         {
13984           complaint (_("Tag %d is not DW_TAG_call_site_parameter in "
13985                        "DW_TAG_call_site child DIE %s [in module %s]"),
13986                      child_die->tag, sect_offset_str (child_die->sect_off),
13987                      objfile_name (objfile));
13988           continue;
13989         }
13990
13991       nparams++;
13992     }
13993
13994   call_site
13995     = ((struct call_site *)
13996        obstack_alloc (&objfile->objfile_obstack,
13997                       sizeof (*call_site)
13998                       + (sizeof (*call_site->parameter) * (nparams - 1))));
13999   *slot = call_site;
14000   memset (call_site, 0, sizeof (*call_site) - sizeof (*call_site->parameter));
14001   call_site->pc = pc;
14002
14003   if (dwarf2_flag_true_p (die, DW_AT_call_tail_call, cu)
14004       || dwarf2_flag_true_p (die, DW_AT_GNU_tail_call, cu))
14005     {
14006       struct die_info *func_die;
14007
14008       /* Skip also over DW_TAG_inlined_subroutine.  */
14009       for (func_die = die->parent;
14010            func_die && func_die->tag != DW_TAG_subprogram
14011            && func_die->tag != DW_TAG_subroutine_type;
14012            func_die = func_die->parent);
14013
14014       /* DW_AT_call_all_calls is a superset
14015          of DW_AT_call_all_tail_calls.  */
14016       if (func_die
14017           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_calls, cu)
14018           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_call_sites, cu)
14019           && !dwarf2_flag_true_p (func_die, DW_AT_call_all_tail_calls, cu)
14020           && !dwarf2_flag_true_p (func_die, DW_AT_GNU_all_tail_call_sites, cu))
14021         {
14022           /* TYPE_TAIL_CALL_LIST is not interesting in functions where it is
14023              not complete.  But keep CALL_SITE for look ups via call_site_htab,
14024              both the initial caller containing the real return address PC and
14025              the final callee containing the current PC of a chain of tail
14026              calls do not need to have the tail call list complete.  But any
14027              function candidate for a virtual tail call frame searched via
14028              TYPE_TAIL_CALL_LIST must have the tail call list complete to be
14029              determined unambiguously.  */
14030         }
14031       else
14032         {
14033           struct type *func_type = NULL;
14034
14035           if (func_die)
14036             func_type = get_die_type (func_die, cu);
14037           if (func_type != NULL)
14038             {
14039               gdb_assert (TYPE_CODE (func_type) == TYPE_CODE_FUNC);
14040
14041               /* Enlist this call site to the function.  */
14042               call_site->tail_call_next = TYPE_TAIL_CALL_LIST (func_type);
14043               TYPE_TAIL_CALL_LIST (func_type) = call_site;
14044             }
14045           else
14046             complaint (_("Cannot find function owning DW_TAG_call_site "
14047                          "DIE %s [in module %s]"),
14048                        sect_offset_str (die->sect_off), objfile_name (objfile));
14049         }
14050     }
14051
14052   attr = dwarf2_attr (die, DW_AT_call_target, cu);
14053   if (attr == NULL)
14054     attr = dwarf2_attr (die, DW_AT_GNU_call_site_target, cu);
14055   if (attr == NULL)
14056     attr = dwarf2_attr (die, DW_AT_call_origin, cu);
14057   if (attr == NULL)
14058     {
14059       /* This was a pre-DWARF-5 GNU extension alias for DW_AT_call_origin.  */
14060       attr = dwarf2_attr (die, DW_AT_abstract_origin, cu);
14061     }
14062   SET_FIELD_DWARF_BLOCK (call_site->target, NULL);
14063   if (!attr || (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0))
14064     /* Keep NULL DWARF_BLOCK.  */;
14065   else if (attr_form_is_block (attr))
14066     {
14067       struct dwarf2_locexpr_baton *dlbaton;
14068
14069       dlbaton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
14070       dlbaton->data = DW_BLOCK (attr)->data;
14071       dlbaton->size = DW_BLOCK (attr)->size;
14072       dlbaton->per_cu = cu->per_cu;
14073
14074       SET_FIELD_DWARF_BLOCK (call_site->target, dlbaton);
14075     }
14076   else if (attr_form_is_ref (attr))
14077     {
14078       struct dwarf2_cu *target_cu = cu;
14079       struct die_info *target_die;
14080
14081       target_die = follow_die_ref (die, attr, &target_cu);
14082       gdb_assert (target_cu->per_cu->dwarf2_per_objfile->objfile == objfile);
14083       if (die_is_declaration (target_die, target_cu))
14084         {
14085           const char *target_physname;
14086
14087           /* Prefer the mangled name; otherwise compute the demangled one.  */
14088           target_physname = dw2_linkage_name (target_die, target_cu);
14089           if (target_physname == NULL)
14090             target_physname = dwarf2_physname (NULL, target_die, target_cu);
14091           if (target_physname == NULL)
14092             complaint (_("DW_AT_call_target target DIE has invalid "
14093                          "physname, for referencing DIE %s [in module %s]"),
14094                        sect_offset_str (die->sect_off), objfile_name (objfile));
14095           else
14096             SET_FIELD_PHYSNAME (call_site->target, target_physname);
14097         }
14098       else
14099         {
14100           CORE_ADDR lowpc;
14101
14102           /* DW_AT_entry_pc should be preferred.  */
14103           if (dwarf2_get_pc_bounds (target_die, &lowpc, NULL, target_cu, NULL)
14104               <= PC_BOUNDS_INVALID)
14105             complaint (_("DW_AT_call_target target DIE has invalid "
14106                          "low pc, for referencing DIE %s [in module %s]"),
14107                        sect_offset_str (die->sect_off), objfile_name (objfile));
14108           else
14109             {
14110               lowpc = gdbarch_adjust_dwarf2_addr (gdbarch, lowpc + baseaddr);
14111               SET_FIELD_PHYSADDR (call_site->target, lowpc);
14112             }
14113         }
14114     }
14115   else
14116     complaint (_("DW_TAG_call_site DW_AT_call_target is neither "
14117                  "block nor reference, for DIE %s [in module %s]"),
14118                sect_offset_str (die->sect_off), objfile_name (objfile));
14119
14120   call_site->per_cu = cu->per_cu;
14121
14122   for (child_die = die->child;
14123        child_die && child_die->tag;
14124        child_die = sibling_die (child_die))
14125     {
14126       struct call_site_parameter *parameter;
14127       struct attribute *loc, *origin;
14128
14129       if (child_die->tag != DW_TAG_call_site_parameter
14130           && child_die->tag != DW_TAG_GNU_call_site_parameter)
14131         {
14132           /* Already printed the complaint above.  */
14133           continue;
14134         }
14135
14136       gdb_assert (call_site->parameter_count < nparams);
14137       parameter = &call_site->parameter[call_site->parameter_count];
14138
14139       /* DW_AT_location specifies the register number or DW_AT_abstract_origin
14140          specifies DW_TAG_formal_parameter.  Value of the data assumed for the
14141          register is contained in DW_AT_call_value.  */
14142
14143       loc = dwarf2_attr (child_die, DW_AT_location, cu);
14144       origin = dwarf2_attr (child_die, DW_AT_call_parameter, cu);
14145       if (origin == NULL)
14146         {
14147           /* This was a pre-DWARF-5 GNU extension alias
14148              for DW_AT_call_parameter.  */
14149           origin = dwarf2_attr (child_die, DW_AT_abstract_origin, cu);
14150         }
14151       if (loc == NULL && origin != NULL && attr_form_is_ref (origin))
14152         {
14153           parameter->kind = CALL_SITE_PARAMETER_PARAM_OFFSET;
14154
14155           sect_offset sect_off
14156             = (sect_offset) dwarf2_get_ref_die_offset (origin);
14157           if (!offset_in_cu_p (&cu->header, sect_off))
14158             {
14159               /* As DW_OP_GNU_parameter_ref uses CU-relative offset this
14160                  binding can be done only inside one CU.  Such referenced DIE
14161                  therefore cannot be even moved to DW_TAG_partial_unit.  */
14162               complaint (_("DW_AT_call_parameter offset is not in CU for "
14163                            "DW_TAG_call_site child DIE %s [in module %s]"),
14164                          sect_offset_str (child_die->sect_off),
14165                          objfile_name (objfile));
14166               continue;
14167             }
14168           parameter->u.param_cu_off
14169             = (cu_offset) (sect_off - cu->header.sect_off);
14170         }
14171       else if (loc == NULL || origin != NULL || !attr_form_is_block (loc))
14172         {
14173           complaint (_("No DW_FORM_block* DW_AT_location for "
14174                        "DW_TAG_call_site child DIE %s [in module %s]"),
14175                      sect_offset_str (child_die->sect_off), objfile_name (objfile));
14176           continue;
14177         }
14178       else
14179         {
14180           parameter->u.dwarf_reg = dwarf_block_to_dwarf_reg
14181             (DW_BLOCK (loc)->data, &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size]);
14182           if (parameter->u.dwarf_reg != -1)
14183             parameter->kind = CALL_SITE_PARAMETER_DWARF_REG;
14184           else if (dwarf_block_to_sp_offset (gdbarch, DW_BLOCK (loc)->data,
14185                                     &DW_BLOCK (loc)->data[DW_BLOCK (loc)->size],
14186                                              &parameter->u.fb_offset))
14187             parameter->kind = CALL_SITE_PARAMETER_FB_OFFSET;
14188           else
14189             {
14190               complaint (_("Only single DW_OP_reg or DW_OP_fbreg is supported "
14191                            "for DW_FORM_block* DW_AT_location is supported for "
14192                            "DW_TAG_call_site child DIE %s "
14193                            "[in module %s]"),
14194                          sect_offset_str (child_die->sect_off),
14195                          objfile_name (objfile));
14196               continue;
14197             }
14198         }
14199
14200       attr = dwarf2_attr (child_die, DW_AT_call_value, cu);
14201       if (attr == NULL)
14202         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_value, cu);
14203       if (!attr_form_is_block (attr))
14204         {
14205           complaint (_("No DW_FORM_block* DW_AT_call_value for "
14206                        "DW_TAG_call_site child DIE %s [in module %s]"),
14207                      sect_offset_str (child_die->sect_off),
14208                      objfile_name (objfile));
14209           continue;
14210         }
14211       parameter->value = DW_BLOCK (attr)->data;
14212       parameter->value_size = DW_BLOCK (attr)->size;
14213
14214       /* Parameters are not pre-cleared by memset above.  */
14215       parameter->data_value = NULL;
14216       parameter->data_value_size = 0;
14217       call_site->parameter_count++;
14218
14219       attr = dwarf2_attr (child_die, DW_AT_call_data_value, cu);
14220       if (attr == NULL)
14221         attr = dwarf2_attr (child_die, DW_AT_GNU_call_site_data_value, cu);
14222       if (attr)
14223         {
14224           if (!attr_form_is_block (attr))
14225             complaint (_("No DW_FORM_block* DW_AT_call_data_value for "
14226                          "DW_TAG_call_site child DIE %s [in module %s]"),
14227                        sect_offset_str (child_die->sect_off),
14228                        objfile_name (objfile));
14229           else
14230             {
14231               parameter->data_value = DW_BLOCK (attr)->data;
14232               parameter->data_value_size = DW_BLOCK (attr)->size;
14233             }
14234         }
14235     }
14236 }
14237
14238 /* Helper function for read_variable.  If DIE represents a virtual
14239    table, then return the type of the concrete object that is
14240    associated with the virtual table.  Otherwise, return NULL.  */
14241
14242 static struct type *
14243 rust_containing_type (struct die_info *die, struct dwarf2_cu *cu)
14244 {
14245   struct attribute *attr = dwarf2_attr (die, DW_AT_type, cu);
14246   if (attr == NULL)
14247     return NULL;
14248
14249   /* Find the type DIE.  */
14250   struct die_info *type_die = NULL;
14251   struct dwarf2_cu *type_cu = cu;
14252
14253   if (attr_form_is_ref (attr))
14254     type_die = follow_die_ref (die, attr, &type_cu);
14255   if (type_die == NULL)
14256     return NULL;
14257
14258   if (dwarf2_attr (type_die, DW_AT_containing_type, type_cu) == NULL)
14259     return NULL;
14260   return die_containing_type (type_die, type_cu);
14261 }
14262
14263 /* Read a variable (DW_TAG_variable) DIE and create a new symbol.  */
14264
14265 static void
14266 read_variable (struct die_info *die, struct dwarf2_cu *cu)
14267 {
14268   struct rust_vtable_symbol *storage = NULL;
14269
14270   if (cu->language == language_rust)
14271     {
14272       struct type *containing_type = rust_containing_type (die, cu);
14273
14274       if (containing_type != NULL)
14275         {
14276           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14277
14278           storage = OBSTACK_ZALLOC (&objfile->objfile_obstack,
14279                                     struct rust_vtable_symbol);
14280           initialize_objfile_symbol (storage);
14281           storage->concrete_type = containing_type;
14282           storage->subclass = SYMBOL_RUST_VTABLE;
14283         }
14284     }
14285
14286   new_symbol (die, NULL, cu, storage);
14287 }
14288
14289 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET
14290    reading .debug_rnglists.
14291    Callback's type should be:
14292     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14293    Return true if the attributes are present and valid, otherwise,
14294    return false.  */
14295
14296 template <typename Callback>
14297 static bool
14298 dwarf2_rnglists_process (unsigned offset, struct dwarf2_cu *cu,
14299                          Callback &&callback)
14300 {
14301   struct dwarf2_per_objfile *dwarf2_per_objfile
14302     = cu->per_cu->dwarf2_per_objfile;
14303   struct objfile *objfile = dwarf2_per_objfile->objfile;
14304   bfd *obfd = objfile->obfd;
14305   /* Base address selection entry.  */
14306   CORE_ADDR base;
14307   int found_base;
14308   const gdb_byte *buffer;
14309   CORE_ADDR baseaddr;
14310   bool overflow = false;
14311
14312   found_base = cu->base_known;
14313   base = cu->base_address;
14314
14315   dwarf2_read_section (objfile, &dwarf2_per_objfile->rnglists);
14316   if (offset >= dwarf2_per_objfile->rnglists.size)
14317     {
14318       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14319                  offset);
14320       return false;
14321     }
14322   buffer = dwarf2_per_objfile->rnglists.buffer + offset;
14323
14324   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14325
14326   while (1)
14327     {
14328       /* Initialize it due to a false compiler warning.  */
14329       CORE_ADDR range_beginning = 0, range_end = 0;
14330       const gdb_byte *buf_end = (dwarf2_per_objfile->rnglists.buffer
14331                                  + dwarf2_per_objfile->rnglists.size);
14332       unsigned int bytes_read;
14333
14334       if (buffer == buf_end)
14335         {
14336           overflow = true;
14337           break;
14338         }
14339       const auto rlet = static_cast<enum dwarf_range_list_entry>(*buffer++);
14340       switch (rlet)
14341         {
14342         case DW_RLE_end_of_list:
14343           break;
14344         case DW_RLE_base_address:
14345           if (buffer + cu->header.addr_size > buf_end)
14346             {
14347               overflow = true;
14348               break;
14349             }
14350           base = read_address (obfd, buffer, cu, &bytes_read);
14351           found_base = 1;
14352           buffer += bytes_read;
14353           break;
14354         case DW_RLE_start_length:
14355           if (buffer + cu->header.addr_size > buf_end)
14356             {
14357               overflow = true;
14358               break;
14359             }
14360           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14361           buffer += bytes_read;
14362           range_end = (range_beginning
14363                        + read_unsigned_leb128 (obfd, buffer, &bytes_read));
14364           buffer += bytes_read;
14365           if (buffer > buf_end)
14366             {
14367               overflow = true;
14368               break;
14369             }
14370           break;
14371         case DW_RLE_offset_pair:
14372           range_beginning = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14373           buffer += bytes_read;
14374           if (buffer > buf_end)
14375             {
14376               overflow = true;
14377               break;
14378             }
14379           range_end = read_unsigned_leb128 (obfd, buffer, &bytes_read);
14380           buffer += bytes_read;
14381           if (buffer > buf_end)
14382             {
14383               overflow = true;
14384               break;
14385             }
14386           break;
14387         case DW_RLE_start_end:
14388           if (buffer + 2 * cu->header.addr_size > buf_end)
14389             {
14390               overflow = true;
14391               break;
14392             }
14393           range_beginning = read_address (obfd, buffer, cu, &bytes_read);
14394           buffer += bytes_read;
14395           range_end = read_address (obfd, buffer, cu, &bytes_read);
14396           buffer += bytes_read;
14397           break;
14398         default:
14399           complaint (_("Invalid .debug_rnglists data (no base address)"));
14400           return false;
14401         }
14402       if (rlet == DW_RLE_end_of_list || overflow)
14403         break;
14404       if (rlet == DW_RLE_base_address)
14405         continue;
14406
14407       if (!found_base)
14408         {
14409           /* We have no valid base address for the ranges
14410              data.  */
14411           complaint (_("Invalid .debug_rnglists data (no base address)"));
14412           return false;
14413         }
14414
14415       if (range_beginning > range_end)
14416         {
14417           /* Inverted range entries are invalid.  */
14418           complaint (_("Invalid .debug_rnglists data (inverted range)"));
14419           return false;
14420         }
14421
14422       /* Empty range entries have no effect.  */
14423       if (range_beginning == range_end)
14424         continue;
14425
14426       range_beginning += base;
14427       range_end += base;
14428
14429       /* A not-uncommon case of bad debug info.
14430          Don't pollute the addrmap with bad data.  */
14431       if (range_beginning + baseaddr == 0
14432           && !dwarf2_per_objfile->has_section_at_zero)
14433         {
14434           complaint (_(".debug_rnglists entry has start address of zero"
14435                        " [in module %s]"), objfile_name (objfile));
14436           continue;
14437         }
14438
14439       callback (range_beginning, range_end);
14440     }
14441
14442   if (overflow)
14443     {
14444       complaint (_("Offset %d is not terminated "
14445                    "for DW_AT_ranges attribute"),
14446                  offset);
14447       return false;
14448     }
14449
14450   return true;
14451 }
14452
14453 /* Call CALLBACK from DW_AT_ranges attribute value OFFSET reading .debug_ranges.
14454    Callback's type should be:
14455     void (CORE_ADDR range_beginning, CORE_ADDR range_end)
14456    Return 1 if the attributes are present and valid, otherwise, return 0.  */
14457
14458 template <typename Callback>
14459 static int
14460 dwarf2_ranges_process (unsigned offset, struct dwarf2_cu *cu,
14461                        Callback &&callback)
14462 {
14463   struct dwarf2_per_objfile *dwarf2_per_objfile
14464       = cu->per_cu->dwarf2_per_objfile;
14465   struct objfile *objfile = dwarf2_per_objfile->objfile;
14466   struct comp_unit_head *cu_header = &cu->header;
14467   bfd *obfd = objfile->obfd;
14468   unsigned int addr_size = cu_header->addr_size;
14469   CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
14470   /* Base address selection entry.  */
14471   CORE_ADDR base;
14472   int found_base;
14473   unsigned int dummy;
14474   const gdb_byte *buffer;
14475   CORE_ADDR baseaddr;
14476
14477   if (cu_header->version >= 5)
14478     return dwarf2_rnglists_process (offset, cu, callback);
14479
14480   found_base = cu->base_known;
14481   base = cu->base_address;
14482
14483   dwarf2_read_section (objfile, &dwarf2_per_objfile->ranges);
14484   if (offset >= dwarf2_per_objfile->ranges.size)
14485     {
14486       complaint (_("Offset %d out of bounds for DW_AT_ranges attribute"),
14487                  offset);
14488       return 0;
14489     }
14490   buffer = dwarf2_per_objfile->ranges.buffer + offset;
14491
14492   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
14493
14494   while (1)
14495     {
14496       CORE_ADDR range_beginning, range_end;
14497
14498       range_beginning = read_address (obfd, buffer, cu, &dummy);
14499       buffer += addr_size;
14500       range_end = read_address (obfd, buffer, cu, &dummy);
14501       buffer += addr_size;
14502       offset += 2 * addr_size;
14503
14504       /* An end of list marker is a pair of zero addresses.  */
14505       if (range_beginning == 0 && range_end == 0)
14506         /* Found the end of list entry.  */
14507         break;
14508
14509       /* Each base address selection entry is a pair of 2 values.
14510          The first is the largest possible address, the second is
14511          the base address.  Check for a base address here.  */
14512       if ((range_beginning & mask) == mask)
14513         {
14514           /* If we found the largest possible address, then we already
14515              have the base address in range_end.  */
14516           base = range_end;
14517           found_base = 1;
14518           continue;
14519         }
14520
14521       if (!found_base)
14522         {
14523           /* We have no valid base address for the ranges
14524              data.  */
14525           complaint (_("Invalid .debug_ranges data (no base address)"));
14526           return 0;
14527         }
14528
14529       if (range_beginning > range_end)
14530         {
14531           /* Inverted range entries are invalid.  */
14532           complaint (_("Invalid .debug_ranges data (inverted range)"));
14533           return 0;
14534         }
14535
14536       /* Empty range entries have no effect.  */
14537       if (range_beginning == range_end)
14538         continue;
14539
14540       range_beginning += base;
14541       range_end += base;
14542
14543       /* A not-uncommon case of bad debug info.
14544          Don't pollute the addrmap with bad data.  */
14545       if (range_beginning + baseaddr == 0
14546           && !dwarf2_per_objfile->has_section_at_zero)
14547         {
14548           complaint (_(".debug_ranges entry has start address of zero"
14549                        " [in module %s]"), objfile_name (objfile));
14550           continue;
14551         }
14552
14553       callback (range_beginning, range_end);
14554     }
14555
14556   return 1;
14557 }
14558
14559 /* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
14560    Return 1 if the attributes are present and valid, otherwise, return 0.
14561    If RANGES_PST is not NULL we should setup `objfile->psymtabs_addrmap'.  */
14562
14563 static int
14564 dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
14565                     CORE_ADDR *high_return, struct dwarf2_cu *cu,
14566                     struct partial_symtab *ranges_pst)
14567 {
14568   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14569   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14570   const CORE_ADDR baseaddr = ANOFFSET (objfile->section_offsets,
14571                                        SECT_OFF_TEXT (objfile));
14572   int low_set = 0;
14573   CORE_ADDR low = 0;
14574   CORE_ADDR high = 0;
14575   int retval;
14576
14577   retval = dwarf2_ranges_process (offset, cu,
14578     [&] (CORE_ADDR range_beginning, CORE_ADDR range_end)
14579     {
14580       if (ranges_pst != NULL)
14581         {
14582           CORE_ADDR lowpc;
14583           CORE_ADDR highpc;
14584
14585           lowpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14586                                                range_beginning + baseaddr)
14587                    - baseaddr);
14588           highpc = (gdbarch_adjust_dwarf2_addr (gdbarch,
14589                                                 range_end + baseaddr)
14590                     - baseaddr);
14591           addrmap_set_empty (objfile->psymtabs_addrmap, lowpc, highpc - 1,
14592                              ranges_pst);
14593         }
14594
14595       /* FIXME: This is recording everything as a low-high
14596          segment of consecutive addresses.  We should have a
14597          data structure for discontiguous block ranges
14598          instead.  */
14599       if (! low_set)
14600         {
14601           low = range_beginning;
14602           high = range_end;
14603           low_set = 1;
14604         }
14605       else
14606         {
14607           if (range_beginning < low)
14608             low = range_beginning;
14609           if (range_end > high)
14610             high = range_end;
14611         }
14612     });
14613   if (!retval)
14614     return 0;
14615
14616   if (! low_set)
14617     /* If the first entry is an end-of-list marker, the range
14618        describes an empty scope, i.e. no instructions.  */
14619     return 0;
14620
14621   if (low_return)
14622     *low_return = low;
14623   if (high_return)
14624     *high_return = high;
14625   return 1;
14626 }
14627
14628 /* Get low and high pc attributes from a die.  See enum pc_bounds_kind
14629    definition for the return value.  *LOWPC and *HIGHPC are set iff
14630    neither PC_BOUNDS_NOT_PRESENT nor PC_BOUNDS_INVALID are returned.  */
14631
14632 static enum pc_bounds_kind
14633 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
14634                       CORE_ADDR *highpc, struct dwarf2_cu *cu,
14635                       struct partial_symtab *pst)
14636 {
14637   struct dwarf2_per_objfile *dwarf2_per_objfile
14638     = cu->per_cu->dwarf2_per_objfile;
14639   struct attribute *attr;
14640   struct attribute *attr_high;
14641   CORE_ADDR low = 0;
14642   CORE_ADDR high = 0;
14643   enum pc_bounds_kind ret;
14644
14645   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14646   if (attr_high)
14647     {
14648       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14649       if (attr)
14650         {
14651           low = attr_value_as_address (attr);
14652           high = attr_value_as_address (attr_high);
14653           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14654             high += low;
14655         }
14656       else
14657         /* Found high w/o low attribute.  */
14658         return PC_BOUNDS_INVALID;
14659
14660       /* Found consecutive range of addresses.  */
14661       ret = PC_BOUNDS_HIGH_LOW;
14662     }
14663   else
14664     {
14665       attr = dwarf2_attr (die, DW_AT_ranges, cu);
14666       if (attr != NULL)
14667         {
14668           /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14669              We take advantage of the fact that DW_AT_ranges does not appear
14670              in DW_TAG_compile_unit of DWO files.  */
14671           int need_ranges_base = die->tag != DW_TAG_compile_unit;
14672           unsigned int ranges_offset = (DW_UNSND (attr)
14673                                         + (need_ranges_base
14674                                            ? cu->ranges_base
14675                                            : 0));
14676
14677           /* Value of the DW_AT_ranges attribute is the offset in the
14678              .debug_ranges section.  */
14679           if (!dwarf2_ranges_read (ranges_offset, &low, &high, cu, pst))
14680             return PC_BOUNDS_INVALID;
14681           /* Found discontinuous range of addresses.  */
14682           ret = PC_BOUNDS_RANGES;
14683         }
14684       else
14685         return PC_BOUNDS_NOT_PRESENT;
14686     }
14687
14688   /* partial_die_info::read has also the strict LOW < HIGH requirement.  */
14689   if (high <= low)
14690     return PC_BOUNDS_INVALID;
14691
14692   /* When using the GNU linker, .gnu.linkonce. sections are used to
14693      eliminate duplicate copies of functions and vtables and such.
14694      The linker will arbitrarily choose one and discard the others.
14695      The AT_*_pc values for such functions refer to local labels in
14696      these sections.  If the section from that file was discarded, the
14697      labels are not in the output, so the relocs get a value of 0.
14698      If this is a discarded function, mark the pc bounds as invalid,
14699      so that GDB will ignore it.  */
14700   if (low == 0 && !dwarf2_per_objfile->has_section_at_zero)
14701     return PC_BOUNDS_INVALID;
14702
14703   *lowpc = low;
14704   if (highpc)
14705     *highpc = high;
14706   return ret;
14707 }
14708
14709 /* Assuming that DIE represents a subprogram DIE or a lexical block, get
14710    its low and high PC addresses.  Do nothing if these addresses could not
14711    be determined.  Otherwise, set LOWPC to the low address if it is smaller,
14712    and HIGHPC to the high address if greater than HIGHPC.  */
14713
14714 static void
14715 dwarf2_get_subprogram_pc_bounds (struct die_info *die,
14716                                  CORE_ADDR *lowpc, CORE_ADDR *highpc,
14717                                  struct dwarf2_cu *cu)
14718 {
14719   CORE_ADDR low, high;
14720   struct die_info *child = die->child;
14721
14722   if (dwarf2_get_pc_bounds (die, &low, &high, cu, NULL) >= PC_BOUNDS_RANGES)
14723     {
14724       *lowpc = std::min (*lowpc, low);
14725       *highpc = std::max (*highpc, high);
14726     }
14727
14728   /* If the language does not allow nested subprograms (either inside
14729      subprograms or lexical blocks), we're done.  */
14730   if (cu->language != language_ada)
14731     return;
14732
14733   /* Check all the children of the given DIE.  If it contains nested
14734      subprograms, then check their pc bounds.  Likewise, we need to
14735      check lexical blocks as well, as they may also contain subprogram
14736      definitions.  */
14737   while (child && child->tag)
14738     {
14739       if (child->tag == DW_TAG_subprogram
14740           || child->tag == DW_TAG_lexical_block)
14741         dwarf2_get_subprogram_pc_bounds (child, lowpc, highpc, cu);
14742       child = sibling_die (child);
14743     }
14744 }
14745
14746 /* Get the low and high pc's represented by the scope DIE, and store
14747    them in *LOWPC and *HIGHPC.  If the correct values can't be
14748    determined, set *LOWPC to -1 and *HIGHPC to 0.  */
14749
14750 static void
14751 get_scope_pc_bounds (struct die_info *die,
14752                      CORE_ADDR *lowpc, CORE_ADDR *highpc,
14753                      struct dwarf2_cu *cu)
14754 {
14755   CORE_ADDR best_low = (CORE_ADDR) -1;
14756   CORE_ADDR best_high = (CORE_ADDR) 0;
14757   CORE_ADDR current_low, current_high;
14758
14759   if (dwarf2_get_pc_bounds (die, &current_low, &current_high, cu, NULL)
14760       >= PC_BOUNDS_RANGES)
14761     {
14762       best_low = current_low;
14763       best_high = current_high;
14764     }
14765   else
14766     {
14767       struct die_info *child = die->child;
14768
14769       while (child && child->tag)
14770         {
14771           switch (child->tag) {
14772           case DW_TAG_subprogram:
14773             dwarf2_get_subprogram_pc_bounds (child, &best_low, &best_high, cu);
14774             break;
14775           case DW_TAG_namespace:
14776           case DW_TAG_module:
14777             /* FIXME: carlton/2004-01-16: Should we do this for
14778                DW_TAG_class_type/DW_TAG_structure_type, too?  I think
14779                that current GCC's always emit the DIEs corresponding
14780                to definitions of methods of classes as children of a
14781                DW_TAG_compile_unit or DW_TAG_namespace (as opposed to
14782                the DIEs giving the declarations, which could be
14783                anywhere).  But I don't see any reason why the
14784                standards says that they have to be there.  */
14785             get_scope_pc_bounds (child, &current_low, &current_high, cu);
14786
14787             if (current_low != ((CORE_ADDR) -1))
14788               {
14789                 best_low = std::min (best_low, current_low);
14790                 best_high = std::max (best_high, current_high);
14791               }
14792             break;
14793           default:
14794             /* Ignore.  */
14795             break;
14796           }
14797
14798           child = sibling_die (child);
14799         }
14800     }
14801
14802   *lowpc = best_low;
14803   *highpc = best_high;
14804 }
14805
14806 /* Record the address ranges for BLOCK, offset by BASEADDR, as given
14807    in DIE.  */
14808
14809 static void
14810 dwarf2_record_block_ranges (struct die_info *die, struct block *block,
14811                             CORE_ADDR baseaddr, struct dwarf2_cu *cu)
14812 {
14813   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14814   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14815   struct attribute *attr;
14816   struct attribute *attr_high;
14817
14818   attr_high = dwarf2_attr (die, DW_AT_high_pc, cu);
14819   if (attr_high)
14820     {
14821       attr = dwarf2_attr (die, DW_AT_low_pc, cu);
14822       if (attr)
14823         {
14824           CORE_ADDR low = attr_value_as_address (attr);
14825           CORE_ADDR high = attr_value_as_address (attr_high);
14826
14827           if (cu->header.version >= 4 && attr_form_is_constant (attr_high))
14828             high += low;
14829
14830           low = gdbarch_adjust_dwarf2_addr (gdbarch, low + baseaddr);
14831           high = gdbarch_adjust_dwarf2_addr (gdbarch, high + baseaddr);
14832           cu->builder->record_block_range (block, low, high - 1);
14833         }
14834     }
14835
14836   attr = dwarf2_attr (die, DW_AT_ranges, cu);
14837   if (attr)
14838     {
14839       /* DW_AT_ranges_base does not apply to DIEs from the DWO skeleton.
14840          We take advantage of the fact that DW_AT_ranges does not appear
14841          in DW_TAG_compile_unit of DWO files.  */
14842       int need_ranges_base = die->tag != DW_TAG_compile_unit;
14843
14844       /* The value of the DW_AT_ranges attribute is the offset of the
14845          address range list in the .debug_ranges section.  */
14846       unsigned long offset = (DW_UNSND (attr)
14847                               + (need_ranges_base ? cu->ranges_base : 0));
14848
14849       std::vector<blockrange> blockvec;
14850       dwarf2_ranges_process (offset, cu,
14851         [&] (CORE_ADDR start, CORE_ADDR end)
14852         {
14853           start += baseaddr;
14854           end += baseaddr;
14855           start = gdbarch_adjust_dwarf2_addr (gdbarch, start);
14856           end = gdbarch_adjust_dwarf2_addr (gdbarch, end);
14857           cu->builder->record_block_range (block, start, end - 1);
14858           blockvec.emplace_back (start, end);
14859         });
14860
14861       BLOCK_RANGES(block) = make_blockranges (objfile, blockvec);
14862     }
14863 }
14864
14865 /* Check whether the producer field indicates either of GCC < 4.6, or the
14866    Intel C/C++ compiler, and cache the result in CU.  */
14867
14868 static void
14869 check_producer (struct dwarf2_cu *cu)
14870 {
14871   int major, minor;
14872
14873   if (cu->producer == NULL)
14874     {
14875       /* For unknown compilers expect their behavior is DWARF version
14876          compliant.
14877
14878          GCC started to support .debug_types sections by -gdwarf-4 since
14879          gcc-4.5.x.  As the .debug_types sections are missing DW_AT_producer
14880          for their space efficiency GDB cannot workaround gcc-4.5.x -gdwarf-4
14881          combination.  gcc-4.5.x -gdwarf-4 binaries have DW_AT_accessibility
14882          interpreted incorrectly by GDB now - GCC PR debug/48229.  */
14883     }
14884   else if (producer_is_gcc (cu->producer, &major, &minor))
14885     {
14886       cu->producer_is_gxx_lt_4_6 = major < 4 || (major == 4 && minor < 6);
14887       cu->producer_is_gcc_lt_4_3 = major < 4 || (major == 4 && minor < 3);
14888     }
14889   else if (producer_is_icc (cu->producer, &major, &minor))
14890     cu->producer_is_icc_lt_14 = major < 14;
14891   else
14892     {
14893       /* For other non-GCC compilers, expect their behavior is DWARF version
14894          compliant.  */
14895     }
14896
14897   cu->checked_producer = 1;
14898 }
14899
14900 /* Check for GCC PR debug/45124 fix which is not present in any G++ version up
14901    to 4.5.any while it is present already in G++ 4.6.0 - the PR has been fixed
14902    during 4.6.0 experimental.  */
14903
14904 static int
14905 producer_is_gxx_lt_4_6 (struct dwarf2_cu *cu)
14906 {
14907   if (!cu->checked_producer)
14908     check_producer (cu);
14909
14910   return cu->producer_is_gxx_lt_4_6;
14911 }
14912
14913 /* Return the default accessibility type if it is not overriden by
14914    DW_AT_accessibility.  */
14915
14916 static enum dwarf_access_attribute
14917 dwarf2_default_access_attribute (struct die_info *die, struct dwarf2_cu *cu)
14918 {
14919   if (cu->header.version < 3 || producer_is_gxx_lt_4_6 (cu))
14920     {
14921       /* The default DWARF 2 accessibility for members is public, the default
14922          accessibility for inheritance is private.  */
14923
14924       if (die->tag != DW_TAG_inheritance)
14925         return DW_ACCESS_public;
14926       else
14927         return DW_ACCESS_private;
14928     }
14929   else
14930     {
14931       /* DWARF 3+ defines the default accessibility a different way.  The same
14932          rules apply now for DW_TAG_inheritance as for the members and it only
14933          depends on the container kind.  */
14934
14935       if (die->parent->tag == DW_TAG_class_type)
14936         return DW_ACCESS_private;
14937       else
14938         return DW_ACCESS_public;
14939     }
14940 }
14941
14942 /* Look for DW_AT_data_member_location.  Set *OFFSET to the byte
14943    offset.  If the attribute was not found return 0, otherwise return
14944    1.  If it was found but could not properly be handled, set *OFFSET
14945    to 0.  */
14946
14947 static int
14948 handle_data_member_location (struct die_info *die, struct dwarf2_cu *cu,
14949                              LONGEST *offset)
14950 {
14951   struct attribute *attr;
14952
14953   attr = dwarf2_attr (die, DW_AT_data_member_location, cu);
14954   if (attr != NULL)
14955     {
14956       *offset = 0;
14957
14958       /* Note that we do not check for a section offset first here.
14959          This is because DW_AT_data_member_location is new in DWARF 4,
14960          so if we see it, we can assume that a constant form is really
14961          a constant and not a section offset.  */
14962       if (attr_form_is_constant (attr))
14963         *offset = dwarf2_get_attr_constant_value (attr, 0);
14964       else if (attr_form_is_section_offset (attr))
14965         dwarf2_complex_location_expr_complaint ();
14966       else if (attr_form_is_block (attr))
14967         *offset = decode_locdesc (DW_BLOCK (attr), cu);
14968       else
14969         dwarf2_complex_location_expr_complaint ();
14970
14971       return 1;
14972     }
14973
14974   return 0;
14975 }
14976
14977 /* Add an aggregate field to the field list.  */
14978
14979 static void
14980 dwarf2_add_field (struct field_info *fip, struct die_info *die,
14981                   struct dwarf2_cu *cu)
14982 {
14983   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
14984   struct gdbarch *gdbarch = get_objfile_arch (objfile);
14985   struct nextfield *new_field;
14986   struct attribute *attr;
14987   struct field *fp;
14988   const char *fieldname = "";
14989
14990   if (die->tag == DW_TAG_inheritance)
14991     {
14992       fip->baseclasses.emplace_back ();
14993       new_field = &fip->baseclasses.back ();
14994     }
14995   else
14996     {
14997       fip->fields.emplace_back ();
14998       new_field = &fip->fields.back ();
14999     }
15000
15001   fip->nfields++;
15002
15003   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15004   if (attr)
15005     new_field->accessibility = DW_UNSND (attr);
15006   else
15007     new_field->accessibility = dwarf2_default_access_attribute (die, cu);
15008   if (new_field->accessibility != DW_ACCESS_public)
15009     fip->non_public_fields = 1;
15010
15011   attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15012   if (attr)
15013     new_field->virtuality = DW_UNSND (attr);
15014   else
15015     new_field->virtuality = DW_VIRTUALITY_none;
15016
15017   fp = &new_field->field;
15018
15019   if (die->tag == DW_TAG_member && ! die_is_declaration (die, cu))
15020     {
15021       LONGEST offset;
15022
15023       /* Data member other than a C++ static data member.  */
15024
15025       /* Get type of field.  */
15026       fp->type = die_type (die, cu);
15027
15028       SET_FIELD_BITPOS (*fp, 0);
15029
15030       /* Get bit size of field (zero if none).  */
15031       attr = dwarf2_attr (die, DW_AT_bit_size, cu);
15032       if (attr)
15033         {
15034           FIELD_BITSIZE (*fp) = DW_UNSND (attr);
15035         }
15036       else
15037         {
15038           FIELD_BITSIZE (*fp) = 0;
15039         }
15040
15041       /* Get bit offset of field.  */
15042       if (handle_data_member_location (die, cu, &offset))
15043         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15044       attr = dwarf2_attr (die, DW_AT_bit_offset, cu);
15045       if (attr)
15046         {
15047           if (gdbarch_bits_big_endian (gdbarch))
15048             {
15049               /* For big endian bits, the DW_AT_bit_offset gives the
15050                  additional bit offset from the MSB of the containing
15051                  anonymous object to the MSB of the field.  We don't
15052                  have to do anything special since we don't need to
15053                  know the size of the anonymous object.  */
15054               SET_FIELD_BITPOS (*fp, FIELD_BITPOS (*fp) + DW_UNSND (attr));
15055             }
15056           else
15057             {
15058               /* For little endian bits, compute the bit offset to the
15059                  MSB of the anonymous object, subtract off the number of
15060                  bits from the MSB of the field to the MSB of the
15061                  object, and then subtract off the number of bits of
15062                  the field itself.  The result is the bit offset of
15063                  the LSB of the field.  */
15064               int anonymous_size;
15065               int bit_offset = DW_UNSND (attr);
15066
15067               attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15068               if (attr)
15069                 {
15070                   /* The size of the anonymous object containing
15071                      the bit field is explicit, so use the
15072                      indicated size (in bytes).  */
15073                   anonymous_size = DW_UNSND (attr);
15074                 }
15075               else
15076                 {
15077                   /* The size of the anonymous object containing
15078                      the bit field must be inferred from the type
15079                      attribute of the data member containing the
15080                      bit field.  */
15081                   anonymous_size = TYPE_LENGTH (fp->type);
15082                 }
15083               SET_FIELD_BITPOS (*fp,
15084                                 (FIELD_BITPOS (*fp)
15085                                  + anonymous_size * bits_per_byte
15086                                  - bit_offset - FIELD_BITSIZE (*fp)));
15087             }
15088         }
15089       attr = dwarf2_attr (die, DW_AT_data_bit_offset, cu);
15090       if (attr != NULL)
15091         SET_FIELD_BITPOS (*fp, (FIELD_BITPOS (*fp)
15092                                 + dwarf2_get_attr_constant_value (attr, 0)));
15093
15094       /* Get name of field.  */
15095       fieldname = dwarf2_name (die, cu);
15096       if (fieldname == NULL)
15097         fieldname = "";
15098
15099       /* The name is already allocated along with this objfile, so we don't
15100          need to duplicate it for the type.  */
15101       fp->name = fieldname;
15102
15103       /* Change accessibility for artificial fields (e.g. virtual table
15104          pointer or virtual base class pointer) to private.  */
15105       if (dwarf2_attr (die, DW_AT_artificial, cu))
15106         {
15107           FIELD_ARTIFICIAL (*fp) = 1;
15108           new_field->accessibility = DW_ACCESS_private;
15109           fip->non_public_fields = 1;
15110         }
15111     }
15112   else if (die->tag == DW_TAG_member || die->tag == DW_TAG_variable)
15113     {
15114       /* C++ static member.  */
15115
15116       /* NOTE: carlton/2002-11-05: It should be a DW_TAG_member that
15117          is a declaration, but all versions of G++ as of this writing
15118          (so through at least 3.2.1) incorrectly generate
15119          DW_TAG_variable tags.  */
15120
15121       const char *physname;
15122
15123       /* Get name of field.  */
15124       fieldname = dwarf2_name (die, cu);
15125       if (fieldname == NULL)
15126         return;
15127
15128       attr = dwarf2_attr (die, DW_AT_const_value, cu);
15129       if (attr
15130           /* Only create a symbol if this is an external value.
15131              new_symbol checks this and puts the value in the global symbol
15132              table, which we want.  If it is not external, new_symbol
15133              will try to put the value in cu->list_in_scope which is wrong.  */
15134           && dwarf2_flag_true_p (die, DW_AT_external, cu))
15135         {
15136           /* A static const member, not much different than an enum as far as
15137              we're concerned, except that we can support more types.  */
15138           new_symbol (die, NULL, cu);
15139         }
15140
15141       /* Get physical name.  */
15142       physname = dwarf2_physname (fieldname, die, cu);
15143
15144       /* The name is already allocated along with this objfile, so we don't
15145          need to duplicate it for the type.  */
15146       SET_FIELD_PHYSNAME (*fp, physname ? physname : "");
15147       FIELD_TYPE (*fp) = die_type (die, cu);
15148       FIELD_NAME (*fp) = fieldname;
15149     }
15150   else if (die->tag == DW_TAG_inheritance)
15151     {
15152       LONGEST offset;
15153
15154       /* C++ base class field.  */
15155       if (handle_data_member_location (die, cu, &offset))
15156         SET_FIELD_BITPOS (*fp, offset * bits_per_byte);
15157       FIELD_BITSIZE (*fp) = 0;
15158       FIELD_TYPE (*fp) = die_type (die, cu);
15159       FIELD_NAME (*fp) = TYPE_NAME (fp->type);
15160     }
15161   else if (die->tag == DW_TAG_variant_part)
15162     {
15163       /* process_structure_scope will treat this DIE as a union.  */
15164       process_structure_scope (die, cu);
15165
15166       /* The variant part is relative to the start of the enclosing
15167          structure.  */
15168       SET_FIELD_BITPOS (*fp, 0);
15169       fp->type = get_die_type (die, cu);
15170       fp->artificial = 1;
15171       fp->name = "<<variant>>";
15172     }
15173   else
15174     gdb_assert_not_reached ("missing case in dwarf2_add_field");
15175 }
15176
15177 /* Can the type given by DIE define another type?  */
15178
15179 static bool
15180 type_can_define_types (const struct die_info *die)
15181 {
15182   switch (die->tag)
15183     {
15184     case DW_TAG_typedef:
15185     case DW_TAG_class_type:
15186     case DW_TAG_structure_type:
15187     case DW_TAG_union_type:
15188     case DW_TAG_enumeration_type:
15189       return true;
15190
15191     default:
15192       return false;
15193     }
15194 }
15195
15196 /* Add a type definition defined in the scope of the FIP's class.  */
15197
15198 static void
15199 dwarf2_add_type_defn (struct field_info *fip, struct die_info *die,
15200                       struct dwarf2_cu *cu)
15201 {
15202   struct decl_field fp;
15203   memset (&fp, 0, sizeof (fp));
15204
15205   gdb_assert (type_can_define_types (die));
15206
15207   /* Get name of field.  NULL is okay here, meaning an anonymous type.  */
15208   fp.name = dwarf2_name (die, cu);
15209   fp.type = read_type_die (die, cu);
15210
15211   /* Save accessibility.  */
15212   enum dwarf_access_attribute accessibility;
15213   struct attribute *attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15214   if (attr != NULL)
15215     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15216   else
15217     accessibility = dwarf2_default_access_attribute (die, cu);
15218   switch (accessibility)
15219     {
15220     case DW_ACCESS_public:
15221       /* The assumed value if neither private nor protected.  */
15222       break;
15223     case DW_ACCESS_private:
15224       fp.is_private = 1;
15225       break;
15226     case DW_ACCESS_protected:
15227       fp.is_protected = 1;
15228       break;
15229     default:
15230       complaint (_("Unhandled DW_AT_accessibility value (%x)"), accessibility);
15231     }
15232
15233   if (die->tag == DW_TAG_typedef)
15234     fip->typedef_field_list.push_back (fp);
15235   else
15236     fip->nested_types_list.push_back (fp);
15237 }
15238
15239 /* Create the vector of fields, and attach it to the type.  */
15240
15241 static void
15242 dwarf2_attach_fields_to_type (struct field_info *fip, struct type *type,
15243                               struct dwarf2_cu *cu)
15244 {
15245   int nfields = fip->nfields;
15246
15247   /* Record the field count, allocate space for the array of fields,
15248      and create blank accessibility bitfields if necessary.  */
15249   TYPE_NFIELDS (type) = nfields;
15250   TYPE_FIELDS (type) = (struct field *)
15251     TYPE_ZALLOC (type, sizeof (struct field) * nfields);
15252
15253   if (fip->non_public_fields && cu->language != language_ada)
15254     {
15255       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15256
15257       TYPE_FIELD_PRIVATE_BITS (type) =
15258         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15259       B_CLRALL (TYPE_FIELD_PRIVATE_BITS (type), nfields);
15260
15261       TYPE_FIELD_PROTECTED_BITS (type) =
15262         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15263       B_CLRALL (TYPE_FIELD_PROTECTED_BITS (type), nfields);
15264
15265       TYPE_FIELD_IGNORE_BITS (type) =
15266         (B_TYPE *) TYPE_ALLOC (type, B_BYTES (nfields));
15267       B_CLRALL (TYPE_FIELD_IGNORE_BITS (type), nfields);
15268     }
15269
15270   /* If the type has baseclasses, allocate and clear a bit vector for
15271      TYPE_FIELD_VIRTUAL_BITS.  */
15272   if (!fip->baseclasses.empty () && cu->language != language_ada)
15273     {
15274       int num_bytes = B_BYTES (fip->baseclasses.size ());
15275       unsigned char *pointer;
15276
15277       ALLOCATE_CPLUS_STRUCT_TYPE (type);
15278       pointer = (unsigned char *) TYPE_ALLOC (type, num_bytes);
15279       TYPE_FIELD_VIRTUAL_BITS (type) = pointer;
15280       B_CLRALL (TYPE_FIELD_VIRTUAL_BITS (type), fip->baseclasses.size ());
15281       TYPE_N_BASECLASSES (type) = fip->baseclasses.size ();
15282     }
15283
15284   if (TYPE_FLAG_DISCRIMINATED_UNION (type))
15285     {
15286       struct discriminant_info *di = alloc_discriminant_info (type, -1, -1);
15287
15288       for (int index = 0; index < nfields; ++index)
15289         {
15290           struct nextfield &field = fip->fields[index];
15291
15292           if (field.variant.is_discriminant)
15293             di->discriminant_index = index;
15294           else if (field.variant.default_branch)
15295             di->default_index = index;
15296           else
15297             di->discriminants[index] = field.variant.discriminant_value;
15298         }
15299     }
15300
15301   /* Copy the saved-up fields into the field vector.  */
15302   for (int i = 0; i < nfields; ++i)
15303     {
15304       struct nextfield &field
15305         = ((i < fip->baseclasses.size ()) ? fip->baseclasses[i]
15306            : fip->fields[i - fip->baseclasses.size ()]);
15307
15308       TYPE_FIELD (type, i) = field.field;
15309       switch (field.accessibility)
15310         {
15311         case DW_ACCESS_private:
15312           if (cu->language != language_ada)
15313             SET_TYPE_FIELD_PRIVATE (type, i);
15314           break;
15315
15316         case DW_ACCESS_protected:
15317           if (cu->language != language_ada)
15318             SET_TYPE_FIELD_PROTECTED (type, i);
15319           break;
15320
15321         case DW_ACCESS_public:
15322           break;
15323
15324         default:
15325           /* Unknown accessibility.  Complain and treat it as public.  */
15326           {
15327             complaint (_("unsupported accessibility %d"),
15328                        field.accessibility);
15329           }
15330           break;
15331         }
15332       if (i < fip->baseclasses.size ())
15333         {
15334           switch (field.virtuality)
15335             {
15336             case DW_VIRTUALITY_virtual:
15337             case DW_VIRTUALITY_pure_virtual:
15338               if (cu->language == language_ada)
15339                 error (_("unexpected virtuality in component of Ada type"));
15340               SET_TYPE_FIELD_VIRTUAL (type, i);
15341               break;
15342             }
15343         }
15344     }
15345 }
15346
15347 /* Return true if this member function is a constructor, false
15348    otherwise.  */
15349
15350 static int
15351 dwarf2_is_constructor (struct die_info *die, struct dwarf2_cu *cu)
15352 {
15353   const char *fieldname;
15354   const char *type_name;
15355   int len;
15356
15357   if (die->parent == NULL)
15358     return 0;
15359
15360   if (die->parent->tag != DW_TAG_structure_type
15361       && die->parent->tag != DW_TAG_union_type
15362       && die->parent->tag != DW_TAG_class_type)
15363     return 0;
15364
15365   fieldname = dwarf2_name (die, cu);
15366   type_name = dwarf2_name (die->parent, cu);
15367   if (fieldname == NULL || type_name == NULL)
15368     return 0;
15369
15370   len = strlen (fieldname);
15371   return (strncmp (fieldname, type_name, len) == 0
15372           && (type_name[len] == '\0' || type_name[len] == '<'));
15373 }
15374
15375 /* Add a member function to the proper fieldlist.  */
15376
15377 static void
15378 dwarf2_add_member_fn (struct field_info *fip, struct die_info *die,
15379                       struct type *type, struct dwarf2_cu *cu)
15380 {
15381   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15382   struct attribute *attr;
15383   int i;
15384   struct fnfieldlist *flp = nullptr;
15385   struct fn_field *fnp;
15386   const char *fieldname;
15387   struct type *this_type;
15388   enum dwarf_access_attribute accessibility;
15389
15390   if (cu->language == language_ada)
15391     error (_("unexpected member function in Ada type"));
15392
15393   /* Get name of member function.  */
15394   fieldname = dwarf2_name (die, cu);
15395   if (fieldname == NULL)
15396     return;
15397
15398   /* Look up member function name in fieldlist.  */
15399   for (i = 0; i < fip->fnfieldlists.size (); i++)
15400     {
15401       if (strcmp (fip->fnfieldlists[i].name, fieldname) == 0)
15402         {
15403           flp = &fip->fnfieldlists[i];
15404           break;
15405         }
15406     }
15407
15408   /* Create a new fnfieldlist if necessary.  */
15409   if (flp == nullptr)
15410     {
15411       fip->fnfieldlists.emplace_back ();
15412       flp = &fip->fnfieldlists.back ();
15413       flp->name = fieldname;
15414       i = fip->fnfieldlists.size () - 1;
15415     }
15416
15417   /* Create a new member function field and add it to the vector of
15418      fnfieldlists.  */
15419   flp->fnfields.emplace_back ();
15420   fnp = &flp->fnfields.back ();
15421
15422   /* Delay processing of the physname until later.  */
15423   if (cu->language == language_cplus)
15424     add_to_method_list (type, i, flp->fnfields.size () - 1, fieldname,
15425                         die, cu);
15426   else
15427     {
15428       const char *physname = dwarf2_physname (fieldname, die, cu);
15429       fnp->physname = physname ? physname : "";
15430     }
15431
15432   fnp->type = alloc_type (objfile);
15433   this_type = read_type_die (die, cu);
15434   if (this_type && TYPE_CODE (this_type) == TYPE_CODE_FUNC)
15435     {
15436       int nparams = TYPE_NFIELDS (this_type);
15437
15438       /* TYPE is the domain of this method, and THIS_TYPE is the type
15439            of the method itself (TYPE_CODE_METHOD).  */
15440       smash_to_method_type (fnp->type, type,
15441                             TYPE_TARGET_TYPE (this_type),
15442                             TYPE_FIELDS (this_type),
15443                             TYPE_NFIELDS (this_type),
15444                             TYPE_VARARGS (this_type));
15445
15446       /* Handle static member functions.
15447          Dwarf2 has no clean way to discern C++ static and non-static
15448          member functions.  G++ helps GDB by marking the first
15449          parameter for non-static member functions (which is the this
15450          pointer) as artificial.  We obtain this information from
15451          read_subroutine_type via TYPE_FIELD_ARTIFICIAL.  */
15452       if (nparams == 0 || TYPE_FIELD_ARTIFICIAL (this_type, 0) == 0)
15453         fnp->voffset = VOFFSET_STATIC;
15454     }
15455   else
15456     complaint (_("member function type missing for '%s'"),
15457                dwarf2_full_name (fieldname, die, cu));
15458
15459   /* Get fcontext from DW_AT_containing_type if present.  */
15460   if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
15461     fnp->fcontext = die_containing_type (die, cu);
15462
15463   /* dwarf2 doesn't have stubbed physical names, so the setting of is_const and
15464      is_volatile is irrelevant, as it is needed by gdb_mangle_name only.  */
15465
15466   /* Get accessibility.  */
15467   attr = dwarf2_attr (die, DW_AT_accessibility, cu);
15468   if (attr)
15469     accessibility = (enum dwarf_access_attribute) DW_UNSND (attr);
15470   else
15471     accessibility = dwarf2_default_access_attribute (die, cu);
15472   switch (accessibility)
15473     {
15474     case DW_ACCESS_private:
15475       fnp->is_private = 1;
15476       break;
15477     case DW_ACCESS_protected:
15478       fnp->is_protected = 1;
15479       break;
15480     }
15481
15482   /* Check for artificial methods.  */
15483   attr = dwarf2_attr (die, DW_AT_artificial, cu);
15484   if (attr && DW_UNSND (attr) != 0)
15485     fnp->is_artificial = 1;
15486
15487   fnp->is_constructor = dwarf2_is_constructor (die, cu);
15488
15489   /* Get index in virtual function table if it is a virtual member
15490      function.  For older versions of GCC, this is an offset in the
15491      appropriate virtual table, as specified by DW_AT_containing_type.
15492      For everyone else, it is an expression to be evaluated relative
15493      to the object address.  */
15494
15495   attr = dwarf2_attr (die, DW_AT_vtable_elem_location, cu);
15496   if (attr)
15497     {
15498       if (attr_form_is_block (attr) && DW_BLOCK (attr)->size > 0)
15499         {
15500           if (DW_BLOCK (attr)->data[0] == DW_OP_constu)
15501             {
15502               /* Old-style GCC.  */
15503               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu) + 2;
15504             }
15505           else if (DW_BLOCK (attr)->data[0] == DW_OP_deref
15506                    || (DW_BLOCK (attr)->size > 1
15507                        && DW_BLOCK (attr)->data[0] == DW_OP_deref_size
15508                        && DW_BLOCK (attr)->data[1] == cu->header.addr_size))
15509             {
15510               fnp->voffset = decode_locdesc (DW_BLOCK (attr), cu);
15511               if ((fnp->voffset % cu->header.addr_size) != 0)
15512                 dwarf2_complex_location_expr_complaint ();
15513               else
15514                 fnp->voffset /= cu->header.addr_size;
15515               fnp->voffset += 2;
15516             }
15517           else
15518             dwarf2_complex_location_expr_complaint ();
15519
15520           if (!fnp->fcontext)
15521             {
15522               /* If there is no `this' field and no DW_AT_containing_type,
15523                  we cannot actually find a base class context for the
15524                  vtable!  */
15525               if (TYPE_NFIELDS (this_type) == 0
15526                   || !TYPE_FIELD_ARTIFICIAL (this_type, 0))
15527                 {
15528                   complaint (_("cannot determine context for virtual member "
15529                                "function \"%s\" (offset %s)"),
15530                              fieldname, sect_offset_str (die->sect_off));
15531                 }
15532               else
15533                 {
15534                   fnp->fcontext
15535                     = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (this_type, 0));
15536                 }
15537             }
15538         }
15539       else if (attr_form_is_section_offset (attr))
15540         {
15541           dwarf2_complex_location_expr_complaint ();
15542         }
15543       else
15544         {
15545           dwarf2_invalid_attrib_class_complaint ("DW_AT_vtable_elem_location",
15546                                                  fieldname);
15547         }
15548     }
15549   else
15550     {
15551       attr = dwarf2_attr (die, DW_AT_virtuality, cu);
15552       if (attr && DW_UNSND (attr))
15553         {
15554           /* GCC does this, as of 2008-08-25; PR debug/37237.  */
15555           complaint (_("Member function \"%s\" (offset %s) is virtual "
15556                        "but the vtable offset is not specified"),
15557                      fieldname, sect_offset_str (die->sect_off));
15558           ALLOCATE_CPLUS_STRUCT_TYPE (type);
15559           TYPE_CPLUS_DYNAMIC (type) = 1;
15560         }
15561     }
15562 }
15563
15564 /* Create the vector of member function fields, and attach it to the type.  */
15565
15566 static void
15567 dwarf2_attach_fn_fields_to_type (struct field_info *fip, struct type *type,
15568                                  struct dwarf2_cu *cu)
15569 {
15570   if (cu->language == language_ada)
15571     error (_("unexpected member functions in Ada type"));
15572
15573   ALLOCATE_CPLUS_STRUCT_TYPE (type);
15574   TYPE_FN_FIELDLISTS (type) = (struct fn_fieldlist *)
15575     TYPE_ALLOC (type,
15576                 sizeof (struct fn_fieldlist) * fip->fnfieldlists.size ());
15577
15578   for (int i = 0; i < fip->fnfieldlists.size (); i++)
15579     {
15580       struct fnfieldlist &nf = fip->fnfieldlists[i];
15581       struct fn_fieldlist *fn_flp = &TYPE_FN_FIELDLIST (type, i);
15582
15583       TYPE_FN_FIELDLIST_NAME (type, i) = nf.name;
15584       TYPE_FN_FIELDLIST_LENGTH (type, i) = nf.fnfields.size ();
15585       fn_flp->fn_fields = (struct fn_field *)
15586         TYPE_ALLOC (type, sizeof (struct fn_field) * nf.fnfields.size ());
15587
15588       for (int k = 0; k < nf.fnfields.size (); ++k)
15589         fn_flp->fn_fields[k] = nf.fnfields[k];
15590     }
15591
15592   TYPE_NFN_FIELDS (type) = fip->fnfieldlists.size ();
15593 }
15594
15595 /* Returns non-zero if NAME is the name of a vtable member in CU's
15596    language, zero otherwise.  */
15597 static int
15598 is_vtable_name (const char *name, struct dwarf2_cu *cu)
15599 {
15600   static const char vptr[] = "_vptr";
15601
15602   /* Look for the C++ form of the vtable.  */
15603   if (startswith (name, vptr) && is_cplus_marker (name[sizeof (vptr) - 1]))
15604     return 1;
15605
15606   return 0;
15607 }
15608
15609 /* GCC outputs unnamed structures that are really pointers to member
15610    functions, with the ABI-specified layout.  If TYPE describes
15611    such a structure, smash it into a member function type.
15612
15613    GCC shouldn't do this; it should just output pointer to member DIEs.
15614    This is GCC PR debug/28767.  */
15615
15616 static void
15617 quirk_gcc_member_function_pointer (struct type *type, struct objfile *objfile)
15618 {
15619   struct type *pfn_type, *self_type, *new_type;
15620
15621   /* Check for a structure with no name and two children.  */
15622   if (TYPE_CODE (type) != TYPE_CODE_STRUCT || TYPE_NFIELDS (type) != 2)
15623     return;
15624
15625   /* Check for __pfn and __delta members.  */
15626   if (TYPE_FIELD_NAME (type, 0) == NULL
15627       || strcmp (TYPE_FIELD_NAME (type, 0), "__pfn") != 0
15628       || TYPE_FIELD_NAME (type, 1) == NULL
15629       || strcmp (TYPE_FIELD_NAME (type, 1), "__delta") != 0)
15630     return;
15631
15632   /* Find the type of the method.  */
15633   pfn_type = TYPE_FIELD_TYPE (type, 0);
15634   if (pfn_type == NULL
15635       || TYPE_CODE (pfn_type) != TYPE_CODE_PTR
15636       || TYPE_CODE (TYPE_TARGET_TYPE (pfn_type)) != TYPE_CODE_FUNC)
15637     return;
15638
15639   /* Look for the "this" argument.  */
15640   pfn_type = TYPE_TARGET_TYPE (pfn_type);
15641   if (TYPE_NFIELDS (pfn_type) == 0
15642       /* || TYPE_FIELD_TYPE (pfn_type, 0) == NULL */
15643       || TYPE_CODE (TYPE_FIELD_TYPE (pfn_type, 0)) != TYPE_CODE_PTR)
15644     return;
15645
15646   self_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (pfn_type, 0));
15647   new_type = alloc_type (objfile);
15648   smash_to_method_type (new_type, self_type, TYPE_TARGET_TYPE (pfn_type),
15649                         TYPE_FIELDS (pfn_type), TYPE_NFIELDS (pfn_type),
15650                         TYPE_VARARGS (pfn_type));
15651   smash_to_methodptr_type (type, new_type);
15652 }
15653
15654 /* If the DIE has a DW_AT_alignment attribute, return its value, doing
15655    appropriate error checking and issuing complaints if there is a
15656    problem.  */
15657
15658 static ULONGEST
15659 get_alignment (struct dwarf2_cu *cu, struct die_info *die)
15660 {
15661   struct attribute *attr = dwarf2_attr (die, DW_AT_alignment, cu);
15662
15663   if (attr == nullptr)
15664     return 0;
15665
15666   if (!attr_form_is_constant (attr))
15667     {
15668       complaint (_("DW_AT_alignment must have constant form"
15669                    " - DIE at %s [in module %s]"),
15670                  sect_offset_str (die->sect_off),
15671                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15672       return 0;
15673     }
15674
15675   ULONGEST align;
15676   if (attr->form == DW_FORM_sdata)
15677     {
15678       LONGEST val = DW_SND (attr);
15679       if (val < 0)
15680         {
15681           complaint (_("DW_AT_alignment value must not be negative"
15682                        " - DIE at %s [in module %s]"),
15683                      sect_offset_str (die->sect_off),
15684                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15685           return 0;
15686         }
15687       align = val;
15688     }
15689   else
15690     align = DW_UNSND (attr);
15691
15692   if (align == 0)
15693     {
15694       complaint (_("DW_AT_alignment value must not be zero"
15695                    " - DIE at %s [in module %s]"),
15696                  sect_offset_str (die->sect_off),
15697                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15698       return 0;
15699     }
15700   if ((align & (align - 1)) != 0)
15701     {
15702       complaint (_("DW_AT_alignment value must be a power of 2"
15703                    " - DIE at %s [in module %s]"),
15704                  sect_offset_str (die->sect_off),
15705                  objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15706       return 0;
15707     }
15708
15709   return align;
15710 }
15711
15712 /* If the DIE has a DW_AT_alignment attribute, use its value to set
15713    the alignment for TYPE.  */
15714
15715 static void
15716 maybe_set_alignment (struct dwarf2_cu *cu, struct die_info *die,
15717                      struct type *type)
15718 {
15719   if (!set_type_align (type, get_alignment (cu, die)))
15720     complaint (_("DW_AT_alignment value too large"
15721                  " - DIE at %s [in module %s]"),
15722                sect_offset_str (die->sect_off),
15723                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15724 }
15725
15726 /* Called when we find the DIE that starts a structure or union scope
15727    (definition) to create a type for the structure or union.  Fill in
15728    the type's name and general properties; the members will not be
15729    processed until process_structure_scope.  A symbol table entry for
15730    the type will also not be done until process_structure_scope (assuming
15731    the type has a name).
15732
15733    NOTE: we need to call these functions regardless of whether or not the
15734    DIE has a DW_AT_name attribute, since it might be an anonymous
15735    structure or union.  This gets the type entered into our set of
15736    user defined types.  */
15737
15738 static struct type *
15739 read_structure_type (struct die_info *die, struct dwarf2_cu *cu)
15740 {
15741   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15742   struct type *type;
15743   struct attribute *attr;
15744   const char *name;
15745
15746   /* If the definition of this type lives in .debug_types, read that type.
15747      Don't follow DW_AT_specification though, that will take us back up
15748      the chain and we want to go down.  */
15749   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
15750   if (attr)
15751     {
15752       type = get_DW_AT_signature_type (die, attr, cu);
15753
15754       /* The type's CU may not be the same as CU.
15755          Ensure TYPE is recorded with CU in die_type_hash.  */
15756       return set_die_type (die, type, cu);
15757     }
15758
15759   type = alloc_type (objfile);
15760   INIT_CPLUS_SPECIFIC (type);
15761
15762   name = dwarf2_name (die, cu);
15763   if (name != NULL)
15764     {
15765       if (cu->language == language_cplus
15766           || cu->language == language_d
15767           || cu->language == language_rust)
15768         {
15769           const char *full_name = dwarf2_full_name (name, die, cu);
15770
15771           /* dwarf2_full_name might have already finished building the DIE's
15772              type.  If so, there is no need to continue.  */
15773           if (get_die_type (die, cu) != NULL)
15774             return get_die_type (die, cu);
15775
15776           TYPE_NAME (type) = full_name;
15777         }
15778       else
15779         {
15780           /* The name is already allocated along with this objfile, so
15781              we don't need to duplicate it for the type.  */
15782           TYPE_NAME (type) = name;
15783         }
15784     }
15785
15786   if (die->tag == DW_TAG_structure_type)
15787     {
15788       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15789     }
15790   else if (die->tag == DW_TAG_union_type)
15791     {
15792       TYPE_CODE (type) = TYPE_CODE_UNION;
15793     }
15794   else if (die->tag == DW_TAG_variant_part)
15795     {
15796       TYPE_CODE (type) = TYPE_CODE_UNION;
15797       TYPE_FLAG_DISCRIMINATED_UNION (type) = 1;
15798     }
15799   else
15800     {
15801       TYPE_CODE (type) = TYPE_CODE_STRUCT;
15802     }
15803
15804   if (cu->language == language_cplus && die->tag == DW_TAG_class_type)
15805     TYPE_DECLARED_CLASS (type) = 1;
15806
15807   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
15808   if (attr)
15809     {
15810       if (attr_form_is_constant (attr))
15811         TYPE_LENGTH (type) = DW_UNSND (attr);
15812       else
15813         {
15814           /* For the moment, dynamic type sizes are not supported
15815              by GDB's struct type.  The actual size is determined
15816              on-demand when resolving the type of a given object,
15817              so set the type's length to zero for now.  Otherwise,
15818              we record an expression as the length, and that expression
15819              could lead to a very large value, which could eventually
15820              lead to us trying to allocate that much memory when creating
15821              a value of that type.  */
15822           TYPE_LENGTH (type) = 0;
15823         }
15824     }
15825   else
15826     {
15827       TYPE_LENGTH (type) = 0;
15828     }
15829
15830   maybe_set_alignment (cu, die, type);
15831
15832   if (producer_is_icc_lt_14 (cu) && (TYPE_LENGTH (type) == 0))
15833     {
15834       /* ICC<14 does not output the required DW_AT_declaration on
15835          incomplete types, but gives them a size of zero.  */
15836       TYPE_STUB (type) = 1;
15837     }
15838   else
15839     TYPE_STUB_SUPPORTED (type) = 1;
15840
15841   if (die_is_declaration (die, cu))
15842     TYPE_STUB (type) = 1;
15843   else if (attr == NULL && die->child == NULL
15844            && producer_is_realview (cu->producer))
15845     /* RealView does not output the required DW_AT_declaration
15846        on incomplete types.  */
15847     TYPE_STUB (type) = 1;
15848
15849   /* We need to add the type field to the die immediately so we don't
15850      infinitely recurse when dealing with pointers to the structure
15851      type within the structure itself.  */
15852   set_die_type (die, type, cu);
15853
15854   /* set_die_type should be already done.  */
15855   set_descriptive_type (type, die, cu);
15856
15857   return type;
15858 }
15859
15860 /* A helper for process_structure_scope that handles a single member
15861    DIE.  */
15862
15863 static void
15864 handle_struct_member_die (struct die_info *child_die, struct type *type,
15865                           struct field_info *fi,
15866                           std::vector<struct symbol *> *template_args,
15867                           struct dwarf2_cu *cu)
15868 {
15869   if (child_die->tag == DW_TAG_member
15870       || child_die->tag == DW_TAG_variable
15871       || child_die->tag == DW_TAG_variant_part)
15872     {
15873       /* NOTE: carlton/2002-11-05: A C++ static data member
15874          should be a DW_TAG_member that is a declaration, but
15875          all versions of G++ as of this writing (so through at
15876          least 3.2.1) incorrectly generate DW_TAG_variable
15877          tags for them instead.  */
15878       dwarf2_add_field (fi, child_die, cu);
15879     }
15880   else if (child_die->tag == DW_TAG_subprogram)
15881     {
15882       /* Rust doesn't have member functions in the C++ sense.
15883          However, it does emit ordinary functions as children
15884          of a struct DIE.  */
15885       if (cu->language == language_rust)
15886         read_func_scope (child_die, cu);
15887       else
15888         {
15889           /* C++ member function.  */
15890           dwarf2_add_member_fn (fi, child_die, type, cu);
15891         }
15892     }
15893   else if (child_die->tag == DW_TAG_inheritance)
15894     {
15895       /* C++ base class field.  */
15896       dwarf2_add_field (fi, child_die, cu);
15897     }
15898   else if (type_can_define_types (child_die))
15899     dwarf2_add_type_defn (fi, child_die, cu);
15900   else if (child_die->tag == DW_TAG_template_type_param
15901            || child_die->tag == DW_TAG_template_value_param)
15902     {
15903       struct symbol *arg = new_symbol (child_die, NULL, cu);
15904
15905       if (arg != NULL)
15906         template_args->push_back (arg);
15907     }
15908   else if (child_die->tag == DW_TAG_variant)
15909     {
15910       /* In a variant we want to get the discriminant and also add a
15911          field for our sole member child.  */
15912       struct attribute *discr = dwarf2_attr (child_die, DW_AT_discr_value, cu);
15913
15914       for (struct die_info *variant_child = child_die->child;
15915            variant_child != NULL;
15916            variant_child = sibling_die (variant_child))
15917         {
15918           if (variant_child->tag == DW_TAG_member)
15919             {
15920               handle_struct_member_die (variant_child, type, fi,
15921                                         template_args, cu);
15922               /* Only handle the one.  */
15923               break;
15924             }
15925         }
15926
15927       /* We don't handle this but we might as well report it if we see
15928          it.  */
15929       if (dwarf2_attr (child_die, DW_AT_discr_list, cu) != nullptr)
15930           complaint (_("DW_AT_discr_list is not supported yet"
15931                        " - DIE at %s [in module %s]"),
15932                      sect_offset_str (child_die->sect_off),
15933                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15934
15935       /* The first field was just added, so we can stash the
15936          discriminant there.  */
15937       gdb_assert (!fi->fields.empty ());
15938       if (discr == NULL)
15939         fi->fields.back ().variant.default_branch = true;
15940       else
15941         fi->fields.back ().variant.discriminant_value = DW_UNSND (discr);
15942     }
15943 }
15944
15945 /* Finish creating a structure or union type, including filling in
15946    its members and creating a symbol for it.  */
15947
15948 static void
15949 process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
15950 {
15951   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
15952   struct die_info *child_die;
15953   struct type *type;
15954
15955   type = get_die_type (die, cu);
15956   if (type == NULL)
15957     type = read_structure_type (die, cu);
15958
15959   /* When reading a DW_TAG_variant_part, we need to notice when we
15960      read the discriminant member, so we can record it later in the
15961      discriminant_info.  */
15962   bool is_variant_part = TYPE_FLAG_DISCRIMINATED_UNION (type);
15963   sect_offset discr_offset;
15964   bool has_template_parameters = false;
15965
15966   if (is_variant_part)
15967     {
15968       struct attribute *discr = dwarf2_attr (die, DW_AT_discr, cu);
15969       if (discr == NULL)
15970         {
15971           /* Maybe it's a univariant form, an extension we support.
15972              In this case arrange not to check the offset.  */
15973           is_variant_part = false;
15974         }
15975       else if (attr_form_is_ref (discr))
15976         {
15977           struct dwarf2_cu *target_cu = cu;
15978           struct die_info *target_die = follow_die_ref (die, discr, &target_cu);
15979
15980           discr_offset = target_die->sect_off;
15981         }
15982       else
15983         {
15984           complaint (_("DW_AT_discr does not have DIE reference form"
15985                        " - DIE at %s [in module %s]"),
15986                      sect_offset_str (die->sect_off),
15987                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
15988           is_variant_part = false;
15989         }
15990     }
15991
15992   if (die->child != NULL && ! die_is_declaration (die, cu))
15993     {
15994       struct field_info fi;
15995       std::vector<struct symbol *> template_args;
15996
15997       child_die = die->child;
15998
15999       while (child_die && child_die->tag)
16000         {
16001           handle_struct_member_die (child_die, type, &fi, &template_args, cu);
16002
16003           if (is_variant_part && discr_offset == child_die->sect_off)
16004             fi.fields.back ().variant.is_discriminant = true;
16005
16006           child_die = sibling_die (child_die);
16007         }
16008
16009       /* Attach template arguments to type.  */
16010       if (!template_args.empty ())
16011         {
16012           has_template_parameters = true;
16013           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16014           TYPE_N_TEMPLATE_ARGUMENTS (type) = template_args.size ();
16015           TYPE_TEMPLATE_ARGUMENTS (type)
16016             = XOBNEWVEC (&objfile->objfile_obstack,
16017                          struct symbol *,
16018                          TYPE_N_TEMPLATE_ARGUMENTS (type));
16019           memcpy (TYPE_TEMPLATE_ARGUMENTS (type),
16020                   template_args.data (),
16021                   (TYPE_N_TEMPLATE_ARGUMENTS (type)
16022                    * sizeof (struct symbol *)));
16023         }
16024
16025       /* Attach fields and member functions to the type.  */
16026       if (fi.nfields)
16027         dwarf2_attach_fields_to_type (&fi, type, cu);
16028       if (!fi.fnfieldlists.empty ())
16029         {
16030           dwarf2_attach_fn_fields_to_type (&fi, type, cu);
16031
16032           /* Get the type which refers to the base class (possibly this
16033              class itself) which contains the vtable pointer for the current
16034              class from the DW_AT_containing_type attribute.  This use of
16035              DW_AT_containing_type is a GNU extension.  */
16036
16037           if (dwarf2_attr (die, DW_AT_containing_type, cu) != NULL)
16038             {
16039               struct type *t = die_containing_type (die, cu);
16040
16041               set_type_vptr_basetype (type, t);
16042               if (type == t)
16043                 {
16044                   int i;
16045
16046                   /* Our own class provides vtbl ptr.  */
16047                   for (i = TYPE_NFIELDS (t) - 1;
16048                        i >= TYPE_N_BASECLASSES (t);
16049                        --i)
16050                     {
16051                       const char *fieldname = TYPE_FIELD_NAME (t, i);
16052
16053                       if (is_vtable_name (fieldname, cu))
16054                         {
16055                           set_type_vptr_fieldno (type, i);
16056                           break;
16057                         }
16058                     }
16059
16060                   /* Complain if virtual function table field not found.  */
16061                   if (i < TYPE_N_BASECLASSES (t))
16062                     complaint (_("virtual function table pointer "
16063                                  "not found when defining class '%s'"),
16064                                TYPE_NAME (type) ? TYPE_NAME (type) : "");
16065                 }
16066               else
16067                 {
16068                   set_type_vptr_fieldno (type, TYPE_VPTR_FIELDNO (t));
16069                 }
16070             }
16071           else if (cu->producer
16072                    && startswith (cu->producer, "IBM(R) XL C/C++ Advanced Edition"))
16073             {
16074               /* The IBM XLC compiler does not provide direct indication
16075                  of the containing type, but the vtable pointer is
16076                  always named __vfp.  */
16077
16078               int i;
16079
16080               for (i = TYPE_NFIELDS (type) - 1;
16081                    i >= TYPE_N_BASECLASSES (type);
16082                    --i)
16083                 {
16084                   if (strcmp (TYPE_FIELD_NAME (type, i), "__vfp") == 0)
16085                     {
16086                       set_type_vptr_fieldno (type, i);
16087                       set_type_vptr_basetype (type, type);
16088                       break;
16089                     }
16090                 }
16091             }
16092         }
16093
16094       /* Copy fi.typedef_field_list linked list elements content into the
16095          allocated array TYPE_TYPEDEF_FIELD_ARRAY (type).  */
16096       if (!fi.typedef_field_list.empty ())
16097         {
16098           int count = fi.typedef_field_list.size ();
16099
16100           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16101           TYPE_TYPEDEF_FIELD_ARRAY (type)
16102             = ((struct decl_field *)
16103                TYPE_ALLOC (type,
16104                            sizeof (TYPE_TYPEDEF_FIELD (type, 0)) * count));
16105           TYPE_TYPEDEF_FIELD_COUNT (type) = count;
16106
16107           for (int i = 0; i < fi.typedef_field_list.size (); ++i)
16108             TYPE_TYPEDEF_FIELD (type, i) = fi.typedef_field_list[i];
16109         }
16110
16111       /* Copy fi.nested_types_list linked list elements content into the
16112          allocated array TYPE_NESTED_TYPES_ARRAY (type).  */
16113       if (!fi.nested_types_list.empty () && cu->language != language_ada)
16114         {
16115           int count = fi.nested_types_list.size ();
16116
16117           ALLOCATE_CPLUS_STRUCT_TYPE (type);
16118           TYPE_NESTED_TYPES_ARRAY (type)
16119             = ((struct decl_field *)
16120                TYPE_ALLOC (type, sizeof (struct decl_field) * count));
16121           TYPE_NESTED_TYPES_COUNT (type) = count;
16122
16123           for (int i = 0; i < fi.nested_types_list.size (); ++i)
16124             TYPE_NESTED_TYPES_FIELD (type, i) = fi.nested_types_list[i];
16125         }
16126     }
16127
16128   quirk_gcc_member_function_pointer (type, objfile);
16129   if (cu->language == language_rust && die->tag == DW_TAG_union_type)
16130     cu->rust_unions.push_back (type);
16131
16132   /* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
16133      snapshots) has been known to create a die giving a declaration
16134      for a class that has, as a child, a die giving a definition for a
16135      nested class.  So we have to process our children even if the
16136      current die is a declaration.  Normally, of course, a declaration
16137      won't have any children at all.  */
16138
16139   child_die = die->child;
16140
16141   while (child_die != NULL && child_die->tag)
16142     {
16143       if (child_die->tag == DW_TAG_member
16144           || child_die->tag == DW_TAG_variable
16145           || child_die->tag == DW_TAG_inheritance
16146           || child_die->tag == DW_TAG_template_value_param
16147           || child_die->tag == DW_TAG_template_type_param)
16148         {
16149           /* Do nothing.  */
16150         }
16151       else
16152         process_die (child_die, cu);
16153
16154       child_die = sibling_die (child_die);
16155     }
16156
16157   /* Do not consider external references.  According to the DWARF standard,
16158      these DIEs are identified by the fact that they have no byte_size
16159      attribute, and a declaration attribute.  */
16160   if (dwarf2_attr (die, DW_AT_byte_size, cu) != NULL
16161       || !die_is_declaration (die, cu))
16162     {
16163       struct symbol *sym = new_symbol (die, type, cu);
16164
16165       if (has_template_parameters)
16166         {
16167           /* Make sure that the symtab is set on the new symbols.
16168              Even though they don't appear in this symtab directly,
16169              other parts of gdb assume that symbols do, and this is
16170              reasonably true.  */
16171           for (int i = 0; i < TYPE_N_TEMPLATE_ARGUMENTS (type); ++i)
16172             symbol_set_symtab (TYPE_TEMPLATE_ARGUMENT (type, i),
16173                                symbol_symtab (sym));
16174         }
16175     }
16176 }
16177
16178 /* Assuming DIE is an enumeration type, and TYPE is its associated type,
16179    update TYPE using some information only available in DIE's children.  */
16180
16181 static void
16182 update_enumeration_type_from_children (struct die_info *die,
16183                                        struct type *type,
16184                                        struct dwarf2_cu *cu)
16185 {
16186   struct die_info *child_die;
16187   int unsigned_enum = 1;
16188   int flag_enum = 1;
16189   ULONGEST mask = 0;
16190
16191   auto_obstack obstack;
16192
16193   for (child_die = die->child;
16194        child_die != NULL && child_die->tag;
16195        child_die = sibling_die (child_die))
16196     {
16197       struct attribute *attr;
16198       LONGEST value;
16199       const gdb_byte *bytes;
16200       struct dwarf2_locexpr_baton *baton;
16201       const char *name;
16202
16203       if (child_die->tag != DW_TAG_enumerator)
16204         continue;
16205
16206       attr = dwarf2_attr (child_die, DW_AT_const_value, cu);
16207       if (attr == NULL)
16208         continue;
16209
16210       name = dwarf2_name (child_die, cu);
16211       if (name == NULL)
16212         name = "<anonymous enumerator>";
16213
16214       dwarf2_const_value_attr (attr, type, name, &obstack, cu,
16215                                &value, &bytes, &baton);
16216       if (value < 0)
16217         {
16218           unsigned_enum = 0;
16219           flag_enum = 0;
16220         }
16221       else if ((mask & value) != 0)
16222         flag_enum = 0;
16223       else
16224         mask |= value;
16225
16226       /* If we already know that the enum type is neither unsigned, nor
16227          a flag type, no need to look at the rest of the enumerates.  */
16228       if (!unsigned_enum && !flag_enum)
16229         break;
16230     }
16231
16232   if (unsigned_enum)
16233     TYPE_UNSIGNED (type) = 1;
16234   if (flag_enum)
16235     TYPE_FLAG_ENUM (type) = 1;
16236 }
16237
16238 /* Given a DW_AT_enumeration_type die, set its type.  We do not
16239    complete the type's fields yet, or create any symbols.  */
16240
16241 static struct type *
16242 read_enumeration_type (struct die_info *die, struct dwarf2_cu *cu)
16243 {
16244   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16245   struct type *type;
16246   struct attribute *attr;
16247   const char *name;
16248
16249   /* If the definition of this type lives in .debug_types, read that type.
16250      Don't follow DW_AT_specification though, that will take us back up
16251      the chain and we want to go down.  */
16252   attr = dwarf2_attr_no_follow (die, DW_AT_signature);
16253   if (attr)
16254     {
16255       type = get_DW_AT_signature_type (die, attr, cu);
16256
16257       /* The type's CU may not be the same as CU.
16258          Ensure TYPE is recorded with CU in die_type_hash.  */
16259       return set_die_type (die, type, cu);
16260     }
16261
16262   type = alloc_type (objfile);
16263
16264   TYPE_CODE (type) = TYPE_CODE_ENUM;
16265   name = dwarf2_full_name (NULL, die, cu);
16266   if (name != NULL)
16267     TYPE_NAME (type) = name;
16268
16269   attr = dwarf2_attr (die, DW_AT_type, cu);
16270   if (attr != NULL)
16271     {
16272       struct type *underlying_type = die_type (die, cu);
16273
16274       TYPE_TARGET_TYPE (type) = underlying_type;
16275     }
16276
16277   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16278   if (attr)
16279     {
16280       TYPE_LENGTH (type) = DW_UNSND (attr);
16281     }
16282   else
16283     {
16284       TYPE_LENGTH (type) = 0;
16285     }
16286
16287   maybe_set_alignment (cu, die, type);
16288
16289   /* The enumeration DIE can be incomplete.  In Ada, any type can be
16290      declared as private in the package spec, and then defined only
16291      inside the package body.  Such types are known as Taft Amendment
16292      Types.  When another package uses such a type, an incomplete DIE
16293      may be generated by the compiler.  */
16294   if (die_is_declaration (die, cu))
16295     TYPE_STUB (type) = 1;
16296
16297   /* Finish the creation of this type by using the enum's children.
16298      We must call this even when the underlying type has been provided
16299      so that we can determine if we're looking at a "flag" enum.  */
16300   update_enumeration_type_from_children (die, type, cu);
16301
16302   /* If this type has an underlying type that is not a stub, then we
16303      may use its attributes.  We always use the "unsigned" attribute
16304      in this situation, because ordinarily we guess whether the type
16305      is unsigned -- but the guess can be wrong and the underlying type
16306      can tell us the reality.  However, we defer to a local size
16307      attribute if one exists, because this lets the compiler override
16308      the underlying type if needed.  */
16309   if (TYPE_TARGET_TYPE (type) != NULL && !TYPE_STUB (TYPE_TARGET_TYPE (type)))
16310     {
16311       TYPE_UNSIGNED (type) = TYPE_UNSIGNED (TYPE_TARGET_TYPE (type));
16312       if (TYPE_LENGTH (type) == 0)
16313         TYPE_LENGTH (type) = TYPE_LENGTH (TYPE_TARGET_TYPE (type));
16314       if (TYPE_RAW_ALIGN (type) == 0
16315           && TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)) != 0)
16316         set_type_align (type, TYPE_RAW_ALIGN (TYPE_TARGET_TYPE (type)));
16317     }
16318
16319   TYPE_DECLARED_CLASS (type) = dwarf2_flag_true_p (die, DW_AT_enum_class, cu);
16320
16321   return set_die_type (die, type, cu);
16322 }
16323
16324 /* Given a pointer to a die which begins an enumeration, process all
16325    the dies that define the members of the enumeration, and create the
16326    symbol for the enumeration type.
16327
16328    NOTE: We reverse the order of the element list.  */
16329
16330 static void
16331 process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
16332 {
16333   struct type *this_type;
16334
16335   this_type = get_die_type (die, cu);
16336   if (this_type == NULL)
16337     this_type = read_enumeration_type (die, cu);
16338
16339   if (die->child != NULL)
16340     {
16341       struct die_info *child_die;
16342       struct symbol *sym;
16343       struct field *fields = NULL;
16344       int num_fields = 0;
16345       const char *name;
16346
16347       child_die = die->child;
16348       while (child_die && child_die->tag)
16349         {
16350           if (child_die->tag != DW_TAG_enumerator)
16351             {
16352               process_die (child_die, cu);
16353             }
16354           else
16355             {
16356               name = dwarf2_name (child_die, cu);
16357               if (name)
16358                 {
16359                   sym = new_symbol (child_die, this_type, cu);
16360
16361                   if ((num_fields % DW_FIELD_ALLOC_CHUNK) == 0)
16362                     {
16363                       fields = (struct field *)
16364                         xrealloc (fields,
16365                                   (num_fields + DW_FIELD_ALLOC_CHUNK)
16366                                   * sizeof (struct field));
16367                     }
16368
16369                   FIELD_NAME (fields[num_fields]) = SYMBOL_LINKAGE_NAME (sym);
16370                   FIELD_TYPE (fields[num_fields]) = NULL;
16371                   SET_FIELD_ENUMVAL (fields[num_fields], SYMBOL_VALUE (sym));
16372                   FIELD_BITSIZE (fields[num_fields]) = 0;
16373
16374                   num_fields++;
16375                 }
16376             }
16377
16378           child_die = sibling_die (child_die);
16379         }
16380
16381       if (num_fields)
16382         {
16383           TYPE_NFIELDS (this_type) = num_fields;
16384           TYPE_FIELDS (this_type) = (struct field *)
16385             TYPE_ALLOC (this_type, sizeof (struct field) * num_fields);
16386           memcpy (TYPE_FIELDS (this_type), fields,
16387                   sizeof (struct field) * num_fields);
16388           xfree (fields);
16389         }
16390     }
16391
16392   /* If we are reading an enum from a .debug_types unit, and the enum
16393      is a declaration, and the enum is not the signatured type in the
16394      unit, then we do not want to add a symbol for it.  Adding a
16395      symbol would in some cases obscure the true definition of the
16396      enum, giving users an incomplete type when the definition is
16397      actually available.  Note that we do not want to do this for all
16398      enums which are just declarations, because C++0x allows forward
16399      enum declarations.  */
16400   if (cu->per_cu->is_debug_types
16401       && die_is_declaration (die, cu))
16402     {
16403       struct signatured_type *sig_type;
16404
16405       sig_type = (struct signatured_type *) cu->per_cu;
16406       gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
16407       if (sig_type->type_offset_in_section != die->sect_off)
16408         return;
16409     }
16410
16411   new_symbol (die, this_type, cu);
16412 }
16413
16414 /* Extract all information from a DW_TAG_array_type DIE and put it in
16415    the DIE's type field.  For now, this only handles one dimensional
16416    arrays.  */
16417
16418 static struct type *
16419 read_array_type (struct die_info *die, struct dwarf2_cu *cu)
16420 {
16421   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16422   struct die_info *child_die;
16423   struct type *type;
16424   struct type *element_type, *range_type, *index_type;
16425   struct attribute *attr;
16426   const char *name;
16427   struct dynamic_prop *byte_stride_prop = NULL;
16428   unsigned int bit_stride = 0;
16429
16430   element_type = die_type (die, cu);
16431
16432   /* The die_type call above may have already set the type for this DIE.  */
16433   type = get_die_type (die, cu);
16434   if (type)
16435     return type;
16436
16437   attr = dwarf2_attr (die, DW_AT_byte_stride, cu);
16438   if (attr != NULL)
16439     {
16440       int stride_ok;
16441
16442       byte_stride_prop
16443         = (struct dynamic_prop *) alloca (sizeof (struct dynamic_prop));
16444       stride_ok = attr_to_dynamic_prop (attr, die, cu, byte_stride_prop);
16445       if (!stride_ok)
16446         {
16447           complaint (_("unable to read array DW_AT_byte_stride "
16448                        " - DIE at %s [in module %s]"),
16449                      sect_offset_str (die->sect_off),
16450                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
16451           /* Ignore this attribute.  We will likely not be able to print
16452              arrays of this type correctly, but there is little we can do
16453              to help if we cannot read the attribute's value.  */
16454           byte_stride_prop = NULL;
16455         }
16456     }
16457
16458   attr = dwarf2_attr (die, DW_AT_bit_stride, cu);
16459   if (attr != NULL)
16460     bit_stride = DW_UNSND (attr);
16461
16462   /* Irix 6.2 native cc creates array types without children for
16463      arrays with unspecified length.  */
16464   if (die->child == NULL)
16465     {
16466       index_type = objfile_type (objfile)->builtin_int;
16467       range_type = create_static_range_type (NULL, index_type, 0, -1);
16468       type = create_array_type_with_stride (NULL, element_type, range_type,
16469                                             byte_stride_prop, bit_stride);
16470       return set_die_type (die, type, cu);
16471     }
16472
16473   std::vector<struct type *> range_types;
16474   child_die = die->child;
16475   while (child_die && child_die->tag)
16476     {
16477       if (child_die->tag == DW_TAG_subrange_type)
16478         {
16479           struct type *child_type = read_type_die (child_die, cu);
16480
16481           if (child_type != NULL)
16482             {
16483               /* The range type was succesfully read.  Save it for the
16484                  array type creation.  */
16485               range_types.push_back (child_type);
16486             }
16487         }
16488       child_die = sibling_die (child_die);
16489     }
16490
16491   /* Dwarf2 dimensions are output from left to right, create the
16492      necessary array types in backwards order.  */
16493
16494   type = element_type;
16495
16496   if (read_array_order (die, cu) == DW_ORD_col_major)
16497     {
16498       int i = 0;
16499
16500       while (i < range_types.size ())
16501         type = create_array_type_with_stride (NULL, type, range_types[i++],
16502                                               byte_stride_prop, bit_stride);
16503     }
16504   else
16505     {
16506       size_t ndim = range_types.size ();
16507       while (ndim-- > 0)
16508         type = create_array_type_with_stride (NULL, type, range_types[ndim],
16509                                               byte_stride_prop, bit_stride);
16510     }
16511
16512   /* Understand Dwarf2 support for vector types (like they occur on
16513      the PowerPC w/ AltiVec).  Gcc just adds another attribute to the
16514      array type.  This is not part of the Dwarf2/3 standard yet, but a
16515      custom vendor extension.  The main difference between a regular
16516      array and the vector variant is that vectors are passed by value
16517      to functions.  */
16518   attr = dwarf2_attr (die, DW_AT_GNU_vector, cu);
16519   if (attr)
16520     make_vector_type (type);
16521
16522   /* The DIE may have DW_AT_byte_size set.  For example an OpenCL
16523      implementation may choose to implement triple vectors using this
16524      attribute.  */
16525   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16526   if (attr)
16527     {
16528       if (DW_UNSND (attr) >= TYPE_LENGTH (type))
16529         TYPE_LENGTH (type) = DW_UNSND (attr);
16530       else
16531         complaint (_("DW_AT_byte_size for array type smaller "
16532                      "than the total size of elements"));
16533     }
16534
16535   name = dwarf2_name (die, cu);
16536   if (name)
16537     TYPE_NAME (type) = name;
16538
16539   maybe_set_alignment (cu, die, type);
16540
16541   /* Install the type in the die.  */
16542   set_die_type (die, type, cu);
16543
16544   /* set_die_type should be already done.  */
16545   set_descriptive_type (type, die, cu);
16546
16547   return type;
16548 }
16549
16550 static enum dwarf_array_dim_ordering
16551 read_array_order (struct die_info *die, struct dwarf2_cu *cu)
16552 {
16553   struct attribute *attr;
16554
16555   attr = dwarf2_attr (die, DW_AT_ordering, cu);
16556
16557   if (attr)
16558     return (enum dwarf_array_dim_ordering) DW_SND (attr);
16559
16560   /* GNU F77 is a special case, as at 08/2004 array type info is the
16561      opposite order to the dwarf2 specification, but data is still
16562      laid out as per normal fortran.
16563
16564      FIXME: dsl/2004-8-20: If G77 is ever fixed, this will also need
16565      version checking.  */
16566
16567   if (cu->language == language_fortran
16568       && cu->producer && strstr (cu->producer, "GNU F77"))
16569     {
16570       return DW_ORD_row_major;
16571     }
16572
16573   switch (cu->language_defn->la_array_ordering)
16574     {
16575     case array_column_major:
16576       return DW_ORD_col_major;
16577     case array_row_major:
16578     default:
16579       return DW_ORD_row_major;
16580     };
16581 }
16582
16583 /* Extract all information from a DW_TAG_set_type DIE and put it in
16584    the DIE's type field.  */
16585
16586 static struct type *
16587 read_set_type (struct die_info *die, struct dwarf2_cu *cu)
16588 {
16589   struct type *domain_type, *set_type;
16590   struct attribute *attr;
16591
16592   domain_type = die_type (die, cu);
16593
16594   /* The die_type call above may have already set the type for this DIE.  */
16595   set_type = get_die_type (die, cu);
16596   if (set_type)
16597     return set_type;
16598
16599   set_type = create_set_type (NULL, domain_type);
16600
16601   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
16602   if (attr)
16603     TYPE_LENGTH (set_type) = DW_UNSND (attr);
16604
16605   maybe_set_alignment (cu, die, set_type);
16606
16607   return set_die_type (die, set_type, cu);
16608 }
16609
16610 /* A helper for read_common_block that creates a locexpr baton.
16611    SYM is the symbol which we are marking as computed.
16612    COMMON_DIE is the DIE for the common block.
16613    COMMON_LOC is the location expression attribute for the common
16614    block itself.
16615    MEMBER_LOC is the location expression attribute for the particular
16616    member of the common block that we are processing.
16617    CU is the CU from which the above come.  */
16618
16619 static void
16620 mark_common_block_symbol_computed (struct symbol *sym,
16621                                    struct die_info *common_die,
16622                                    struct attribute *common_loc,
16623                                    struct attribute *member_loc,
16624                                    struct dwarf2_cu *cu)
16625 {
16626   struct dwarf2_per_objfile *dwarf2_per_objfile
16627     = cu->per_cu->dwarf2_per_objfile;
16628   struct objfile *objfile = dwarf2_per_objfile->objfile;
16629   struct dwarf2_locexpr_baton *baton;
16630   gdb_byte *ptr;
16631   unsigned int cu_off;
16632   enum bfd_endian byte_order = gdbarch_byte_order (get_objfile_arch (objfile));
16633   LONGEST offset = 0;
16634
16635   gdb_assert (common_loc && member_loc);
16636   gdb_assert (attr_form_is_block (common_loc));
16637   gdb_assert (attr_form_is_block (member_loc)
16638               || attr_form_is_constant (member_loc));
16639
16640   baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
16641   baton->per_cu = cu->per_cu;
16642   gdb_assert (baton->per_cu);
16643
16644   baton->size = 5 /* DW_OP_call4 */ + 1 /* DW_OP_plus */;
16645
16646   if (attr_form_is_constant (member_loc))
16647     {
16648       offset = dwarf2_get_attr_constant_value (member_loc, 0);
16649       baton->size += 1 /* DW_OP_addr */ + cu->header.addr_size;
16650     }
16651   else
16652     baton->size += DW_BLOCK (member_loc)->size;
16653
16654   ptr = (gdb_byte *) obstack_alloc (&objfile->objfile_obstack, baton->size);
16655   baton->data = ptr;
16656
16657   *ptr++ = DW_OP_call4;
16658   cu_off = common_die->sect_off - cu->per_cu->sect_off;
16659   store_unsigned_integer (ptr, 4, byte_order, cu_off);
16660   ptr += 4;
16661
16662   if (attr_form_is_constant (member_loc))
16663     {
16664       *ptr++ = DW_OP_addr;
16665       store_unsigned_integer (ptr, cu->header.addr_size, byte_order, offset);
16666       ptr += cu->header.addr_size;
16667     }
16668   else
16669     {
16670       /* We have to copy the data here, because DW_OP_call4 will only
16671          use a DW_AT_location attribute.  */
16672       memcpy (ptr, DW_BLOCK (member_loc)->data, DW_BLOCK (member_loc)->size);
16673       ptr += DW_BLOCK (member_loc)->size;
16674     }
16675
16676   *ptr++ = DW_OP_plus;
16677   gdb_assert (ptr - baton->data == baton->size);
16678
16679   SYMBOL_LOCATION_BATON (sym) = baton;
16680   SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
16681 }
16682
16683 /* Create appropriate locally-scoped variables for all the
16684    DW_TAG_common_block entries.  Also create a struct common_block
16685    listing all such variables for `info common'.  COMMON_BLOCK_DOMAIN
16686    is used to sepate the common blocks name namespace from regular
16687    variable names.  */
16688
16689 static void
16690 read_common_block (struct die_info *die, struct dwarf2_cu *cu)
16691 {
16692   struct attribute *attr;
16693
16694   attr = dwarf2_attr (die, DW_AT_location, cu);
16695   if (attr)
16696     {
16697       /* Support the .debug_loc offsets.  */
16698       if (attr_form_is_block (attr))
16699         {
16700           /* Ok.  */
16701         }
16702       else if (attr_form_is_section_offset (attr))
16703         {
16704           dwarf2_complex_location_expr_complaint ();
16705           attr = NULL;
16706         }
16707       else
16708         {
16709           dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
16710                                                  "common block member");
16711           attr = NULL;
16712         }
16713     }
16714
16715   if (die->child != NULL)
16716     {
16717       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16718       struct die_info *child_die;
16719       size_t n_entries = 0, size;
16720       struct common_block *common_block;
16721       struct symbol *sym;
16722
16723       for (child_die = die->child;
16724            child_die && child_die->tag;
16725            child_die = sibling_die (child_die))
16726         ++n_entries;
16727
16728       size = (sizeof (struct common_block)
16729               + (n_entries - 1) * sizeof (struct symbol *));
16730       common_block
16731         = (struct common_block *) obstack_alloc (&objfile->objfile_obstack,
16732                                                  size);
16733       memset (common_block->contents, 0, n_entries * sizeof (struct symbol *));
16734       common_block->n_entries = 0;
16735
16736       for (child_die = die->child;
16737            child_die && child_die->tag;
16738            child_die = sibling_die (child_die))
16739         {
16740           /* Create the symbol in the DW_TAG_common_block block in the current
16741              symbol scope.  */
16742           sym = new_symbol (child_die, NULL, cu);
16743           if (sym != NULL)
16744             {
16745               struct attribute *member_loc;
16746
16747               common_block->contents[common_block->n_entries++] = sym;
16748
16749               member_loc = dwarf2_attr (child_die, DW_AT_data_member_location,
16750                                         cu);
16751               if (member_loc)
16752                 {
16753                   /* GDB has handled this for a long time, but it is
16754                      not specified by DWARF.  It seems to have been
16755                      emitted by gfortran at least as recently as:
16756                      http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23057.  */
16757                   complaint (_("Variable in common block has "
16758                                "DW_AT_data_member_location "
16759                                "- DIE at %s [in module %s]"),
16760                                sect_offset_str (child_die->sect_off),
16761                              objfile_name (objfile));
16762
16763                   if (attr_form_is_section_offset (member_loc))
16764                     dwarf2_complex_location_expr_complaint ();
16765                   else if (attr_form_is_constant (member_loc)
16766                            || attr_form_is_block (member_loc))
16767                     {
16768                       if (attr)
16769                         mark_common_block_symbol_computed (sym, die, attr,
16770                                                            member_loc, cu);
16771                     }
16772                   else
16773                     dwarf2_complex_location_expr_complaint ();
16774                 }
16775             }
16776         }
16777
16778       sym = new_symbol (die, objfile_type (objfile)->builtin_void, cu);
16779       SYMBOL_VALUE_COMMON_BLOCK (sym) = common_block;
16780     }
16781 }
16782
16783 /* Create a type for a C++ namespace.  */
16784
16785 static struct type *
16786 read_namespace_type (struct die_info *die, struct dwarf2_cu *cu)
16787 {
16788   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16789   const char *previous_prefix, *name;
16790   int is_anonymous;
16791   struct type *type;
16792
16793   /* For extensions, reuse the type of the original namespace.  */
16794   if (dwarf2_attr (die, DW_AT_extension, cu) != NULL)
16795     {
16796       struct die_info *ext_die;
16797       struct dwarf2_cu *ext_cu = cu;
16798
16799       ext_die = dwarf2_extension (die, &ext_cu);
16800       type = read_type_die (ext_die, ext_cu);
16801
16802       /* EXT_CU may not be the same as CU.
16803          Ensure TYPE is recorded with CU in die_type_hash.  */
16804       return set_die_type (die, type, cu);
16805     }
16806
16807   name = namespace_name (die, &is_anonymous, cu);
16808
16809   /* Now build the name of the current namespace.  */
16810
16811   previous_prefix = determine_prefix (die, cu);
16812   if (previous_prefix[0] != '\0')
16813     name = typename_concat (&objfile->objfile_obstack,
16814                             previous_prefix, name, 0, cu);
16815
16816   /* Create the type.  */
16817   type = init_type (objfile, TYPE_CODE_NAMESPACE, 0, name);
16818
16819   return set_die_type (die, type, cu);
16820 }
16821
16822 /* Read a namespace scope.  */
16823
16824 static void
16825 read_namespace (struct die_info *die, struct dwarf2_cu *cu)
16826 {
16827   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16828   int is_anonymous;
16829
16830   /* Add a symbol associated to this if we haven't seen the namespace
16831      before.  Also, add a using directive if it's an anonymous
16832      namespace.  */
16833
16834   if (dwarf2_attr (die, DW_AT_extension, cu) == NULL)
16835     {
16836       struct type *type;
16837
16838       type = read_type_die (die, cu);
16839       new_symbol (die, type, cu);
16840
16841       namespace_name (die, &is_anonymous, cu);
16842       if (is_anonymous)
16843         {
16844           const char *previous_prefix = determine_prefix (die, cu);
16845
16846           std::vector<const char *> excludes;
16847           add_using_directive (using_directives (cu),
16848                                previous_prefix, TYPE_NAME (type), NULL,
16849                                NULL, excludes, 0, &objfile->objfile_obstack);
16850         }
16851     }
16852
16853   if (die->child != NULL)
16854     {
16855       struct die_info *child_die = die->child;
16856
16857       while (child_die && child_die->tag)
16858         {
16859           process_die (child_die, cu);
16860           child_die = sibling_die (child_die);
16861         }
16862     }
16863 }
16864
16865 /* Read a Fortran module as type.  This DIE can be only a declaration used for
16866    imported module.  Still we need that type as local Fortran "use ... only"
16867    declaration imports depend on the created type in determine_prefix.  */
16868
16869 static struct type *
16870 read_module_type (struct die_info *die, struct dwarf2_cu *cu)
16871 {
16872   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
16873   const char *module_name;
16874   struct type *type;
16875
16876   module_name = dwarf2_name (die, cu);
16877   if (!module_name)
16878     complaint (_("DW_TAG_module has no name, offset %s"),
16879                sect_offset_str (die->sect_off));
16880   type = init_type (objfile, TYPE_CODE_MODULE, 0, module_name);
16881
16882   return set_die_type (die, type, cu);
16883 }
16884
16885 /* Read a Fortran module.  */
16886
16887 static void
16888 read_module (struct die_info *die, struct dwarf2_cu *cu)
16889 {
16890   struct die_info *child_die = die->child;
16891   struct type *type;
16892
16893   type = read_type_die (die, cu);
16894   new_symbol (die, type, cu);
16895
16896   while (child_die && child_die->tag)
16897     {
16898       process_die (child_die, cu);
16899       child_die = sibling_die (child_die);
16900     }
16901 }
16902
16903 /* Return the name of the namespace represented by DIE.  Set
16904    *IS_ANONYMOUS to tell whether or not the namespace is an anonymous
16905    namespace.  */
16906
16907 static const char *
16908 namespace_name (struct die_info *die, int *is_anonymous, struct dwarf2_cu *cu)
16909 {
16910   struct die_info *current_die;
16911   const char *name = NULL;
16912
16913   /* Loop through the extensions until we find a name.  */
16914
16915   for (current_die = die;
16916        current_die != NULL;
16917        current_die = dwarf2_extension (die, &cu))
16918     {
16919       /* We don't use dwarf2_name here so that we can detect the absence
16920          of a name -> anonymous namespace.  */
16921       name = dwarf2_string_attr (die, DW_AT_name, cu);
16922
16923       if (name != NULL)
16924         break;
16925     }
16926
16927   /* Is it an anonymous namespace?  */
16928
16929   *is_anonymous = (name == NULL);
16930   if (*is_anonymous)
16931     name = CP_ANONYMOUS_NAMESPACE_STR;
16932
16933   return name;
16934 }
16935
16936 /* Extract all information from a DW_TAG_pointer_type DIE and add to
16937    the user defined type vector.  */
16938
16939 static struct type *
16940 read_tag_pointer_type (struct die_info *die, struct dwarf2_cu *cu)
16941 {
16942   struct gdbarch *gdbarch
16943     = get_objfile_arch (cu->per_cu->dwarf2_per_objfile->objfile);
16944   struct comp_unit_head *cu_header = &cu->header;
16945   struct type *type;
16946   struct attribute *attr_byte_size;
16947   struct attribute *attr_address_class;
16948   int byte_size, addr_class;
16949   struct type *target_type;
16950
16951   target_type = die_type (die, cu);
16952
16953   /* The die_type call above may have already set the type for this DIE.  */
16954   type = get_die_type (die, cu);
16955   if (type)
16956     return type;
16957
16958   type = lookup_pointer_type (target_type);
16959
16960   attr_byte_size = dwarf2_attr (die, DW_AT_byte_size, cu);
16961   if (attr_byte_size)
16962     byte_size = DW_UNSND (attr_byte_size);
16963   else
16964     byte_size = cu_header->addr_size;
16965
16966   attr_address_class = dwarf2_attr (die, DW_AT_address_class, cu);
16967   if (attr_address_class)
16968     addr_class = DW_UNSND (attr_address_class);
16969   else
16970     addr_class = DW_ADDR_none;
16971
16972   ULONGEST alignment = get_alignment (cu, die);
16973
16974   /* If the pointer size, alignment, or address class is different
16975      than the default, create a type variant marked as such and set
16976      the length accordingly.  */
16977   if (TYPE_LENGTH (type) != byte_size
16978       || (alignment != 0 && TYPE_RAW_ALIGN (type) != 0
16979           && alignment != TYPE_RAW_ALIGN (type))
16980       || addr_class != DW_ADDR_none)
16981     {
16982       if (gdbarch_address_class_type_flags_p (gdbarch))
16983         {
16984           int type_flags;
16985
16986           type_flags = gdbarch_address_class_type_flags
16987                          (gdbarch, byte_size, addr_class);
16988           gdb_assert ((type_flags & ~TYPE_INSTANCE_FLAG_ADDRESS_CLASS_ALL)
16989                       == 0);
16990           type = make_type_with_address_space (type, type_flags);
16991         }
16992       else if (TYPE_LENGTH (type) != byte_size)
16993         {
16994           complaint (_("invalid pointer size %d"), byte_size);
16995         }
16996       else if (TYPE_RAW_ALIGN (type) != alignment)
16997         {
16998           complaint (_("Invalid DW_AT_alignment"
16999                        " - DIE at %s [in module %s]"),
17000                      sect_offset_str (die->sect_off),
17001                      objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17002         }
17003       else
17004         {
17005           /* Should we also complain about unhandled address classes?  */
17006         }
17007     }
17008
17009   TYPE_LENGTH (type) = byte_size;
17010   set_type_align (type, alignment);
17011   return set_die_type (die, type, cu);
17012 }
17013
17014 /* Extract all information from a DW_TAG_ptr_to_member_type DIE and add to
17015    the user defined type vector.  */
17016
17017 static struct type *
17018 read_tag_ptr_to_member_type (struct die_info *die, struct dwarf2_cu *cu)
17019 {
17020   struct type *type;
17021   struct type *to_type;
17022   struct type *domain;
17023
17024   to_type = die_type (die, cu);
17025   domain = die_containing_type (die, cu);
17026
17027   /* The calls above may have already set the type for this DIE.  */
17028   type = get_die_type (die, cu);
17029   if (type)
17030     return type;
17031
17032   if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_METHOD)
17033     type = lookup_methodptr_type (to_type);
17034   else if (TYPE_CODE (check_typedef (to_type)) == TYPE_CODE_FUNC)
17035     {
17036       struct type *new_type
17037         = alloc_type (cu->per_cu->dwarf2_per_objfile->objfile);
17038
17039       smash_to_method_type (new_type, domain, TYPE_TARGET_TYPE (to_type),
17040                             TYPE_FIELDS (to_type), TYPE_NFIELDS (to_type),
17041                             TYPE_VARARGS (to_type));
17042       type = lookup_methodptr_type (new_type);
17043     }
17044   else
17045     type = lookup_memberptr_type (to_type, domain);
17046
17047   return set_die_type (die, type, cu);
17048 }
17049
17050 /* Extract all information from a DW_TAG_{rvalue_,}reference_type DIE and add to
17051    the user defined type vector.  */
17052
17053 static struct type *
17054 read_tag_reference_type (struct die_info *die, struct dwarf2_cu *cu,
17055                           enum type_code refcode)
17056 {
17057   struct comp_unit_head *cu_header = &cu->header;
17058   struct type *type, *target_type;
17059   struct attribute *attr;
17060
17061   gdb_assert (refcode == TYPE_CODE_REF || refcode == TYPE_CODE_RVALUE_REF);
17062
17063   target_type = die_type (die, cu);
17064
17065   /* The die_type call above may have already set the type for this DIE.  */
17066   type = get_die_type (die, cu);
17067   if (type)
17068     return type;
17069
17070   type = lookup_reference_type (target_type, refcode);
17071   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17072   if (attr)
17073     {
17074       TYPE_LENGTH (type) = DW_UNSND (attr);
17075     }
17076   else
17077     {
17078       TYPE_LENGTH (type) = cu_header->addr_size;
17079     }
17080   maybe_set_alignment (cu, die, type);
17081   return set_die_type (die, type, cu);
17082 }
17083
17084 /* Add the given cv-qualifiers to the element type of the array.  GCC
17085    outputs DWARF type qualifiers that apply to an array, not the
17086    element type.  But GDB relies on the array element type to carry
17087    the cv-qualifiers.  This mimics section 6.7.3 of the C99
17088    specification.  */
17089
17090 static struct type *
17091 add_array_cv_type (struct die_info *die, struct dwarf2_cu *cu,
17092                    struct type *base_type, int cnst, int voltl)
17093 {
17094   struct type *el_type, *inner_array;
17095
17096   base_type = copy_type (base_type);
17097   inner_array = base_type;
17098
17099   while (TYPE_CODE (TYPE_TARGET_TYPE (inner_array)) == TYPE_CODE_ARRAY)
17100     {
17101       TYPE_TARGET_TYPE (inner_array) =
17102         copy_type (TYPE_TARGET_TYPE (inner_array));
17103       inner_array = TYPE_TARGET_TYPE (inner_array);
17104     }
17105
17106   el_type = TYPE_TARGET_TYPE (inner_array);
17107   cnst |= TYPE_CONST (el_type);
17108   voltl |= TYPE_VOLATILE (el_type);
17109   TYPE_TARGET_TYPE (inner_array) = make_cv_type (cnst, voltl, el_type, NULL);
17110
17111   return set_die_type (die, base_type, cu);
17112 }
17113
17114 static struct type *
17115 read_tag_const_type (struct die_info *die, struct dwarf2_cu *cu)
17116 {
17117   struct type *base_type, *cv_type;
17118
17119   base_type = die_type (die, cu);
17120
17121   /* The die_type call above may have already set the type for this DIE.  */
17122   cv_type = get_die_type (die, cu);
17123   if (cv_type)
17124     return cv_type;
17125
17126   /* In case the const qualifier is applied to an array type, the element type
17127      is so qualified, not the array type (section 6.7.3 of C99).  */
17128   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17129     return add_array_cv_type (die, cu, base_type, 1, 0);
17130
17131   cv_type = make_cv_type (1, TYPE_VOLATILE (base_type), base_type, 0);
17132   return set_die_type (die, cv_type, cu);
17133 }
17134
17135 static struct type *
17136 read_tag_volatile_type (struct die_info *die, struct dwarf2_cu *cu)
17137 {
17138   struct type *base_type, *cv_type;
17139
17140   base_type = die_type (die, cu);
17141
17142   /* The die_type call above may have already set the type for this DIE.  */
17143   cv_type = get_die_type (die, cu);
17144   if (cv_type)
17145     return cv_type;
17146
17147   /* In case the volatile qualifier is applied to an array type, the
17148      element type is so qualified, not the array type (section 6.7.3
17149      of C99).  */
17150   if (TYPE_CODE (base_type) == TYPE_CODE_ARRAY)
17151     return add_array_cv_type (die, cu, base_type, 0, 1);
17152
17153   cv_type = make_cv_type (TYPE_CONST (base_type), 1, base_type, 0);
17154   return set_die_type (die, cv_type, cu);
17155 }
17156
17157 /* Handle DW_TAG_restrict_type.  */
17158
17159 static struct type *
17160 read_tag_restrict_type (struct die_info *die, struct dwarf2_cu *cu)
17161 {
17162   struct type *base_type, *cv_type;
17163
17164   base_type = die_type (die, cu);
17165
17166   /* The die_type call above may have already set the type for this DIE.  */
17167   cv_type = get_die_type (die, cu);
17168   if (cv_type)
17169     return cv_type;
17170
17171   cv_type = make_restrict_type (base_type);
17172   return set_die_type (die, cv_type, cu);
17173 }
17174
17175 /* Handle DW_TAG_atomic_type.  */
17176
17177 static struct type *
17178 read_tag_atomic_type (struct die_info *die, struct dwarf2_cu *cu)
17179 {
17180   struct type *base_type, *cv_type;
17181
17182   base_type = die_type (die, cu);
17183
17184   /* The die_type call above may have already set the type for this DIE.  */
17185   cv_type = get_die_type (die, cu);
17186   if (cv_type)
17187     return cv_type;
17188
17189   cv_type = make_atomic_type (base_type);
17190   return set_die_type (die, cv_type, cu);
17191 }
17192
17193 /* Extract all information from a DW_TAG_string_type DIE and add to
17194    the user defined type vector.  It isn't really a user defined type,
17195    but it behaves like one, with other DIE's using an AT_user_def_type
17196    attribute to reference it.  */
17197
17198 static struct type *
17199 read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
17200 {
17201   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17202   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17203   struct type *type, *range_type, *index_type, *char_type;
17204   struct attribute *attr;
17205   unsigned int length;
17206
17207   attr = dwarf2_attr (die, DW_AT_string_length, cu);
17208   if (attr)
17209     {
17210       length = DW_UNSND (attr);
17211     }
17212   else
17213     {
17214       /* Check for the DW_AT_byte_size attribute.  */
17215       attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17216       if (attr)
17217         {
17218           length = DW_UNSND (attr);
17219         }
17220       else
17221         {
17222           length = 1;
17223         }
17224     }
17225
17226   index_type = objfile_type (objfile)->builtin_int;
17227   range_type = create_static_range_type (NULL, index_type, 1, length);
17228   char_type = language_string_char_type (cu->language_defn, gdbarch);
17229   type = create_string_type (NULL, char_type, range_type);
17230
17231   return set_die_type (die, type, cu);
17232 }
17233
17234 /* Assuming that DIE corresponds to a function, returns nonzero
17235    if the function is prototyped.  */
17236
17237 static int
17238 prototyped_function_p (struct die_info *die, struct dwarf2_cu *cu)
17239 {
17240   struct attribute *attr;
17241
17242   attr = dwarf2_attr (die, DW_AT_prototyped, cu);
17243   if (attr && (DW_UNSND (attr) != 0))
17244     return 1;
17245
17246   /* The DWARF standard implies that the DW_AT_prototyped attribute
17247      is only meaninful for C, but the concept also extends to other
17248      languages that allow unprototyped functions (Eg: Objective C).
17249      For all other languages, assume that functions are always
17250      prototyped.  */
17251   if (cu->language != language_c
17252       && cu->language != language_objc
17253       && cu->language != language_opencl)
17254     return 1;
17255
17256   /* RealView does not emit DW_AT_prototyped.  We can not distinguish
17257      prototyped and unprototyped functions; default to prototyped,
17258      since that is more common in modern code (and RealView warns
17259      about unprototyped functions).  */
17260   if (producer_is_realview (cu->producer))
17261     return 1;
17262
17263   return 0;
17264 }
17265
17266 /* Handle DIES due to C code like:
17267
17268    struct foo
17269    {
17270    int (*funcp)(int a, long l);
17271    int b;
17272    };
17273
17274    ('funcp' generates a DW_TAG_subroutine_type DIE).  */
17275
17276 static struct type *
17277 read_subroutine_type (struct die_info *die, struct dwarf2_cu *cu)
17278 {
17279   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17280   struct type *type;            /* Type that this function returns.  */
17281   struct type *ftype;           /* Function that returns above type.  */
17282   struct attribute *attr;
17283
17284   type = die_type (die, cu);
17285
17286   /* The die_type call above may have already set the type for this DIE.  */
17287   ftype = get_die_type (die, cu);
17288   if (ftype)
17289     return ftype;
17290
17291   ftype = lookup_function_type (type);
17292
17293   if (prototyped_function_p (die, cu))
17294     TYPE_PROTOTYPED (ftype) = 1;
17295
17296   /* Store the calling convention in the type if it's available in
17297      the subroutine die.  Otherwise set the calling convention to
17298      the default value DW_CC_normal.  */
17299   attr = dwarf2_attr (die, DW_AT_calling_convention, cu);
17300   if (attr)
17301     TYPE_CALLING_CONVENTION (ftype) = DW_UNSND (attr);
17302   else if (cu->producer && strstr (cu->producer, "IBM XL C for OpenCL"))
17303     TYPE_CALLING_CONVENTION (ftype) = DW_CC_GDB_IBM_OpenCL;
17304   else
17305     TYPE_CALLING_CONVENTION (ftype) = DW_CC_normal;
17306
17307   /* Record whether the function returns normally to its caller or not
17308      if the DWARF producer set that information.  */
17309   attr = dwarf2_attr (die, DW_AT_noreturn, cu);
17310   if (attr && (DW_UNSND (attr) != 0))
17311     TYPE_NO_RETURN (ftype) = 1;
17312
17313   /* We need to add the subroutine type to the die immediately so
17314      we don't infinitely recurse when dealing with parameters
17315      declared as the same subroutine type.  */
17316   set_die_type (die, ftype, cu);
17317
17318   if (die->child != NULL)
17319     {
17320       struct type *void_type = objfile_type (objfile)->builtin_void;
17321       struct die_info *child_die;
17322       int nparams, iparams;
17323
17324       /* Count the number of parameters.
17325          FIXME: GDB currently ignores vararg functions, but knows about
17326          vararg member functions.  */
17327       nparams = 0;
17328       child_die = die->child;
17329       while (child_die && child_die->tag)
17330         {
17331           if (child_die->tag == DW_TAG_formal_parameter)
17332             nparams++;
17333           else if (child_die->tag == DW_TAG_unspecified_parameters)
17334             TYPE_VARARGS (ftype) = 1;
17335           child_die = sibling_die (child_die);
17336         }
17337
17338       /* Allocate storage for parameters and fill them in.  */
17339       TYPE_NFIELDS (ftype) = nparams;
17340       TYPE_FIELDS (ftype) = (struct field *)
17341         TYPE_ZALLOC (ftype, nparams * sizeof (struct field));
17342
17343       /* TYPE_FIELD_TYPE must never be NULL.  Pre-fill the array to ensure it
17344          even if we error out during the parameters reading below.  */
17345       for (iparams = 0; iparams < nparams; iparams++)
17346         TYPE_FIELD_TYPE (ftype, iparams) = void_type;
17347
17348       iparams = 0;
17349       child_die = die->child;
17350       while (child_die && child_die->tag)
17351         {
17352           if (child_die->tag == DW_TAG_formal_parameter)
17353             {
17354               struct type *arg_type;
17355
17356               /* DWARF version 2 has no clean way to discern C++
17357                  static and non-static member functions.  G++ helps
17358                  GDB by marking the first parameter for non-static
17359                  member functions (which is the this pointer) as
17360                  artificial.  We pass this information to
17361                  dwarf2_add_member_fn via TYPE_FIELD_ARTIFICIAL.
17362
17363                  DWARF version 3 added DW_AT_object_pointer, which GCC
17364                  4.5 does not yet generate.  */
17365               attr = dwarf2_attr (child_die, DW_AT_artificial, cu);
17366               if (attr)
17367                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = DW_UNSND (attr);
17368               else
17369                 TYPE_FIELD_ARTIFICIAL (ftype, iparams) = 0;
17370               arg_type = die_type (child_die, cu);
17371
17372               /* RealView does not mark THIS as const, which the testsuite
17373                  expects.  GCC marks THIS as const in method definitions,
17374                  but not in the class specifications (GCC PR 43053).  */
17375               if (cu->language == language_cplus && !TYPE_CONST (arg_type)
17376                   && TYPE_FIELD_ARTIFICIAL (ftype, iparams))
17377                 {
17378                   int is_this = 0;
17379                   struct dwarf2_cu *arg_cu = cu;
17380                   const char *name = dwarf2_name (child_die, cu);
17381
17382                   attr = dwarf2_attr (die, DW_AT_object_pointer, cu);
17383                   if (attr)
17384                     {
17385                       /* If the compiler emits this, use it.  */
17386                       if (follow_die_ref (die, attr, &arg_cu) == child_die)
17387                         is_this = 1;
17388                     }
17389                   else if (name && strcmp (name, "this") == 0)
17390                     /* Function definitions will have the argument names.  */
17391                     is_this = 1;
17392                   else if (name == NULL && iparams == 0)
17393                     /* Declarations may not have the names, so like
17394                        elsewhere in GDB, assume an artificial first
17395                        argument is "this".  */
17396                     is_this = 1;
17397
17398                   if (is_this)
17399                     arg_type = make_cv_type (1, TYPE_VOLATILE (arg_type),
17400                                              arg_type, 0);
17401                 }
17402
17403               TYPE_FIELD_TYPE (ftype, iparams) = arg_type;
17404               iparams++;
17405             }
17406           child_die = sibling_die (child_die);
17407         }
17408     }
17409
17410   return ftype;
17411 }
17412
17413 static struct type *
17414 read_typedef (struct die_info *die, struct dwarf2_cu *cu)
17415 {
17416   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17417   const char *name = NULL;
17418   struct type *this_type, *target_type;
17419
17420   name = dwarf2_full_name (NULL, die, cu);
17421   this_type = init_type (objfile, TYPE_CODE_TYPEDEF, 0, name);
17422   TYPE_TARGET_STUB (this_type) = 1;
17423   set_die_type (die, this_type, cu);
17424   target_type = die_type (die, cu);
17425   if (target_type != this_type)
17426     TYPE_TARGET_TYPE (this_type) = target_type;
17427   else
17428     {
17429       /* Self-referential typedefs are, it seems, not allowed by the DWARF
17430          spec and cause infinite loops in GDB.  */
17431       complaint (_("Self-referential DW_TAG_typedef "
17432                    "- DIE at %s [in module %s]"),
17433                  sect_offset_str (die->sect_off), objfile_name (objfile));
17434       TYPE_TARGET_TYPE (this_type) = NULL;
17435     }
17436   return this_type;
17437 }
17438
17439 /* Allocate a floating-point type of size BITS and name NAME.  Pass NAME_HINT
17440    (which may be different from NAME) to the architecture back-end to allow
17441    it to guess the correct format if necessary.  */
17442
17443 static struct type *
17444 dwarf2_init_float_type (struct objfile *objfile, int bits, const char *name,
17445                         const char *name_hint)
17446 {
17447   struct gdbarch *gdbarch = get_objfile_arch (objfile);
17448   const struct floatformat **format;
17449   struct type *type;
17450
17451   format = gdbarch_floatformat_for_type (gdbarch, name_hint, bits);
17452   if (format)
17453     type = init_float_type (objfile, bits, name, format);
17454   else
17455     type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17456
17457   return type;
17458 }
17459
17460 /* Find a representation of a given base type and install
17461    it in the TYPE field of the die.  */
17462
17463 static struct type *
17464 read_base_type (struct die_info *die, struct dwarf2_cu *cu)
17465 {
17466   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17467   struct type *type;
17468   struct attribute *attr;
17469   int encoding = 0, bits = 0;
17470   const char *name;
17471
17472   attr = dwarf2_attr (die, DW_AT_encoding, cu);
17473   if (attr)
17474     {
17475       encoding = DW_UNSND (attr);
17476     }
17477   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17478   if (attr)
17479     {
17480       bits = DW_UNSND (attr) * TARGET_CHAR_BIT;
17481     }
17482   name = dwarf2_name (die, cu);
17483   if (!name)
17484     {
17485       complaint (_("DW_AT_name missing from DW_TAG_base_type"));
17486     }
17487
17488   switch (encoding)
17489     {
17490       case DW_ATE_address:
17491         /* Turn DW_ATE_address into a void * pointer.  */
17492         type = init_type (objfile, TYPE_CODE_VOID, TARGET_CHAR_BIT, NULL);
17493         type = init_pointer_type (objfile, bits, name, type);
17494         break;
17495       case DW_ATE_boolean:
17496         type = init_boolean_type (objfile, bits, 1, name);
17497         break;
17498       case DW_ATE_complex_float:
17499         type = dwarf2_init_float_type (objfile, bits / 2, NULL, name);
17500         type = init_complex_type (objfile, name, type);
17501         break;
17502       case DW_ATE_decimal_float:
17503         type = init_decfloat_type (objfile, bits, name);
17504         break;
17505       case DW_ATE_float:
17506         type = dwarf2_init_float_type (objfile, bits, name, name);
17507         break;
17508       case DW_ATE_signed:
17509         type = init_integer_type (objfile, bits, 0, name);
17510         break;
17511       case DW_ATE_unsigned:
17512         if (cu->language == language_fortran
17513             && name
17514             && startswith (name, "character("))
17515           type = init_character_type (objfile, bits, 1, name);
17516         else
17517           type = init_integer_type (objfile, bits, 1, name);
17518         break;
17519       case DW_ATE_signed_char:
17520         if (cu->language == language_ada || cu->language == language_m2
17521             || cu->language == language_pascal
17522             || cu->language == language_fortran)
17523           type = init_character_type (objfile, bits, 0, name);
17524         else
17525           type = init_integer_type (objfile, bits, 0, name);
17526         break;
17527       case DW_ATE_unsigned_char:
17528         if (cu->language == language_ada || cu->language == language_m2
17529             || cu->language == language_pascal
17530             || cu->language == language_fortran
17531             || cu->language == language_rust)
17532           type = init_character_type (objfile, bits, 1, name);
17533         else
17534           type = init_integer_type (objfile, bits, 1, name);
17535         break;
17536       case DW_ATE_UTF:
17537         {
17538           gdbarch *arch = get_objfile_arch (objfile);
17539
17540           if (bits == 16)
17541             type = builtin_type (arch)->builtin_char16;
17542           else if (bits == 32)
17543             type = builtin_type (arch)->builtin_char32;
17544           else
17545             {
17546               complaint (_("unsupported DW_ATE_UTF bit size: '%d'"),
17547                          bits);
17548               type = init_integer_type (objfile, bits, 1, name);
17549             }
17550           return set_die_type (die, type, cu);
17551         }
17552         break;
17553
17554       default:
17555         complaint (_("unsupported DW_AT_encoding: '%s'"),
17556                    dwarf_type_encoding_name (encoding));
17557         type = init_type (objfile, TYPE_CODE_ERROR, bits, name);
17558         break;
17559     }
17560
17561   if (name && strcmp (name, "char") == 0)
17562     TYPE_NOSIGN (type) = 1;
17563
17564   maybe_set_alignment (cu, die, type);
17565
17566   return set_die_type (die, type, cu);
17567 }
17568
17569 /* Parse dwarf attribute if it's a block, reference or constant and put the
17570    resulting value of the attribute into struct bound_prop.
17571    Returns 1 if ATTR could be resolved into PROP, 0 otherwise.  */
17572
17573 static int
17574 attr_to_dynamic_prop (const struct attribute *attr, struct die_info *die,
17575                       struct dwarf2_cu *cu, struct dynamic_prop *prop)
17576 {
17577   struct dwarf2_property_baton *baton;
17578   struct obstack *obstack
17579     = &cu->per_cu->dwarf2_per_objfile->objfile->objfile_obstack;
17580
17581   if (attr == NULL || prop == NULL)
17582     return 0;
17583
17584   if (attr_form_is_block (attr))
17585     {
17586       baton = XOBNEW (obstack, struct dwarf2_property_baton);
17587       baton->referenced_type = NULL;
17588       baton->locexpr.per_cu = cu->per_cu;
17589       baton->locexpr.size = DW_BLOCK (attr)->size;
17590       baton->locexpr.data = DW_BLOCK (attr)->data;
17591       prop->data.baton = baton;
17592       prop->kind = PROP_LOCEXPR;
17593       gdb_assert (prop->data.baton != NULL);
17594     }
17595   else if (attr_form_is_ref (attr))
17596     {
17597       struct dwarf2_cu *target_cu = cu;
17598       struct die_info *target_die;
17599       struct attribute *target_attr;
17600
17601       target_die = follow_die_ref (die, attr, &target_cu);
17602       target_attr = dwarf2_attr (target_die, DW_AT_location, target_cu);
17603       if (target_attr == NULL)
17604         target_attr = dwarf2_attr (target_die, DW_AT_data_member_location,
17605                                    target_cu);
17606       if (target_attr == NULL)
17607         return 0;
17608
17609       switch (target_attr->name)
17610         {
17611           case DW_AT_location:
17612             if (attr_form_is_section_offset (target_attr))
17613               {
17614                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17615                 baton->referenced_type = die_type (target_die, target_cu);
17616                 fill_in_loclist_baton (cu, &baton->loclist, target_attr);
17617                 prop->data.baton = baton;
17618                 prop->kind = PROP_LOCLIST;
17619                 gdb_assert (prop->data.baton != NULL);
17620               }
17621             else if (attr_form_is_block (target_attr))
17622               {
17623                 baton = XOBNEW (obstack, struct dwarf2_property_baton);
17624                 baton->referenced_type = die_type (target_die, target_cu);
17625                 baton->locexpr.per_cu = cu->per_cu;
17626                 baton->locexpr.size = DW_BLOCK (target_attr)->size;
17627                 baton->locexpr.data = DW_BLOCK (target_attr)->data;
17628                 prop->data.baton = baton;
17629                 prop->kind = PROP_LOCEXPR;
17630                 gdb_assert (prop->data.baton != NULL);
17631               }
17632             else
17633               {
17634                 dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
17635                                                        "dynamic property");
17636                 return 0;
17637               }
17638             break;
17639           case DW_AT_data_member_location:
17640             {
17641               LONGEST offset;
17642
17643               if (!handle_data_member_location (target_die, target_cu,
17644                                                 &offset))
17645                 return 0;
17646
17647               baton = XOBNEW (obstack, struct dwarf2_property_baton);
17648               baton->referenced_type = read_type_die (target_die->parent,
17649                                                       target_cu);
17650               baton->offset_info.offset = offset;
17651               baton->offset_info.type = die_type (target_die, target_cu);
17652               prop->data.baton = baton;
17653               prop->kind = PROP_ADDR_OFFSET;
17654               break;
17655             }
17656         }
17657     }
17658   else if (attr_form_is_constant (attr))
17659     {
17660       prop->data.const_val = dwarf2_get_attr_constant_value (attr, 0);
17661       prop->kind = PROP_CONST;
17662     }
17663   else
17664     {
17665       dwarf2_invalid_attrib_class_complaint (dwarf_form_name (attr->form),
17666                                              dwarf2_name (die, cu));
17667       return 0;
17668     }
17669
17670   return 1;
17671 }
17672
17673 /* Read the given DW_AT_subrange DIE.  */
17674
17675 static struct type *
17676 read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
17677 {
17678   struct type *base_type, *orig_base_type;
17679   struct type *range_type;
17680   struct attribute *attr;
17681   struct dynamic_prop low, high;
17682   int low_default_is_valid;
17683   int high_bound_is_count = 0;
17684   const char *name;
17685   LONGEST negative_mask;
17686
17687   orig_base_type = die_type (die, cu);
17688   /* If ORIG_BASE_TYPE is a typedef, it will not be TYPE_UNSIGNED,
17689      whereas the real type might be.  So, we use ORIG_BASE_TYPE when
17690      creating the range type, but we use the result of check_typedef
17691      when examining properties of the type.  */
17692   base_type = check_typedef (orig_base_type);
17693
17694   /* The die_type call above may have already set the type for this DIE.  */
17695   range_type = get_die_type (die, cu);
17696   if (range_type)
17697     return range_type;
17698
17699   low.kind = PROP_CONST;
17700   high.kind = PROP_CONST;
17701   high.data.const_val = 0;
17702
17703   /* Set LOW_DEFAULT_IS_VALID if current language and DWARF version allow
17704      omitting DW_AT_lower_bound.  */
17705   switch (cu->language)
17706     {
17707     case language_c:
17708     case language_cplus:
17709       low.data.const_val = 0;
17710       low_default_is_valid = 1;
17711       break;
17712     case language_fortran:
17713       low.data.const_val = 1;
17714       low_default_is_valid = 1;
17715       break;
17716     case language_d:
17717     case language_objc:
17718     case language_rust:
17719       low.data.const_val = 0;
17720       low_default_is_valid = (cu->header.version >= 4);
17721       break;
17722     case language_ada:
17723     case language_m2:
17724     case language_pascal:
17725       low.data.const_val = 1;
17726       low_default_is_valid = (cu->header.version >= 4);
17727       break;
17728     default:
17729       low.data.const_val = 0;
17730       low_default_is_valid = 0;
17731       break;
17732     }
17733
17734   attr = dwarf2_attr (die, DW_AT_lower_bound, cu);
17735   if (attr)
17736     attr_to_dynamic_prop (attr, die, cu, &low);
17737   else if (!low_default_is_valid)
17738     complaint (_("Missing DW_AT_lower_bound "
17739                                       "- DIE at %s [in module %s]"),
17740                sect_offset_str (die->sect_off),
17741                objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17742
17743   struct attribute *attr_ub, *attr_count;
17744   attr = attr_ub = dwarf2_attr (die, DW_AT_upper_bound, cu);
17745   if (!attr_to_dynamic_prop (attr, die, cu, &high))
17746     {
17747       attr = attr_count = dwarf2_attr (die, DW_AT_count, cu);
17748       if (attr_to_dynamic_prop (attr, die, cu, &high))
17749         {
17750           /* If bounds are constant do the final calculation here.  */
17751           if (low.kind == PROP_CONST && high.kind == PROP_CONST)
17752             high.data.const_val = low.data.const_val + high.data.const_val - 1;
17753           else
17754             high_bound_is_count = 1;
17755         }
17756       else
17757         {
17758           if (attr_ub != NULL)
17759             complaint (_("Unresolved DW_AT_upper_bound "
17760                          "- DIE at %s [in module %s]"),
17761                        sect_offset_str (die->sect_off),
17762                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17763           if (attr_count != NULL)
17764             complaint (_("Unresolved DW_AT_count "
17765                          "- DIE at %s [in module %s]"),
17766                        sect_offset_str (die->sect_off),
17767                        objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
17768         }
17769         
17770     }
17771
17772   /* Dwarf-2 specifications explicitly allows to create subrange types
17773      without specifying a base type.
17774      In that case, the base type must be set to the type of
17775      the lower bound, upper bound or count, in that order, if any of these
17776      three attributes references an object that has a type.
17777      If no base type is found, the Dwarf-2 specifications say that
17778      a signed integer type of size equal to the size of an address should
17779      be used.
17780      For the following C code: `extern char gdb_int [];'
17781      GCC produces an empty range DIE.
17782      FIXME: muller/2010-05-28: Possible references to object for low bound,
17783      high bound or count are not yet handled by this code.  */
17784   if (TYPE_CODE (base_type) == TYPE_CODE_VOID)
17785     {
17786       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
17787       struct gdbarch *gdbarch = get_objfile_arch (objfile);
17788       int addr_size = gdbarch_addr_bit (gdbarch) /8;
17789       struct type *int_type = objfile_type (objfile)->builtin_int;
17790
17791       /* Test "int", "long int", and "long long int" objfile types,
17792          and select the first one having a size above or equal to the
17793          architecture address size.  */
17794       if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17795         base_type = int_type;
17796       else
17797         {
17798           int_type = objfile_type (objfile)->builtin_long;
17799           if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17800             base_type = int_type;
17801           else
17802             {
17803               int_type = objfile_type (objfile)->builtin_long_long;
17804               if (int_type && TYPE_LENGTH (int_type) >= addr_size)
17805                 base_type = int_type;
17806             }
17807         }
17808     }
17809
17810   /* Normally, the DWARF producers are expected to use a signed
17811      constant form (Eg. DW_FORM_sdata) to express negative bounds.
17812      But this is unfortunately not always the case, as witnessed
17813      with GCC, for instance, where the ambiguous DW_FORM_dataN form
17814      is used instead.  To work around that ambiguity, we treat
17815      the bounds as signed, and thus sign-extend their values, when
17816      the base type is signed.  */
17817   negative_mask =
17818     -((LONGEST) 1 << (TYPE_LENGTH (base_type) * TARGET_CHAR_BIT - 1));
17819   if (low.kind == PROP_CONST
17820       && !TYPE_UNSIGNED (base_type) && (low.data.const_val & negative_mask))
17821     low.data.const_val |= negative_mask;
17822   if (high.kind == PROP_CONST
17823       && !TYPE_UNSIGNED (base_type) && (high.data.const_val & negative_mask))
17824     high.data.const_val |= negative_mask;
17825
17826   range_type = create_range_type (NULL, orig_base_type, &low, &high);
17827
17828   if (high_bound_is_count)
17829     TYPE_RANGE_DATA (range_type)->flag_upper_bound_is_count = 1;
17830
17831   /* Ada expects an empty array on no boundary attributes.  */
17832   if (attr == NULL && cu->language != language_ada)
17833     TYPE_HIGH_BOUND_KIND (range_type) = PROP_UNDEFINED;
17834
17835   name = dwarf2_name (die, cu);
17836   if (name)
17837     TYPE_NAME (range_type) = name;
17838
17839   attr = dwarf2_attr (die, DW_AT_byte_size, cu);
17840   if (attr)
17841     TYPE_LENGTH (range_type) = DW_UNSND (attr);
17842
17843   maybe_set_alignment (cu, die, range_type);
17844
17845   set_die_type (die, range_type, cu);
17846
17847   /* set_die_type should be already done.  */
17848   set_descriptive_type (range_type, die, cu);
17849
17850   return range_type;
17851 }
17852
17853 static struct type *
17854 read_unspecified_type (struct die_info *die, struct dwarf2_cu *cu)
17855 {
17856   struct type *type;
17857
17858   type = init_type (cu->per_cu->dwarf2_per_objfile->objfile, TYPE_CODE_VOID,0,
17859                     NULL);
17860   TYPE_NAME (type) = dwarf2_name (die, cu);
17861
17862   /* In Ada, an unspecified type is typically used when the description
17863      of the type is defered to a different unit.  When encountering
17864      such a type, we treat it as a stub, and try to resolve it later on,
17865      when needed.  */
17866   if (cu->language == language_ada)
17867     TYPE_STUB (type) = 1;
17868
17869   return set_die_type (die, type, cu);
17870 }
17871
17872 /* Read a single die and all its descendents.  Set the die's sibling
17873    field to NULL; set other fields in the die correctly, and set all
17874    of the descendents' fields correctly.  Set *NEW_INFO_PTR to the
17875    location of the info_ptr after reading all of those dies.  PARENT
17876    is the parent of the die in question.  */
17877
17878 static struct die_info *
17879 read_die_and_children (const struct die_reader_specs *reader,
17880                        const gdb_byte *info_ptr,
17881                        const gdb_byte **new_info_ptr,
17882                        struct die_info *parent)
17883 {
17884   struct die_info *die;
17885   const gdb_byte *cur_ptr;
17886   int has_children;
17887
17888   cur_ptr = read_full_die_1 (reader, &die, info_ptr, &has_children, 0);
17889   if (die == NULL)
17890     {
17891       *new_info_ptr = cur_ptr;
17892       return NULL;
17893     }
17894   store_in_ref_table (die, reader->cu);
17895
17896   if (has_children)
17897     die->child = read_die_and_siblings_1 (reader, cur_ptr, new_info_ptr, die);
17898   else
17899     {
17900       die->child = NULL;
17901       *new_info_ptr = cur_ptr;
17902     }
17903
17904   die->sibling = NULL;
17905   die->parent = parent;
17906   return die;
17907 }
17908
17909 /* Read a die, all of its descendents, and all of its siblings; set
17910    all of the fields of all of the dies correctly.  Arguments are as
17911    in read_die_and_children.  */
17912
17913 static struct die_info *
17914 read_die_and_siblings_1 (const struct die_reader_specs *reader,
17915                          const gdb_byte *info_ptr,
17916                          const gdb_byte **new_info_ptr,
17917                          struct die_info *parent)
17918 {
17919   struct die_info *first_die, *last_sibling;
17920   const gdb_byte *cur_ptr;
17921
17922   cur_ptr = info_ptr;
17923   first_die = last_sibling = NULL;
17924
17925   while (1)
17926     {
17927       struct die_info *die
17928         = read_die_and_children (reader, cur_ptr, &cur_ptr, parent);
17929
17930       if (die == NULL)
17931         {
17932           *new_info_ptr = cur_ptr;
17933           return first_die;
17934         }
17935
17936       if (!first_die)
17937         first_die = die;
17938       else
17939         last_sibling->sibling = die;
17940
17941       last_sibling = die;
17942     }
17943 }
17944
17945 /* Read a die, all of its descendents, and all of its siblings; set
17946    all of the fields of all of the dies correctly.  Arguments are as
17947    in read_die_and_children.
17948    This the main entry point for reading a DIE and all its children.  */
17949
17950 static struct die_info *
17951 read_die_and_siblings (const struct die_reader_specs *reader,
17952                        const gdb_byte *info_ptr,
17953                        const gdb_byte **new_info_ptr,
17954                        struct die_info *parent)
17955 {
17956   struct die_info *die = read_die_and_siblings_1 (reader, info_ptr,
17957                                                   new_info_ptr, parent);
17958
17959   if (dwarf_die_debug)
17960     {
17961       fprintf_unfiltered (gdb_stdlog,
17962                           "Read die from %s@0x%x of %s:\n",
17963                           get_section_name (reader->die_section),
17964                           (unsigned) (info_ptr - reader->die_section->buffer),
17965                           bfd_get_filename (reader->abfd));
17966       dump_die (die, dwarf_die_debug);
17967     }
17968
17969   return die;
17970 }
17971
17972 /* Read a die and all its attributes, leave space for NUM_EXTRA_ATTRS
17973    attributes.
17974    The caller is responsible for filling in the extra attributes
17975    and updating (*DIEP)->num_attrs.
17976    Set DIEP to point to a newly allocated die with its information,
17977    except for its child, sibling, and parent fields.
17978    Set HAS_CHILDREN to tell whether the die has children or not.  */
17979
17980 static const gdb_byte *
17981 read_full_die_1 (const struct die_reader_specs *reader,
17982                  struct die_info **diep, const gdb_byte *info_ptr,
17983                  int *has_children, int num_extra_attrs)
17984 {
17985   unsigned int abbrev_number, bytes_read, i;
17986   struct abbrev_info *abbrev;
17987   struct die_info *die;
17988   struct dwarf2_cu *cu = reader->cu;
17989   bfd *abfd = reader->abfd;
17990
17991   sect_offset sect_off = (sect_offset) (info_ptr - reader->buffer);
17992   abbrev_number = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
17993   info_ptr += bytes_read;
17994   if (!abbrev_number)
17995     {
17996       *diep = NULL;
17997       *has_children = 0;
17998       return info_ptr;
17999     }
18000
18001   abbrev = reader->abbrev_table->lookup_abbrev (abbrev_number);
18002   if (!abbrev)
18003     error (_("Dwarf Error: could not find abbrev number %d [in module %s]"),
18004            abbrev_number,
18005            bfd_get_filename (abfd));
18006
18007   die = dwarf_alloc_die (cu, abbrev->num_attrs + num_extra_attrs);
18008   die->sect_off = sect_off;
18009   die->tag = abbrev->tag;
18010   die->abbrev = abbrev_number;
18011
18012   /* Make the result usable.
18013      The caller needs to update num_attrs after adding the extra
18014      attributes.  */
18015   die->num_attrs = abbrev->num_attrs;
18016
18017   for (i = 0; i < abbrev->num_attrs; ++i)
18018     info_ptr = read_attribute (reader, &die->attrs[i], &abbrev->attrs[i],
18019                                info_ptr);
18020
18021   *diep = die;
18022   *has_children = abbrev->has_children;
18023   return info_ptr;
18024 }
18025
18026 /* Read a die and all its attributes.
18027    Set DIEP to point to a newly allocated die with its information,
18028    except for its child, sibling, and parent fields.
18029    Set HAS_CHILDREN to tell whether the die has children or not.  */
18030
18031 static const gdb_byte *
18032 read_full_die (const struct die_reader_specs *reader,
18033                struct die_info **diep, const gdb_byte *info_ptr,
18034                int *has_children)
18035 {
18036   const gdb_byte *result;
18037
18038   result = read_full_die_1 (reader, diep, info_ptr, has_children, 0);
18039
18040   if (dwarf_die_debug)
18041     {
18042       fprintf_unfiltered (gdb_stdlog,
18043                           "Read die from %s@0x%x of %s:\n",
18044                           get_section_name (reader->die_section),
18045                           (unsigned) (info_ptr - reader->die_section->buffer),
18046                           bfd_get_filename (reader->abfd));
18047       dump_die (*diep, dwarf_die_debug);
18048     }
18049
18050   return result;
18051 }
18052 \f
18053 /* Abbreviation tables.
18054
18055    In DWARF version 2, the description of the debugging information is
18056    stored in a separate .debug_abbrev section.  Before we read any
18057    dies from a section we read in all abbreviations and install them
18058    in a hash table.  */
18059
18060 /* Allocate space for a struct abbrev_info object in ABBREV_TABLE.  */
18061
18062 struct abbrev_info *
18063 abbrev_table::alloc_abbrev ()
18064 {
18065   struct abbrev_info *abbrev;
18066
18067   abbrev = XOBNEW (&abbrev_obstack, struct abbrev_info);
18068   memset (abbrev, 0, sizeof (struct abbrev_info));
18069
18070   return abbrev;
18071 }
18072
18073 /* Add an abbreviation to the table.  */
18074
18075 void
18076 abbrev_table::add_abbrev (unsigned int abbrev_number,
18077                           struct abbrev_info *abbrev)
18078 {
18079   unsigned int hash_number;
18080
18081   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18082   abbrev->next = m_abbrevs[hash_number];
18083   m_abbrevs[hash_number] = abbrev;
18084 }
18085
18086 /* Look up an abbrev in the table.
18087    Returns NULL if the abbrev is not found.  */
18088
18089 struct abbrev_info *
18090 abbrev_table::lookup_abbrev (unsigned int abbrev_number)
18091 {
18092   unsigned int hash_number;
18093   struct abbrev_info *abbrev;
18094
18095   hash_number = abbrev_number % ABBREV_HASH_SIZE;
18096   abbrev = m_abbrevs[hash_number];
18097
18098   while (abbrev)
18099     {
18100       if (abbrev->number == abbrev_number)
18101         return abbrev;
18102       abbrev = abbrev->next;
18103     }
18104   return NULL;
18105 }
18106
18107 /* Read in an abbrev table.  */
18108
18109 static abbrev_table_up
18110 abbrev_table_read_table (struct dwarf2_per_objfile *dwarf2_per_objfile,
18111                          struct dwarf2_section_info *section,
18112                          sect_offset sect_off)
18113 {
18114   struct objfile *objfile = dwarf2_per_objfile->objfile;
18115   bfd *abfd = get_section_bfd_owner (section);
18116   const gdb_byte *abbrev_ptr;
18117   struct abbrev_info *cur_abbrev;
18118   unsigned int abbrev_number, bytes_read, abbrev_name;
18119   unsigned int abbrev_form;
18120   struct attr_abbrev *cur_attrs;
18121   unsigned int allocated_attrs;
18122
18123   abbrev_table_up abbrev_table (new struct abbrev_table (sect_off));
18124
18125   dwarf2_read_section (objfile, section);
18126   abbrev_ptr = section->buffer + to_underlying (sect_off);
18127   abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18128   abbrev_ptr += bytes_read;
18129
18130   allocated_attrs = ATTR_ALLOC_CHUNK;
18131   cur_attrs = XNEWVEC (struct attr_abbrev, allocated_attrs);
18132
18133   /* Loop until we reach an abbrev number of 0.  */
18134   while (abbrev_number)
18135     {
18136       cur_abbrev = abbrev_table->alloc_abbrev ();
18137
18138       /* read in abbrev header */
18139       cur_abbrev->number = abbrev_number;
18140       cur_abbrev->tag
18141         = (enum dwarf_tag) read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18142       abbrev_ptr += bytes_read;
18143       cur_abbrev->has_children = read_1_byte (abfd, abbrev_ptr);
18144       abbrev_ptr += 1;
18145
18146       /* now read in declarations */
18147       for (;;)
18148         {
18149           LONGEST implicit_const;
18150
18151           abbrev_name = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18152           abbrev_ptr += bytes_read;
18153           abbrev_form = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18154           abbrev_ptr += bytes_read;
18155           if (abbrev_form == DW_FORM_implicit_const)
18156             {
18157               implicit_const = read_signed_leb128 (abfd, abbrev_ptr,
18158                                                    &bytes_read);
18159               abbrev_ptr += bytes_read;
18160             }
18161           else
18162             {
18163               /* Initialize it due to a false compiler warning.  */
18164               implicit_const = -1;
18165             }
18166
18167           if (abbrev_name == 0)
18168             break;
18169
18170           if (cur_abbrev->num_attrs == allocated_attrs)
18171             {
18172               allocated_attrs += ATTR_ALLOC_CHUNK;
18173               cur_attrs
18174                 = XRESIZEVEC (struct attr_abbrev, cur_attrs, allocated_attrs);
18175             }
18176
18177           cur_attrs[cur_abbrev->num_attrs].name
18178             = (enum dwarf_attribute) abbrev_name;
18179           cur_attrs[cur_abbrev->num_attrs].form
18180             = (enum dwarf_form) abbrev_form;
18181           cur_attrs[cur_abbrev->num_attrs].implicit_const = implicit_const;
18182           ++cur_abbrev->num_attrs;
18183         }
18184
18185       cur_abbrev->attrs =
18186         XOBNEWVEC (&abbrev_table->abbrev_obstack, struct attr_abbrev,
18187                    cur_abbrev->num_attrs);
18188       memcpy (cur_abbrev->attrs, cur_attrs,
18189               cur_abbrev->num_attrs * sizeof (struct attr_abbrev));
18190
18191       abbrev_table->add_abbrev (abbrev_number, cur_abbrev);
18192
18193       /* Get next abbreviation.
18194          Under Irix6 the abbreviations for a compilation unit are not
18195          always properly terminated with an abbrev number of 0.
18196          Exit loop if we encounter an abbreviation which we have
18197          already read (which means we are about to read the abbreviations
18198          for the next compile unit) or if the end of the abbreviation
18199          table is reached.  */
18200       if ((unsigned int) (abbrev_ptr - section->buffer) >= section->size)
18201         break;
18202       abbrev_number = read_unsigned_leb128 (abfd, abbrev_ptr, &bytes_read);
18203       abbrev_ptr += bytes_read;
18204       if (abbrev_table->lookup_abbrev (abbrev_number) != NULL)
18205         break;
18206     }
18207
18208   xfree (cur_attrs);
18209   return abbrev_table;
18210 }
18211
18212 /* Returns nonzero if TAG represents a type that we might generate a partial
18213    symbol for.  */
18214
18215 static int
18216 is_type_tag_for_partial (int tag)
18217 {
18218   switch (tag)
18219     {
18220 #if 0
18221     /* Some types that would be reasonable to generate partial symbols for,
18222        that we don't at present.  */
18223     case DW_TAG_array_type:
18224     case DW_TAG_file_type:
18225     case DW_TAG_ptr_to_member_type:
18226     case DW_TAG_set_type:
18227     case DW_TAG_string_type:
18228     case DW_TAG_subroutine_type:
18229 #endif
18230     case DW_TAG_base_type:
18231     case DW_TAG_class_type:
18232     case DW_TAG_interface_type:
18233     case DW_TAG_enumeration_type:
18234     case DW_TAG_structure_type:
18235     case DW_TAG_subrange_type:
18236     case DW_TAG_typedef:
18237     case DW_TAG_union_type:
18238       return 1;
18239     default:
18240       return 0;
18241     }
18242 }
18243
18244 /* Load all DIEs that are interesting for partial symbols into memory.  */
18245
18246 static struct partial_die_info *
18247 load_partial_dies (const struct die_reader_specs *reader,
18248                    const gdb_byte *info_ptr, int building_psymtab)
18249 {
18250   struct dwarf2_cu *cu = reader->cu;
18251   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18252   struct partial_die_info *parent_die, *last_die, *first_die = NULL;
18253   unsigned int bytes_read;
18254   unsigned int load_all = 0;
18255   int nesting_level = 1;
18256
18257   parent_die = NULL;
18258   last_die = NULL;
18259
18260   gdb_assert (cu->per_cu != NULL);
18261   if (cu->per_cu->load_all_dies)
18262     load_all = 1;
18263
18264   cu->partial_dies
18265     = htab_create_alloc_ex (cu->header.length / 12,
18266                             partial_die_hash,
18267                             partial_die_eq,
18268                             NULL,
18269                             &cu->comp_unit_obstack,
18270                             hashtab_obstack_allocate,
18271                             dummy_obstack_deallocate);
18272
18273   while (1)
18274     {
18275       abbrev_info *abbrev = peek_die_abbrev (*reader, info_ptr, &bytes_read);
18276
18277       /* A NULL abbrev means the end of a series of children.  */
18278       if (abbrev == NULL)
18279         {
18280           if (--nesting_level == 0)
18281             return first_die;
18282
18283           info_ptr += bytes_read;
18284           last_die = parent_die;
18285           parent_die = parent_die->die_parent;
18286           continue;
18287         }
18288
18289       /* Check for template arguments.  We never save these; if
18290          they're seen, we just mark the parent, and go on our way.  */
18291       if (parent_die != NULL
18292           && cu->language == language_cplus
18293           && (abbrev->tag == DW_TAG_template_type_param
18294               || abbrev->tag == DW_TAG_template_value_param))
18295         {
18296           parent_die->has_template_arguments = 1;
18297
18298           if (!load_all)
18299             {
18300               /* We don't need a partial DIE for the template argument.  */
18301               info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18302               continue;
18303             }
18304         }
18305
18306       /* We only recurse into c++ subprograms looking for template arguments.
18307          Skip their other children.  */
18308       if (!load_all
18309           && cu->language == language_cplus
18310           && parent_die != NULL
18311           && parent_die->tag == DW_TAG_subprogram)
18312         {
18313           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18314           continue;
18315         }
18316
18317       /* Check whether this DIE is interesting enough to save.  Normally
18318          we would not be interested in members here, but there may be
18319          later variables referencing them via DW_AT_specification (for
18320          static members).  */
18321       if (!load_all
18322           && !is_type_tag_for_partial (abbrev->tag)
18323           && abbrev->tag != DW_TAG_constant
18324           && abbrev->tag != DW_TAG_enumerator
18325           && abbrev->tag != DW_TAG_subprogram
18326           && abbrev->tag != DW_TAG_inlined_subroutine
18327           && abbrev->tag != DW_TAG_lexical_block
18328           && abbrev->tag != DW_TAG_variable
18329           && abbrev->tag != DW_TAG_namespace
18330           && abbrev->tag != DW_TAG_module
18331           && abbrev->tag != DW_TAG_member
18332           && abbrev->tag != DW_TAG_imported_unit
18333           && abbrev->tag != DW_TAG_imported_declaration)
18334         {
18335           /* Otherwise we skip to the next sibling, if any.  */
18336           info_ptr = skip_one_die (reader, info_ptr + bytes_read, abbrev);
18337           continue;
18338         }
18339
18340       struct partial_die_info pdi ((sect_offset) (info_ptr - reader->buffer),
18341                                    abbrev);
18342
18343       info_ptr = pdi.read (reader, *abbrev, info_ptr + bytes_read);
18344
18345       /* This two-pass algorithm for processing partial symbols has a
18346          high cost in cache pressure.  Thus, handle some simple cases
18347          here which cover the majority of C partial symbols.  DIEs
18348          which neither have specification tags in them, nor could have
18349          specification tags elsewhere pointing at them, can simply be
18350          processed and discarded.
18351
18352          This segment is also optional; scan_partial_symbols and
18353          add_partial_symbol will handle these DIEs if we chain
18354          them in normally.  When compilers which do not emit large
18355          quantities of duplicate debug information are more common,
18356          this code can probably be removed.  */
18357
18358       /* Any complete simple types at the top level (pretty much all
18359          of them, for a language without namespaces), can be processed
18360          directly.  */
18361       if (parent_die == NULL
18362           && pdi.has_specification == 0
18363           && pdi.is_declaration == 0
18364           && ((pdi.tag == DW_TAG_typedef && !pdi.has_children)
18365               || pdi.tag == DW_TAG_base_type
18366               || pdi.tag == DW_TAG_subrange_type))
18367         {
18368           if (building_psymtab && pdi.name != NULL)
18369             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18370                                  VAR_DOMAIN, LOC_TYPEDEF, -1,
18371                                  &objfile->static_psymbols,
18372                                  0, cu->language, objfile);
18373           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18374           continue;
18375         }
18376
18377       /* The exception for DW_TAG_typedef with has_children above is
18378          a workaround of GCC PR debug/47510.  In the case of this complaint
18379          type_name_or_error will error on such types later.
18380
18381          GDB skipped children of DW_TAG_typedef by the shortcut above and then
18382          it could not find the child DIEs referenced later, this is checked
18383          above.  In correct DWARF DW_TAG_typedef should have no children.  */
18384
18385       if (pdi.tag == DW_TAG_typedef && pdi.has_children)
18386         complaint (_("DW_TAG_typedef has childen - GCC PR debug/47510 bug "
18387                      "- DIE at %s [in module %s]"),
18388                    sect_offset_str (pdi.sect_off), objfile_name (objfile));
18389
18390       /* If we're at the second level, and we're an enumerator, and
18391          our parent has no specification (meaning possibly lives in a
18392          namespace elsewhere), then we can add the partial symbol now
18393          instead of queueing it.  */
18394       if (pdi.tag == DW_TAG_enumerator
18395           && parent_die != NULL
18396           && parent_die->die_parent == NULL
18397           && parent_die->tag == DW_TAG_enumeration_type
18398           && parent_die->has_specification == 0)
18399         {
18400           if (pdi.name == NULL)
18401             complaint (_("malformed enumerator DIE ignored"));
18402           else if (building_psymtab)
18403             add_psymbol_to_list (pdi.name, strlen (pdi.name), 0,
18404                                  VAR_DOMAIN, LOC_CONST, -1,
18405                                  cu->language == language_cplus
18406                                  ? &objfile->global_psymbols
18407                                  : &objfile->static_psymbols,
18408                                  0, cu->language, objfile);
18409
18410           info_ptr = locate_pdi_sibling (reader, &pdi, info_ptr);
18411           continue;
18412         }
18413
18414       struct partial_die_info *part_die
18415         = new (&cu->comp_unit_obstack) partial_die_info (pdi);
18416
18417       /* We'll save this DIE so link it in.  */
18418       part_die->die_parent = parent_die;
18419       part_die->die_sibling = NULL;
18420       part_die->die_child = NULL;
18421
18422       if (last_die && last_die == parent_die)
18423         last_die->die_child = part_die;
18424       else if (last_die)
18425         last_die->die_sibling = part_die;
18426
18427       last_die = part_die;
18428
18429       if (first_die == NULL)
18430         first_die = part_die;
18431
18432       /* Maybe add the DIE to the hash table.  Not all DIEs that we
18433          find interesting need to be in the hash table, because we
18434          also have the parent/sibling/child chains; only those that we
18435          might refer to by offset later during partial symbol reading.
18436
18437          For now this means things that might have be the target of a
18438          DW_AT_specification, DW_AT_abstract_origin, or
18439          DW_AT_extension.  DW_AT_extension will refer only to
18440          namespaces; DW_AT_abstract_origin refers to functions (and
18441          many things under the function DIE, but we do not recurse
18442          into function DIEs during partial symbol reading) and
18443          possibly variables as well; DW_AT_specification refers to
18444          declarations.  Declarations ought to have the DW_AT_declaration
18445          flag.  It happens that GCC forgets to put it in sometimes, but
18446          only for functions, not for types.
18447
18448          Adding more things than necessary to the hash table is harmless
18449          except for the performance cost.  Adding too few will result in
18450          wasted time in find_partial_die, when we reread the compilation
18451          unit with load_all_dies set.  */
18452
18453       if (load_all
18454           || abbrev->tag == DW_TAG_constant
18455           || abbrev->tag == DW_TAG_subprogram
18456           || abbrev->tag == DW_TAG_variable
18457           || abbrev->tag == DW_TAG_namespace
18458           || part_die->is_declaration)
18459         {
18460           void **slot;
18461
18462           slot = htab_find_slot_with_hash (cu->partial_dies, part_die,
18463                                            to_underlying (part_die->sect_off),
18464                                            INSERT);
18465           *slot = part_die;
18466         }
18467
18468       /* For some DIEs we want to follow their children (if any).  For C
18469          we have no reason to follow the children of structures; for other
18470          languages we have to, so that we can get at method physnames
18471          to infer fully qualified class names, for DW_AT_specification,
18472          and for C++ template arguments.  For C++, we also look one level
18473          inside functions to find template arguments (if the name of the
18474          function does not already contain the template arguments).
18475
18476          For Ada, we need to scan the children of subprograms and lexical
18477          blocks as well because Ada allows the definition of nested
18478          entities that could be interesting for the debugger, such as
18479          nested subprograms for instance.  */
18480       if (last_die->has_children
18481           && (load_all
18482               || last_die->tag == DW_TAG_namespace
18483               || last_die->tag == DW_TAG_module
18484               || last_die->tag == DW_TAG_enumeration_type
18485               || (cu->language == language_cplus
18486                   && last_die->tag == DW_TAG_subprogram
18487                   && (last_die->name == NULL
18488                       || strchr (last_die->name, '<') == NULL))
18489               || (cu->language != language_c
18490                   && (last_die->tag == DW_TAG_class_type
18491                       || last_die->tag == DW_TAG_interface_type
18492                       || last_die->tag == DW_TAG_structure_type
18493                       || last_die->tag == DW_TAG_union_type))
18494               || (cu->language == language_ada
18495                   && (last_die->tag == DW_TAG_subprogram
18496                       || last_die->tag == DW_TAG_lexical_block))))
18497         {
18498           nesting_level++;
18499           parent_die = last_die;
18500           continue;
18501         }
18502
18503       /* Otherwise we skip to the next sibling, if any.  */
18504       info_ptr = locate_pdi_sibling (reader, last_die, info_ptr);
18505
18506       /* Back to the top, do it again.  */
18507     }
18508 }
18509
18510 partial_die_info::partial_die_info (sect_offset sect_off_,
18511                                     struct abbrev_info *abbrev)
18512   : partial_die_info (sect_off_, abbrev->tag, abbrev->has_children)
18513 {
18514 }
18515
18516 /* Read a minimal amount of information into the minimal die structure.
18517    INFO_PTR should point just after the initial uleb128 of a DIE.  */
18518
18519 const gdb_byte *
18520 partial_die_info::read (const struct die_reader_specs *reader,
18521                         const struct abbrev_info &abbrev, const gdb_byte *info_ptr)
18522 {
18523   struct dwarf2_cu *cu = reader->cu;
18524   struct dwarf2_per_objfile *dwarf2_per_objfile
18525     = cu->per_cu->dwarf2_per_objfile;
18526   unsigned int i;
18527   int has_low_pc_attr = 0;
18528   int has_high_pc_attr = 0;
18529   int high_pc_relative = 0;
18530
18531   for (i = 0; i < abbrev.num_attrs; ++i)
18532     {
18533       struct attribute attr;
18534
18535       info_ptr = read_attribute (reader, &attr, &abbrev.attrs[i], info_ptr);
18536
18537       /* Store the data if it is of an attribute we want to keep in a
18538          partial symbol table.  */
18539       switch (attr.name)
18540         {
18541         case DW_AT_name:
18542           switch (tag)
18543             {
18544             case DW_TAG_compile_unit:
18545             case DW_TAG_partial_unit:
18546             case DW_TAG_type_unit:
18547               /* Compilation units have a DW_AT_name that is a filename, not
18548                  a source language identifier.  */
18549             case DW_TAG_enumeration_type:
18550             case DW_TAG_enumerator:
18551               /* These tags always have simple identifiers already; no need
18552                  to canonicalize them.  */
18553               name = DW_STRING (&attr);
18554               break;
18555             default:
18556               {
18557                 struct objfile *objfile = dwarf2_per_objfile->objfile;
18558
18559                 name
18560                   = dwarf2_canonicalize_name (DW_STRING (&attr), cu,
18561                                               &objfile->per_bfd->storage_obstack);
18562               }
18563               break;
18564             }
18565           break;
18566         case DW_AT_linkage_name:
18567         case DW_AT_MIPS_linkage_name:
18568           /* Note that both forms of linkage name might appear.  We
18569              assume they will be the same, and we only store the last
18570              one we see.  */
18571           if (cu->language == language_ada)
18572             name = DW_STRING (&attr);
18573           linkage_name = DW_STRING (&attr);
18574           break;
18575         case DW_AT_low_pc:
18576           has_low_pc_attr = 1;
18577           lowpc = attr_value_as_address (&attr);
18578           break;
18579         case DW_AT_high_pc:
18580           has_high_pc_attr = 1;
18581           highpc = attr_value_as_address (&attr);
18582           if (cu->header.version >= 4 && attr_form_is_constant (&attr))
18583                 high_pc_relative = 1;
18584           break;
18585         case DW_AT_location:
18586           /* Support the .debug_loc offsets.  */
18587           if (attr_form_is_block (&attr))
18588             {
18589                d.locdesc = DW_BLOCK (&attr);
18590             }
18591           else if (attr_form_is_section_offset (&attr))
18592             {
18593               dwarf2_complex_location_expr_complaint ();
18594             }
18595           else
18596             {
18597               dwarf2_invalid_attrib_class_complaint ("DW_AT_location",
18598                                                      "partial symbol information");
18599             }
18600           break;
18601         case DW_AT_external:
18602           is_external = DW_UNSND (&attr);
18603           break;
18604         case DW_AT_declaration:
18605           is_declaration = DW_UNSND (&attr);
18606           break;
18607         case DW_AT_type:
18608           has_type = 1;
18609           break;
18610         case DW_AT_abstract_origin:
18611         case DW_AT_specification:
18612         case DW_AT_extension:
18613           has_specification = 1;
18614           spec_offset = dwarf2_get_ref_die_offset (&attr);
18615           spec_is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18616                                    || cu->per_cu->is_dwz);
18617           break;
18618         case DW_AT_sibling:
18619           /* Ignore absolute siblings, they might point outside of
18620              the current compile unit.  */
18621           if (attr.form == DW_FORM_ref_addr)
18622             complaint (_("ignoring absolute DW_AT_sibling"));
18623           else
18624             {
18625               const gdb_byte *buffer = reader->buffer;
18626               sect_offset off = dwarf2_get_ref_die_offset (&attr);
18627               const gdb_byte *sibling_ptr = buffer + to_underlying (off);
18628
18629               if (sibling_ptr < info_ptr)
18630                 complaint (_("DW_AT_sibling points backwards"));
18631               else if (sibling_ptr > reader->buffer_end)
18632                 dwarf2_section_buffer_overflow_complaint (reader->die_section);
18633               else
18634                 sibling = sibling_ptr;
18635             }
18636           break;
18637         case DW_AT_byte_size:
18638           has_byte_size = 1;
18639           break;
18640         case DW_AT_const_value:
18641           has_const_value = 1;
18642           break;
18643         case DW_AT_calling_convention:
18644           /* DWARF doesn't provide a way to identify a program's source-level
18645              entry point.  DW_AT_calling_convention attributes are only meant
18646              to describe functions' calling conventions.
18647
18648              However, because it's a necessary piece of information in
18649              Fortran, and before DWARF 4 DW_CC_program was the only
18650              piece of debugging information whose definition refers to
18651              a 'main program' at all, several compilers marked Fortran
18652              main programs with DW_CC_program --- even when those
18653              functions use the standard calling conventions.
18654
18655              Although DWARF now specifies a way to provide this
18656              information, we support this practice for backward
18657              compatibility.  */
18658           if (DW_UNSND (&attr) == DW_CC_program
18659               && cu->language == language_fortran)
18660             main_subprogram = 1;
18661           break;
18662         case DW_AT_inline:
18663           if (DW_UNSND (&attr) == DW_INL_inlined
18664               || DW_UNSND (&attr) == DW_INL_declared_inlined)
18665             may_be_inlined = 1;
18666           break;
18667
18668         case DW_AT_import:
18669           if (tag == DW_TAG_imported_unit)
18670             {
18671               d.sect_off = dwarf2_get_ref_die_offset (&attr);
18672               is_dwz = (attr.form == DW_FORM_GNU_ref_alt
18673                                   || cu->per_cu->is_dwz);
18674             }
18675           break;
18676
18677         case DW_AT_main_subprogram:
18678           main_subprogram = DW_UNSND (&attr);
18679           break;
18680
18681         default:
18682           break;
18683         }
18684     }
18685
18686   if (high_pc_relative)
18687     highpc += lowpc;
18688
18689   if (has_low_pc_attr && has_high_pc_attr)
18690     {
18691       /* When using the GNU linker, .gnu.linkonce. sections are used to
18692          eliminate duplicate copies of functions and vtables and such.
18693          The linker will arbitrarily choose one and discard the others.
18694          The AT_*_pc values for such functions refer to local labels in
18695          these sections.  If the section from that file was discarded, the
18696          labels are not in the output, so the relocs get a value of 0.
18697          If this is a discarded function, mark the pc bounds as invalid,
18698          so that GDB will ignore it.  */
18699       if (lowpc == 0 && !dwarf2_per_objfile->has_section_at_zero)
18700         {
18701           struct objfile *objfile = dwarf2_per_objfile->objfile;
18702           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18703
18704           complaint (_("DW_AT_low_pc %s is zero "
18705                        "for DIE at %s [in module %s]"),
18706                      paddress (gdbarch, lowpc),
18707                      sect_offset_str (sect_off),
18708                      objfile_name (objfile));
18709         }
18710       /* dwarf2_get_pc_bounds has also the strict low < high requirement.  */
18711       else if (lowpc >= highpc)
18712         {
18713           struct objfile *objfile = dwarf2_per_objfile->objfile;
18714           struct gdbarch *gdbarch = get_objfile_arch (objfile);
18715
18716           complaint (_("DW_AT_low_pc %s is not < DW_AT_high_pc %s "
18717                        "for DIE at %s [in module %s]"),
18718                      paddress (gdbarch, lowpc),
18719                      paddress (gdbarch, highpc),
18720                      sect_offset_str (sect_off),
18721                      objfile_name (objfile));
18722         }
18723       else
18724         has_pc_info = 1;
18725     }
18726
18727   return info_ptr;
18728 }
18729
18730 /* Find a cached partial DIE at OFFSET in CU.  */
18731
18732 struct partial_die_info *
18733 dwarf2_cu::find_partial_die (sect_offset sect_off)
18734 {
18735   struct partial_die_info *lookup_die = NULL;
18736   struct partial_die_info part_die (sect_off);
18737
18738   lookup_die = ((struct partial_die_info *)
18739                 htab_find_with_hash (partial_dies, &part_die,
18740                                      to_underlying (sect_off)));
18741
18742   return lookup_die;
18743 }
18744
18745 /* Find a partial DIE at OFFSET, which may or may not be in CU,
18746    except in the case of .debug_types DIEs which do not reference
18747    outside their CU (they do however referencing other types via
18748    DW_FORM_ref_sig8).  */
18749
18750 static struct partial_die_info *
18751 find_partial_die (sect_offset sect_off, int offset_in_dwz, struct dwarf2_cu *cu)
18752 {
18753   struct dwarf2_per_objfile *dwarf2_per_objfile
18754     = cu->per_cu->dwarf2_per_objfile;
18755   struct objfile *objfile = dwarf2_per_objfile->objfile;
18756   struct dwarf2_per_cu_data *per_cu = NULL;
18757   struct partial_die_info *pd = NULL;
18758
18759   if (offset_in_dwz == cu->per_cu->is_dwz
18760       && offset_in_cu_p (&cu->header, sect_off))
18761     {
18762       pd = cu->find_partial_die (sect_off);
18763       if (pd != NULL)
18764         return pd;
18765       /* We missed recording what we needed.
18766          Load all dies and try again.  */
18767       per_cu = cu->per_cu;
18768     }
18769   else
18770     {
18771       /* TUs don't reference other CUs/TUs (except via type signatures).  */
18772       if (cu->per_cu->is_debug_types)
18773         {
18774           error (_("Dwarf Error: Type Unit at offset %s contains"
18775                    " external reference to offset %s [in module %s].\n"),
18776                  sect_offset_str (cu->header.sect_off), sect_offset_str (sect_off),
18777                  bfd_get_filename (objfile->obfd));
18778         }
18779       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
18780                                                  dwarf2_per_objfile);
18781
18782       if (per_cu->cu == NULL || per_cu->cu->partial_dies == NULL)
18783         load_partial_comp_unit (per_cu);
18784
18785       per_cu->cu->last_used = 0;
18786       pd = per_cu->cu->find_partial_die (sect_off);
18787     }
18788
18789   /* If we didn't find it, and not all dies have been loaded,
18790      load them all and try again.  */
18791
18792   if (pd == NULL && per_cu->load_all_dies == 0)
18793     {
18794       per_cu->load_all_dies = 1;
18795
18796       /* This is nasty.  When we reread the DIEs, somewhere up the call chain
18797          THIS_CU->cu may already be in use.  So we can't just free it and
18798          replace its DIEs with the ones we read in.  Instead, we leave those
18799          DIEs alone (which can still be in use, e.g. in scan_partial_symbols),
18800          and clobber THIS_CU->cu->partial_dies with the hash table for the new
18801          set.  */
18802       load_partial_comp_unit (per_cu);
18803
18804       pd = per_cu->cu->find_partial_die (sect_off);
18805     }
18806
18807   if (pd == NULL)
18808     internal_error (__FILE__, __LINE__,
18809                     _("could not find partial DIE %s "
18810                       "in cache [from module %s]\n"),
18811                     sect_offset_str (sect_off), bfd_get_filename (objfile->obfd));
18812   return pd;
18813 }
18814
18815 /* See if we can figure out if the class lives in a namespace.  We do
18816    this by looking for a member function; its demangled name will
18817    contain namespace info, if there is any.  */
18818
18819 static void
18820 guess_partial_die_structure_name (struct partial_die_info *struct_pdi,
18821                                   struct dwarf2_cu *cu)
18822 {
18823   /* NOTE: carlton/2003-10-07: Getting the info this way changes
18824      what template types look like, because the demangler
18825      frequently doesn't give the same name as the debug info.  We
18826      could fix this by only using the demangled name to get the
18827      prefix (but see comment in read_structure_type).  */
18828
18829   struct partial_die_info *real_pdi;
18830   struct partial_die_info *child_pdi;
18831
18832   /* If this DIE (this DIE's specification, if any) has a parent, then
18833      we should not do this.  We'll prepend the parent's fully qualified
18834      name when we create the partial symbol.  */
18835
18836   real_pdi = struct_pdi;
18837   while (real_pdi->has_specification)
18838     real_pdi = find_partial_die (real_pdi->spec_offset,
18839                                  real_pdi->spec_is_dwz, cu);
18840
18841   if (real_pdi->die_parent != NULL)
18842     return;
18843
18844   for (child_pdi = struct_pdi->die_child;
18845        child_pdi != NULL;
18846        child_pdi = child_pdi->die_sibling)
18847     {
18848       if (child_pdi->tag == DW_TAG_subprogram
18849           && child_pdi->linkage_name != NULL)
18850         {
18851           char *actual_class_name
18852             = language_class_name_from_physname (cu->language_defn,
18853                                                  child_pdi->linkage_name);
18854           if (actual_class_name != NULL)
18855             {
18856               struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18857               struct_pdi->name
18858                 = ((const char *)
18859                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
18860                                   actual_class_name,
18861                                   strlen (actual_class_name)));
18862               xfree (actual_class_name);
18863             }
18864           break;
18865         }
18866     }
18867 }
18868
18869 void
18870 partial_die_info::fixup (struct dwarf2_cu *cu)
18871 {
18872   /* Once we've fixed up a die, there's no point in doing so again.
18873      This also avoids a memory leak if we were to call
18874      guess_partial_die_structure_name multiple times.  */
18875   if (fixup_called)
18876     return;
18877
18878   /* If we found a reference attribute and the DIE has no name, try
18879      to find a name in the referred to DIE.  */
18880
18881   if (name == NULL && has_specification)
18882     {
18883       struct partial_die_info *spec_die;
18884
18885       spec_die = find_partial_die (spec_offset, spec_is_dwz, cu);
18886
18887       spec_die->fixup (cu);
18888
18889       if (spec_die->name)
18890         {
18891           name = spec_die->name;
18892
18893           /* Copy DW_AT_external attribute if it is set.  */
18894           if (spec_die->is_external)
18895             is_external = spec_die->is_external;
18896         }
18897     }
18898
18899   /* Set default names for some unnamed DIEs.  */
18900
18901   if (name == NULL && tag == DW_TAG_namespace)
18902     name = CP_ANONYMOUS_NAMESPACE_STR;
18903
18904   /* If there is no parent die to provide a namespace, and there are
18905      children, see if we can determine the namespace from their linkage
18906      name.  */
18907   if (cu->language == language_cplus
18908       && !VEC_empty (dwarf2_section_info_def,
18909                      cu->per_cu->dwarf2_per_objfile->types)
18910       && die_parent == NULL
18911       && has_children
18912       && (tag == DW_TAG_class_type
18913           || tag == DW_TAG_structure_type
18914           || tag == DW_TAG_union_type))
18915     guess_partial_die_structure_name (this, cu);
18916
18917   /* GCC might emit a nameless struct or union that has a linkage
18918      name.  See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
18919   if (name == NULL
18920       && (tag == DW_TAG_class_type
18921           || tag == DW_TAG_interface_type
18922           || tag == DW_TAG_structure_type
18923           || tag == DW_TAG_union_type)
18924       && linkage_name != NULL)
18925     {
18926       char *demangled;
18927
18928       demangled = gdb_demangle (linkage_name, DMGL_TYPES);
18929       if (demangled)
18930         {
18931           const char *base;
18932
18933           /* Strip any leading namespaces/classes, keep only the base name.
18934              DW_AT_name for named DIEs does not contain the prefixes.  */
18935           base = strrchr (demangled, ':');
18936           if (base && base > demangled && base[-1] == ':')
18937             base++;
18938           else
18939             base = demangled;
18940
18941           struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
18942           name
18943             = ((const char *)
18944                obstack_copy0 (&objfile->per_bfd->storage_obstack,
18945                               base, strlen (base)));
18946           xfree (demangled);
18947         }
18948     }
18949
18950   fixup_called = 1;
18951 }
18952
18953 /* Read an attribute value described by an attribute form.  */
18954
18955 static const gdb_byte *
18956 read_attribute_value (const struct die_reader_specs *reader,
18957                       struct attribute *attr, unsigned form,
18958                       LONGEST implicit_const, const gdb_byte *info_ptr)
18959 {
18960   struct dwarf2_cu *cu = reader->cu;
18961   struct dwarf2_per_objfile *dwarf2_per_objfile
18962     = cu->per_cu->dwarf2_per_objfile;
18963   struct objfile *objfile = dwarf2_per_objfile->objfile;
18964   struct gdbarch *gdbarch = get_objfile_arch (objfile);
18965   bfd *abfd = reader->abfd;
18966   struct comp_unit_head *cu_header = &cu->header;
18967   unsigned int bytes_read;
18968   struct dwarf_block *blk;
18969
18970   attr->form = (enum dwarf_form) form;
18971   switch (form)
18972     {
18973     case DW_FORM_ref_addr:
18974       if (cu->header.version == 2)
18975         DW_UNSND (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18976       else
18977         DW_UNSND (attr) = read_offset (abfd, info_ptr,
18978                                        &cu->header, &bytes_read);
18979       info_ptr += bytes_read;
18980       break;
18981     case DW_FORM_GNU_ref_alt:
18982       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
18983       info_ptr += bytes_read;
18984       break;
18985     case DW_FORM_addr:
18986       DW_ADDR (attr) = read_address (abfd, info_ptr, cu, &bytes_read);
18987       DW_ADDR (attr) = gdbarch_adjust_dwarf2_addr (gdbarch, DW_ADDR (attr));
18988       info_ptr += bytes_read;
18989       break;
18990     case DW_FORM_block2:
18991       blk = dwarf_alloc_block (cu);
18992       blk->size = read_2_bytes (abfd, info_ptr);
18993       info_ptr += 2;
18994       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
18995       info_ptr += blk->size;
18996       DW_BLOCK (attr) = blk;
18997       break;
18998     case DW_FORM_block4:
18999       blk = dwarf_alloc_block (cu);
19000       blk->size = read_4_bytes (abfd, info_ptr);
19001       info_ptr += 4;
19002       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19003       info_ptr += blk->size;
19004       DW_BLOCK (attr) = blk;
19005       break;
19006     case DW_FORM_data2:
19007       DW_UNSND (attr) = read_2_bytes (abfd, info_ptr);
19008       info_ptr += 2;
19009       break;
19010     case DW_FORM_data4:
19011       DW_UNSND (attr) = read_4_bytes (abfd, info_ptr);
19012       info_ptr += 4;
19013       break;
19014     case DW_FORM_data8:
19015       DW_UNSND (attr) = read_8_bytes (abfd, info_ptr);
19016       info_ptr += 8;
19017       break;
19018     case DW_FORM_data16:
19019       blk = dwarf_alloc_block (cu);
19020       blk->size = 16;
19021       blk->data = read_n_bytes (abfd, info_ptr, 16);
19022       info_ptr += 16;
19023       DW_BLOCK (attr) = blk;
19024       break;
19025     case DW_FORM_sec_offset:
19026       DW_UNSND (attr) = read_offset (abfd, info_ptr, &cu->header, &bytes_read);
19027       info_ptr += bytes_read;
19028       break;
19029     case DW_FORM_string:
19030       DW_STRING (attr) = read_direct_string (abfd, info_ptr, &bytes_read);
19031       DW_STRING_IS_CANONICAL (attr) = 0;
19032       info_ptr += bytes_read;
19033       break;
19034     case DW_FORM_strp:
19035       if (!cu->per_cu->is_dwz)
19036         {
19037           DW_STRING (attr) = read_indirect_string (dwarf2_per_objfile,
19038                                                    abfd, info_ptr, cu_header,
19039                                                    &bytes_read);
19040           DW_STRING_IS_CANONICAL (attr) = 0;
19041           info_ptr += bytes_read;
19042           break;
19043         }
19044       /* FALLTHROUGH */
19045     case DW_FORM_line_strp:
19046       if (!cu->per_cu->is_dwz)
19047         {
19048           DW_STRING (attr) = read_indirect_line_string (dwarf2_per_objfile,
19049                                                         abfd, info_ptr,
19050                                                         cu_header, &bytes_read);
19051           DW_STRING_IS_CANONICAL (attr) = 0;
19052           info_ptr += bytes_read;
19053           break;
19054         }
19055       /* FALLTHROUGH */
19056     case DW_FORM_GNU_strp_alt:
19057       {
19058         struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
19059         LONGEST str_offset = read_offset (abfd, info_ptr, cu_header,
19060                                           &bytes_read);
19061
19062         DW_STRING (attr) = read_indirect_string_from_dwz (objfile,
19063                                                           dwz, str_offset);
19064         DW_STRING_IS_CANONICAL (attr) = 0;
19065         info_ptr += bytes_read;
19066       }
19067       break;
19068     case DW_FORM_exprloc:
19069     case DW_FORM_block:
19070       blk = dwarf_alloc_block (cu);
19071       blk->size = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19072       info_ptr += bytes_read;
19073       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19074       info_ptr += blk->size;
19075       DW_BLOCK (attr) = blk;
19076       break;
19077     case DW_FORM_block1:
19078       blk = dwarf_alloc_block (cu);
19079       blk->size = read_1_byte (abfd, info_ptr);
19080       info_ptr += 1;
19081       blk->data = read_n_bytes (abfd, info_ptr, blk->size);
19082       info_ptr += blk->size;
19083       DW_BLOCK (attr) = blk;
19084       break;
19085     case DW_FORM_data1:
19086       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19087       info_ptr += 1;
19088       break;
19089     case DW_FORM_flag:
19090       DW_UNSND (attr) = read_1_byte (abfd, info_ptr);
19091       info_ptr += 1;
19092       break;
19093     case DW_FORM_flag_present:
19094       DW_UNSND (attr) = 1;
19095       break;
19096     case DW_FORM_sdata:
19097       DW_SND (attr) = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19098       info_ptr += bytes_read;
19099       break;
19100     case DW_FORM_udata:
19101       DW_UNSND (attr) = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19102       info_ptr += bytes_read;
19103       break;
19104     case DW_FORM_ref1:
19105       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19106                          + read_1_byte (abfd, info_ptr));
19107       info_ptr += 1;
19108       break;
19109     case DW_FORM_ref2:
19110       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19111                          + read_2_bytes (abfd, info_ptr));
19112       info_ptr += 2;
19113       break;
19114     case DW_FORM_ref4:
19115       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19116                          + read_4_bytes (abfd, info_ptr));
19117       info_ptr += 4;
19118       break;
19119     case DW_FORM_ref8:
19120       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19121                          + read_8_bytes (abfd, info_ptr));
19122       info_ptr += 8;
19123       break;
19124     case DW_FORM_ref_sig8:
19125       DW_SIGNATURE (attr) = read_8_bytes (abfd, info_ptr);
19126       info_ptr += 8;
19127       break;
19128     case DW_FORM_ref_udata:
19129       DW_UNSND (attr) = (to_underlying (cu->header.sect_off)
19130                          + read_unsigned_leb128 (abfd, info_ptr, &bytes_read));
19131       info_ptr += bytes_read;
19132       break;
19133     case DW_FORM_indirect:
19134       form = read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19135       info_ptr += bytes_read;
19136       if (form == DW_FORM_implicit_const)
19137         {
19138           implicit_const = read_signed_leb128 (abfd, info_ptr, &bytes_read);
19139           info_ptr += bytes_read;
19140         }
19141       info_ptr = read_attribute_value (reader, attr, form, implicit_const,
19142                                        info_ptr);
19143       break;
19144     case DW_FORM_implicit_const:
19145       DW_SND (attr) = implicit_const;
19146       break;
19147     case DW_FORM_GNU_addr_index:
19148       if (reader->dwo_file == NULL)
19149         {
19150           /* For now flag a hard error.
19151              Later we can turn this into a complaint.  */
19152           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19153                  dwarf_form_name (form),
19154                  bfd_get_filename (abfd));
19155         }
19156       DW_ADDR (attr) = read_addr_index_from_leb128 (cu, info_ptr, &bytes_read);
19157       info_ptr += bytes_read;
19158       break;
19159     case DW_FORM_GNU_str_index:
19160       if (reader->dwo_file == NULL)
19161         {
19162           /* For now flag a hard error.
19163              Later we can turn this into a complaint if warranted.  */
19164           error (_("Dwarf Error: %s found in non-DWO CU [in module %s]"),
19165                  dwarf_form_name (form),
19166                  bfd_get_filename (abfd));
19167         }
19168       {
19169         ULONGEST str_index =
19170           read_unsigned_leb128 (abfd, info_ptr, &bytes_read);
19171
19172         DW_STRING (attr) = read_str_index (reader, str_index);
19173         DW_STRING_IS_CANONICAL (attr) = 0;
19174         info_ptr += bytes_read;
19175       }
19176       break;
19177     default:
19178       error (_("Dwarf Error: Cannot handle %s in DWARF reader [in module %s]"),
19179              dwarf_form_name (form),
19180              bfd_get_filename (abfd));
19181     }
19182
19183   /* Super hack.  */
19184   if (cu->per_cu->is_dwz && attr_form_is_ref (attr))
19185     attr->form = DW_FORM_GNU_ref_alt;
19186
19187   /* We have seen instances where the compiler tried to emit a byte
19188      size attribute of -1 which ended up being encoded as an unsigned
19189      0xffffffff.  Although 0xffffffff is technically a valid size value,
19190      an object of this size seems pretty unlikely so we can relatively
19191      safely treat these cases as if the size attribute was invalid and
19192      treat them as zero by default.  */
19193   if (attr->name == DW_AT_byte_size
19194       && form == DW_FORM_data4
19195       && DW_UNSND (attr) >= 0xffffffff)
19196     {
19197       complaint
19198         (_("Suspicious DW_AT_byte_size value treated as zero instead of %s"),
19199          hex_string (DW_UNSND (attr)));
19200       DW_UNSND (attr) = 0;
19201     }
19202
19203   return info_ptr;
19204 }
19205
19206 /* Read an attribute described by an abbreviated attribute.  */
19207
19208 static const gdb_byte *
19209 read_attribute (const struct die_reader_specs *reader,
19210                 struct attribute *attr, struct attr_abbrev *abbrev,
19211                 const gdb_byte *info_ptr)
19212 {
19213   attr->name = abbrev->name;
19214   return read_attribute_value (reader, attr, abbrev->form,
19215                                abbrev->implicit_const, info_ptr);
19216 }
19217
19218 /* Read dwarf information from a buffer.  */
19219
19220 static unsigned int
19221 read_1_byte (bfd *abfd, const gdb_byte *buf)
19222 {
19223   return bfd_get_8 (abfd, buf);
19224 }
19225
19226 static int
19227 read_1_signed_byte (bfd *abfd, const gdb_byte *buf)
19228 {
19229   return bfd_get_signed_8 (abfd, buf);
19230 }
19231
19232 static unsigned int
19233 read_2_bytes (bfd *abfd, const gdb_byte *buf)
19234 {
19235   return bfd_get_16 (abfd, buf);
19236 }
19237
19238 static int
19239 read_2_signed_bytes (bfd *abfd, const gdb_byte *buf)
19240 {
19241   return bfd_get_signed_16 (abfd, buf);
19242 }
19243
19244 static unsigned int
19245 read_4_bytes (bfd *abfd, const gdb_byte *buf)
19246 {
19247   return bfd_get_32 (abfd, buf);
19248 }
19249
19250 static int
19251 read_4_signed_bytes (bfd *abfd, const gdb_byte *buf)
19252 {
19253   return bfd_get_signed_32 (abfd, buf);
19254 }
19255
19256 static ULONGEST
19257 read_8_bytes (bfd *abfd, const gdb_byte *buf)
19258 {
19259   return bfd_get_64 (abfd, buf);
19260 }
19261
19262 static CORE_ADDR
19263 read_address (bfd *abfd, const gdb_byte *buf, struct dwarf2_cu *cu,
19264               unsigned int *bytes_read)
19265 {
19266   struct comp_unit_head *cu_header = &cu->header;
19267   CORE_ADDR retval = 0;
19268
19269   if (cu_header->signed_addr_p)
19270     {
19271       switch (cu_header->addr_size)
19272         {
19273         case 2:
19274           retval = bfd_get_signed_16 (abfd, buf);
19275           break;
19276         case 4:
19277           retval = bfd_get_signed_32 (abfd, buf);
19278           break;
19279         case 8:
19280           retval = bfd_get_signed_64 (abfd, buf);
19281           break;
19282         default:
19283           internal_error (__FILE__, __LINE__,
19284                           _("read_address: bad switch, signed [in module %s]"),
19285                           bfd_get_filename (abfd));
19286         }
19287     }
19288   else
19289     {
19290       switch (cu_header->addr_size)
19291         {
19292         case 2:
19293           retval = bfd_get_16 (abfd, buf);
19294           break;
19295         case 4:
19296           retval = bfd_get_32 (abfd, buf);
19297           break;
19298         case 8:
19299           retval = bfd_get_64 (abfd, buf);
19300           break;
19301         default:
19302           internal_error (__FILE__, __LINE__,
19303                           _("read_address: bad switch, "
19304                             "unsigned [in module %s]"),
19305                           bfd_get_filename (abfd));
19306         }
19307     }
19308
19309   *bytes_read = cu_header->addr_size;
19310   return retval;
19311 }
19312
19313 /* Read the initial length from a section.  The (draft) DWARF 3
19314    specification allows the initial length to take up either 4 bytes
19315    or 12 bytes.  If the first 4 bytes are 0xffffffff, then the next 8
19316    bytes describe the length and all offsets will be 8 bytes in length
19317    instead of 4.
19318
19319    An older, non-standard 64-bit format is also handled by this
19320    function.  The older format in question stores the initial length
19321    as an 8-byte quantity without an escape value.  Lengths greater
19322    than 2^32 aren't very common which means that the initial 4 bytes
19323    is almost always zero.  Since a length value of zero doesn't make
19324    sense for the 32-bit format, this initial zero can be considered to
19325    be an escape value which indicates the presence of the older 64-bit
19326    format.  As written, the code can't detect (old format) lengths
19327    greater than 4GB.  If it becomes necessary to handle lengths
19328    somewhat larger than 4GB, we could allow other small values (such
19329    as the non-sensical values of 1, 2, and 3) to also be used as
19330    escape values indicating the presence of the old format.
19331
19332    The value returned via bytes_read should be used to increment the
19333    relevant pointer after calling read_initial_length().
19334
19335    [ Note:  read_initial_length() and read_offset() are based on the
19336      document entitled "DWARF Debugging Information Format", revision
19337      3, draft 8, dated November 19, 2001.  This document was obtained
19338      from:
19339
19340         http://reality.sgiweb.org/davea/dwarf3-draft8-011125.pdf
19341
19342      This document is only a draft and is subject to change.  (So beware.)
19343
19344      Details regarding the older, non-standard 64-bit format were
19345      determined empirically by examining 64-bit ELF files produced by
19346      the SGI toolchain on an IRIX 6.5 machine.
19347
19348      - Kevin, July 16, 2002
19349    ] */
19350
19351 static LONGEST
19352 read_initial_length (bfd *abfd, const gdb_byte *buf, unsigned int *bytes_read)
19353 {
19354   LONGEST length = bfd_get_32 (abfd, buf);
19355
19356   if (length == 0xffffffff)
19357     {
19358       length = bfd_get_64 (abfd, buf + 4);
19359       *bytes_read = 12;
19360     }
19361   else if (length == 0)
19362     {
19363       /* Handle the (non-standard) 64-bit DWARF2 format used by IRIX.  */
19364       length = bfd_get_64 (abfd, buf);
19365       *bytes_read = 8;
19366     }
19367   else
19368     {
19369       *bytes_read = 4;
19370     }
19371
19372   return length;
19373 }
19374
19375 /* Cover function for read_initial_length.
19376    Returns the length of the object at BUF, and stores the size of the
19377    initial length in *BYTES_READ and stores the size that offsets will be in
19378    *OFFSET_SIZE.
19379    If the initial length size is not equivalent to that specified in
19380    CU_HEADER then issue a complaint.
19381    This is useful when reading non-comp-unit headers.  */
19382
19383 static LONGEST
19384 read_checked_initial_length_and_offset (bfd *abfd, const gdb_byte *buf,
19385                                         const struct comp_unit_head *cu_header,
19386                                         unsigned int *bytes_read,
19387                                         unsigned int *offset_size)
19388 {
19389   LONGEST length = read_initial_length (abfd, buf, bytes_read);
19390
19391   gdb_assert (cu_header->initial_length_size == 4
19392               || cu_header->initial_length_size == 8
19393               || cu_header->initial_length_size == 12);
19394
19395   if (cu_header->initial_length_size != *bytes_read)
19396     complaint (_("intermixed 32-bit and 64-bit DWARF sections"));
19397
19398   *offset_size = (*bytes_read == 4) ? 4 : 8;
19399   return length;
19400 }
19401
19402 /* Read an offset from the data stream.  The size of the offset is
19403    given by cu_header->offset_size.  */
19404
19405 static LONGEST
19406 read_offset (bfd *abfd, const gdb_byte *buf,
19407              const struct comp_unit_head *cu_header,
19408              unsigned int *bytes_read)
19409 {
19410   LONGEST offset = read_offset_1 (abfd, buf, cu_header->offset_size);
19411
19412   *bytes_read = cu_header->offset_size;
19413   return offset;
19414 }
19415
19416 /* Read an offset from the data stream.  */
19417
19418 static LONGEST
19419 read_offset_1 (bfd *abfd, const gdb_byte *buf, unsigned int offset_size)
19420 {
19421   LONGEST retval = 0;
19422
19423   switch (offset_size)
19424     {
19425     case 4:
19426       retval = bfd_get_32 (abfd, buf);
19427       break;
19428     case 8:
19429       retval = bfd_get_64 (abfd, buf);
19430       break;
19431     default:
19432       internal_error (__FILE__, __LINE__,
19433                       _("read_offset_1: bad switch [in module %s]"),
19434                       bfd_get_filename (abfd));
19435     }
19436
19437   return retval;
19438 }
19439
19440 static const gdb_byte *
19441 read_n_bytes (bfd *abfd, const gdb_byte *buf, unsigned int size)
19442 {
19443   /* If the size of a host char is 8 bits, we can return a pointer
19444      to the buffer, otherwise we have to copy the data to a buffer
19445      allocated on the temporary obstack.  */
19446   gdb_assert (HOST_CHAR_BIT == 8);
19447   return buf;
19448 }
19449
19450 static const char *
19451 read_direct_string (bfd *abfd, const gdb_byte *buf,
19452                     unsigned int *bytes_read_ptr)
19453 {
19454   /* If the size of a host char is 8 bits, we can return a pointer
19455      to the string, otherwise we have to copy the string to a buffer
19456      allocated on the temporary obstack.  */
19457   gdb_assert (HOST_CHAR_BIT == 8);
19458   if (*buf == '\0')
19459     {
19460       *bytes_read_ptr = 1;
19461       return NULL;
19462     }
19463   *bytes_read_ptr = strlen ((const char *) buf) + 1;
19464   return (const char *) buf;
19465 }
19466
19467 /* Return pointer to string at section SECT offset STR_OFFSET with error
19468    reporting strings FORM_NAME and SECT_NAME.  */
19469
19470 static const char *
19471 read_indirect_string_at_offset_from (struct objfile *objfile,
19472                                      bfd *abfd, LONGEST str_offset,
19473                                      struct dwarf2_section_info *sect,
19474                                      const char *form_name,
19475                                      const char *sect_name)
19476 {
19477   dwarf2_read_section (objfile, sect);
19478   if (sect->buffer == NULL)
19479     error (_("%s used without %s section [in module %s]"),
19480            form_name, sect_name, bfd_get_filename (abfd));
19481   if (str_offset >= sect->size)
19482     error (_("%s pointing outside of %s section [in module %s]"),
19483            form_name, sect_name, bfd_get_filename (abfd));
19484   gdb_assert (HOST_CHAR_BIT == 8);
19485   if (sect->buffer[str_offset] == '\0')
19486     return NULL;
19487   return (const char *) (sect->buffer + str_offset);
19488 }
19489
19490 /* Return pointer to string at .debug_str offset STR_OFFSET.  */
19491
19492 static const char *
19493 read_indirect_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19494                                 bfd *abfd, LONGEST str_offset)
19495 {
19496   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19497                                               abfd, str_offset,
19498                                               &dwarf2_per_objfile->str,
19499                                               "DW_FORM_strp", ".debug_str");
19500 }
19501
19502 /* Return pointer to string at .debug_line_str offset STR_OFFSET.  */
19503
19504 static const char *
19505 read_indirect_line_string_at_offset (struct dwarf2_per_objfile *dwarf2_per_objfile,
19506                                      bfd *abfd, LONGEST str_offset)
19507 {
19508   return read_indirect_string_at_offset_from (dwarf2_per_objfile->objfile,
19509                                               abfd, str_offset,
19510                                               &dwarf2_per_objfile->line_str,
19511                                               "DW_FORM_line_strp",
19512                                               ".debug_line_str");
19513 }
19514
19515 /* Read a string at offset STR_OFFSET in the .debug_str section from
19516    the .dwz file DWZ.  Throw an error if the offset is too large.  If
19517    the string consists of a single NUL byte, return NULL; otherwise
19518    return a pointer to the string.  */
19519
19520 static const char *
19521 read_indirect_string_from_dwz (struct objfile *objfile, struct dwz_file *dwz,
19522                                LONGEST str_offset)
19523 {
19524   dwarf2_read_section (objfile, &dwz->str);
19525
19526   if (dwz->str.buffer == NULL)
19527     error (_("DW_FORM_GNU_strp_alt used without .debug_str "
19528              "section [in module %s]"),
19529            bfd_get_filename (dwz->dwz_bfd));
19530   if (str_offset >= dwz->str.size)
19531     error (_("DW_FORM_GNU_strp_alt pointing outside of "
19532              ".debug_str section [in module %s]"),
19533            bfd_get_filename (dwz->dwz_bfd));
19534   gdb_assert (HOST_CHAR_BIT == 8);
19535   if (dwz->str.buffer[str_offset] == '\0')
19536     return NULL;
19537   return (const char *) (dwz->str.buffer + str_offset);
19538 }
19539
19540 /* Return pointer to string at .debug_str offset as read from BUF.
19541    BUF is assumed to be in a compilation unit described by CU_HEADER.
19542    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19543
19544 static const char *
19545 read_indirect_string (struct dwarf2_per_objfile *dwarf2_per_objfile, bfd *abfd,
19546                       const gdb_byte *buf,
19547                       const struct comp_unit_head *cu_header,
19548                       unsigned int *bytes_read_ptr)
19549 {
19550   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19551
19552   return read_indirect_string_at_offset (dwarf2_per_objfile, abfd, str_offset);
19553 }
19554
19555 /* Return pointer to string at .debug_line_str offset as read from BUF.
19556    BUF is assumed to be in a compilation unit described by CU_HEADER.
19557    Return *BYTES_READ_PTR count of bytes read from BUF.  */
19558
19559 static const char *
19560 read_indirect_line_string (struct dwarf2_per_objfile *dwarf2_per_objfile,
19561                            bfd *abfd, const gdb_byte *buf,
19562                            const struct comp_unit_head *cu_header,
19563                            unsigned int *bytes_read_ptr)
19564 {
19565   LONGEST str_offset = read_offset (abfd, buf, cu_header, bytes_read_ptr);
19566
19567   return read_indirect_line_string_at_offset (dwarf2_per_objfile, abfd,
19568                                               str_offset);
19569 }
19570
19571 ULONGEST
19572 read_unsigned_leb128 (bfd *abfd, const gdb_byte *buf,
19573                           unsigned int *bytes_read_ptr)
19574 {
19575   ULONGEST result;
19576   unsigned int num_read;
19577   int shift;
19578   unsigned char byte;
19579
19580   result = 0;
19581   shift = 0;
19582   num_read = 0;
19583   while (1)
19584     {
19585       byte = bfd_get_8 (abfd, buf);
19586       buf++;
19587       num_read++;
19588       result |= ((ULONGEST) (byte & 127) << shift);
19589       if ((byte & 128) == 0)
19590         {
19591           break;
19592         }
19593       shift += 7;
19594     }
19595   *bytes_read_ptr = num_read;
19596   return result;
19597 }
19598
19599 static LONGEST
19600 read_signed_leb128 (bfd *abfd, const gdb_byte *buf,
19601                     unsigned int *bytes_read_ptr)
19602 {
19603   LONGEST result;
19604   int shift, num_read;
19605   unsigned char byte;
19606
19607   result = 0;
19608   shift = 0;
19609   num_read = 0;
19610   while (1)
19611     {
19612       byte = bfd_get_8 (abfd, buf);
19613       buf++;
19614       num_read++;
19615       result |= ((LONGEST) (byte & 127) << shift);
19616       shift += 7;
19617       if ((byte & 128) == 0)
19618         {
19619           break;
19620         }
19621     }
19622   if ((shift < 8 * sizeof (result)) && (byte & 0x40))
19623     result |= -(((LONGEST) 1) << shift);
19624   *bytes_read_ptr = num_read;
19625   return result;
19626 }
19627
19628 /* Given index ADDR_INDEX in .debug_addr, fetch the value.
19629    ADDR_BASE is the DW_AT_GNU_addr_base attribute or zero.
19630    ADDR_SIZE is the size of addresses from the CU header.  */
19631
19632 static CORE_ADDR
19633 read_addr_index_1 (struct dwarf2_per_objfile *dwarf2_per_objfile,
19634                    unsigned int addr_index, ULONGEST addr_base, int addr_size)
19635 {
19636   struct objfile *objfile = dwarf2_per_objfile->objfile;
19637   bfd *abfd = objfile->obfd;
19638   const gdb_byte *info_ptr;
19639
19640   dwarf2_read_section (objfile, &dwarf2_per_objfile->addr);
19641   if (dwarf2_per_objfile->addr.buffer == NULL)
19642     error (_("DW_FORM_addr_index used without .debug_addr section [in module %s]"),
19643            objfile_name (objfile));
19644   if (addr_base + addr_index * addr_size >= dwarf2_per_objfile->addr.size)
19645     error (_("DW_FORM_addr_index pointing outside of "
19646              ".debug_addr section [in module %s]"),
19647            objfile_name (objfile));
19648   info_ptr = (dwarf2_per_objfile->addr.buffer
19649               + addr_base + addr_index * addr_size);
19650   if (addr_size == 4)
19651     return bfd_get_32 (abfd, info_ptr);
19652   else
19653     return bfd_get_64 (abfd, info_ptr);
19654 }
19655
19656 /* Given index ADDR_INDEX in .debug_addr, fetch the value.  */
19657
19658 static CORE_ADDR
19659 read_addr_index (struct dwarf2_cu *cu, unsigned int addr_index)
19660 {
19661   return read_addr_index_1 (cu->per_cu->dwarf2_per_objfile, addr_index,
19662                             cu->addr_base, cu->header.addr_size);
19663 }
19664
19665 /* Given a pointer to an leb128 value, fetch the value from .debug_addr.  */
19666
19667 static CORE_ADDR
19668 read_addr_index_from_leb128 (struct dwarf2_cu *cu, const gdb_byte *info_ptr,
19669                              unsigned int *bytes_read)
19670 {
19671   bfd *abfd = cu->per_cu->dwarf2_per_objfile->objfile->obfd;
19672   unsigned int addr_index = read_unsigned_leb128 (abfd, info_ptr, bytes_read);
19673
19674   return read_addr_index (cu, addr_index);
19675 }
19676
19677 /* Data structure to pass results from dwarf2_read_addr_index_reader
19678    back to dwarf2_read_addr_index.  */
19679
19680 struct dwarf2_read_addr_index_data
19681 {
19682   ULONGEST addr_base;
19683   int addr_size;
19684 };
19685
19686 /* die_reader_func for dwarf2_read_addr_index.  */
19687
19688 static void
19689 dwarf2_read_addr_index_reader (const struct die_reader_specs *reader,
19690                                const gdb_byte *info_ptr,
19691                                struct die_info *comp_unit_die,
19692                                int has_children,
19693                                void *data)
19694 {
19695   struct dwarf2_cu *cu = reader->cu;
19696   struct dwarf2_read_addr_index_data *aidata =
19697     (struct dwarf2_read_addr_index_data *) data;
19698
19699   aidata->addr_base = cu->addr_base;
19700   aidata->addr_size = cu->header.addr_size;
19701 }
19702
19703 /* Given an index in .debug_addr, fetch the value.
19704    NOTE: This can be called during dwarf expression evaluation,
19705    long after the debug information has been read, and thus per_cu->cu
19706    may no longer exist.  */
19707
19708 CORE_ADDR
19709 dwarf2_read_addr_index (struct dwarf2_per_cu_data *per_cu,
19710                         unsigned int addr_index)
19711 {
19712   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
19713   struct dwarf2_cu *cu = per_cu->cu;
19714   ULONGEST addr_base;
19715   int addr_size;
19716
19717   /* We need addr_base and addr_size.
19718      If we don't have PER_CU->cu, we have to get it.
19719      Nasty, but the alternative is storing the needed info in PER_CU,
19720      which at this point doesn't seem justified: it's not clear how frequently
19721      it would get used and it would increase the size of every PER_CU.
19722      Entry points like dwarf2_per_cu_addr_size do a similar thing
19723      so we're not in uncharted territory here.
19724      Alas we need to be a bit more complicated as addr_base is contained
19725      in the DIE.
19726
19727      We don't need to read the entire CU(/TU).
19728      We just need the header and top level die.
19729
19730      IWBN to use the aging mechanism to let us lazily later discard the CU.
19731      For now we skip this optimization.  */
19732
19733   if (cu != NULL)
19734     {
19735       addr_base = cu->addr_base;
19736       addr_size = cu->header.addr_size;
19737     }
19738   else
19739     {
19740       struct dwarf2_read_addr_index_data aidata;
19741
19742       /* Note: We can't use init_cutu_and_read_dies_simple here,
19743          we need addr_base.  */
19744       init_cutu_and_read_dies (per_cu, NULL, 0, 0, false,
19745                                dwarf2_read_addr_index_reader, &aidata);
19746       addr_base = aidata.addr_base;
19747       addr_size = aidata.addr_size;
19748     }
19749
19750   return read_addr_index_1 (dwarf2_per_objfile, addr_index, addr_base,
19751                             addr_size);
19752 }
19753
19754 /* Given a DW_FORM_GNU_str_index, fetch the string.
19755    This is only used by the Fission support.  */
19756
19757 static const char *
19758 read_str_index (const struct die_reader_specs *reader, ULONGEST str_index)
19759 {
19760   struct dwarf2_cu *cu = reader->cu;
19761   struct dwarf2_per_objfile *dwarf2_per_objfile
19762     = cu->per_cu->dwarf2_per_objfile;
19763   struct objfile *objfile = dwarf2_per_objfile->objfile;
19764   const char *objf_name = objfile_name (objfile);
19765   bfd *abfd = objfile->obfd;
19766   struct dwarf2_section_info *str_section = &reader->dwo_file->sections.str;
19767   struct dwarf2_section_info *str_offsets_section =
19768     &reader->dwo_file->sections.str_offsets;
19769   const gdb_byte *info_ptr;
19770   ULONGEST str_offset;
19771   static const char form_name[] = "DW_FORM_GNU_str_index";
19772
19773   dwarf2_read_section (objfile, str_section);
19774   dwarf2_read_section (objfile, str_offsets_section);
19775   if (str_section->buffer == NULL)
19776     error (_("%s used without .debug_str.dwo section"
19777              " in CU at offset %s [in module %s]"),
19778            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19779   if (str_offsets_section->buffer == NULL)
19780     error (_("%s used without .debug_str_offsets.dwo section"
19781              " in CU at offset %s [in module %s]"),
19782            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19783   if (str_index * cu->header.offset_size >= str_offsets_section->size)
19784     error (_("%s pointing outside of .debug_str_offsets.dwo"
19785              " section in CU at offset %s [in module %s]"),
19786            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19787   info_ptr = (str_offsets_section->buffer
19788               + str_index * cu->header.offset_size);
19789   if (cu->header.offset_size == 4)
19790     str_offset = bfd_get_32 (abfd, info_ptr);
19791   else
19792     str_offset = bfd_get_64 (abfd, info_ptr);
19793   if (str_offset >= str_section->size)
19794     error (_("Offset from %s pointing outside of"
19795              " .debug_str.dwo section in CU at offset %s [in module %s]"),
19796            form_name, sect_offset_str (cu->header.sect_off), objf_name);
19797   return (const char *) (str_section->buffer + str_offset);
19798 }
19799
19800 /* Return the length of an LEB128 number in BUF.  */
19801
19802 static int
19803 leb128_size (const gdb_byte *buf)
19804 {
19805   const gdb_byte *begin = buf;
19806   gdb_byte byte;
19807
19808   while (1)
19809     {
19810       byte = *buf++;
19811       if ((byte & 128) == 0)
19812         return buf - begin;
19813     }
19814 }
19815
19816 static void
19817 set_cu_language (unsigned int lang, struct dwarf2_cu *cu)
19818 {
19819   switch (lang)
19820     {
19821     case DW_LANG_C89:
19822     case DW_LANG_C99:
19823     case DW_LANG_C11:
19824     case DW_LANG_C:
19825     case DW_LANG_UPC:
19826       cu->language = language_c;
19827       break;
19828     case DW_LANG_Java:
19829     case DW_LANG_C_plus_plus:
19830     case DW_LANG_C_plus_plus_11:
19831     case DW_LANG_C_plus_plus_14:
19832       cu->language = language_cplus;
19833       break;
19834     case DW_LANG_D:
19835       cu->language = language_d;
19836       break;
19837     case DW_LANG_Fortran77:
19838     case DW_LANG_Fortran90:
19839     case DW_LANG_Fortran95:
19840     case DW_LANG_Fortran03:
19841     case DW_LANG_Fortran08:
19842       cu->language = language_fortran;
19843       break;
19844     case DW_LANG_Go:
19845       cu->language = language_go;
19846       break;
19847     case DW_LANG_Mips_Assembler:
19848       cu->language = language_asm;
19849       break;
19850     case DW_LANG_Ada83:
19851     case DW_LANG_Ada95:
19852       cu->language = language_ada;
19853       break;
19854     case DW_LANG_Modula2:
19855       cu->language = language_m2;
19856       break;
19857     case DW_LANG_Pascal83:
19858       cu->language = language_pascal;
19859       break;
19860     case DW_LANG_ObjC:
19861       cu->language = language_objc;
19862       break;
19863     case DW_LANG_Rust:
19864     case DW_LANG_Rust_old:
19865       cu->language = language_rust;
19866       break;
19867     case DW_LANG_Cobol74:
19868     case DW_LANG_Cobol85:
19869     default:
19870       cu->language = language_minimal;
19871       break;
19872     }
19873   cu->language_defn = language_def (cu->language);
19874 }
19875
19876 /* Return the named attribute or NULL if not there.  */
19877
19878 static struct attribute *
19879 dwarf2_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19880 {
19881   for (;;)
19882     {
19883       unsigned int i;
19884       struct attribute *spec = NULL;
19885
19886       for (i = 0; i < die->num_attrs; ++i)
19887         {
19888           if (die->attrs[i].name == name)
19889             return &die->attrs[i];
19890           if (die->attrs[i].name == DW_AT_specification
19891               || die->attrs[i].name == DW_AT_abstract_origin)
19892             spec = &die->attrs[i];
19893         }
19894
19895       if (!spec)
19896         break;
19897
19898       die = follow_die_ref (die, spec, &cu);
19899     }
19900
19901   return NULL;
19902 }
19903
19904 /* Return the named attribute or NULL if not there,
19905    but do not follow DW_AT_specification, etc.
19906    This is for use in contexts where we're reading .debug_types dies.
19907    Following DW_AT_specification, DW_AT_abstract_origin will take us
19908    back up the chain, and we want to go down.  */
19909
19910 static struct attribute *
19911 dwarf2_attr_no_follow (struct die_info *die, unsigned int name)
19912 {
19913   unsigned int i;
19914
19915   for (i = 0; i < die->num_attrs; ++i)
19916     if (die->attrs[i].name == name)
19917       return &die->attrs[i];
19918
19919   return NULL;
19920 }
19921
19922 /* Return the string associated with a string-typed attribute, or NULL if it
19923    is either not found or is of an incorrect type.  */
19924
19925 static const char *
19926 dwarf2_string_attr (struct die_info *die, unsigned int name, struct dwarf2_cu *cu)
19927 {
19928   struct attribute *attr;
19929   const char *str = NULL;
19930
19931   attr = dwarf2_attr (die, name, cu);
19932
19933   if (attr != NULL)
19934     {
19935       if (attr->form == DW_FORM_strp || attr->form == DW_FORM_line_strp
19936           || attr->form == DW_FORM_string
19937           || attr->form == DW_FORM_GNU_str_index
19938           || attr->form == DW_FORM_GNU_strp_alt)
19939         str = DW_STRING (attr);
19940       else
19941         complaint (_("string type expected for attribute %s for "
19942                      "DIE at %s in module %s"),
19943                    dwarf_attr_name (name), sect_offset_str (die->sect_off),
19944                    objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
19945     }
19946
19947   return str;
19948 }
19949
19950 /* Return non-zero iff the attribute NAME is defined for the given DIE,
19951    and holds a non-zero value.  This function should only be used for
19952    DW_FORM_flag or DW_FORM_flag_present attributes.  */
19953
19954 static int
19955 dwarf2_flag_true_p (struct die_info *die, unsigned name, struct dwarf2_cu *cu)
19956 {
19957   struct attribute *attr = dwarf2_attr (die, name, cu);
19958
19959   return (attr && DW_UNSND (attr));
19960 }
19961
19962 static int
19963 die_is_declaration (struct die_info *die, struct dwarf2_cu *cu)
19964 {
19965   /* A DIE is a declaration if it has a DW_AT_declaration attribute
19966      which value is non-zero.  However, we have to be careful with
19967      DIEs having a DW_AT_specification attribute, because dwarf2_attr()
19968      (via dwarf2_flag_true_p) follows this attribute.  So we may
19969      end up accidently finding a declaration attribute that belongs
19970      to a different DIE referenced by the specification attribute,
19971      even though the given DIE does not have a declaration attribute.  */
19972   return (dwarf2_flag_true_p (die, DW_AT_declaration, cu)
19973           && dwarf2_attr (die, DW_AT_specification, cu) == NULL);
19974 }
19975
19976 /* Return the die giving the specification for DIE, if there is
19977    one.  *SPEC_CU is the CU containing DIE on input, and the CU
19978    containing the return value on output.  If there is no
19979    specification, but there is an abstract origin, that is
19980    returned.  */
19981
19982 static struct die_info *
19983 die_specification (struct die_info *die, struct dwarf2_cu **spec_cu)
19984 {
19985   struct attribute *spec_attr = dwarf2_attr (die, DW_AT_specification,
19986                                              *spec_cu);
19987
19988   if (spec_attr == NULL)
19989     spec_attr = dwarf2_attr (die, DW_AT_abstract_origin, *spec_cu);
19990
19991   if (spec_attr == NULL)
19992     return NULL;
19993   else
19994     return follow_die_ref (die, spec_attr, spec_cu);
19995 }
19996
19997 /* Stub for free_line_header to match void * callback types.  */
19998
19999 static void
20000 free_line_header_voidp (void *arg)
20001 {
20002   struct line_header *lh = (struct line_header *) arg;
20003
20004   delete lh;
20005 }
20006
20007 void
20008 line_header::add_include_dir (const char *include_dir)
20009 {
20010   if (dwarf_line_debug >= 2)
20011     fprintf_unfiltered (gdb_stdlog, "Adding dir %zu: %s\n",
20012                         include_dirs.size () + 1, include_dir);
20013
20014   include_dirs.push_back (include_dir);
20015 }
20016
20017 void
20018 line_header::add_file_name (const char *name,
20019                             dir_index d_index,
20020                             unsigned int mod_time,
20021                             unsigned int length)
20022 {
20023   if (dwarf_line_debug >= 2)
20024     fprintf_unfiltered (gdb_stdlog, "Adding file %u: %s\n",
20025                         (unsigned) file_names.size () + 1, name);
20026
20027   file_names.emplace_back (name, d_index, mod_time, length);
20028 }
20029
20030 /* A convenience function to find the proper .debug_line section for a CU.  */
20031
20032 static struct dwarf2_section_info *
20033 get_debug_line_section (struct dwarf2_cu *cu)
20034 {
20035   struct dwarf2_section_info *section;
20036   struct dwarf2_per_objfile *dwarf2_per_objfile
20037     = cu->per_cu->dwarf2_per_objfile;
20038
20039   /* For TUs in DWO files, the DW_AT_stmt_list attribute lives in the
20040      DWO file.  */
20041   if (cu->dwo_unit && cu->per_cu->is_debug_types)
20042     section = &cu->dwo_unit->dwo_file->sections.line;
20043   else if (cu->per_cu->is_dwz)
20044     {
20045       struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
20046
20047       section = &dwz->line;
20048     }
20049   else
20050     section = &dwarf2_per_objfile->line;
20051
20052   return section;
20053 }
20054
20055 /* Read directory or file name entry format, starting with byte of
20056    format count entries, ULEB128 pairs of entry formats, ULEB128 of
20057    entries count and the entries themselves in the described entry
20058    format.  */
20059
20060 static void
20061 read_formatted_entries (struct dwarf2_per_objfile *dwarf2_per_objfile,
20062                         bfd *abfd, const gdb_byte **bufp,
20063                         struct line_header *lh,
20064                         const struct comp_unit_head *cu_header,
20065                         void (*callback) (struct line_header *lh,
20066                                           const char *name,
20067                                           dir_index d_index,
20068                                           unsigned int mod_time,
20069                                           unsigned int length))
20070 {
20071   gdb_byte format_count, formati;
20072   ULONGEST data_count, datai;
20073   const gdb_byte *buf = *bufp;
20074   const gdb_byte *format_header_data;
20075   unsigned int bytes_read;
20076
20077   format_count = read_1_byte (abfd, buf);
20078   buf += 1;
20079   format_header_data = buf;
20080   for (formati = 0; formati < format_count; formati++)
20081     {
20082       read_unsigned_leb128 (abfd, buf, &bytes_read);
20083       buf += bytes_read;
20084       read_unsigned_leb128 (abfd, buf, &bytes_read);
20085       buf += bytes_read;
20086     }
20087
20088   data_count = read_unsigned_leb128 (abfd, buf, &bytes_read);
20089   buf += bytes_read;
20090   for (datai = 0; datai < data_count; datai++)
20091     {
20092       const gdb_byte *format = format_header_data;
20093       struct file_entry fe;
20094
20095       for (formati = 0; formati < format_count; formati++)
20096         {
20097           ULONGEST content_type = read_unsigned_leb128 (abfd, format, &bytes_read);
20098           format += bytes_read;
20099
20100           ULONGEST form  = read_unsigned_leb128 (abfd, format, &bytes_read);
20101           format += bytes_read;
20102
20103           gdb::optional<const char *> string;
20104           gdb::optional<unsigned int> uint;
20105
20106           switch (form)
20107             {
20108             case DW_FORM_string:
20109               string.emplace (read_direct_string (abfd, buf, &bytes_read));
20110               buf += bytes_read;
20111               break;
20112
20113             case DW_FORM_line_strp:
20114               string.emplace (read_indirect_line_string (dwarf2_per_objfile,
20115                                                          abfd, buf,
20116                                                          cu_header,
20117                                                          &bytes_read));
20118               buf += bytes_read;
20119               break;
20120
20121             case DW_FORM_data1:
20122               uint.emplace (read_1_byte (abfd, buf));
20123               buf += 1;
20124               break;
20125
20126             case DW_FORM_data2:
20127               uint.emplace (read_2_bytes (abfd, buf));
20128               buf += 2;
20129               break;
20130
20131             case DW_FORM_data4:
20132               uint.emplace (read_4_bytes (abfd, buf));
20133               buf += 4;
20134               break;
20135
20136             case DW_FORM_data8:
20137               uint.emplace (read_8_bytes (abfd, buf));
20138               buf += 8;
20139               break;
20140
20141             case DW_FORM_udata:
20142               uint.emplace (read_unsigned_leb128 (abfd, buf, &bytes_read));
20143               buf += bytes_read;
20144               break;
20145
20146             case DW_FORM_block:
20147               /* It is valid only for DW_LNCT_timestamp which is ignored by
20148                  current GDB.  */
20149               break;
20150             }
20151
20152           switch (content_type)
20153             {
20154             case DW_LNCT_path:
20155               if (string.has_value ())
20156                 fe.name = *string;
20157               break;
20158             case DW_LNCT_directory_index:
20159               if (uint.has_value ())
20160                 fe.d_index = (dir_index) *uint;
20161               break;
20162             case DW_LNCT_timestamp:
20163               if (uint.has_value ())
20164                 fe.mod_time = *uint;
20165               break;
20166             case DW_LNCT_size:
20167               if (uint.has_value ())
20168                 fe.length = *uint;
20169               break;
20170             case DW_LNCT_MD5:
20171               break;
20172             default:
20173               complaint (_("Unknown format content type %s"),
20174                          pulongest (content_type));
20175             }
20176         }
20177
20178       callback (lh, fe.name, fe.d_index, fe.mod_time, fe.length);
20179     }
20180
20181   *bufp = buf;
20182 }
20183
20184 /* Read the statement program header starting at OFFSET in
20185    .debug_line, or .debug_line.dwo.  Return a pointer
20186    to a struct line_header, allocated using xmalloc.
20187    Returns NULL if there is a problem reading the header, e.g., if it
20188    has a version we don't understand.
20189
20190    NOTE: the strings in the include directory and file name tables of
20191    the returned object point into the dwarf line section buffer,
20192    and must not be freed.  */
20193
20194 static line_header_up
20195 dwarf_decode_line_header (sect_offset sect_off, struct dwarf2_cu *cu)
20196 {
20197   const gdb_byte *line_ptr;
20198   unsigned int bytes_read, offset_size;
20199   int i;
20200   const char *cur_dir, *cur_file;
20201   struct dwarf2_section_info *section;
20202   bfd *abfd;
20203   struct dwarf2_per_objfile *dwarf2_per_objfile
20204     = cu->per_cu->dwarf2_per_objfile;
20205
20206   section = get_debug_line_section (cu);
20207   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
20208   if (section->buffer == NULL)
20209     {
20210       if (cu->dwo_unit && cu->per_cu->is_debug_types)
20211         complaint (_("missing .debug_line.dwo section"));
20212       else
20213         complaint (_("missing .debug_line section"));
20214       return 0;
20215     }
20216
20217   /* We can't do this until we know the section is non-empty.
20218      Only then do we know we have such a section.  */
20219   abfd = get_section_bfd_owner (section);
20220
20221   /* Make sure that at least there's room for the total_length field.
20222      That could be 12 bytes long, but we're just going to fudge that.  */
20223   if (to_underlying (sect_off) + 4 >= section->size)
20224     {
20225       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20226       return 0;
20227     }
20228
20229   line_header_up lh (new line_header ());
20230
20231   lh->sect_off = sect_off;
20232   lh->offset_in_dwz = cu->per_cu->is_dwz;
20233
20234   line_ptr = section->buffer + to_underlying (sect_off);
20235
20236   /* Read in the header.  */
20237   lh->total_length =
20238     read_checked_initial_length_and_offset (abfd, line_ptr, &cu->header,
20239                                             &bytes_read, &offset_size);
20240   line_ptr += bytes_read;
20241   if (line_ptr + lh->total_length > (section->buffer + section->size))
20242     {
20243       dwarf2_statement_list_fits_in_line_number_section_complaint ();
20244       return 0;
20245     }
20246   lh->statement_program_end = line_ptr + lh->total_length;
20247   lh->version = read_2_bytes (abfd, line_ptr);
20248   line_ptr += 2;
20249   if (lh->version > 5)
20250     {
20251       /* This is a version we don't understand.  The format could have
20252          changed in ways we don't handle properly so just punt.  */
20253       complaint (_("unsupported version in .debug_line section"));
20254       return NULL;
20255     }
20256   if (lh->version >= 5)
20257     {
20258       gdb_byte segment_selector_size;
20259
20260       /* Skip address size.  */
20261       read_1_byte (abfd, line_ptr);
20262       line_ptr += 1;
20263
20264       segment_selector_size = read_1_byte (abfd, line_ptr);
20265       line_ptr += 1;
20266       if (segment_selector_size != 0)
20267         {
20268           complaint (_("unsupported segment selector size %u "
20269                        "in .debug_line section"),
20270                      segment_selector_size);
20271           return NULL;
20272         }
20273     }
20274   lh->header_length = read_offset_1 (abfd, line_ptr, offset_size);
20275   line_ptr += offset_size;
20276   lh->minimum_instruction_length = read_1_byte (abfd, line_ptr);
20277   line_ptr += 1;
20278   if (lh->version >= 4)
20279     {
20280       lh->maximum_ops_per_instruction = read_1_byte (abfd, line_ptr);
20281       line_ptr += 1;
20282     }
20283   else
20284     lh->maximum_ops_per_instruction = 1;
20285
20286   if (lh->maximum_ops_per_instruction == 0)
20287     {
20288       lh->maximum_ops_per_instruction = 1;
20289       complaint (_("invalid maximum_ops_per_instruction "
20290                    "in `.debug_line' section"));
20291     }
20292
20293   lh->default_is_stmt = read_1_byte (abfd, line_ptr);
20294   line_ptr += 1;
20295   lh->line_base = read_1_signed_byte (abfd, line_ptr);
20296   line_ptr += 1;
20297   lh->line_range = read_1_byte (abfd, line_ptr);
20298   line_ptr += 1;
20299   lh->opcode_base = read_1_byte (abfd, line_ptr);
20300   line_ptr += 1;
20301   lh->standard_opcode_lengths.reset (new unsigned char[lh->opcode_base]);
20302
20303   lh->standard_opcode_lengths[0] = 1;  /* This should never be used anyway.  */
20304   for (i = 1; i < lh->opcode_base; ++i)
20305     {
20306       lh->standard_opcode_lengths[i] = read_1_byte (abfd, line_ptr);
20307       line_ptr += 1;
20308     }
20309
20310   if (lh->version >= 5)
20311     {
20312       /* Read directory table.  */
20313       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20314                               &cu->header,
20315                               [] (struct line_header *lh, const char *name,
20316                                   dir_index d_index, unsigned int mod_time,
20317                                   unsigned int length)
20318         {
20319           lh->add_include_dir (name);
20320         });
20321
20322       /* Read file name table.  */
20323       read_formatted_entries (dwarf2_per_objfile, abfd, &line_ptr, lh.get (),
20324                               &cu->header,
20325                               [] (struct line_header *lh, const char *name,
20326                                   dir_index d_index, unsigned int mod_time,
20327                                   unsigned int length)
20328         {
20329           lh->add_file_name (name, d_index, mod_time, length);
20330         });
20331     }
20332   else
20333     {
20334       /* Read directory table.  */
20335       while ((cur_dir = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20336         {
20337           line_ptr += bytes_read;
20338           lh->add_include_dir (cur_dir);
20339         }
20340       line_ptr += bytes_read;
20341
20342       /* Read file name table.  */
20343       while ((cur_file = read_direct_string (abfd, line_ptr, &bytes_read)) != NULL)
20344         {
20345           unsigned int mod_time, length;
20346           dir_index d_index;
20347
20348           line_ptr += bytes_read;
20349           d_index = (dir_index) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20350           line_ptr += bytes_read;
20351           mod_time = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20352           line_ptr += bytes_read;
20353           length = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20354           line_ptr += bytes_read;
20355
20356           lh->add_file_name (cur_file, d_index, mod_time, length);
20357         }
20358       line_ptr += bytes_read;
20359     }
20360   lh->statement_program_start = line_ptr;
20361
20362   if (line_ptr > (section->buffer + section->size))
20363     complaint (_("line number info header doesn't "
20364                  "fit in `.debug_line' section"));
20365
20366   return lh;
20367 }
20368
20369 /* Subroutine of dwarf_decode_lines to simplify it.
20370    Return the file name of the psymtab for included file FILE_INDEX
20371    in line header LH of PST.
20372    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
20373    If space for the result is malloc'd, *NAME_HOLDER will be set.
20374    Returns NULL if FILE_INDEX should be ignored, i.e., it is pst->filename.  */
20375
20376 static const char *
20377 psymtab_include_file_name (const struct line_header *lh, int file_index,
20378                            const struct partial_symtab *pst,
20379                            const char *comp_dir,
20380                            gdb::unique_xmalloc_ptr<char> *name_holder)
20381 {
20382   const file_entry &fe = lh->file_names[file_index];
20383   const char *include_name = fe.name;
20384   const char *include_name_to_compare = include_name;
20385   const char *pst_filename;
20386   int file_is_pst;
20387
20388   const char *dir_name = fe.include_dir (lh);
20389
20390   gdb::unique_xmalloc_ptr<char> hold_compare;
20391   if (!IS_ABSOLUTE_PATH (include_name)
20392       && (dir_name != NULL || comp_dir != NULL))
20393     {
20394       /* Avoid creating a duplicate psymtab for PST.
20395          We do this by comparing INCLUDE_NAME and PST_FILENAME.
20396          Before we do the comparison, however, we need to account
20397          for DIR_NAME and COMP_DIR.
20398          First prepend dir_name (if non-NULL).  If we still don't
20399          have an absolute path prepend comp_dir (if non-NULL).
20400          However, the directory we record in the include-file's
20401          psymtab does not contain COMP_DIR (to match the
20402          corresponding symtab(s)).
20403
20404          Example:
20405
20406          bash$ cd /tmp
20407          bash$ gcc -g ./hello.c
20408          include_name = "hello.c"
20409          dir_name = "."
20410          DW_AT_comp_dir = comp_dir = "/tmp"
20411          DW_AT_name = "./hello.c"
20412
20413       */
20414
20415       if (dir_name != NULL)
20416         {
20417           name_holder->reset (concat (dir_name, SLASH_STRING,
20418                                       include_name, (char *) NULL));
20419           include_name = name_holder->get ();
20420           include_name_to_compare = include_name;
20421         }
20422       if (!IS_ABSOLUTE_PATH (include_name) && comp_dir != NULL)
20423         {
20424           hold_compare.reset (concat (comp_dir, SLASH_STRING,
20425                                       include_name, (char *) NULL));
20426           include_name_to_compare = hold_compare.get ();
20427         }
20428     }
20429
20430   pst_filename = pst->filename;
20431   gdb::unique_xmalloc_ptr<char> copied_name;
20432   if (!IS_ABSOLUTE_PATH (pst_filename) && pst->dirname != NULL)
20433     {
20434       copied_name.reset (concat (pst->dirname, SLASH_STRING,
20435                                  pst_filename, (char *) NULL));
20436       pst_filename = copied_name.get ();
20437     }
20438
20439   file_is_pst = FILENAME_CMP (include_name_to_compare, pst_filename) == 0;
20440
20441   if (file_is_pst)
20442     return NULL;
20443   return include_name;
20444 }
20445
20446 /* State machine to track the state of the line number program.  */
20447
20448 class lnp_state_machine
20449 {
20450 public:
20451   /* Initialize a machine state for the start of a line number
20452      program.  */
20453   lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch, line_header *lh,
20454                      bool record_lines_p);
20455
20456   file_entry *current_file ()
20457   {
20458     /* lh->file_names is 0-based, but the file name numbers in the
20459        statement program are 1-based.  */
20460     return m_line_header->file_name_at (m_file);
20461   }
20462
20463   /* Record the line in the state machine.  END_SEQUENCE is true if
20464      we're processing the end of a sequence.  */
20465   void record_line (bool end_sequence);
20466
20467   /* Check ADDRESS is zero and less than UNRELOCATED_LOWPC and if true
20468      nop-out rest of the lines in this sequence.  */
20469   void check_line_address (struct dwarf2_cu *cu,
20470                            const gdb_byte *line_ptr,
20471                            CORE_ADDR unrelocated_lowpc, CORE_ADDR address);
20472
20473   void handle_set_discriminator (unsigned int discriminator)
20474   {
20475     m_discriminator = discriminator;
20476     m_line_has_non_zero_discriminator |= discriminator != 0;
20477   }
20478
20479   /* Handle DW_LNE_set_address.  */
20480   void handle_set_address (CORE_ADDR baseaddr, CORE_ADDR address)
20481   {
20482     m_op_index = 0;
20483     address += baseaddr;
20484     m_address = gdbarch_adjust_dwarf2_line (m_gdbarch, address, false);
20485   }
20486
20487   /* Handle DW_LNS_advance_pc.  */
20488   void handle_advance_pc (CORE_ADDR adjust);
20489
20490   /* Handle a special opcode.  */
20491   void handle_special_opcode (unsigned char op_code);
20492
20493   /* Handle DW_LNS_advance_line.  */
20494   void handle_advance_line (int line_delta)
20495   {
20496     advance_line (line_delta);
20497   }
20498
20499   /* Handle DW_LNS_set_file.  */
20500   void handle_set_file (file_name_index file);
20501
20502   /* Handle DW_LNS_negate_stmt.  */
20503   void handle_negate_stmt ()
20504   {
20505     m_is_stmt = !m_is_stmt;
20506   }
20507
20508   /* Handle DW_LNS_const_add_pc.  */
20509   void handle_const_add_pc ();
20510
20511   /* Handle DW_LNS_fixed_advance_pc.  */
20512   void handle_fixed_advance_pc (CORE_ADDR addr_adj)
20513   {
20514     m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20515     m_op_index = 0;
20516   }
20517
20518   /* Handle DW_LNS_copy.  */
20519   void handle_copy ()
20520   {
20521     record_line (false);
20522     m_discriminator = 0;
20523   }
20524
20525   /* Handle DW_LNE_end_sequence.  */
20526   void handle_end_sequence ()
20527   {
20528     m_currently_recording_lines = true;
20529   }
20530
20531 private:
20532   /* Advance the line by LINE_DELTA.  */
20533   void advance_line (int line_delta)
20534   {
20535     m_line += line_delta;
20536
20537     if (line_delta != 0)
20538       m_line_has_non_zero_discriminator = m_discriminator != 0;
20539   }
20540
20541   struct dwarf2_cu *m_cu;
20542
20543   gdbarch *m_gdbarch;
20544
20545   /* True if we're recording lines.
20546      Otherwise we're building partial symtabs and are just interested in
20547      finding include files mentioned by the line number program.  */
20548   bool m_record_lines_p;
20549
20550   /* The line number header.  */
20551   line_header *m_line_header;
20552
20553   /* These are part of the standard DWARF line number state machine,
20554      and initialized according to the DWARF spec.  */
20555
20556   unsigned char m_op_index = 0;
20557   /* The line table index (1-based) of the current file.  */
20558   file_name_index m_file = (file_name_index) 1;
20559   unsigned int m_line = 1;
20560
20561   /* These are initialized in the constructor.  */
20562
20563   CORE_ADDR m_address;
20564   bool m_is_stmt;
20565   unsigned int m_discriminator;
20566
20567   /* Additional bits of state we need to track.  */
20568
20569   /* The last file that we called dwarf2_start_subfile for.
20570      This is only used for TLLs.  */
20571   unsigned int m_last_file = 0;
20572   /* The last file a line number was recorded for.  */
20573   struct subfile *m_last_subfile = NULL;
20574
20575   /* When true, record the lines we decode.  */
20576   bool m_currently_recording_lines = false;
20577
20578   /* The last line number that was recorded, used to coalesce
20579      consecutive entries for the same line.  This can happen, for
20580      example, when discriminators are present.  PR 17276.  */
20581   unsigned int m_last_line = 0;
20582   bool m_line_has_non_zero_discriminator = false;
20583 };
20584
20585 void
20586 lnp_state_machine::handle_advance_pc (CORE_ADDR adjust)
20587 {
20588   CORE_ADDR addr_adj = (((m_op_index + adjust)
20589                          / m_line_header->maximum_ops_per_instruction)
20590                         * m_line_header->minimum_instruction_length);
20591   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20592   m_op_index = ((m_op_index + adjust)
20593                 % m_line_header->maximum_ops_per_instruction);
20594 }
20595
20596 void
20597 lnp_state_machine::handle_special_opcode (unsigned char op_code)
20598 {
20599   unsigned char adj_opcode = op_code - m_line_header->opcode_base;
20600   CORE_ADDR addr_adj = (((m_op_index
20601                           + (adj_opcode / m_line_header->line_range))
20602                          / m_line_header->maximum_ops_per_instruction)
20603                         * m_line_header->minimum_instruction_length);
20604   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20605   m_op_index = ((m_op_index + (adj_opcode / m_line_header->line_range))
20606                 % m_line_header->maximum_ops_per_instruction);
20607
20608   int line_delta = (m_line_header->line_base
20609                     + (adj_opcode % m_line_header->line_range));
20610   advance_line (line_delta);
20611   record_line (false);
20612   m_discriminator = 0;
20613 }
20614
20615 void
20616 lnp_state_machine::handle_set_file (file_name_index file)
20617 {
20618   m_file = file;
20619
20620   const file_entry *fe = current_file ();
20621   if (fe == NULL)
20622     dwarf2_debug_line_missing_file_complaint ();
20623   else if (m_record_lines_p)
20624     {
20625       const char *dir = fe->include_dir (m_line_header);
20626
20627       m_last_subfile = m_cu->builder->get_current_subfile ();
20628       m_line_has_non_zero_discriminator = m_discriminator != 0;
20629       dwarf2_start_subfile (m_cu, fe->name, dir);
20630     }
20631 }
20632
20633 void
20634 lnp_state_machine::handle_const_add_pc ()
20635 {
20636   CORE_ADDR adjust
20637     = (255 - m_line_header->opcode_base) / m_line_header->line_range;
20638
20639   CORE_ADDR addr_adj
20640     = (((m_op_index + adjust)
20641         / m_line_header->maximum_ops_per_instruction)
20642        * m_line_header->minimum_instruction_length);
20643
20644   m_address += gdbarch_adjust_dwarf2_line (m_gdbarch, addr_adj, true);
20645   m_op_index = ((m_op_index + adjust)
20646                 % m_line_header->maximum_ops_per_instruction);
20647 }
20648
20649 /* Return non-zero if we should add LINE to the line number table.
20650    LINE is the line to add, LAST_LINE is the last line that was added,
20651    LAST_SUBFILE is the subfile for LAST_LINE.
20652    LINE_HAS_NON_ZERO_DISCRIMINATOR is non-zero if LINE has ever
20653    had a non-zero discriminator.
20654
20655    We have to be careful in the presence of discriminators.
20656    E.g., for this line:
20657
20658      for (i = 0; i < 100000; i++);
20659
20660    clang can emit four line number entries for that one line,
20661    each with a different discriminator.
20662    See gdb.dwarf2/dw2-single-line-discriminators.exp for an example.
20663
20664    However, we want gdb to coalesce all four entries into one.
20665    Otherwise the user could stepi into the middle of the line and
20666    gdb would get confused about whether the pc really was in the
20667    middle of the line.
20668
20669    Things are further complicated by the fact that two consecutive
20670    line number entries for the same line is a heuristic used by gcc
20671    to denote the end of the prologue.  So we can't just discard duplicate
20672    entries, we have to be selective about it.  The heuristic we use is
20673    that we only collapse consecutive entries for the same line if at least
20674    one of those entries has a non-zero discriminator.  PR 17276.
20675
20676    Note: Addresses in the line number state machine can never go backwards
20677    within one sequence, thus this coalescing is ok.  */
20678
20679 static int
20680 dwarf_record_line_p (struct dwarf2_cu *cu,
20681                      unsigned int line, unsigned int last_line,
20682                      int line_has_non_zero_discriminator,
20683                      struct subfile *last_subfile)
20684 {
20685   if (cu->builder->get_current_subfile () != last_subfile)
20686     return 1;
20687   if (line != last_line)
20688     return 1;
20689   /* Same line for the same file that we've seen already.
20690      As a last check, for pr 17276, only record the line if the line
20691      has never had a non-zero discriminator.  */
20692   if (!line_has_non_zero_discriminator)
20693     return 1;
20694   return 0;
20695 }
20696
20697 /* Use the CU's builder to record line number LINE beginning at
20698    address ADDRESS in the line table of subfile SUBFILE.  */
20699
20700 static void
20701 dwarf_record_line_1 (struct gdbarch *gdbarch, struct subfile *subfile,
20702                      unsigned int line, CORE_ADDR address,
20703                      struct dwarf2_cu *cu)
20704 {
20705   CORE_ADDR addr = gdbarch_addr_bits_remove (gdbarch, address);
20706
20707   if (dwarf_line_debug)
20708     {
20709       fprintf_unfiltered (gdb_stdlog,
20710                           "Recording line %u, file %s, address %s\n",
20711                           line, lbasename (subfile->name),
20712                           paddress (gdbarch, address));
20713     }
20714
20715   if (cu != nullptr)
20716     cu->builder->record_line (subfile, line, addr);
20717 }
20718
20719 /* Subroutine of dwarf_decode_lines_1 to simplify it.
20720    Mark the end of a set of line number records.
20721    The arguments are the same as for dwarf_record_line_1.
20722    If SUBFILE is NULL the request is ignored.  */
20723
20724 static void
20725 dwarf_finish_line (struct gdbarch *gdbarch, struct subfile *subfile,
20726                    CORE_ADDR address, struct dwarf2_cu *cu)
20727 {
20728   if (subfile == NULL)
20729     return;
20730
20731   if (dwarf_line_debug)
20732     {
20733       fprintf_unfiltered (gdb_stdlog,
20734                           "Finishing current line, file %s, address %s\n",
20735                           lbasename (subfile->name),
20736                           paddress (gdbarch, address));
20737     }
20738
20739   dwarf_record_line_1 (gdbarch, subfile, 0, address, cu);
20740 }
20741
20742 void
20743 lnp_state_machine::record_line (bool end_sequence)
20744 {
20745   if (dwarf_line_debug)
20746     {
20747       fprintf_unfiltered (gdb_stdlog,
20748                           "Processing actual line %u: file %u,"
20749                           " address %s, is_stmt %u, discrim %u\n",
20750                           m_line, to_underlying (m_file),
20751                           paddress (m_gdbarch, m_address),
20752                           m_is_stmt, m_discriminator);
20753     }
20754
20755   file_entry *fe = current_file ();
20756
20757   if (fe == NULL)
20758     dwarf2_debug_line_missing_file_complaint ();
20759   /* For now we ignore lines not starting on an instruction boundary.
20760      But not when processing end_sequence for compatibility with the
20761      previous version of the code.  */
20762   else if (m_op_index == 0 || end_sequence)
20763     {
20764       fe->included_p = 1;
20765       if (m_record_lines_p && m_is_stmt)
20766         {
20767           if (m_last_subfile != m_cu->builder->get_current_subfile ()
20768               || end_sequence)
20769             {
20770               dwarf_finish_line (m_gdbarch, m_last_subfile, m_address,
20771                                  m_currently_recording_lines ? m_cu : nullptr);
20772             }
20773
20774           if (!end_sequence)
20775             {
20776               if (dwarf_record_line_p (m_cu, m_line, m_last_line,
20777                                        m_line_has_non_zero_discriminator,
20778                                        m_last_subfile))
20779                 {
20780                   dwarf_record_line_1 (m_gdbarch,
20781                                        m_cu->builder->get_current_subfile (),
20782                                        m_line, m_address,
20783                                        m_currently_recording_lines ? m_cu : nullptr);
20784                 }
20785               m_last_subfile = m_cu->builder->get_current_subfile ();
20786               m_last_line = m_line;
20787             }
20788         }
20789     }
20790 }
20791
20792 lnp_state_machine::lnp_state_machine (struct dwarf2_cu *cu, gdbarch *arch,
20793                                       line_header *lh, bool record_lines_p)
20794 {
20795   m_cu = cu;
20796   m_gdbarch = arch;
20797   m_record_lines_p = record_lines_p;
20798   m_line_header = lh;
20799
20800   m_currently_recording_lines = true;
20801
20802   /* Call `gdbarch_adjust_dwarf2_line' on the initial 0 address as if there
20803      was a line entry for it so that the backend has a chance to adjust it
20804      and also record it in case it needs it.  This is currently used by MIPS
20805      code, cf. `mips_adjust_dwarf2_line'.  */
20806   m_address = gdbarch_adjust_dwarf2_line (arch, 0, 0);
20807   m_is_stmt = lh->default_is_stmt;
20808   m_discriminator = 0;
20809 }
20810
20811 void
20812 lnp_state_machine::check_line_address (struct dwarf2_cu *cu,
20813                                        const gdb_byte *line_ptr,
20814                                        CORE_ADDR unrelocated_lowpc, CORE_ADDR address)
20815 {
20816   /* If ADDRESS < UNRELOCATED_LOWPC then it's not a usable value, it's outside
20817      the pc range of the CU.  However, we restrict the test to only ADDRESS
20818      values of zero to preserve GDB's previous behaviour which is to handle
20819      the specific case of a function being GC'd by the linker.  */
20820
20821   if (address == 0 && address < unrelocated_lowpc)
20822     {
20823       /* This line table is for a function which has been
20824          GCd by the linker.  Ignore it.  PR gdb/12528 */
20825
20826       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20827       long line_offset = line_ptr - get_debug_line_section (cu)->buffer;
20828
20829       complaint (_(".debug_line address at offset 0x%lx is 0 [in module %s]"),
20830                  line_offset, objfile_name (objfile));
20831       m_currently_recording_lines = false;
20832       /* Note: m_currently_recording_lines is left as false until we see
20833          DW_LNE_end_sequence.  */
20834     }
20835 }
20836
20837 /* Subroutine of dwarf_decode_lines to simplify it.
20838    Process the line number information in LH.
20839    If DECODE_FOR_PST_P is non-zero, all we do is process the line number
20840    program in order to set included_p for every referenced header.  */
20841
20842 static void
20843 dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu,
20844                       const int decode_for_pst_p, CORE_ADDR lowpc)
20845 {
20846   const gdb_byte *line_ptr, *extended_end;
20847   const gdb_byte *line_end;
20848   unsigned int bytes_read, extended_len;
20849   unsigned char op_code, extended_op;
20850   CORE_ADDR baseaddr;
20851   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
20852   bfd *abfd = objfile->obfd;
20853   struct gdbarch *gdbarch = get_objfile_arch (objfile);
20854   /* True if we're recording line info (as opposed to building partial
20855      symtabs and just interested in finding include files mentioned by
20856      the line number program).  */
20857   bool record_lines_p = !decode_for_pst_p;
20858
20859   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
20860
20861   line_ptr = lh->statement_program_start;
20862   line_end = lh->statement_program_end;
20863
20864   /* Read the statement sequences until there's nothing left.  */
20865   while (line_ptr < line_end)
20866     {
20867       /* The DWARF line number program state machine.  Reset the state
20868          machine at the start of each sequence.  */
20869       lnp_state_machine state_machine (cu, gdbarch, lh, record_lines_p);
20870       bool end_sequence = false;
20871
20872       if (record_lines_p)
20873         {
20874           /* Start a subfile for the current file of the state
20875              machine.  */
20876           const file_entry *fe = state_machine.current_file ();
20877
20878           if (fe != NULL)
20879             dwarf2_start_subfile (cu, fe->name, fe->include_dir (lh));
20880         }
20881
20882       /* Decode the table.  */
20883       while (line_ptr < line_end && !end_sequence)
20884         {
20885           op_code = read_1_byte (abfd, line_ptr);
20886           line_ptr += 1;
20887
20888           if (op_code >= lh->opcode_base)
20889             {
20890               /* Special opcode.  */
20891               state_machine.handle_special_opcode (op_code);
20892             }
20893           else switch (op_code)
20894             {
20895             case DW_LNS_extended_op:
20896               extended_len = read_unsigned_leb128 (abfd, line_ptr,
20897                                                    &bytes_read);
20898               line_ptr += bytes_read;
20899               extended_end = line_ptr + extended_len;
20900               extended_op = read_1_byte (abfd, line_ptr);
20901               line_ptr += 1;
20902               switch (extended_op)
20903                 {
20904                 case DW_LNE_end_sequence:
20905                   state_machine.handle_end_sequence ();
20906                   end_sequence = true;
20907                   break;
20908                 case DW_LNE_set_address:
20909                   {
20910                     CORE_ADDR address
20911                       = read_address (abfd, line_ptr, cu, &bytes_read);
20912                     line_ptr += bytes_read;
20913
20914                     state_machine.check_line_address (cu, line_ptr,
20915                                                       lowpc - baseaddr, address);
20916                     state_machine.handle_set_address (baseaddr, address);
20917                   }
20918                   break;
20919                 case DW_LNE_define_file:
20920                   {
20921                     const char *cur_file;
20922                     unsigned int mod_time, length;
20923                     dir_index dindex;
20924
20925                     cur_file = read_direct_string (abfd, line_ptr,
20926                                                    &bytes_read);
20927                     line_ptr += bytes_read;
20928                     dindex = (dir_index)
20929                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20930                     line_ptr += bytes_read;
20931                     mod_time =
20932                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20933                     line_ptr += bytes_read;
20934                     length =
20935                       read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20936                     line_ptr += bytes_read;
20937                     lh->add_file_name (cur_file, dindex, mod_time, length);
20938                   }
20939                   break;
20940                 case DW_LNE_set_discriminator:
20941                   {
20942                     /* The discriminator is not interesting to the
20943                        debugger; just ignore it.  We still need to
20944                        check its value though:
20945                        if there are consecutive entries for the same
20946                        (non-prologue) line we want to coalesce them.
20947                        PR 17276.  */
20948                     unsigned int discr
20949                       = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20950                     line_ptr += bytes_read;
20951
20952                     state_machine.handle_set_discriminator (discr);
20953                   }
20954                   break;
20955                 default:
20956                   complaint (_("mangled .debug_line section"));
20957                   return;
20958                 }
20959               /* Make sure that we parsed the extended op correctly.  If e.g.
20960                  we expected a different address size than the producer used,
20961                  we may have read the wrong number of bytes.  */
20962               if (line_ptr != extended_end)
20963                 {
20964                   complaint (_("mangled .debug_line section"));
20965                   return;
20966                 }
20967               break;
20968             case DW_LNS_copy:
20969               state_machine.handle_copy ();
20970               break;
20971             case DW_LNS_advance_pc:
20972               {
20973                 CORE_ADDR adjust
20974                   = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
20975                 line_ptr += bytes_read;
20976
20977                 state_machine.handle_advance_pc (adjust);
20978               }
20979               break;
20980             case DW_LNS_advance_line:
20981               {
20982                 int line_delta
20983                   = read_signed_leb128 (abfd, line_ptr, &bytes_read);
20984                 line_ptr += bytes_read;
20985
20986                 state_machine.handle_advance_line (line_delta);
20987               }
20988               break;
20989             case DW_LNS_set_file:
20990               {
20991                 file_name_index file
20992                   = (file_name_index) read_unsigned_leb128 (abfd, line_ptr,
20993                                                             &bytes_read);
20994                 line_ptr += bytes_read;
20995
20996                 state_machine.handle_set_file (file);
20997               }
20998               break;
20999             case DW_LNS_set_column:
21000               (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21001               line_ptr += bytes_read;
21002               break;
21003             case DW_LNS_negate_stmt:
21004               state_machine.handle_negate_stmt ();
21005               break;
21006             case DW_LNS_set_basic_block:
21007               break;
21008             /* Add to the address register of the state machine the
21009                address increment value corresponding to special opcode
21010                255.  I.e., this value is scaled by the minimum
21011                instruction length since special opcode 255 would have
21012                scaled the increment.  */
21013             case DW_LNS_const_add_pc:
21014               state_machine.handle_const_add_pc ();
21015               break;
21016             case DW_LNS_fixed_advance_pc:
21017               {
21018                 CORE_ADDR addr_adj = read_2_bytes (abfd, line_ptr);
21019                 line_ptr += 2;
21020
21021                 state_machine.handle_fixed_advance_pc (addr_adj);
21022               }
21023               break;
21024             default:
21025               {
21026                 /* Unknown standard opcode, ignore it.  */
21027                 int i;
21028
21029                 for (i = 0; i < lh->standard_opcode_lengths[op_code]; i++)
21030                   {
21031                     (void) read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
21032                     line_ptr += bytes_read;
21033                   }
21034               }
21035             }
21036         }
21037
21038       if (!end_sequence)
21039         dwarf2_debug_line_missing_end_sequence_complaint ();
21040
21041       /* We got a DW_LNE_end_sequence (or we ran off the end of the buffer,
21042          in which case we still finish recording the last line).  */
21043       state_machine.record_line (true);
21044     }
21045 }
21046
21047 /* Decode the Line Number Program (LNP) for the given line_header
21048    structure and CU.  The actual information extracted and the type
21049    of structures created from the LNP depends on the value of PST.
21050
21051    1. If PST is NULL, then this procedure uses the data from the program
21052       to create all necessary symbol tables, and their linetables.
21053
21054    2. If PST is not NULL, this procedure reads the program to determine
21055       the list of files included by the unit represented by PST, and
21056       builds all the associated partial symbol tables.
21057
21058    COMP_DIR is the compilation directory (DW_AT_comp_dir) or NULL if unknown.
21059    It is used for relative paths in the line table.
21060    NOTE: When processing partial symtabs (pst != NULL),
21061    comp_dir == pst->dirname.
21062
21063    NOTE: It is important that psymtabs have the same file name (via strcmp)
21064    as the corresponding symtab.  Since COMP_DIR is not used in the name of the
21065    symtab we don't use it in the name of the psymtabs we create.
21066    E.g. expand_line_sal requires this when finding psymtabs to expand.
21067    A good testcase for this is mb-inline.exp.
21068
21069    LOWPC is the lowest address in CU (or 0 if not known).
21070
21071    Boolean DECODE_MAPPING specifies we need to fully decode .debug_line
21072    for its PC<->lines mapping information.  Otherwise only the filename
21073    table is read in.  */
21074
21075 static void
21076 dwarf_decode_lines (struct line_header *lh, const char *comp_dir,
21077                     struct dwarf2_cu *cu, struct partial_symtab *pst,
21078                     CORE_ADDR lowpc, int decode_mapping)
21079 {
21080   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21081   const int decode_for_pst_p = (pst != NULL);
21082
21083   if (decode_mapping)
21084     dwarf_decode_lines_1 (lh, cu, decode_for_pst_p, lowpc);
21085
21086   if (decode_for_pst_p)
21087     {
21088       int file_index;
21089
21090       /* Now that we're done scanning the Line Header Program, we can
21091          create the psymtab of each included file.  */
21092       for (file_index = 0; file_index < lh->file_names.size (); file_index++)
21093         if (lh->file_names[file_index].included_p == 1)
21094           {
21095             gdb::unique_xmalloc_ptr<char> name_holder;
21096             const char *include_name =
21097               psymtab_include_file_name (lh, file_index, pst, comp_dir,
21098                                          &name_holder);
21099             if (include_name != NULL)
21100               dwarf2_create_include_psymtab (include_name, pst, objfile);
21101           }
21102     }
21103   else
21104     {
21105       /* Make sure a symtab is created for every file, even files
21106          which contain only variables (i.e. no code with associated
21107          line numbers).  */
21108       struct compunit_symtab *cust = cu->builder->get_compunit_symtab ();
21109       int i;
21110
21111       for (i = 0; i < lh->file_names.size (); i++)
21112         {
21113           file_entry &fe = lh->file_names[i];
21114
21115           dwarf2_start_subfile (cu, fe.name, fe.include_dir (lh));
21116
21117           if (cu->builder->get_current_subfile ()->symtab == NULL)
21118             {
21119               cu->builder->get_current_subfile ()->symtab
21120                 = allocate_symtab (cust,
21121                                    cu->builder->get_current_subfile ()->name);
21122             }
21123           fe.symtab = cu->builder->get_current_subfile ()->symtab;
21124         }
21125     }
21126 }
21127
21128 /* Start a subfile for DWARF.  FILENAME is the name of the file and
21129    DIRNAME the name of the source directory which contains FILENAME
21130    or NULL if not known.
21131    This routine tries to keep line numbers from identical absolute and
21132    relative file names in a common subfile.
21133
21134    Using the `list' example from the GDB testsuite, which resides in
21135    /srcdir and compiling it with Irix6.2 cc in /compdir using a filename
21136    of /srcdir/list0.c yields the following debugging information for list0.c:
21137
21138    DW_AT_name:          /srcdir/list0.c
21139    DW_AT_comp_dir:      /compdir
21140    files.files[0].name: list0.h
21141    files.files[0].dir:  /srcdir
21142    files.files[1].name: list0.c
21143    files.files[1].dir:  /srcdir
21144
21145    The line number information for list0.c has to end up in a single
21146    subfile, so that `break /srcdir/list0.c:1' works as expected.
21147    start_subfile will ensure that this happens provided that we pass the
21148    concatenation of files.files[1].dir and files.files[1].name as the
21149    subfile's name.  */
21150
21151 static void
21152 dwarf2_start_subfile (struct dwarf2_cu *cu, const char *filename,
21153                       const char *dirname)
21154 {
21155   char *copy = NULL;
21156
21157   /* In order not to lose the line information directory,
21158      we concatenate it to the filename when it makes sense.
21159      Note that the Dwarf3 standard says (speaking of filenames in line
21160      information): ``The directory index is ignored for file names
21161      that represent full path names''.  Thus ignoring dirname in the
21162      `else' branch below isn't an issue.  */
21163
21164   if (!IS_ABSOLUTE_PATH (filename) && dirname != NULL)
21165     {
21166       copy = concat (dirname, SLASH_STRING, filename, (char *)NULL);
21167       filename = copy;
21168     }
21169
21170   cu->builder->start_subfile (filename);
21171
21172   if (copy != NULL)
21173     xfree (copy);
21174 }
21175
21176 /* Start a symtab for DWARF.  NAME, COMP_DIR, LOW_PC are passed to the
21177    buildsym_compunit constructor.  */
21178
21179 static struct compunit_symtab *
21180 dwarf2_start_symtab (struct dwarf2_cu *cu,
21181                      const char *name, const char *comp_dir, CORE_ADDR low_pc)
21182 {
21183   gdb_assert (cu->builder == nullptr);
21184
21185   cu->builder.reset (new struct buildsym_compunit
21186                      (cu->per_cu->dwarf2_per_objfile->objfile,
21187                       name, comp_dir, cu->language, low_pc));
21188
21189   cu->list_in_scope = cu->builder->get_file_symbols ();
21190
21191   cu->builder->record_debugformat ("DWARF 2");
21192   cu->builder->record_producer (cu->producer);
21193
21194   cu->processing_has_namespace_info = 0;
21195
21196   return cu->builder->get_compunit_symtab ();
21197 }
21198
21199 static void
21200 var_decode_location (struct attribute *attr, struct symbol *sym,
21201                      struct dwarf2_cu *cu)
21202 {
21203   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21204   struct comp_unit_head *cu_header = &cu->header;
21205
21206   /* NOTE drow/2003-01-30: There used to be a comment and some special
21207      code here to turn a symbol with DW_AT_external and a
21208      SYMBOL_VALUE_ADDRESS of 0 into a LOC_UNRESOLVED symbol.  This was
21209      necessary for platforms (maybe Alpha, certainly PowerPC GNU/Linux
21210      with some versions of binutils) where shared libraries could have
21211      relocations against symbols in their debug information - the
21212      minimal symbol would have the right address, but the debug info
21213      would not.  It's no longer necessary, because we will explicitly
21214      apply relocations when we read in the debug information now.  */
21215
21216   /* A DW_AT_location attribute with no contents indicates that a
21217      variable has been optimized away.  */
21218   if (attr_form_is_block (attr) && DW_BLOCK (attr)->size == 0)
21219     {
21220       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21221       return;
21222     }
21223
21224   /* Handle one degenerate form of location expression specially, to
21225      preserve GDB's previous behavior when section offsets are
21226      specified.  If this is just a DW_OP_addr or DW_OP_GNU_addr_index
21227      then mark this symbol as LOC_STATIC.  */
21228
21229   if (attr_form_is_block (attr)
21230       && ((DW_BLOCK (attr)->data[0] == DW_OP_addr
21231            && DW_BLOCK (attr)->size == 1 + cu_header->addr_size)
21232           || (DW_BLOCK (attr)->data[0] == DW_OP_GNU_addr_index
21233               && (DW_BLOCK (attr)->size
21234                   == 1 + leb128_size (&DW_BLOCK (attr)->data[1])))))
21235     {
21236       unsigned int dummy;
21237
21238       if (DW_BLOCK (attr)->data[0] == DW_OP_addr)
21239         SYMBOL_VALUE_ADDRESS (sym) =
21240           read_address (objfile->obfd, DW_BLOCK (attr)->data + 1, cu, &dummy);
21241       else
21242         SYMBOL_VALUE_ADDRESS (sym) =
21243           read_addr_index_from_leb128 (cu, DW_BLOCK (attr)->data + 1, &dummy);
21244       SYMBOL_ACLASS_INDEX (sym) = LOC_STATIC;
21245       fixup_symbol_section (sym, objfile);
21246       SYMBOL_VALUE_ADDRESS (sym) += ANOFFSET (objfile->section_offsets,
21247                                               SYMBOL_SECTION (sym));
21248       return;
21249     }
21250
21251   /* NOTE drow/2002-01-30: It might be worthwhile to have a static
21252      expression evaluator, and use LOC_COMPUTED only when necessary
21253      (i.e. when the value of a register or memory location is
21254      referenced, or a thread-local block, etc.).  Then again, it might
21255      not be worthwhile.  I'm assuming that it isn't unless performance
21256      or memory numbers show me otherwise.  */
21257
21258   dwarf2_symbol_mark_computed (attr, sym, cu, 0);
21259
21260   if (SYMBOL_COMPUTED_OPS (sym)->location_has_loclist)
21261     cu->has_loclist = 1;
21262 }
21263
21264 /* Given a pointer to a DWARF information entry, figure out if we need
21265    to make a symbol table entry for it, and if so, create a new entry
21266    and return a pointer to it.
21267    If TYPE is NULL, determine symbol type from the die, otherwise
21268    used the passed type.
21269    If SPACE is not NULL, use it to hold the new symbol.  If it is
21270    NULL, allocate a new symbol on the objfile's obstack.  */
21271
21272 static struct symbol *
21273 new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
21274             struct symbol *space)
21275 {
21276   struct dwarf2_per_objfile *dwarf2_per_objfile
21277     = cu->per_cu->dwarf2_per_objfile;
21278   struct objfile *objfile = dwarf2_per_objfile->objfile;
21279   struct gdbarch *gdbarch = get_objfile_arch (objfile);
21280   struct symbol *sym = NULL;
21281   const char *name;
21282   struct attribute *attr = NULL;
21283   struct attribute *attr2 = NULL;
21284   CORE_ADDR baseaddr;
21285   struct pending **list_to_add = NULL;
21286
21287   int inlined_func = (die->tag == DW_TAG_inlined_subroutine);
21288
21289   baseaddr = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
21290
21291   name = dwarf2_name (die, cu);
21292   if (name)
21293     {
21294       const char *linkagename;
21295       int suppress_add = 0;
21296
21297       if (space)
21298         sym = space;
21299       else
21300         sym = allocate_symbol (objfile);
21301       OBJSTAT (objfile, n_syms++);
21302
21303       /* Cache this symbol's name and the name's demangled form (if any).  */
21304       SYMBOL_SET_LANGUAGE (sym, cu->language, &objfile->objfile_obstack);
21305       linkagename = dwarf2_physname (name, die, cu);
21306       SYMBOL_SET_NAMES (sym, linkagename, strlen (linkagename), 0, objfile);
21307
21308       /* Fortran does not have mangling standard and the mangling does differ
21309          between gfortran, iFort etc.  */
21310       if (cu->language == language_fortran
21311           && symbol_get_demangled_name (&(sym->ginfo)) == NULL)
21312         symbol_set_demangled_name (&(sym->ginfo),
21313                                    dwarf2_full_name (name, die, cu),
21314                                    NULL);
21315
21316       /* Default assumptions.
21317          Use the passed type or decode it from the die.  */
21318       SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21319       SYMBOL_ACLASS_INDEX (sym) = LOC_OPTIMIZED_OUT;
21320       if (type != NULL)
21321         SYMBOL_TYPE (sym) = type;
21322       else
21323         SYMBOL_TYPE (sym) = die_type (die, cu);
21324       attr = dwarf2_attr (die,
21325                           inlined_func ? DW_AT_call_line : DW_AT_decl_line,
21326                           cu);
21327       if (attr)
21328         {
21329           SYMBOL_LINE (sym) = DW_UNSND (attr);
21330         }
21331
21332       attr = dwarf2_attr (die,
21333                           inlined_func ? DW_AT_call_file : DW_AT_decl_file,
21334                           cu);
21335       if (attr)
21336         {
21337           file_name_index file_index = (file_name_index) DW_UNSND (attr);
21338           struct file_entry *fe;
21339
21340           if (cu->line_header != NULL)
21341             fe = cu->line_header->file_name_at (file_index);
21342           else
21343             fe = NULL;
21344
21345           if (fe == NULL)
21346             complaint (_("file index out of range"));
21347           else
21348             symbol_set_symtab (sym, fe->symtab);
21349         }
21350
21351       switch (die->tag)
21352         {
21353         case DW_TAG_label:
21354           attr = dwarf2_attr (die, DW_AT_low_pc, cu);
21355           if (attr)
21356             {
21357               CORE_ADDR addr;
21358
21359               addr = attr_value_as_address (attr);
21360               addr = gdbarch_adjust_dwarf2_addr (gdbarch, addr + baseaddr);
21361               SYMBOL_VALUE_ADDRESS (sym) = addr;
21362             }
21363           SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_core_addr;
21364           SYMBOL_DOMAIN (sym) = LABEL_DOMAIN;
21365           SYMBOL_ACLASS_INDEX (sym) = LOC_LABEL;
21366           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21367           break;
21368         case DW_TAG_subprogram:
21369           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21370              finish_block.  */
21371           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21372           attr2 = dwarf2_attr (die, DW_AT_external, cu);
21373           if ((attr2 && (DW_UNSND (attr2) != 0))
21374               || cu->language == language_ada)
21375             {
21376               /* Subprograms marked external are stored as a global symbol.
21377                  Ada subprograms, whether marked external or not, are always
21378                  stored as a global symbol, because we want to be able to
21379                  access them globally.  For instance, we want to be able
21380                  to break on a nested subprogram without having to
21381                  specify the context.  */
21382               list_to_add = cu->builder->get_global_symbols ();
21383             }
21384           else
21385             {
21386               list_to_add = cu->list_in_scope;
21387             }
21388           break;
21389         case DW_TAG_inlined_subroutine:
21390           /* SYMBOL_BLOCK_VALUE (sym) will be filled in later by
21391              finish_block.  */
21392           SYMBOL_ACLASS_INDEX (sym) = LOC_BLOCK;
21393           SYMBOL_INLINED (sym) = 1;
21394           list_to_add = cu->list_in_scope;
21395           break;
21396         case DW_TAG_template_value_param:
21397           suppress_add = 1;
21398           /* Fall through.  */
21399         case DW_TAG_constant:
21400         case DW_TAG_variable:
21401         case DW_TAG_member:
21402           /* Compilation with minimal debug info may result in
21403              variables with missing type entries.  Change the
21404              misleading `void' type to something sensible.  */
21405           if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_VOID)
21406             SYMBOL_TYPE (sym) = objfile_type (objfile)->builtin_int;
21407
21408           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21409           /* In the case of DW_TAG_member, we should only be called for
21410              static const members.  */
21411           if (die->tag == DW_TAG_member)
21412             {
21413               /* dwarf2_add_field uses die_is_declaration,
21414                  so we do the same.  */
21415               gdb_assert (die_is_declaration (die, cu));
21416               gdb_assert (attr);
21417             }
21418           if (attr)
21419             {
21420               dwarf2_const_value (attr, sym, cu);
21421               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21422               if (!suppress_add)
21423                 {
21424                   if (attr2 && (DW_UNSND (attr2) != 0))
21425                     list_to_add = cu->builder->get_global_symbols ();
21426                   else
21427                     list_to_add = cu->list_in_scope;
21428                 }
21429               break;
21430             }
21431           attr = dwarf2_attr (die, DW_AT_location, cu);
21432           if (attr)
21433             {
21434               var_decode_location (attr, sym, cu);
21435               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21436
21437               /* Fortran explicitly imports any global symbols to the local
21438                  scope by DW_TAG_common_block.  */
21439               if (cu->language == language_fortran && die->parent
21440                   && die->parent->tag == DW_TAG_common_block)
21441                 attr2 = NULL;
21442
21443               if (SYMBOL_CLASS (sym) == LOC_STATIC
21444                   && SYMBOL_VALUE_ADDRESS (sym) == 0
21445                   && !dwarf2_per_objfile->has_section_at_zero)
21446                 {
21447                   /* When a static variable is eliminated by the linker,
21448                      the corresponding debug information is not stripped
21449                      out, but the variable address is set to null;
21450                      do not add such variables into symbol table.  */
21451                 }
21452               else if (attr2 && (DW_UNSND (attr2) != 0))
21453                 {
21454                   /* Workaround gfortran PR debug/40040 - it uses
21455                      DW_AT_location for variables in -fPIC libraries which may
21456                      get overriden by other libraries/executable and get
21457                      a different address.  Resolve it by the minimal symbol
21458                      which may come from inferior's executable using copy
21459                      relocation.  Make this workaround only for gfortran as for
21460                      other compilers GDB cannot guess the minimal symbol
21461                      Fortran mangling kind.  */
21462                   if (cu->language == language_fortran && die->parent
21463                       && die->parent->tag == DW_TAG_module
21464                       && cu->producer
21465                       && startswith (cu->producer, "GNU Fortran"))
21466                     SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21467
21468                   /* A variable with DW_AT_external is never static,
21469                      but it may be block-scoped.  */
21470                   list_to_add
21471                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21472                        ? cu->builder->get_global_symbols ()
21473                        : cu->list_in_scope);
21474                 }
21475               else
21476                 list_to_add = cu->list_in_scope;
21477             }
21478           else
21479             {
21480               /* We do not know the address of this symbol.
21481                  If it is an external symbol and we have type information
21482                  for it, enter the symbol as a LOC_UNRESOLVED symbol.
21483                  The address of the variable will then be determined from
21484                  the minimal symbol table whenever the variable is
21485                  referenced.  */
21486               attr2 = dwarf2_attr (die, DW_AT_external, cu);
21487
21488               /* Fortran explicitly imports any global symbols to the local
21489                  scope by DW_TAG_common_block.  */
21490               if (cu->language == language_fortran && die->parent
21491                   && die->parent->tag == DW_TAG_common_block)
21492                 {
21493                   /* SYMBOL_CLASS doesn't matter here because
21494                      read_common_block is going to reset it.  */
21495                   if (!suppress_add)
21496                     list_to_add = cu->list_in_scope;
21497                 }
21498               else if (attr2 && (DW_UNSND (attr2) != 0)
21499                        && dwarf2_attr (die, DW_AT_type, cu) != NULL)
21500                 {
21501                   /* A variable with DW_AT_external is never static, but it
21502                      may be block-scoped.  */
21503                   list_to_add
21504                     = (cu->list_in_scope == cu->builder->get_file_symbols ()
21505                        ? cu->builder->get_global_symbols ()
21506                        : cu->list_in_scope);
21507
21508                   SYMBOL_ACLASS_INDEX (sym) = LOC_UNRESOLVED;
21509                 }
21510               else if (!die_is_declaration (die, cu))
21511                 {
21512                   /* Use the default LOC_OPTIMIZED_OUT class.  */
21513                   gdb_assert (SYMBOL_CLASS (sym) == LOC_OPTIMIZED_OUT);
21514                   if (!suppress_add)
21515                     list_to_add = cu->list_in_scope;
21516                 }
21517             }
21518           break;
21519         case DW_TAG_formal_parameter:
21520           {
21521             /* If we are inside a function, mark this as an argument.  If
21522                not, we might be looking at an argument to an inlined function
21523                when we do not have enough information to show inlined frames;
21524                pretend it's a local variable in that case so that the user can
21525                still see it.  */
21526             struct context_stack *curr
21527               = cu->builder->get_current_context_stack ();
21528             if (curr != nullptr && curr->name != nullptr)
21529               SYMBOL_IS_ARGUMENT (sym) = 1;
21530             attr = dwarf2_attr (die, DW_AT_location, cu);
21531             if (attr)
21532               {
21533                 var_decode_location (attr, sym, cu);
21534               }
21535             attr = dwarf2_attr (die, DW_AT_const_value, cu);
21536             if (attr)
21537               {
21538                 dwarf2_const_value (attr, sym, cu);
21539               }
21540
21541             list_to_add = cu->list_in_scope;
21542           }
21543           break;
21544         case DW_TAG_unspecified_parameters:
21545           /* From varargs functions; gdb doesn't seem to have any
21546              interest in this information, so just ignore it for now.
21547              (FIXME?) */
21548           break;
21549         case DW_TAG_template_type_param:
21550           suppress_add = 1;
21551           /* Fall through.  */
21552         case DW_TAG_class_type:
21553         case DW_TAG_interface_type:
21554         case DW_TAG_structure_type:
21555         case DW_TAG_union_type:
21556         case DW_TAG_set_type:
21557         case DW_TAG_enumeration_type:
21558           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21559           SYMBOL_DOMAIN (sym) = STRUCT_DOMAIN;
21560
21561           {
21562             /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't
21563                really ever be static objects: otherwise, if you try
21564                to, say, break of a class's method and you're in a file
21565                which doesn't mention that class, it won't work unless
21566                the check for all static symbols in lookup_symbol_aux
21567                saves you.  See the OtherFileClass tests in
21568                gdb.c++/namespace.exp.  */
21569
21570             if (!suppress_add)
21571               {
21572                 list_to_add
21573                   = (cu->list_in_scope == cu->builder->get_file_symbols ()
21574                      && cu->language == language_cplus
21575                      ? cu->builder->get_global_symbols ()
21576                      : cu->list_in_scope);
21577
21578                 /* The semantics of C++ state that "struct foo {
21579                    ... }" also defines a typedef for "foo".  */
21580                 if (cu->language == language_cplus
21581                     || cu->language == language_ada
21582                     || cu->language == language_d
21583                     || cu->language == language_rust)
21584                   {
21585                     /* The symbol's name is already allocated along
21586                        with this objfile, so we don't need to
21587                        duplicate it for the type.  */
21588                     if (TYPE_NAME (SYMBOL_TYPE (sym)) == 0)
21589                       TYPE_NAME (SYMBOL_TYPE (sym)) = SYMBOL_SEARCH_NAME (sym);
21590                   }
21591               }
21592           }
21593           break;
21594         case DW_TAG_typedef:
21595           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21596           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21597           list_to_add = cu->list_in_scope;
21598           break;
21599         case DW_TAG_base_type:
21600         case DW_TAG_subrange_type:
21601           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21602           SYMBOL_DOMAIN (sym) = VAR_DOMAIN;
21603           list_to_add = cu->list_in_scope;
21604           break;
21605         case DW_TAG_enumerator:
21606           attr = dwarf2_attr (die, DW_AT_const_value, cu);
21607           if (attr)
21608             {
21609               dwarf2_const_value (attr, sym, cu);
21610             }
21611           {
21612             /* NOTE: carlton/2003-11-10: See comment above in the
21613                DW_TAG_class_type, etc. block.  */
21614
21615             list_to_add
21616               = (cu->list_in_scope == cu->builder->get_file_symbols ()
21617                  && cu->language == language_cplus
21618                  ? cu->builder->get_global_symbols ()
21619                  : cu->list_in_scope);
21620           }
21621           break;
21622         case DW_TAG_imported_declaration:
21623         case DW_TAG_namespace:
21624           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21625           list_to_add = cu->builder->get_global_symbols ();
21626           break;
21627         case DW_TAG_module:
21628           SYMBOL_ACLASS_INDEX (sym) = LOC_TYPEDEF;
21629           SYMBOL_DOMAIN (sym) = MODULE_DOMAIN;
21630           list_to_add = cu->builder->get_global_symbols ();
21631           break;
21632         case DW_TAG_common_block:
21633           SYMBOL_ACLASS_INDEX (sym) = LOC_COMMON_BLOCK;
21634           SYMBOL_DOMAIN (sym) = COMMON_BLOCK_DOMAIN;
21635           dw2_add_symbol_to_list (sym, cu->list_in_scope);
21636           break;
21637         default:
21638           /* Not a tag we recognize.  Hopefully we aren't processing
21639              trash data, but since we must specifically ignore things
21640              we don't recognize, there is nothing else we should do at
21641              this point.  */
21642           complaint (_("unsupported tag: '%s'"),
21643                      dwarf_tag_name (die->tag));
21644           break;
21645         }
21646
21647       if (suppress_add)
21648         {
21649           sym->hash_next = objfile->template_symbols;
21650           objfile->template_symbols = sym;
21651           list_to_add = NULL;
21652         }
21653
21654       if (list_to_add != NULL)
21655         dw2_add_symbol_to_list (sym, list_to_add);
21656
21657       /* For the benefit of old versions of GCC, check for anonymous
21658          namespaces based on the demangled name.  */
21659       if (!cu->processing_has_namespace_info
21660           && cu->language == language_cplus)
21661         cp_scan_for_anonymous_namespaces (cu->builder.get (), sym, objfile);
21662     }
21663   return (sym);
21664 }
21665
21666 /* Given an attr with a DW_FORM_dataN value in host byte order,
21667    zero-extend it as appropriate for the symbol's type.  The DWARF
21668    standard (v4) is not entirely clear about the meaning of using
21669    DW_FORM_dataN for a constant with a signed type, where the type is
21670    wider than the data.  The conclusion of a discussion on the DWARF
21671    list was that this is unspecified.  We choose to always zero-extend
21672    because that is the interpretation long in use by GCC.  */
21673
21674 static gdb_byte *
21675 dwarf2_const_value_data (const struct attribute *attr, struct obstack *obstack,
21676                          struct dwarf2_cu *cu, LONGEST *value, int bits)
21677 {
21678   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21679   enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
21680                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE;
21681   LONGEST l = DW_UNSND (attr);
21682
21683   if (bits < sizeof (*value) * 8)
21684     {
21685       l &= ((LONGEST) 1 << bits) - 1;
21686       *value = l;
21687     }
21688   else if (bits == sizeof (*value) * 8)
21689     *value = l;
21690   else
21691     {
21692       gdb_byte *bytes = (gdb_byte *) obstack_alloc (obstack, bits / 8);
21693       store_unsigned_integer (bytes, bits / 8, byte_order, l);
21694       return bytes;
21695     }
21696
21697   return NULL;
21698 }
21699
21700 /* Read a constant value from an attribute.  Either set *VALUE, or if
21701    the value does not fit in *VALUE, set *BYTES - either already
21702    allocated on the objfile obstack, or newly allocated on OBSTACK,
21703    or, set *BATON, if we translated the constant to a location
21704    expression.  */
21705
21706 static void
21707 dwarf2_const_value_attr (const struct attribute *attr, struct type *type,
21708                          const char *name, struct obstack *obstack,
21709                          struct dwarf2_cu *cu,
21710                          LONGEST *value, const gdb_byte **bytes,
21711                          struct dwarf2_locexpr_baton **baton)
21712 {
21713   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21714   struct comp_unit_head *cu_header = &cu->header;
21715   struct dwarf_block *blk;
21716   enum bfd_endian byte_order = (bfd_big_endian (objfile->obfd) ?
21717                                 BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
21718
21719   *value = 0;
21720   *bytes = NULL;
21721   *baton = NULL;
21722
21723   switch (attr->form)
21724     {
21725     case DW_FORM_addr:
21726     case DW_FORM_GNU_addr_index:
21727       {
21728         gdb_byte *data;
21729
21730         if (TYPE_LENGTH (type) != cu_header->addr_size)
21731           dwarf2_const_value_length_mismatch_complaint (name,
21732                                                         cu_header->addr_size,
21733                                                         TYPE_LENGTH (type));
21734         /* Symbols of this form are reasonably rare, so we just
21735            piggyback on the existing location code rather than writing
21736            a new implementation of symbol_computed_ops.  */
21737         *baton = XOBNEW (obstack, struct dwarf2_locexpr_baton);
21738         (*baton)->per_cu = cu->per_cu;
21739         gdb_assert ((*baton)->per_cu);
21740
21741         (*baton)->size = 2 + cu_header->addr_size;
21742         data = (gdb_byte *) obstack_alloc (obstack, (*baton)->size);
21743         (*baton)->data = data;
21744
21745         data[0] = DW_OP_addr;
21746         store_unsigned_integer (&data[1], cu_header->addr_size,
21747                                 byte_order, DW_ADDR (attr));
21748         data[cu_header->addr_size + 1] = DW_OP_stack_value;
21749       }
21750       break;
21751     case DW_FORM_string:
21752     case DW_FORM_strp:
21753     case DW_FORM_GNU_str_index:
21754     case DW_FORM_GNU_strp_alt:
21755       /* DW_STRING is already allocated on the objfile obstack, point
21756          directly to it.  */
21757       *bytes = (const gdb_byte *) DW_STRING (attr);
21758       break;
21759     case DW_FORM_block1:
21760     case DW_FORM_block2:
21761     case DW_FORM_block4:
21762     case DW_FORM_block:
21763     case DW_FORM_exprloc:
21764     case DW_FORM_data16:
21765       blk = DW_BLOCK (attr);
21766       if (TYPE_LENGTH (type) != blk->size)
21767         dwarf2_const_value_length_mismatch_complaint (name, blk->size,
21768                                                       TYPE_LENGTH (type));
21769       *bytes = blk->data;
21770       break;
21771
21772       /* The DW_AT_const_value attributes are supposed to carry the
21773          symbol's value "represented as it would be on the target
21774          architecture."  By the time we get here, it's already been
21775          converted to host endianness, so we just need to sign- or
21776          zero-extend it as appropriate.  */
21777     case DW_FORM_data1:
21778       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 8);
21779       break;
21780     case DW_FORM_data2:
21781       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 16);
21782       break;
21783     case DW_FORM_data4:
21784       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 32);
21785       break;
21786     case DW_FORM_data8:
21787       *bytes = dwarf2_const_value_data (attr, obstack, cu, value, 64);
21788       break;
21789
21790     case DW_FORM_sdata:
21791     case DW_FORM_implicit_const:
21792       *value = DW_SND (attr);
21793       break;
21794
21795     case DW_FORM_udata:
21796       *value = DW_UNSND (attr);
21797       break;
21798
21799     default:
21800       complaint (_("unsupported const value attribute form: '%s'"),
21801                  dwarf_form_name (attr->form));
21802       *value = 0;
21803       break;
21804     }
21805 }
21806
21807
21808 /* Copy constant value from an attribute to a symbol.  */
21809
21810 static void
21811 dwarf2_const_value (const struct attribute *attr, struct symbol *sym,
21812                     struct dwarf2_cu *cu)
21813 {
21814   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21815   LONGEST value;
21816   const gdb_byte *bytes;
21817   struct dwarf2_locexpr_baton *baton;
21818
21819   dwarf2_const_value_attr (attr, SYMBOL_TYPE (sym),
21820                            SYMBOL_PRINT_NAME (sym),
21821                            &objfile->objfile_obstack, cu,
21822                            &value, &bytes, &baton);
21823
21824   if (baton != NULL)
21825     {
21826       SYMBOL_LOCATION_BATON (sym) = baton;
21827       SYMBOL_ACLASS_INDEX (sym) = dwarf2_locexpr_index;
21828     }
21829   else if (bytes != NULL)
21830      {
21831       SYMBOL_VALUE_BYTES (sym) = bytes;
21832       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST_BYTES;
21833     }
21834   else
21835     {
21836       SYMBOL_VALUE (sym) = value;
21837       SYMBOL_ACLASS_INDEX (sym) = LOC_CONST;
21838     }
21839 }
21840
21841 /* Return the type of the die in question using its DW_AT_type attribute.  */
21842
21843 static struct type *
21844 die_type (struct die_info *die, struct dwarf2_cu *cu)
21845 {
21846   struct attribute *type_attr;
21847
21848   type_attr = dwarf2_attr (die, DW_AT_type, cu);
21849   if (!type_attr)
21850     {
21851       struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21852       /* A missing DW_AT_type represents a void type.  */
21853       return objfile_type (objfile)->builtin_void;
21854     }
21855
21856   return lookup_die_type (die, type_attr, cu);
21857 }
21858
21859 /* True iff CU's producer generates GNAT Ada auxiliary information
21860    that allows to find parallel types through that information instead
21861    of having to do expensive parallel lookups by type name.  */
21862
21863 static int
21864 need_gnat_info (struct dwarf2_cu *cu)
21865 {
21866   /* Assume that the Ada compiler was GNAT, which always produces
21867      the auxiliary information.  */
21868   return (cu->language == language_ada);
21869 }
21870
21871 /* Return the auxiliary type of the die in question using its
21872    DW_AT_GNAT_descriptive_type attribute.  Returns NULL if the
21873    attribute is not present.  */
21874
21875 static struct type *
21876 die_descriptive_type (struct die_info *die, struct dwarf2_cu *cu)
21877 {
21878   struct attribute *type_attr;
21879
21880   type_attr = dwarf2_attr (die, DW_AT_GNAT_descriptive_type, cu);
21881   if (!type_attr)
21882     return NULL;
21883
21884   return lookup_die_type (die, type_attr, cu);
21885 }
21886
21887 /* If DIE has a descriptive_type attribute, then set the TYPE's
21888    descriptive type accordingly.  */
21889
21890 static void
21891 set_descriptive_type (struct type *type, struct die_info *die,
21892                       struct dwarf2_cu *cu)
21893 {
21894   struct type *descriptive_type = die_descriptive_type (die, cu);
21895
21896   if (descriptive_type)
21897     {
21898       ALLOCATE_GNAT_AUX_TYPE (type);
21899       TYPE_DESCRIPTIVE_TYPE (type) = descriptive_type;
21900     }
21901 }
21902
21903 /* Return the containing type of the die in question using its
21904    DW_AT_containing_type attribute.  */
21905
21906 static struct type *
21907 die_containing_type (struct die_info *die, struct dwarf2_cu *cu)
21908 {
21909   struct attribute *type_attr;
21910   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
21911
21912   type_attr = dwarf2_attr (die, DW_AT_containing_type, cu);
21913   if (!type_attr)
21914     error (_("Dwarf Error: Problem turning containing type into gdb type "
21915              "[in module %s]"), objfile_name (objfile));
21916
21917   return lookup_die_type (die, type_attr, cu);
21918 }
21919
21920 /* Return an error marker type to use for the ill formed type in DIE/CU.  */
21921
21922 static struct type *
21923 build_error_marker_type (struct dwarf2_cu *cu, struct die_info *die)
21924 {
21925   struct dwarf2_per_objfile *dwarf2_per_objfile
21926     = cu->per_cu->dwarf2_per_objfile;
21927   struct objfile *objfile = dwarf2_per_objfile->objfile;
21928   char *saved;
21929
21930   std::string message
21931     = string_printf (_("<unknown type in %s, CU %s, DIE %s>"),
21932                      objfile_name (objfile),
21933                      sect_offset_str (cu->header.sect_off),
21934                      sect_offset_str (die->sect_off));
21935   saved = (char *) obstack_copy0 (&objfile->objfile_obstack,
21936                                   message.c_str (), message.length ());
21937
21938   return init_type (objfile, TYPE_CODE_ERROR, 0, saved);
21939 }
21940
21941 /* Look up the type of DIE in CU using its type attribute ATTR.
21942    ATTR must be one of: DW_AT_type, DW_AT_GNAT_descriptive_type,
21943    DW_AT_containing_type.
21944    If there is no type substitute an error marker.  */
21945
21946 static struct type *
21947 lookup_die_type (struct die_info *die, const struct attribute *attr,
21948                  struct dwarf2_cu *cu)
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   struct type *this_type;
21954
21955   gdb_assert (attr->name == DW_AT_type
21956               || attr->name == DW_AT_GNAT_descriptive_type
21957               || attr->name == DW_AT_containing_type);
21958
21959   /* First see if we have it cached.  */
21960
21961   if (attr->form == DW_FORM_GNU_ref_alt)
21962     {
21963       struct dwarf2_per_cu_data *per_cu;
21964       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21965
21966       per_cu = dwarf2_find_containing_comp_unit (sect_off, 1,
21967                                                  dwarf2_per_objfile);
21968       this_type = get_die_type_at_offset (sect_off, per_cu);
21969     }
21970   else if (attr_form_is_ref (attr))
21971     {
21972       sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
21973
21974       this_type = get_die_type_at_offset (sect_off, cu->per_cu);
21975     }
21976   else if (attr->form == DW_FORM_ref_sig8)
21977     {
21978       ULONGEST signature = DW_SIGNATURE (attr);
21979
21980       return get_signatured_type (die, signature, cu);
21981     }
21982   else
21983     {
21984       complaint (_("Dwarf Error: Bad type attribute %s in DIE"
21985                    " at %s [in module %s]"),
21986                  dwarf_attr_name (attr->name), sect_offset_str (die->sect_off),
21987                  objfile_name (objfile));
21988       return build_error_marker_type (cu, die);
21989     }
21990
21991   /* If not cached we need to read it in.  */
21992
21993   if (this_type == NULL)
21994     {
21995       struct die_info *type_die = NULL;
21996       struct dwarf2_cu *type_cu = cu;
21997
21998       if (attr_form_is_ref (attr))
21999         type_die = follow_die_ref (die, attr, &type_cu);
22000       if (type_die == NULL)
22001         return build_error_marker_type (cu, die);
22002       /* If we find the type now, it's probably because the type came
22003          from an inter-CU reference and the type's CU got expanded before
22004          ours.  */
22005       this_type = read_type_die (type_die, type_cu);
22006     }
22007
22008   /* If we still don't have a type use an error marker.  */
22009
22010   if (this_type == NULL)
22011     return build_error_marker_type (cu, die);
22012
22013   return this_type;
22014 }
22015
22016 /* Return the type in DIE, CU.
22017    Returns NULL for invalid types.
22018
22019    This first does a lookup in die_type_hash,
22020    and only reads the die in if necessary.
22021
22022    NOTE: This can be called when reading in partial or full symbols.  */
22023
22024 static struct type *
22025 read_type_die (struct die_info *die, struct dwarf2_cu *cu)
22026 {
22027   struct type *this_type;
22028
22029   this_type = get_die_type (die, cu);
22030   if (this_type)
22031     return this_type;
22032
22033   return read_type_die_1 (die, cu);
22034 }
22035
22036 /* Read the type in DIE, CU.
22037    Returns NULL for invalid types.  */
22038
22039 static struct type *
22040 read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
22041 {
22042   struct type *this_type = NULL;
22043
22044   switch (die->tag)
22045     {
22046     case DW_TAG_class_type:
22047     case DW_TAG_interface_type:
22048     case DW_TAG_structure_type:
22049     case DW_TAG_union_type:
22050       this_type = read_structure_type (die, cu);
22051       break;
22052     case DW_TAG_enumeration_type:
22053       this_type = read_enumeration_type (die, cu);
22054       break;
22055     case DW_TAG_subprogram:
22056     case DW_TAG_subroutine_type:
22057     case DW_TAG_inlined_subroutine:
22058       this_type = read_subroutine_type (die, cu);
22059       break;
22060     case DW_TAG_array_type:
22061       this_type = read_array_type (die, cu);
22062       break;
22063     case DW_TAG_set_type:
22064       this_type = read_set_type (die, cu);
22065       break;
22066     case DW_TAG_pointer_type:
22067       this_type = read_tag_pointer_type (die, cu);
22068       break;
22069     case DW_TAG_ptr_to_member_type:
22070       this_type = read_tag_ptr_to_member_type (die, cu);
22071       break;
22072     case DW_TAG_reference_type:
22073       this_type = read_tag_reference_type (die, cu, TYPE_CODE_REF);
22074       break;
22075     case DW_TAG_rvalue_reference_type:
22076       this_type = read_tag_reference_type (die, cu, TYPE_CODE_RVALUE_REF);
22077       break;
22078     case DW_TAG_const_type:
22079       this_type = read_tag_const_type (die, cu);
22080       break;
22081     case DW_TAG_volatile_type:
22082       this_type = read_tag_volatile_type (die, cu);
22083       break;
22084     case DW_TAG_restrict_type:
22085       this_type = read_tag_restrict_type (die, cu);
22086       break;
22087     case DW_TAG_string_type:
22088       this_type = read_tag_string_type (die, cu);
22089       break;
22090     case DW_TAG_typedef:
22091       this_type = read_typedef (die, cu);
22092       break;
22093     case DW_TAG_subrange_type:
22094       this_type = read_subrange_type (die, cu);
22095       break;
22096     case DW_TAG_base_type:
22097       this_type = read_base_type (die, cu);
22098       break;
22099     case DW_TAG_unspecified_type:
22100       this_type = read_unspecified_type (die, cu);
22101       break;
22102     case DW_TAG_namespace:
22103       this_type = read_namespace_type (die, cu);
22104       break;
22105     case DW_TAG_module:
22106       this_type = read_module_type (die, cu);
22107       break;
22108     case DW_TAG_atomic_type:
22109       this_type = read_tag_atomic_type (die, cu);
22110       break;
22111     default:
22112       complaint (_("unexpected tag in read_type_die: '%s'"),
22113                  dwarf_tag_name (die->tag));
22114       break;
22115     }
22116
22117   return this_type;
22118 }
22119
22120 /* See if we can figure out if the class lives in a namespace.  We do
22121    this by looking for a member function; its demangled name will
22122    contain namespace info, if there is any.
22123    Return the computed name or NULL.
22124    Space for the result is allocated on the objfile's obstack.
22125    This is the full-die version of guess_partial_die_structure_name.
22126    In this case we know DIE has no useful parent.  */
22127
22128 static char *
22129 guess_full_die_structure_name (struct die_info *die, struct dwarf2_cu *cu)
22130 {
22131   struct die_info *spec_die;
22132   struct dwarf2_cu *spec_cu;
22133   struct die_info *child;
22134   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22135
22136   spec_cu = cu;
22137   spec_die = die_specification (die, &spec_cu);
22138   if (spec_die != NULL)
22139     {
22140       die = spec_die;
22141       cu = spec_cu;
22142     }
22143
22144   for (child = die->child;
22145        child != NULL;
22146        child = child->sibling)
22147     {
22148       if (child->tag == DW_TAG_subprogram)
22149         {
22150           const char *linkage_name = dw2_linkage_name (child, cu);
22151
22152           if (linkage_name != NULL)
22153             {
22154               char *actual_name
22155                 = language_class_name_from_physname (cu->language_defn,
22156                                                      linkage_name);
22157               char *name = NULL;
22158
22159               if (actual_name != NULL)
22160                 {
22161                   const char *die_name = dwarf2_name (die, cu);
22162
22163                   if (die_name != NULL
22164                       && strcmp (die_name, actual_name) != 0)
22165                     {
22166                       /* Strip off the class name from the full name.
22167                          We want the prefix.  */
22168                       int die_name_len = strlen (die_name);
22169                       int actual_name_len = strlen (actual_name);
22170
22171                       /* Test for '::' as a sanity check.  */
22172                       if (actual_name_len > die_name_len + 2
22173                           && actual_name[actual_name_len
22174                                          - die_name_len - 1] == ':')
22175                         name = (char *) obstack_copy0 (
22176                           &objfile->per_bfd->storage_obstack,
22177                           actual_name, actual_name_len - die_name_len - 2);
22178                     }
22179                 }
22180               xfree (actual_name);
22181               return name;
22182             }
22183         }
22184     }
22185
22186   return NULL;
22187 }
22188
22189 /* GCC might emit a nameless typedef that has a linkage name.  Determine the
22190    prefix part in such case.  See
22191    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22192
22193 static const char *
22194 anonymous_struct_prefix (struct die_info *die, struct dwarf2_cu *cu)
22195 {
22196   struct attribute *attr;
22197   const char *base;
22198
22199   if (die->tag != DW_TAG_class_type && die->tag != DW_TAG_interface_type
22200       && die->tag != DW_TAG_structure_type && die->tag != DW_TAG_union_type)
22201     return NULL;
22202
22203   if (dwarf2_string_attr (die, DW_AT_name, cu) != NULL)
22204     return NULL;
22205
22206   attr = dw2_linkage_name_attr (die, cu);
22207   if (attr == NULL || DW_STRING (attr) == NULL)
22208     return NULL;
22209
22210   /* dwarf2_name had to be already called.  */
22211   gdb_assert (DW_STRING_IS_CANONICAL (attr));
22212
22213   /* Strip the base name, keep any leading namespaces/classes.  */
22214   base = strrchr (DW_STRING (attr), ':');
22215   if (base == NULL || base == DW_STRING (attr) || base[-1] != ':')
22216     return "";
22217
22218   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22219   return (char *) obstack_copy0 (&objfile->per_bfd->storage_obstack,
22220                                  DW_STRING (attr),
22221                                  &base[-1] - DW_STRING (attr));
22222 }
22223
22224 /* Return the name of the namespace/class that DIE is defined within,
22225    or "" if we can't tell.  The caller should not xfree the result.
22226
22227    For example, if we're within the method foo() in the following
22228    code:
22229
22230    namespace N {
22231      class C {
22232        void foo () {
22233        }
22234      };
22235    }
22236
22237    then determine_prefix on foo's die will return "N::C".  */
22238
22239 static const char *
22240 determine_prefix (struct die_info *die, struct dwarf2_cu *cu)
22241 {
22242   struct dwarf2_per_objfile *dwarf2_per_objfile
22243     = cu->per_cu->dwarf2_per_objfile;
22244   struct die_info *parent, *spec_die;
22245   struct dwarf2_cu *spec_cu;
22246   struct type *parent_type;
22247   const char *retval;
22248
22249   if (cu->language != language_cplus
22250       && cu->language != language_fortran && cu->language != language_d
22251       && cu->language != language_rust)
22252     return "";
22253
22254   retval = anonymous_struct_prefix (die, cu);
22255   if (retval)
22256     return retval;
22257
22258   /* We have to be careful in the presence of DW_AT_specification.
22259      For example, with GCC 3.4, given the code
22260
22261      namespace N {
22262        void foo() {
22263          // Definition of N::foo.
22264        }
22265      }
22266
22267      then we'll have a tree of DIEs like this:
22268
22269      1: DW_TAG_compile_unit
22270        2: DW_TAG_namespace        // N
22271          3: DW_TAG_subprogram     // declaration of N::foo
22272        4: DW_TAG_subprogram       // definition of N::foo
22273             DW_AT_specification   // refers to die #3
22274
22275      Thus, when processing die #4, we have to pretend that we're in
22276      the context of its DW_AT_specification, namely the contex of die
22277      #3.  */
22278   spec_cu = cu;
22279   spec_die = die_specification (die, &spec_cu);
22280   if (spec_die == NULL)
22281     parent = die->parent;
22282   else
22283     {
22284       parent = spec_die->parent;
22285       cu = spec_cu;
22286     }
22287
22288   if (parent == NULL)
22289     return "";
22290   else if (parent->building_fullname)
22291     {
22292       const char *name;
22293       const char *parent_name;
22294
22295       /* It has been seen on RealView 2.2 built binaries,
22296          DW_TAG_template_type_param types actually _defined_ as
22297          children of the parent class:
22298
22299          enum E {};
22300          template class <class Enum> Class{};
22301          Class<enum E> class_e;
22302
22303          1: DW_TAG_class_type (Class)
22304            2: DW_TAG_enumeration_type (E)
22305              3: DW_TAG_enumerator (enum1:0)
22306              3: DW_TAG_enumerator (enum2:1)
22307              ...
22308            2: DW_TAG_template_type_param
22309               DW_AT_type  DW_FORM_ref_udata (E)
22310
22311          Besides being broken debug info, it can put GDB into an
22312          infinite loop.  Consider:
22313
22314          When we're building the full name for Class<E>, we'll start
22315          at Class, and go look over its template type parameters,
22316          finding E.  We'll then try to build the full name of E, and
22317          reach here.  We're now trying to build the full name of E,
22318          and look over the parent DIE for containing scope.  In the
22319          broken case, if we followed the parent DIE of E, we'd again
22320          find Class, and once again go look at its template type
22321          arguments, etc., etc.  Simply don't consider such parent die
22322          as source-level parent of this die (it can't be, the language
22323          doesn't allow it), and break the loop here.  */
22324       name = dwarf2_name (die, cu);
22325       parent_name = dwarf2_name (parent, cu);
22326       complaint (_("template param type '%s' defined within parent '%s'"),
22327                  name ? name : "<unknown>",
22328                  parent_name ? parent_name : "<unknown>");
22329       return "";
22330     }
22331   else
22332     switch (parent->tag)
22333       {
22334       case DW_TAG_namespace:
22335         parent_type = read_type_die (parent, cu);
22336         /* GCC 4.0 and 4.1 had a bug (PR c++/28460) where they generated bogus
22337            DW_TAG_namespace DIEs with a name of "::" for the global namespace.
22338            Work around this problem here.  */
22339         if (cu->language == language_cplus
22340             && strcmp (TYPE_NAME (parent_type), "::") == 0)
22341           return "";
22342         /* We give a name to even anonymous namespaces.  */
22343         return TYPE_NAME (parent_type);
22344       case DW_TAG_class_type:
22345       case DW_TAG_interface_type:
22346       case DW_TAG_structure_type:
22347       case DW_TAG_union_type:
22348       case DW_TAG_module:
22349         parent_type = read_type_die (parent, cu);
22350         if (TYPE_NAME (parent_type) != NULL)
22351           return TYPE_NAME (parent_type);
22352         else
22353           /* An anonymous structure is only allowed non-static data
22354              members; no typedefs, no member functions, et cetera.
22355              So it does not need a prefix.  */
22356           return "";
22357       case DW_TAG_compile_unit:
22358       case DW_TAG_partial_unit:
22359         /* gcc-4.5 -gdwarf-4 can drop the enclosing namespace.  Cope.  */
22360         if (cu->language == language_cplus
22361             && !VEC_empty (dwarf2_section_info_def, dwarf2_per_objfile->types)
22362             && die->child != NULL
22363             && (die->tag == DW_TAG_class_type
22364                 || die->tag == DW_TAG_structure_type
22365                 || die->tag == DW_TAG_union_type))
22366           {
22367             char *name = guess_full_die_structure_name (die, cu);
22368             if (name != NULL)
22369               return name;
22370           }
22371         return "";
22372       case DW_TAG_enumeration_type:
22373         parent_type = read_type_die (parent, cu);
22374         if (TYPE_DECLARED_CLASS (parent_type))
22375           {
22376             if (TYPE_NAME (parent_type) != NULL)
22377               return TYPE_NAME (parent_type);
22378             return "";
22379           }
22380         /* Fall through.  */
22381       default:
22382         return determine_prefix (parent, cu);
22383       }
22384 }
22385
22386 /* Return a newly-allocated string formed by concatenating PREFIX and SUFFIX
22387    with appropriate separator.  If PREFIX or SUFFIX is NULL or empty, then
22388    simply copy the SUFFIX or PREFIX, respectively.  If OBS is non-null, perform
22389    an obconcat, otherwise allocate storage for the result.  The CU argument is
22390    used to determine the language and hence, the appropriate separator.  */
22391
22392 #define MAX_SEP_LEN 7  /* strlen ("__") + strlen ("_MOD_")  */
22393
22394 static char *
22395 typename_concat (struct obstack *obs, const char *prefix, const char *suffix,
22396                  int physname, struct dwarf2_cu *cu)
22397 {
22398   const char *lead = "";
22399   const char *sep;
22400
22401   if (suffix == NULL || suffix[0] == '\0'
22402       || prefix == NULL || prefix[0] == '\0')
22403     sep = "";
22404   else if (cu->language == language_d)
22405     {
22406       /* For D, the 'main' function could be defined in any module, but it
22407          should never be prefixed.  */
22408       if (strcmp (suffix, "D main") == 0)
22409         {
22410           prefix = "";
22411           sep = "";
22412         }
22413       else
22414         sep = ".";
22415     }
22416   else if (cu->language == language_fortran && physname)
22417     {
22418       /* This is gfortran specific mangling.  Normally DW_AT_linkage_name or
22419          DW_AT_MIPS_linkage_name is preferred and used instead.  */
22420
22421       lead = "__";
22422       sep = "_MOD_";
22423     }
22424   else
22425     sep = "::";
22426
22427   if (prefix == NULL)
22428     prefix = "";
22429   if (suffix == NULL)
22430     suffix = "";
22431
22432   if (obs == NULL)
22433     {
22434       char *retval
22435         = ((char *)
22436            xmalloc (strlen (prefix) + MAX_SEP_LEN + strlen (suffix) + 1));
22437
22438       strcpy (retval, lead);
22439       strcat (retval, prefix);
22440       strcat (retval, sep);
22441       strcat (retval, suffix);
22442       return retval;
22443     }
22444   else
22445     {
22446       /* We have an obstack.  */
22447       return obconcat (obs, lead, prefix, sep, suffix, (char *) NULL);
22448     }
22449 }
22450
22451 /* Return sibling of die, NULL if no sibling.  */
22452
22453 static struct die_info *
22454 sibling_die (struct die_info *die)
22455 {
22456   return die->sibling;
22457 }
22458
22459 /* Get name of a die, return NULL if not found.  */
22460
22461 static const char *
22462 dwarf2_canonicalize_name (const char *name, struct dwarf2_cu *cu,
22463                           struct obstack *obstack)
22464 {
22465   if (name && cu->language == language_cplus)
22466     {
22467       std::string canon_name = cp_canonicalize_string (name);
22468
22469       if (!canon_name.empty ())
22470         {
22471           if (canon_name != name)
22472             name = (const char *) obstack_copy0 (obstack,
22473                                                  canon_name.c_str (),
22474                                                  canon_name.length ());
22475         }
22476     }
22477
22478   return name;
22479 }
22480
22481 /* Get name of a die, return NULL if not found.
22482    Anonymous namespaces are converted to their magic string.  */
22483
22484 static const char *
22485 dwarf2_name (struct die_info *die, struct dwarf2_cu *cu)
22486 {
22487   struct attribute *attr;
22488   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
22489
22490   attr = dwarf2_attr (die, DW_AT_name, cu);
22491   if ((!attr || !DW_STRING (attr))
22492       && die->tag != DW_TAG_namespace
22493       && die->tag != DW_TAG_class_type
22494       && die->tag != DW_TAG_interface_type
22495       && die->tag != DW_TAG_structure_type
22496       && die->tag != DW_TAG_union_type)
22497     return NULL;
22498
22499   switch (die->tag)
22500     {
22501     case DW_TAG_compile_unit:
22502     case DW_TAG_partial_unit:
22503       /* Compilation units have a DW_AT_name that is a filename, not
22504          a source language identifier.  */
22505     case DW_TAG_enumeration_type:
22506     case DW_TAG_enumerator:
22507       /* These tags always have simple identifiers already; no need
22508          to canonicalize them.  */
22509       return DW_STRING (attr);
22510
22511     case DW_TAG_namespace:
22512       if (attr != NULL && DW_STRING (attr) != NULL)
22513         return DW_STRING (attr);
22514       return CP_ANONYMOUS_NAMESPACE_STR;
22515
22516     case DW_TAG_class_type:
22517     case DW_TAG_interface_type:
22518     case DW_TAG_structure_type:
22519     case DW_TAG_union_type:
22520       /* Some GCC versions emit spurious DW_AT_name attributes for unnamed
22521          structures or unions.  These were of the form "._%d" in GCC 4.1,
22522          or simply "<anonymous struct>" or "<anonymous union>" in GCC 4.3
22523          and GCC 4.4.  We work around this problem by ignoring these.  */
22524       if (attr && DW_STRING (attr)
22525           && (startswith (DW_STRING (attr), "._")
22526               || startswith (DW_STRING (attr), "<anonymous")))
22527         return NULL;
22528
22529       /* GCC might emit a nameless typedef that has a linkage name.  See
22530          http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47510.  */
22531       if (!attr || DW_STRING (attr) == NULL)
22532         {
22533           char *demangled = NULL;
22534
22535           attr = dw2_linkage_name_attr (die, cu);
22536           if (attr == NULL || DW_STRING (attr) == NULL)
22537             return NULL;
22538
22539           /* Avoid demangling DW_STRING (attr) the second time on a second
22540              call for the same DIE.  */
22541           if (!DW_STRING_IS_CANONICAL (attr))
22542             demangled = gdb_demangle (DW_STRING (attr), DMGL_TYPES);
22543
22544           if (demangled)
22545             {
22546               const char *base;
22547
22548               /* FIXME: we already did this for the partial symbol... */
22549               DW_STRING (attr)
22550                 = ((const char *)
22551                    obstack_copy0 (&objfile->per_bfd->storage_obstack,
22552                                   demangled, strlen (demangled)));
22553               DW_STRING_IS_CANONICAL (attr) = 1;
22554               xfree (demangled);
22555
22556               /* Strip any leading namespaces/classes, keep only the base name.
22557                  DW_AT_name for named DIEs does not contain the prefixes.  */
22558               base = strrchr (DW_STRING (attr), ':');
22559               if (base && base > DW_STRING (attr) && base[-1] == ':')
22560                 return &base[1];
22561               else
22562                 return DW_STRING (attr);
22563             }
22564         }
22565       break;
22566
22567     default:
22568       break;
22569     }
22570
22571   if (!DW_STRING_IS_CANONICAL (attr))
22572     {
22573       DW_STRING (attr)
22574         = dwarf2_canonicalize_name (DW_STRING (attr), cu,
22575                                     &objfile->per_bfd->storage_obstack);
22576       DW_STRING_IS_CANONICAL (attr) = 1;
22577     }
22578   return DW_STRING (attr);
22579 }
22580
22581 /* Return the die that this die in an extension of, or NULL if there
22582    is none.  *EXT_CU is the CU containing DIE on input, and the CU
22583    containing the return value on output.  */
22584
22585 static struct die_info *
22586 dwarf2_extension (struct die_info *die, struct dwarf2_cu **ext_cu)
22587 {
22588   struct attribute *attr;
22589
22590   attr = dwarf2_attr (die, DW_AT_extension, *ext_cu);
22591   if (attr == NULL)
22592     return NULL;
22593
22594   return follow_die_ref (die, attr, ext_cu);
22595 }
22596
22597 /* Convert a DIE tag into its string name.  */
22598
22599 static const char *
22600 dwarf_tag_name (unsigned tag)
22601 {
22602   const char *name = get_DW_TAG_name (tag);
22603
22604   if (name == NULL)
22605     return "DW_TAG_<unknown>";
22606
22607   return name;
22608 }
22609
22610 /* Convert a DWARF attribute code into its string name.  */
22611
22612 static const char *
22613 dwarf_attr_name (unsigned attr)
22614 {
22615   const char *name;
22616
22617 #ifdef MIPS /* collides with DW_AT_HP_block_index */
22618   if (attr == DW_AT_MIPS_fde)
22619     return "DW_AT_MIPS_fde";
22620 #else
22621   if (attr == DW_AT_HP_block_index)
22622     return "DW_AT_HP_block_index";
22623 #endif
22624
22625   name = get_DW_AT_name (attr);
22626
22627   if (name == NULL)
22628     return "DW_AT_<unknown>";
22629
22630   return name;
22631 }
22632
22633 /* Convert a DWARF value form code into its string name.  */
22634
22635 static const char *
22636 dwarf_form_name (unsigned form)
22637 {
22638   const char *name = get_DW_FORM_name (form);
22639
22640   if (name == NULL)
22641     return "DW_FORM_<unknown>";
22642
22643   return name;
22644 }
22645
22646 static const char *
22647 dwarf_bool_name (unsigned mybool)
22648 {
22649   if (mybool)
22650     return "TRUE";
22651   else
22652     return "FALSE";
22653 }
22654
22655 /* Convert a DWARF type code into its string name.  */
22656
22657 static const char *
22658 dwarf_type_encoding_name (unsigned enc)
22659 {
22660   const char *name = get_DW_ATE_name (enc);
22661
22662   if (name == NULL)
22663     return "DW_ATE_<unknown>";
22664
22665   return name;
22666 }
22667
22668 static void
22669 dump_die_shallow (struct ui_file *f, int indent, struct die_info *die)
22670 {
22671   unsigned int i;
22672
22673   print_spaces (indent, f);
22674   fprintf_unfiltered (f, "Die: %s (abbrev %d, offset %s)\n",
22675                       dwarf_tag_name (die->tag), die->abbrev,
22676                       sect_offset_str (die->sect_off));
22677
22678   if (die->parent != NULL)
22679     {
22680       print_spaces (indent, f);
22681       fprintf_unfiltered (f, "  parent at offset: %s\n",
22682                           sect_offset_str (die->parent->sect_off));
22683     }
22684
22685   print_spaces (indent, f);
22686   fprintf_unfiltered (f, "  has children: %s\n",
22687            dwarf_bool_name (die->child != NULL));
22688
22689   print_spaces (indent, f);
22690   fprintf_unfiltered (f, "  attributes:\n");
22691
22692   for (i = 0; i < die->num_attrs; ++i)
22693     {
22694       print_spaces (indent, f);
22695       fprintf_unfiltered (f, "    %s (%s) ",
22696                dwarf_attr_name (die->attrs[i].name),
22697                dwarf_form_name (die->attrs[i].form));
22698
22699       switch (die->attrs[i].form)
22700         {
22701         case DW_FORM_addr:
22702         case DW_FORM_GNU_addr_index:
22703           fprintf_unfiltered (f, "address: ");
22704           fputs_filtered (hex_string (DW_ADDR (&die->attrs[i])), f);
22705           break;
22706         case DW_FORM_block2:
22707         case DW_FORM_block4:
22708         case DW_FORM_block:
22709         case DW_FORM_block1:
22710           fprintf_unfiltered (f, "block: size %s",
22711                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22712           break;
22713         case DW_FORM_exprloc:
22714           fprintf_unfiltered (f, "expression: size %s",
22715                               pulongest (DW_BLOCK (&die->attrs[i])->size));
22716           break;
22717         case DW_FORM_data16:
22718           fprintf_unfiltered (f, "constant of 16 bytes");
22719           break;
22720         case DW_FORM_ref_addr:
22721           fprintf_unfiltered (f, "ref address: ");
22722           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22723           break;
22724         case DW_FORM_GNU_ref_alt:
22725           fprintf_unfiltered (f, "alt ref address: ");
22726           fputs_filtered (hex_string (DW_UNSND (&die->attrs[i])), f);
22727           break;
22728         case DW_FORM_ref1:
22729         case DW_FORM_ref2:
22730         case DW_FORM_ref4:
22731         case DW_FORM_ref8:
22732         case DW_FORM_ref_udata:
22733           fprintf_unfiltered (f, "constant ref: 0x%lx (adjusted)",
22734                               (long) (DW_UNSND (&die->attrs[i])));
22735           break;
22736         case DW_FORM_data1:
22737         case DW_FORM_data2:
22738         case DW_FORM_data4:
22739         case DW_FORM_data8:
22740         case DW_FORM_udata:
22741         case DW_FORM_sdata:
22742           fprintf_unfiltered (f, "constant: %s",
22743                               pulongest (DW_UNSND (&die->attrs[i])));
22744           break;
22745         case DW_FORM_sec_offset:
22746           fprintf_unfiltered (f, "section offset: %s",
22747                               pulongest (DW_UNSND (&die->attrs[i])));
22748           break;
22749         case DW_FORM_ref_sig8:
22750           fprintf_unfiltered (f, "signature: %s",
22751                               hex_string (DW_SIGNATURE (&die->attrs[i])));
22752           break;
22753         case DW_FORM_string:
22754         case DW_FORM_strp:
22755         case DW_FORM_line_strp:
22756         case DW_FORM_GNU_str_index:
22757         case DW_FORM_GNU_strp_alt:
22758           fprintf_unfiltered (f, "string: \"%s\" (%s canonicalized)",
22759                    DW_STRING (&die->attrs[i])
22760                    ? DW_STRING (&die->attrs[i]) : "",
22761                    DW_STRING_IS_CANONICAL (&die->attrs[i]) ? "is" : "not");
22762           break;
22763         case DW_FORM_flag:
22764           if (DW_UNSND (&die->attrs[i]))
22765             fprintf_unfiltered (f, "flag: TRUE");
22766           else
22767             fprintf_unfiltered (f, "flag: FALSE");
22768           break;
22769         case DW_FORM_flag_present:
22770           fprintf_unfiltered (f, "flag: TRUE");
22771           break;
22772         case DW_FORM_indirect:
22773           /* The reader will have reduced the indirect form to
22774              the "base form" so this form should not occur.  */
22775           fprintf_unfiltered (f, 
22776                               "unexpected attribute form: DW_FORM_indirect");
22777           break;
22778         case DW_FORM_implicit_const:
22779           fprintf_unfiltered (f, "constant: %s",
22780                               plongest (DW_SND (&die->attrs[i])));
22781           break;
22782         default:
22783           fprintf_unfiltered (f, "unsupported attribute form: %d.",
22784                    die->attrs[i].form);
22785           break;
22786         }
22787       fprintf_unfiltered (f, "\n");
22788     }
22789 }
22790
22791 static void
22792 dump_die_for_error (struct die_info *die)
22793 {
22794   dump_die_shallow (gdb_stderr, 0, die);
22795 }
22796
22797 static void
22798 dump_die_1 (struct ui_file *f, int level, int max_level, struct die_info *die)
22799 {
22800   int indent = level * 4;
22801
22802   gdb_assert (die != NULL);
22803
22804   if (level >= max_level)
22805     return;
22806
22807   dump_die_shallow (f, indent, die);
22808
22809   if (die->child != NULL)
22810     {
22811       print_spaces (indent, f);
22812       fprintf_unfiltered (f, "  Children:");
22813       if (level + 1 < max_level)
22814         {
22815           fprintf_unfiltered (f, "\n");
22816           dump_die_1 (f, level + 1, max_level, die->child);
22817         }
22818       else
22819         {
22820           fprintf_unfiltered (f,
22821                               " [not printed, max nesting level reached]\n");
22822         }
22823     }
22824
22825   if (die->sibling != NULL && level > 0)
22826     {
22827       dump_die_1 (f, level, max_level, die->sibling);
22828     }
22829 }
22830
22831 /* This is called from the pdie macro in gdbinit.in.
22832    It's not static so gcc will keep a copy callable from gdb.  */
22833
22834 void
22835 dump_die (struct die_info *die, int max_level)
22836 {
22837   dump_die_1 (gdb_stdlog, 0, max_level, die);
22838 }
22839
22840 static void
22841 store_in_ref_table (struct die_info *die, struct dwarf2_cu *cu)
22842 {
22843   void **slot;
22844
22845   slot = htab_find_slot_with_hash (cu->die_hash, die,
22846                                    to_underlying (die->sect_off),
22847                                    INSERT);
22848
22849   *slot = die;
22850 }
22851
22852 /* Return DIE offset of ATTR.  Return 0 with complaint if ATTR is not of the
22853    required kind.  */
22854
22855 static sect_offset
22856 dwarf2_get_ref_die_offset (const struct attribute *attr)
22857 {
22858   if (attr_form_is_ref (attr))
22859     return (sect_offset) DW_UNSND (attr);
22860
22861   complaint (_("unsupported die ref attribute form: '%s'"),
22862              dwarf_form_name (attr->form));
22863   return {};
22864 }
22865
22866 /* Return the constant value held by ATTR.  Return DEFAULT_VALUE if
22867  * the value held by the attribute is not constant.  */
22868
22869 static LONGEST
22870 dwarf2_get_attr_constant_value (const struct attribute *attr, int default_value)
22871 {
22872   if (attr->form == DW_FORM_sdata || attr->form == DW_FORM_implicit_const)
22873     return DW_SND (attr);
22874   else if (attr->form == DW_FORM_udata
22875            || attr->form == DW_FORM_data1
22876            || attr->form == DW_FORM_data2
22877            || attr->form == DW_FORM_data4
22878            || attr->form == DW_FORM_data8)
22879     return DW_UNSND (attr);
22880   else
22881     {
22882       /* For DW_FORM_data16 see attr_form_is_constant.  */
22883       complaint (_("Attribute value is not a constant (%s)"),
22884                  dwarf_form_name (attr->form));
22885       return default_value;
22886     }
22887 }
22888
22889 /* Follow reference or signature attribute ATTR of SRC_DIE.
22890    On entry *REF_CU is the CU of SRC_DIE.
22891    On exit *REF_CU is the CU of the result.  */
22892
22893 static struct die_info *
22894 follow_die_ref_or_sig (struct die_info *src_die, const struct attribute *attr,
22895                        struct dwarf2_cu **ref_cu)
22896 {
22897   struct die_info *die;
22898
22899   if (attr_form_is_ref (attr))
22900     die = follow_die_ref (src_die, attr, ref_cu);
22901   else if (attr->form == DW_FORM_ref_sig8)
22902     die = follow_die_sig (src_die, attr, ref_cu);
22903   else
22904     {
22905       dump_die_for_error (src_die);
22906       error (_("Dwarf Error: Expected reference attribute [in module %s]"),
22907              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
22908     }
22909
22910   return die;
22911 }
22912
22913 /* Follow reference OFFSET.
22914    On entry *REF_CU is the CU of the source die referencing OFFSET.
22915    On exit *REF_CU is the CU of the result.
22916    Returns NULL if OFFSET is invalid.  */
22917
22918 static struct die_info *
22919 follow_die_offset (sect_offset sect_off, int offset_in_dwz,
22920                    struct dwarf2_cu **ref_cu)
22921 {
22922   struct die_info temp_die;
22923   struct dwarf2_cu *target_cu, *cu = *ref_cu;
22924   struct dwarf2_per_objfile *dwarf2_per_objfile
22925     = cu->per_cu->dwarf2_per_objfile;
22926
22927   gdb_assert (cu->per_cu != NULL);
22928
22929   target_cu = cu;
22930
22931   if (cu->per_cu->is_debug_types)
22932     {
22933       /* .debug_types CUs cannot reference anything outside their CU.
22934          If they need to, they have to reference a signatured type via
22935          DW_FORM_ref_sig8.  */
22936       if (!offset_in_cu_p (&cu->header, sect_off))
22937         return NULL;
22938     }
22939   else if (offset_in_dwz != cu->per_cu->is_dwz
22940            || !offset_in_cu_p (&cu->header, sect_off))
22941     {
22942       struct dwarf2_per_cu_data *per_cu;
22943
22944       per_cu = dwarf2_find_containing_comp_unit (sect_off, offset_in_dwz,
22945                                                  dwarf2_per_objfile);
22946
22947       /* If necessary, add it to the queue and load its DIEs.  */
22948       if (maybe_queue_comp_unit (cu, per_cu, cu->language))
22949         load_full_comp_unit (per_cu, false, cu->language);
22950
22951       target_cu = per_cu->cu;
22952     }
22953   else if (cu->dies == NULL)
22954     {
22955       /* We're loading full DIEs during partial symbol reading.  */
22956       gdb_assert (dwarf2_per_objfile->reading_partial_symbols);
22957       load_full_comp_unit (cu->per_cu, false, language_minimal);
22958     }
22959
22960   *ref_cu = target_cu;
22961   temp_die.sect_off = sect_off;
22962   return (struct die_info *) htab_find_with_hash (target_cu->die_hash,
22963                                                   &temp_die,
22964                                                   to_underlying (sect_off));
22965 }
22966
22967 /* Follow reference attribute ATTR of SRC_DIE.
22968    On entry *REF_CU is the CU of SRC_DIE.
22969    On exit *REF_CU is the CU of the result.  */
22970
22971 static struct die_info *
22972 follow_die_ref (struct die_info *src_die, const struct attribute *attr,
22973                 struct dwarf2_cu **ref_cu)
22974 {
22975   sect_offset sect_off = dwarf2_get_ref_die_offset (attr);
22976   struct dwarf2_cu *cu = *ref_cu;
22977   struct die_info *die;
22978
22979   die = follow_die_offset (sect_off,
22980                            (attr->form == DW_FORM_GNU_ref_alt
22981                             || cu->per_cu->is_dwz),
22982                            ref_cu);
22983   if (!die)
22984     error (_("Dwarf Error: Cannot find DIE at %s referenced from DIE "
22985            "at %s [in module %s]"),
22986            sect_offset_str (sect_off), sect_offset_str (src_die->sect_off),
22987            objfile_name (cu->per_cu->dwarf2_per_objfile->objfile));
22988
22989   return die;
22990 }
22991
22992 /* Return DWARF block referenced by DW_AT_location of DIE at SECT_OFF at PER_CU.
22993    Returned value is intended for DW_OP_call*.  Returned
22994    dwarf2_locexpr_baton->data has lifetime of
22995    PER_CU->DWARF2_PER_OBJFILE->OBJFILE.  */
22996
22997 struct dwarf2_locexpr_baton
22998 dwarf2_fetch_die_loc_sect_off (sect_offset sect_off,
22999                                struct dwarf2_per_cu_data *per_cu,
23000                                CORE_ADDR (*get_frame_pc) (void *baton),
23001                                void *baton)
23002 {
23003   struct dwarf2_cu *cu;
23004   struct die_info *die;
23005   struct attribute *attr;
23006   struct dwarf2_locexpr_baton retval;
23007   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
23008   struct objfile *objfile = dwarf2_per_objfile->objfile;
23009
23010   if (per_cu->cu == NULL)
23011     load_cu (per_cu, false);
23012   cu = per_cu->cu;
23013   if (cu == NULL)
23014     {
23015       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23016          Instead just throw an error, not much else we can do.  */
23017       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23018              sect_offset_str (sect_off), objfile_name (objfile));
23019     }
23020
23021   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23022   if (!die)
23023     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23024            sect_offset_str (sect_off), objfile_name (objfile));
23025
23026   attr = dwarf2_attr (die, DW_AT_location, cu);
23027   if (!attr)
23028     {
23029       /* DWARF: "If there is no such attribute, then there is no effect.".
23030          DATA is ignored if SIZE is 0.  */
23031
23032       retval.data = NULL;
23033       retval.size = 0;
23034     }
23035   else if (attr_form_is_section_offset (attr))
23036     {
23037       struct dwarf2_loclist_baton loclist_baton;
23038       CORE_ADDR pc = (*get_frame_pc) (baton);
23039       size_t size;
23040
23041       fill_in_loclist_baton (cu, &loclist_baton, attr);
23042
23043       retval.data = dwarf2_find_location_expression (&loclist_baton,
23044                                                      &size, pc);
23045       retval.size = size;
23046     }
23047   else
23048     {
23049       if (!attr_form_is_block (attr))
23050         error (_("Dwarf Error: DIE at %s referenced in module %s "
23051                  "is neither DW_FORM_block* nor DW_FORM_exprloc"),
23052                sect_offset_str (sect_off), objfile_name (objfile));
23053
23054       retval.data = DW_BLOCK (attr)->data;
23055       retval.size = DW_BLOCK (attr)->size;
23056     }
23057   retval.per_cu = cu->per_cu;
23058
23059   age_cached_comp_units (dwarf2_per_objfile);
23060
23061   return retval;
23062 }
23063
23064 /* Like dwarf2_fetch_die_loc_sect_off, but take a CU
23065    offset.  */
23066
23067 struct dwarf2_locexpr_baton
23068 dwarf2_fetch_die_loc_cu_off (cu_offset offset_in_cu,
23069                              struct dwarf2_per_cu_data *per_cu,
23070                              CORE_ADDR (*get_frame_pc) (void *baton),
23071                              void *baton)
23072 {
23073   sect_offset sect_off = per_cu->sect_off + to_underlying (offset_in_cu);
23074
23075   return dwarf2_fetch_die_loc_sect_off (sect_off, per_cu, get_frame_pc, baton);
23076 }
23077
23078 /* Write a constant of a given type as target-ordered bytes into
23079    OBSTACK.  */
23080
23081 static const gdb_byte *
23082 write_constant_as_bytes (struct obstack *obstack,
23083                          enum bfd_endian byte_order,
23084                          struct type *type,
23085                          ULONGEST value,
23086                          LONGEST *len)
23087 {
23088   gdb_byte *result;
23089
23090   *len = TYPE_LENGTH (type);
23091   result = (gdb_byte *) obstack_alloc (obstack, *len);
23092   store_unsigned_integer (result, *len, byte_order, value);
23093
23094   return result;
23095 }
23096
23097 /* If the DIE at OFFSET in PER_CU has a DW_AT_const_value, return a
23098    pointer to the constant bytes and set LEN to the length of the
23099    data.  If memory is needed, allocate it on OBSTACK.  If the DIE
23100    does not have a DW_AT_const_value, return NULL.  */
23101
23102 const gdb_byte *
23103 dwarf2_fetch_constant_bytes (sect_offset sect_off,
23104                              struct dwarf2_per_cu_data *per_cu,
23105                              struct obstack *obstack,
23106                              LONGEST *len)
23107 {
23108   struct dwarf2_cu *cu;
23109   struct die_info *die;
23110   struct attribute *attr;
23111   const gdb_byte *result = NULL;
23112   struct type *type;
23113   LONGEST value;
23114   enum bfd_endian byte_order;
23115   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
23116
23117   if (per_cu->cu == NULL)
23118     load_cu (per_cu, false);
23119   cu = per_cu->cu;
23120   if (cu == NULL)
23121     {
23122       /* We shouldn't get here for a dummy CU, but don't crash on the user.
23123          Instead just throw an error, not much else we can do.  */
23124       error (_("Dwarf Error: Dummy CU at %s referenced in module %s"),
23125              sect_offset_str (sect_off), objfile_name (objfile));
23126     }
23127
23128   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23129   if (!die)
23130     error (_("Dwarf Error: Cannot find DIE at %s referenced in module %s"),
23131            sect_offset_str (sect_off), objfile_name (objfile));
23132
23133   attr = dwarf2_attr (die, DW_AT_const_value, cu);
23134   if (attr == NULL)
23135     return NULL;
23136
23137   byte_order = (bfd_big_endian (objfile->obfd)
23138                 ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE);
23139
23140   switch (attr->form)
23141     {
23142     case DW_FORM_addr:
23143     case DW_FORM_GNU_addr_index:
23144       {
23145         gdb_byte *tem;
23146
23147         *len = cu->header.addr_size;
23148         tem = (gdb_byte *) obstack_alloc (obstack, *len);
23149         store_unsigned_integer (tem, *len, byte_order, DW_ADDR (attr));
23150         result = tem;
23151       }
23152       break;
23153     case DW_FORM_string:
23154     case DW_FORM_strp:
23155     case DW_FORM_GNU_str_index:
23156     case DW_FORM_GNU_strp_alt:
23157       /* DW_STRING is already allocated on the objfile obstack, point
23158          directly to it.  */
23159       result = (const gdb_byte *) DW_STRING (attr);
23160       *len = strlen (DW_STRING (attr));
23161       break;
23162     case DW_FORM_block1:
23163     case DW_FORM_block2:
23164     case DW_FORM_block4:
23165     case DW_FORM_block:
23166     case DW_FORM_exprloc:
23167     case DW_FORM_data16:
23168       result = DW_BLOCK (attr)->data;
23169       *len = DW_BLOCK (attr)->size;
23170       break;
23171
23172       /* The DW_AT_const_value attributes are supposed to carry the
23173          symbol's value "represented as it would be on the target
23174          architecture."  By the time we get here, it's already been
23175          converted to host endianness, so we just need to sign- or
23176          zero-extend it as appropriate.  */
23177     case DW_FORM_data1:
23178       type = die_type (die, cu);
23179       result = dwarf2_const_value_data (attr, obstack, cu, &value, 8);
23180       if (result == NULL)
23181         result = write_constant_as_bytes (obstack, byte_order,
23182                                           type, value, len);
23183       break;
23184     case DW_FORM_data2:
23185       type = die_type (die, cu);
23186       result = dwarf2_const_value_data (attr, obstack, cu, &value, 16);
23187       if (result == NULL)
23188         result = write_constant_as_bytes (obstack, byte_order,
23189                                           type, value, len);
23190       break;
23191     case DW_FORM_data4:
23192       type = die_type (die, cu);
23193       result = dwarf2_const_value_data (attr, obstack, cu, &value, 32);
23194       if (result == NULL)
23195         result = write_constant_as_bytes (obstack, byte_order,
23196                                           type, value, len);
23197       break;
23198     case DW_FORM_data8:
23199       type = die_type (die, cu);
23200       result = dwarf2_const_value_data (attr, obstack, cu, &value, 64);
23201       if (result == NULL)
23202         result = write_constant_as_bytes (obstack, byte_order,
23203                                           type, value, len);
23204       break;
23205
23206     case DW_FORM_sdata:
23207     case DW_FORM_implicit_const:
23208       type = die_type (die, cu);
23209       result = write_constant_as_bytes (obstack, byte_order,
23210                                         type, DW_SND (attr), len);
23211       break;
23212
23213     case DW_FORM_udata:
23214       type = die_type (die, cu);
23215       result = write_constant_as_bytes (obstack, byte_order,
23216                                         type, DW_UNSND (attr), len);
23217       break;
23218
23219     default:
23220       complaint (_("unsupported const value attribute form: '%s'"),
23221                  dwarf_form_name (attr->form));
23222       break;
23223     }
23224
23225   return result;
23226 }
23227
23228 /* Return the type of the die at OFFSET in PER_CU.  Return NULL if no
23229    valid type for this die is found.  */
23230
23231 struct type *
23232 dwarf2_fetch_die_type_sect_off (sect_offset sect_off,
23233                                 struct dwarf2_per_cu_data *per_cu)
23234 {
23235   struct dwarf2_cu *cu;
23236   struct die_info *die;
23237
23238   if (per_cu->cu == NULL)
23239     load_cu (per_cu, false);
23240   cu = per_cu->cu;
23241   if (!cu)
23242     return NULL;
23243
23244   die = follow_die_offset (sect_off, per_cu->is_dwz, &cu);
23245   if (!die)
23246     return NULL;
23247
23248   return die_type (die, cu);
23249 }
23250
23251 /* Return the type of the DIE at DIE_OFFSET in the CU named by
23252    PER_CU.  */
23253
23254 struct type *
23255 dwarf2_get_die_type (cu_offset die_offset,
23256                      struct dwarf2_per_cu_data *per_cu)
23257 {
23258   sect_offset die_offset_sect = per_cu->sect_off + to_underlying (die_offset);
23259   return get_die_type_at_offset (die_offset_sect, per_cu);
23260 }
23261
23262 /* Follow type unit SIG_TYPE referenced by SRC_DIE.
23263    On entry *REF_CU is the CU of SRC_DIE.
23264    On exit *REF_CU is the CU of the result.
23265    Returns NULL if the referenced DIE isn't found.  */
23266
23267 static struct die_info *
23268 follow_die_sig_1 (struct die_info *src_die, struct signatured_type *sig_type,
23269                   struct dwarf2_cu **ref_cu)
23270 {
23271   struct die_info temp_die;
23272   struct dwarf2_cu *sig_cu;
23273   struct die_info *die;
23274
23275   /* While it might be nice to assert sig_type->type == NULL here,
23276      we can get here for DW_AT_imported_declaration where we need
23277      the DIE not the type.  */
23278
23279   /* If necessary, add it to the queue and load its DIEs.  */
23280
23281   if (maybe_queue_comp_unit (*ref_cu, &sig_type->per_cu, language_minimal))
23282     read_signatured_type (sig_type);
23283
23284   sig_cu = sig_type->per_cu.cu;
23285   gdb_assert (sig_cu != NULL);
23286   gdb_assert (to_underlying (sig_type->type_offset_in_section) != 0);
23287   temp_die.sect_off = sig_type->type_offset_in_section;
23288   die = (struct die_info *) htab_find_with_hash (sig_cu->die_hash, &temp_die,
23289                                                  to_underlying (temp_die.sect_off));
23290   if (die)
23291     {
23292       struct dwarf2_per_objfile *dwarf2_per_objfile
23293         = (*ref_cu)->per_cu->dwarf2_per_objfile;
23294
23295       /* For .gdb_index version 7 keep track of included TUs.
23296          http://sourceware.org/bugzilla/show_bug.cgi?id=15021.  */
23297       if (dwarf2_per_objfile->index_table != NULL
23298           && dwarf2_per_objfile->index_table->version <= 7)
23299         {
23300           VEC_safe_push (dwarf2_per_cu_ptr,
23301                          (*ref_cu)->per_cu->imported_symtabs,
23302                          sig_cu->per_cu);
23303         }
23304
23305       *ref_cu = sig_cu;
23306       return die;
23307     }
23308
23309   return NULL;
23310 }
23311
23312 /* Follow signatured type referenced by ATTR in SRC_DIE.
23313    On entry *REF_CU is the CU of SRC_DIE.
23314    On exit *REF_CU is the CU of the result.
23315    The result is the DIE of the type.
23316    If the referenced type cannot be found an error is thrown.  */
23317
23318 static struct die_info *
23319 follow_die_sig (struct die_info *src_die, const struct attribute *attr,
23320                 struct dwarf2_cu **ref_cu)
23321 {
23322   ULONGEST signature = DW_SIGNATURE (attr);
23323   struct signatured_type *sig_type;
23324   struct die_info *die;
23325
23326   gdb_assert (attr->form == DW_FORM_ref_sig8);
23327
23328   sig_type = lookup_signatured_type (*ref_cu, signature);
23329   /* sig_type will be NULL if the signatured type is missing from
23330      the debug info.  */
23331   if (sig_type == NULL)
23332     {
23333       error (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23334                " from DIE at %s [in module %s]"),
23335              hex_string (signature), sect_offset_str (src_die->sect_off),
23336              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23337     }
23338
23339   die = follow_die_sig_1 (src_die, sig_type, ref_cu);
23340   if (die == NULL)
23341     {
23342       dump_die_for_error (src_die);
23343       error (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23344                " from DIE at %s [in module %s]"),
23345              hex_string (signature), sect_offset_str (src_die->sect_off),
23346              objfile_name ((*ref_cu)->per_cu->dwarf2_per_objfile->objfile));
23347     }
23348
23349   return die;
23350 }
23351
23352 /* Get the type specified by SIGNATURE referenced in DIE/CU,
23353    reading in and processing the type unit if necessary.  */
23354
23355 static struct type *
23356 get_signatured_type (struct die_info *die, ULONGEST signature,
23357                      struct dwarf2_cu *cu)
23358 {
23359   struct dwarf2_per_objfile *dwarf2_per_objfile
23360     = cu->per_cu->dwarf2_per_objfile;
23361   struct signatured_type *sig_type;
23362   struct dwarf2_cu *type_cu;
23363   struct die_info *type_die;
23364   struct type *type;
23365
23366   sig_type = lookup_signatured_type (cu, signature);
23367   /* sig_type will be NULL if the signatured type is missing from
23368      the debug info.  */
23369   if (sig_type == NULL)
23370     {
23371       complaint (_("Dwarf Error: Cannot find signatured DIE %s referenced"
23372                    " from DIE at %s [in module %s]"),
23373                  hex_string (signature), sect_offset_str (die->sect_off),
23374                  objfile_name (dwarf2_per_objfile->objfile));
23375       return build_error_marker_type (cu, die);
23376     }
23377
23378   /* If we already know the type we're done.  */
23379   if (sig_type->type != NULL)
23380     return sig_type->type;
23381
23382   type_cu = cu;
23383   type_die = follow_die_sig_1 (die, sig_type, &type_cu);
23384   if (type_die != NULL)
23385     {
23386       /* N.B. We need to call get_die_type to ensure only one type for this DIE
23387          is created.  This is important, for example, because for c++ classes
23388          we need TYPE_NAME set which is only done by new_symbol.  Blech.  */
23389       type = read_type_die (type_die, type_cu);
23390       if (type == NULL)
23391         {
23392           complaint (_("Dwarf Error: Cannot build signatured type %s"
23393                        " referenced from DIE at %s [in module %s]"),
23394                      hex_string (signature), sect_offset_str (die->sect_off),
23395                      objfile_name (dwarf2_per_objfile->objfile));
23396           type = build_error_marker_type (cu, die);
23397         }
23398     }
23399   else
23400     {
23401       complaint (_("Dwarf Error: Problem reading signatured DIE %s referenced"
23402                    " from DIE at %s [in module %s]"),
23403                  hex_string (signature), sect_offset_str (die->sect_off),
23404                  objfile_name (dwarf2_per_objfile->objfile));
23405       type = build_error_marker_type (cu, die);
23406     }
23407   sig_type->type = type;
23408
23409   return type;
23410 }
23411
23412 /* Get the type specified by the DW_AT_signature ATTR in DIE/CU,
23413    reading in and processing the type unit if necessary.  */
23414
23415 static struct type *
23416 get_DW_AT_signature_type (struct die_info *die, const struct attribute *attr,
23417                           struct dwarf2_cu *cu) /* ARI: editCase function */
23418 {
23419   /* Yes, DW_AT_signature can use a non-ref_sig8 reference.  */
23420   if (attr_form_is_ref (attr))
23421     {
23422       struct dwarf2_cu *type_cu = cu;
23423       struct die_info *type_die = follow_die_ref (die, attr, &type_cu);
23424
23425       return read_type_die (type_die, type_cu);
23426     }
23427   else if (attr->form == DW_FORM_ref_sig8)
23428     {
23429       return get_signatured_type (die, DW_SIGNATURE (attr), cu);
23430     }
23431   else
23432     {
23433       struct dwarf2_per_objfile *dwarf2_per_objfile
23434         = cu->per_cu->dwarf2_per_objfile;
23435
23436       complaint (_("Dwarf Error: DW_AT_signature has bad form %s in DIE"
23437                    " at %s [in module %s]"),
23438                  dwarf_form_name (attr->form), sect_offset_str (die->sect_off),
23439                  objfile_name (dwarf2_per_objfile->objfile));
23440       return build_error_marker_type (cu, die);
23441     }
23442 }
23443
23444 /* Load the DIEs associated with type unit PER_CU into memory.  */
23445
23446 static void
23447 load_full_type_unit (struct dwarf2_per_cu_data *per_cu)
23448 {
23449   struct signatured_type *sig_type;
23450
23451   /* Caller is responsible for ensuring type_unit_groups don't get here.  */
23452   gdb_assert (! IS_TYPE_UNIT_GROUP (per_cu));
23453
23454   /* We have the per_cu, but we need the signatured_type.
23455      Fortunately this is an easy translation.  */
23456   gdb_assert (per_cu->is_debug_types);
23457   sig_type = (struct signatured_type *) per_cu;
23458
23459   gdb_assert (per_cu->cu == NULL);
23460
23461   read_signatured_type (sig_type);
23462
23463   gdb_assert (per_cu->cu != NULL);
23464 }
23465
23466 /* die_reader_func for read_signatured_type.
23467    This is identical to load_full_comp_unit_reader,
23468    but is kept separate for now.  */
23469
23470 static void
23471 read_signatured_type_reader (const struct die_reader_specs *reader,
23472                              const gdb_byte *info_ptr,
23473                              struct die_info *comp_unit_die,
23474                              int has_children,
23475                              void *data)
23476 {
23477   struct dwarf2_cu *cu = reader->cu;
23478
23479   gdb_assert (cu->die_hash == NULL);
23480   cu->die_hash =
23481     htab_create_alloc_ex (cu->header.length / 12,
23482                           die_hash,
23483                           die_eq,
23484                           NULL,
23485                           &cu->comp_unit_obstack,
23486                           hashtab_obstack_allocate,
23487                           dummy_obstack_deallocate);
23488
23489   if (has_children)
23490     comp_unit_die->child = read_die_and_siblings (reader, info_ptr,
23491                                                   &info_ptr, comp_unit_die);
23492   cu->dies = comp_unit_die;
23493   /* comp_unit_die is not stored in die_hash, no need.  */
23494
23495   /* We try not to read any attributes in this function, because not
23496      all CUs needed for references have been loaded yet, and symbol
23497      table processing isn't initialized.  But we have to set the CU language,
23498      or we won't be able to build types correctly.
23499      Similarly, if we do not read the producer, we can not apply
23500      producer-specific interpretation.  */
23501   prepare_one_comp_unit (cu, cu->dies, language_minimal);
23502 }
23503
23504 /* Read in a signatured type and build its CU and DIEs.
23505    If the type is a stub for the real type in a DWO file,
23506    read in the real type from the DWO file as well.  */
23507
23508 static void
23509 read_signatured_type (struct signatured_type *sig_type)
23510 {
23511   struct dwarf2_per_cu_data *per_cu = &sig_type->per_cu;
23512
23513   gdb_assert (per_cu->is_debug_types);
23514   gdb_assert (per_cu->cu == NULL);
23515
23516   init_cutu_and_read_dies (per_cu, NULL, 0, 1, false,
23517                            read_signatured_type_reader, NULL);
23518   sig_type->per_cu.tu_read = 1;
23519 }
23520
23521 /* Decode simple location descriptions.
23522    Given a pointer to a dwarf block that defines a location, compute
23523    the location and return the value.
23524
23525    NOTE drow/2003-11-18: This function is called in two situations
23526    now: for the address of static or global variables (partial symbols
23527    only) and for offsets into structures which are expected to be
23528    (more or less) constant.  The partial symbol case should go away,
23529    and only the constant case should remain.  That will let this
23530    function complain more accurately.  A few special modes are allowed
23531    without complaint for global variables (for instance, global
23532    register values and thread-local values).
23533
23534    A location description containing no operations indicates that the
23535    object is optimized out.  The return value is 0 for that case.
23536    FIXME drow/2003-11-16: No callers check for this case any more; soon all
23537    callers will only want a very basic result and this can become a
23538    complaint.
23539
23540    Note that stack[0] is unused except as a default error return.  */
23541
23542 static CORE_ADDR
23543 decode_locdesc (struct dwarf_block *blk, struct dwarf2_cu *cu)
23544 {
23545   struct objfile *objfile = cu->per_cu->dwarf2_per_objfile->objfile;
23546   size_t i;
23547   size_t size = blk->size;
23548   const gdb_byte *data = blk->data;
23549   CORE_ADDR stack[64];
23550   int stacki;
23551   unsigned int bytes_read, unsnd;
23552   gdb_byte op;
23553
23554   i = 0;
23555   stacki = 0;
23556   stack[stacki] = 0;
23557   stack[++stacki] = 0;
23558
23559   while (i < size)
23560     {
23561       op = data[i++];
23562       switch (op)
23563         {
23564         case DW_OP_lit0:
23565         case DW_OP_lit1:
23566         case DW_OP_lit2:
23567         case DW_OP_lit3:
23568         case DW_OP_lit4:
23569         case DW_OP_lit5:
23570         case DW_OP_lit6:
23571         case DW_OP_lit7:
23572         case DW_OP_lit8:
23573         case DW_OP_lit9:
23574         case DW_OP_lit10:
23575         case DW_OP_lit11:
23576         case DW_OP_lit12:
23577         case DW_OP_lit13:
23578         case DW_OP_lit14:
23579         case DW_OP_lit15:
23580         case DW_OP_lit16:
23581         case DW_OP_lit17:
23582         case DW_OP_lit18:
23583         case DW_OP_lit19:
23584         case DW_OP_lit20:
23585         case DW_OP_lit21:
23586         case DW_OP_lit22:
23587         case DW_OP_lit23:
23588         case DW_OP_lit24:
23589         case DW_OP_lit25:
23590         case DW_OP_lit26:
23591         case DW_OP_lit27:
23592         case DW_OP_lit28:
23593         case DW_OP_lit29:
23594         case DW_OP_lit30:
23595         case DW_OP_lit31:
23596           stack[++stacki] = op - DW_OP_lit0;
23597           break;
23598
23599         case DW_OP_reg0:
23600         case DW_OP_reg1:
23601         case DW_OP_reg2:
23602         case DW_OP_reg3:
23603         case DW_OP_reg4:
23604         case DW_OP_reg5:
23605         case DW_OP_reg6:
23606         case DW_OP_reg7:
23607         case DW_OP_reg8:
23608         case DW_OP_reg9:
23609         case DW_OP_reg10:
23610         case DW_OP_reg11:
23611         case DW_OP_reg12:
23612         case DW_OP_reg13:
23613         case DW_OP_reg14:
23614         case DW_OP_reg15:
23615         case DW_OP_reg16:
23616         case DW_OP_reg17:
23617         case DW_OP_reg18:
23618         case DW_OP_reg19:
23619         case DW_OP_reg20:
23620         case DW_OP_reg21:
23621         case DW_OP_reg22:
23622         case DW_OP_reg23:
23623         case DW_OP_reg24:
23624         case DW_OP_reg25:
23625         case DW_OP_reg26:
23626         case DW_OP_reg27:
23627         case DW_OP_reg28:
23628         case DW_OP_reg29:
23629         case DW_OP_reg30:
23630         case DW_OP_reg31:
23631           stack[++stacki] = op - DW_OP_reg0;
23632           if (i < size)
23633             dwarf2_complex_location_expr_complaint ();
23634           break;
23635
23636         case DW_OP_regx:
23637           unsnd = read_unsigned_leb128 (NULL, (data + i), &bytes_read);
23638           i += bytes_read;
23639           stack[++stacki] = unsnd;
23640           if (i < size)
23641             dwarf2_complex_location_expr_complaint ();
23642           break;
23643
23644         case DW_OP_addr:
23645           stack[++stacki] = read_address (objfile->obfd, &data[i],
23646                                           cu, &bytes_read);
23647           i += bytes_read;
23648           break;
23649
23650         case DW_OP_const1u:
23651           stack[++stacki] = read_1_byte (objfile->obfd, &data[i]);
23652           i += 1;
23653           break;
23654
23655         case DW_OP_const1s:
23656           stack[++stacki] = read_1_signed_byte (objfile->obfd, &data[i]);
23657           i += 1;
23658           break;
23659
23660         case DW_OP_const2u:
23661           stack[++stacki] = read_2_bytes (objfile->obfd, &data[i]);
23662           i += 2;
23663           break;
23664
23665         case DW_OP_const2s:
23666           stack[++stacki] = read_2_signed_bytes (objfile->obfd, &data[i]);
23667           i += 2;
23668           break;
23669
23670         case DW_OP_const4u:
23671           stack[++stacki] = read_4_bytes (objfile->obfd, &data[i]);
23672           i += 4;
23673           break;
23674
23675         case DW_OP_const4s:
23676           stack[++stacki] = read_4_signed_bytes (objfile->obfd, &data[i]);
23677           i += 4;
23678           break;
23679
23680         case DW_OP_const8u:
23681           stack[++stacki] = read_8_bytes (objfile->obfd, &data[i]);
23682           i += 8;
23683           break;
23684
23685         case DW_OP_constu:
23686           stack[++stacki] = read_unsigned_leb128 (NULL, (data + i),
23687                                                   &bytes_read);
23688           i += bytes_read;
23689           break;
23690
23691         case DW_OP_consts:
23692           stack[++stacki] = read_signed_leb128 (NULL, (data + i), &bytes_read);
23693           i += bytes_read;
23694           break;
23695
23696         case DW_OP_dup:
23697           stack[stacki + 1] = stack[stacki];
23698           stacki++;
23699           break;
23700
23701         case DW_OP_plus:
23702           stack[stacki - 1] += stack[stacki];
23703           stacki--;
23704           break;
23705
23706         case DW_OP_plus_uconst:
23707           stack[stacki] += read_unsigned_leb128 (NULL, (data + i),
23708                                                  &bytes_read);
23709           i += bytes_read;
23710           break;
23711
23712         case DW_OP_minus:
23713           stack[stacki - 1] -= stack[stacki];
23714           stacki--;
23715           break;
23716
23717         case DW_OP_deref:
23718           /* If we're not the last op, then we definitely can't encode
23719              this using GDB's address_class enum.  This is valid for partial
23720              global symbols, although the variable's address will be bogus
23721              in the psymtab.  */
23722           if (i < size)
23723             dwarf2_complex_location_expr_complaint ();
23724           break;
23725
23726         case DW_OP_GNU_push_tls_address:
23727         case DW_OP_form_tls_address:
23728           /* The top of the stack has the offset from the beginning
23729              of the thread control block at which the variable is located.  */
23730           /* Nothing should follow this operator, so the top of stack would
23731              be returned.  */
23732           /* This is valid for partial global symbols, but the variable's
23733              address will be bogus in the psymtab.  Make it always at least
23734              non-zero to not look as a variable garbage collected by linker
23735              which have DW_OP_addr 0.  */
23736           if (i < size)
23737             dwarf2_complex_location_expr_complaint ();
23738           stack[stacki]++;
23739           break;
23740
23741         case DW_OP_GNU_uninit:
23742           break;
23743
23744         case DW_OP_GNU_addr_index:
23745         case DW_OP_GNU_const_index:
23746           stack[++stacki] = read_addr_index_from_leb128 (cu, &data[i],
23747                                                          &bytes_read);
23748           i += bytes_read;
23749           break;
23750
23751         default:
23752           {
23753             const char *name = get_DW_OP_name (op);
23754
23755             if (name)
23756               complaint (_("unsupported stack op: '%s'"),
23757                          name);
23758             else
23759               complaint (_("unsupported stack op: '%02x'"),
23760                          op);
23761           }
23762
23763           return (stack[stacki]);
23764         }
23765
23766       /* Enforce maximum stack depth of SIZE-1 to avoid writing
23767          outside of the allocated space.  Also enforce minimum>0.  */
23768       if (stacki >= ARRAY_SIZE (stack) - 1)
23769         {
23770           complaint (_("location description stack overflow"));
23771           return 0;
23772         }
23773
23774       if (stacki <= 0)
23775         {
23776           complaint (_("location description stack underflow"));
23777           return 0;
23778         }
23779     }
23780   return (stack[stacki]);
23781 }
23782
23783 /* memory allocation interface */
23784
23785 static struct dwarf_block *
23786 dwarf_alloc_block (struct dwarf2_cu *cu)
23787 {
23788   return XOBNEW (&cu->comp_unit_obstack, struct dwarf_block);
23789 }
23790
23791 static struct die_info *
23792 dwarf_alloc_die (struct dwarf2_cu *cu, int num_attrs)
23793 {
23794   struct die_info *die;
23795   size_t size = sizeof (struct die_info);
23796
23797   if (num_attrs > 1)
23798     size += (num_attrs - 1) * sizeof (struct attribute);
23799
23800   die = (struct die_info *) obstack_alloc (&cu->comp_unit_obstack, size);
23801   memset (die, 0, sizeof (struct die_info));
23802   return (die);
23803 }
23804
23805 \f
23806 /* Macro support.  */
23807
23808 /* Return file name relative to the compilation directory of file number I in
23809    *LH's file name table.  The result is allocated using xmalloc; the caller is
23810    responsible for freeing it.  */
23811
23812 static char *
23813 file_file_name (int file, struct line_header *lh)
23814 {
23815   /* Is the file number a valid index into the line header's file name
23816      table?  Remember that file numbers start with one, not zero.  */
23817   if (1 <= file && file <= lh->file_names.size ())
23818     {
23819       const file_entry &fe = lh->file_names[file - 1];
23820
23821       if (!IS_ABSOLUTE_PATH (fe.name))
23822         {
23823           const char *dir = fe.include_dir (lh);
23824           if (dir != NULL)
23825             return concat (dir, SLASH_STRING, fe.name, (char *) NULL);
23826         }
23827       return xstrdup (fe.name);
23828     }
23829   else
23830     {
23831       /* The compiler produced a bogus file number.  We can at least
23832          record the macro definitions made in the file, even if we
23833          won't be able to find the file by name.  */
23834       char fake_name[80];
23835
23836       xsnprintf (fake_name, sizeof (fake_name),
23837                  "<bad macro file number %d>", file);
23838
23839       complaint (_("bad file number in macro information (%d)"),
23840                  file);
23841
23842       return xstrdup (fake_name);
23843     }
23844 }
23845
23846 /* Return the full name of file number I in *LH's file name table.
23847    Use COMP_DIR as the name of the current directory of the
23848    compilation.  The result is allocated using xmalloc; the caller is
23849    responsible for freeing it.  */
23850 static char *
23851 file_full_name (int file, struct line_header *lh, const char *comp_dir)
23852 {
23853   /* Is the file number a valid index into the line header's file name
23854      table?  Remember that file numbers start with one, not zero.  */
23855   if (1 <= file && file <= lh->file_names.size ())
23856     {
23857       char *relative = file_file_name (file, lh);
23858
23859       if (IS_ABSOLUTE_PATH (relative) || comp_dir == NULL)
23860         return relative;
23861       return reconcat (relative, comp_dir, SLASH_STRING,
23862                        relative, (char *) NULL);
23863     }
23864   else
23865     return file_file_name (file, lh);
23866 }
23867
23868
23869 static struct macro_source_file *
23870 macro_start_file (struct dwarf2_cu *cu,
23871                   int file, int line,
23872                   struct macro_source_file *current_file,
23873                   struct line_header *lh)
23874 {
23875   /* File name relative to the compilation directory of this source file.  */
23876   char *file_name = file_file_name (file, lh);
23877
23878   if (! current_file)
23879     {
23880       /* Note: We don't create a macro table for this compilation unit
23881          at all until we actually get a filename.  */
23882       struct macro_table *macro_table = cu->builder->get_macro_table ();
23883
23884       /* If we have no current file, then this must be the start_file
23885          directive for the compilation unit's main source file.  */
23886       current_file = macro_set_main (macro_table, file_name);
23887       macro_define_special (macro_table);
23888     }
23889   else
23890     current_file = macro_include (current_file, line, file_name);
23891
23892   xfree (file_name);
23893
23894   return current_file;
23895 }
23896
23897 static const char *
23898 consume_improper_spaces (const char *p, const char *body)
23899 {
23900   if (*p == ' ')
23901     {
23902       complaint (_("macro definition contains spaces "
23903                    "in formal argument list:\n`%s'"),
23904                  body);
23905
23906       while (*p == ' ')
23907         p++;
23908     }
23909
23910   return p;
23911 }
23912
23913
23914 static void
23915 parse_macro_definition (struct macro_source_file *file, int line,
23916                         const char *body)
23917 {
23918   const char *p;
23919
23920   /* The body string takes one of two forms.  For object-like macro
23921      definitions, it should be:
23922
23923         <macro name> " " <definition>
23924
23925      For function-like macro definitions, it should be:
23926
23927         <macro name> "() " <definition>
23928      or
23929         <macro name> "(" <arg name> ( "," <arg name> ) * ") " <definition>
23930
23931      Spaces may appear only where explicitly indicated, and in the
23932      <definition>.
23933
23934      The Dwarf 2 spec says that an object-like macro's name is always
23935      followed by a space, but versions of GCC around March 2002 omit
23936      the space when the macro's definition is the empty string.
23937
23938      The Dwarf 2 spec says that there should be no spaces between the
23939      formal arguments in a function-like macro's formal argument list,
23940      but versions of GCC around March 2002 include spaces after the
23941      commas.  */
23942
23943
23944   /* Find the extent of the macro name.  The macro name is terminated
23945      by either a space or null character (for an object-like macro) or
23946      an opening paren (for a function-like macro).  */
23947   for (p = body; *p; p++)
23948     if (*p == ' ' || *p == '(')
23949       break;
23950
23951   if (*p == ' ' || *p == '\0')
23952     {
23953       /* It's an object-like macro.  */
23954       int name_len = p - body;
23955       char *name = savestring (body, name_len);
23956       const char *replacement;
23957
23958       if (*p == ' ')
23959         replacement = body + name_len + 1;
23960       else
23961         {
23962           dwarf2_macro_malformed_definition_complaint (body);
23963           replacement = body + name_len;
23964         }
23965
23966       macro_define_object (file, line, name, replacement);
23967
23968       xfree (name);
23969     }
23970   else if (*p == '(')
23971     {
23972       /* It's a function-like macro.  */
23973       char *name = savestring (body, p - body);
23974       int argc = 0;
23975       int argv_size = 1;
23976       char **argv = XNEWVEC (char *, argv_size);
23977
23978       p++;
23979
23980       p = consume_improper_spaces (p, body);
23981
23982       /* Parse the formal argument list.  */
23983       while (*p && *p != ')')
23984         {
23985           /* Find the extent of the current argument name.  */
23986           const char *arg_start = p;
23987
23988           while (*p && *p != ',' && *p != ')' && *p != ' ')
23989             p++;
23990
23991           if (! *p || p == arg_start)
23992             dwarf2_macro_malformed_definition_complaint (body);
23993           else
23994             {
23995               /* Make sure argv has room for the new argument.  */
23996               if (argc >= argv_size)
23997                 {
23998                   argv_size *= 2;
23999                   argv = XRESIZEVEC (char *, argv, argv_size);
24000                 }
24001
24002               argv[argc++] = savestring (arg_start, p - arg_start);
24003             }
24004
24005           p = consume_improper_spaces (p, body);
24006
24007           /* Consume the comma, if present.  */
24008           if (*p == ',')
24009             {
24010               p++;
24011
24012               p = consume_improper_spaces (p, body);
24013             }
24014         }
24015
24016       if (*p == ')')
24017         {
24018           p++;
24019
24020           if (*p == ' ')
24021             /* Perfectly formed definition, no complaints.  */
24022             macro_define_function (file, line, name,
24023                                    argc, (const char **) argv,
24024                                    p + 1);
24025           else if (*p == '\0')
24026             {
24027               /* Complain, but do define it.  */
24028               dwarf2_macro_malformed_definition_complaint (body);
24029               macro_define_function (file, line, name,
24030                                      argc, (const char **) argv,
24031                                      p);
24032             }
24033           else
24034             /* Just complain.  */
24035             dwarf2_macro_malformed_definition_complaint (body);
24036         }
24037       else
24038         /* Just complain.  */
24039         dwarf2_macro_malformed_definition_complaint (body);
24040
24041       xfree (name);
24042       {
24043         int i;
24044
24045         for (i = 0; i < argc; i++)
24046           xfree (argv[i]);
24047       }
24048       xfree (argv);
24049     }
24050   else
24051     dwarf2_macro_malformed_definition_complaint (body);
24052 }
24053
24054 /* Skip some bytes from BYTES according to the form given in FORM.
24055    Returns the new pointer.  */
24056
24057 static const gdb_byte *
24058 skip_form_bytes (bfd *abfd, const gdb_byte *bytes, const gdb_byte *buffer_end,
24059                  enum dwarf_form form,
24060                  unsigned int offset_size,
24061                  struct dwarf2_section_info *section)
24062 {
24063   unsigned int bytes_read;
24064
24065   switch (form)
24066     {
24067     case DW_FORM_data1:
24068     case DW_FORM_flag:
24069       ++bytes;
24070       break;
24071
24072     case DW_FORM_data2:
24073       bytes += 2;
24074       break;
24075
24076     case DW_FORM_data4:
24077       bytes += 4;
24078       break;
24079
24080     case DW_FORM_data8:
24081       bytes += 8;
24082       break;
24083
24084     case DW_FORM_data16:
24085       bytes += 16;
24086       break;
24087
24088     case DW_FORM_string:
24089       read_direct_string (abfd, bytes, &bytes_read);
24090       bytes += bytes_read;
24091       break;
24092
24093     case DW_FORM_sec_offset:
24094     case DW_FORM_strp:
24095     case DW_FORM_GNU_strp_alt:
24096       bytes += offset_size;
24097       break;
24098
24099     case DW_FORM_block:
24100       bytes += read_unsigned_leb128 (abfd, bytes, &bytes_read);
24101       bytes += bytes_read;
24102       break;
24103
24104     case DW_FORM_block1:
24105       bytes += 1 + read_1_byte (abfd, bytes);
24106       break;
24107     case DW_FORM_block2:
24108       bytes += 2 + read_2_bytes (abfd, bytes);
24109       break;
24110     case DW_FORM_block4:
24111       bytes += 4 + read_4_bytes (abfd, bytes);
24112       break;
24113
24114     case DW_FORM_sdata:
24115     case DW_FORM_udata:
24116     case DW_FORM_GNU_addr_index:
24117     case DW_FORM_GNU_str_index:
24118       bytes = gdb_skip_leb128 (bytes, buffer_end);
24119       if (bytes == NULL)
24120         {
24121           dwarf2_section_buffer_overflow_complaint (section);
24122           return NULL;
24123         }
24124       break;
24125
24126     case DW_FORM_implicit_const:
24127       break;
24128
24129     default:
24130       {
24131         complaint (_("invalid form 0x%x in `%s'"),
24132                    form, get_section_name (section));
24133         return NULL;
24134       }
24135     }
24136
24137   return bytes;
24138 }
24139
24140 /* A helper for dwarf_decode_macros that handles skipping an unknown
24141    opcode.  Returns an updated pointer to the macro data buffer; or,
24142    on error, issues a complaint and returns NULL.  */
24143
24144 static const gdb_byte *
24145 skip_unknown_opcode (unsigned int opcode,
24146                      const gdb_byte **opcode_definitions,
24147                      const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24148                      bfd *abfd,
24149                      unsigned int offset_size,
24150                      struct dwarf2_section_info *section)
24151 {
24152   unsigned int bytes_read, i;
24153   unsigned long arg;
24154   const gdb_byte *defn;
24155
24156   if (opcode_definitions[opcode] == NULL)
24157     {
24158       complaint (_("unrecognized DW_MACFINO opcode 0x%x"),
24159                  opcode);
24160       return NULL;
24161     }
24162
24163   defn = opcode_definitions[opcode];
24164   arg = read_unsigned_leb128 (abfd, defn, &bytes_read);
24165   defn += bytes_read;
24166
24167   for (i = 0; i < arg; ++i)
24168     {
24169       mac_ptr = skip_form_bytes (abfd, mac_ptr, mac_end,
24170                                  (enum dwarf_form) defn[i], offset_size,
24171                                  section);
24172       if (mac_ptr == NULL)
24173         {
24174           /* skip_form_bytes already issued the complaint.  */
24175           return NULL;
24176         }
24177     }
24178
24179   return mac_ptr;
24180 }
24181
24182 /* A helper function which parses the header of a macro section.
24183    If the macro section is the extended (for now called "GNU") type,
24184    then this updates *OFFSET_SIZE.  Returns a pointer to just after
24185    the header, or issues a complaint and returns NULL on error.  */
24186
24187 static const gdb_byte *
24188 dwarf_parse_macro_header (const gdb_byte **opcode_definitions,
24189                           bfd *abfd,
24190                           const gdb_byte *mac_ptr,
24191                           unsigned int *offset_size,
24192                           int section_is_gnu)
24193 {
24194   memset (opcode_definitions, 0, 256 * sizeof (gdb_byte *));
24195
24196   if (section_is_gnu)
24197     {
24198       unsigned int version, flags;
24199
24200       version = read_2_bytes (abfd, mac_ptr);
24201       if (version != 4 && version != 5)
24202         {
24203           complaint (_("unrecognized version `%d' in .debug_macro section"),
24204                      version);
24205           return NULL;
24206         }
24207       mac_ptr += 2;
24208
24209       flags = read_1_byte (abfd, mac_ptr);
24210       ++mac_ptr;
24211       *offset_size = (flags & 1) ? 8 : 4;
24212
24213       if ((flags & 2) != 0)
24214         /* We don't need the line table offset.  */
24215         mac_ptr += *offset_size;
24216
24217       /* Vendor opcode descriptions.  */
24218       if ((flags & 4) != 0)
24219         {
24220           unsigned int i, count;
24221
24222           count = read_1_byte (abfd, mac_ptr);
24223           ++mac_ptr;
24224           for (i = 0; i < count; ++i)
24225             {
24226               unsigned int opcode, bytes_read;
24227               unsigned long arg;
24228
24229               opcode = read_1_byte (abfd, mac_ptr);
24230               ++mac_ptr;
24231               opcode_definitions[opcode] = mac_ptr;
24232               arg = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24233               mac_ptr += bytes_read;
24234               mac_ptr += arg;
24235             }
24236         }
24237     }
24238
24239   return mac_ptr;
24240 }
24241
24242 /* A helper for dwarf_decode_macros that handles the GNU extensions,
24243    including DW_MACRO_import.  */
24244
24245 static void
24246 dwarf_decode_macro_bytes (struct dwarf2_cu *cu,
24247                           bfd *abfd,
24248                           const gdb_byte *mac_ptr, const gdb_byte *mac_end,
24249                           struct macro_source_file *current_file,
24250                           struct line_header *lh,
24251                           struct dwarf2_section_info *section,
24252                           int section_is_gnu, int section_is_dwz,
24253                           unsigned int offset_size,
24254                           htab_t include_hash)
24255 {
24256   struct dwarf2_per_objfile *dwarf2_per_objfile
24257     = cu->per_cu->dwarf2_per_objfile;
24258   struct objfile *objfile = dwarf2_per_objfile->objfile;
24259   enum dwarf_macro_record_type macinfo_type;
24260   int at_commandline;
24261   const gdb_byte *opcode_definitions[256];
24262
24263   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24264                                       &offset_size, section_is_gnu);
24265   if (mac_ptr == NULL)
24266     {
24267       /* We already issued a complaint.  */
24268       return;
24269     }
24270
24271   /* Determines if GDB is still before first DW_MACINFO_start_file.  If true
24272      GDB is still reading the definitions from command line.  First
24273      DW_MACINFO_start_file will need to be ignored as it was already executed
24274      to create CURRENT_FILE for the main source holding also the command line
24275      definitions.  On first met DW_MACINFO_start_file this flag is reset to
24276      normally execute all the remaining DW_MACINFO_start_file macinfos.  */
24277
24278   at_commandline = 1;
24279
24280   do
24281     {
24282       /* Do we at least have room for a macinfo type byte?  */
24283       if (mac_ptr >= mac_end)
24284         {
24285           dwarf2_section_buffer_overflow_complaint (section);
24286           break;
24287         }
24288
24289       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24290       mac_ptr++;
24291
24292       /* Note that we rely on the fact that the corresponding GNU and
24293          DWARF constants are the same.  */
24294       DIAGNOSTIC_PUSH
24295       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24296       switch (macinfo_type)
24297         {
24298           /* A zero macinfo type indicates the end of the macro
24299              information.  */
24300         case 0:
24301           break;
24302
24303         case DW_MACRO_define:
24304         case DW_MACRO_undef:
24305         case DW_MACRO_define_strp:
24306         case DW_MACRO_undef_strp:
24307         case DW_MACRO_define_sup:
24308         case DW_MACRO_undef_sup:
24309           {
24310             unsigned int bytes_read;
24311             int line;
24312             const char *body;
24313             int is_define;
24314
24315             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24316             mac_ptr += bytes_read;
24317
24318             if (macinfo_type == DW_MACRO_define
24319                 || macinfo_type == DW_MACRO_undef)
24320               {
24321                 body = read_direct_string (abfd, mac_ptr, &bytes_read);
24322                 mac_ptr += bytes_read;
24323               }
24324             else
24325               {
24326                 LONGEST str_offset;
24327
24328                 str_offset = read_offset_1 (abfd, mac_ptr, offset_size);
24329                 mac_ptr += offset_size;
24330
24331                 if (macinfo_type == DW_MACRO_define_sup
24332                     || macinfo_type == DW_MACRO_undef_sup
24333                     || section_is_dwz)
24334                   {
24335                     struct dwz_file *dwz
24336                       = dwarf2_get_dwz_file (dwarf2_per_objfile);
24337
24338                     body = read_indirect_string_from_dwz (objfile,
24339                                                           dwz, str_offset);
24340                   }
24341                 else
24342                   body = read_indirect_string_at_offset (dwarf2_per_objfile,
24343                                                          abfd, str_offset);
24344               }
24345
24346             is_define = (macinfo_type == DW_MACRO_define
24347                          || macinfo_type == DW_MACRO_define_strp
24348                          || macinfo_type == DW_MACRO_define_sup);
24349             if (! current_file)
24350               {
24351                 /* DWARF violation as no main source is present.  */
24352                 complaint (_("debug info with no main source gives macro %s "
24353                              "on line %d: %s"),
24354                            is_define ? _("definition") : _("undefinition"),
24355                            line, body);
24356                 break;
24357               }
24358             if ((line == 0 && !at_commandline)
24359                 || (line != 0 && at_commandline))
24360               complaint (_("debug info gives %s macro %s with %s line %d: %s"),
24361                          at_commandline ? _("command-line") : _("in-file"),
24362                          is_define ? _("definition") : _("undefinition"),
24363                          line == 0 ? _("zero") : _("non-zero"), line, body);
24364
24365             if (is_define)
24366               parse_macro_definition (current_file, line, body);
24367             else
24368               {
24369                 gdb_assert (macinfo_type == DW_MACRO_undef
24370                             || macinfo_type == DW_MACRO_undef_strp
24371                             || macinfo_type == DW_MACRO_undef_sup);
24372                 macro_undef (current_file, line, body);
24373               }
24374           }
24375           break;
24376
24377         case DW_MACRO_start_file:
24378           {
24379             unsigned int bytes_read;
24380             int line, file;
24381
24382             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24383             mac_ptr += bytes_read;
24384             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24385             mac_ptr += bytes_read;
24386
24387             if ((line == 0 && !at_commandline)
24388                 || (line != 0 && at_commandline))
24389               complaint (_("debug info gives source %d included "
24390                            "from %s at %s line %d"),
24391                          file, at_commandline ? _("command-line") : _("file"),
24392                          line == 0 ? _("zero") : _("non-zero"), line);
24393
24394             if (at_commandline)
24395               {
24396                 /* This DW_MACRO_start_file was executed in the
24397                    pass one.  */
24398                 at_commandline = 0;
24399               }
24400             else
24401               current_file = macro_start_file (cu, file, line, current_file,
24402                                                lh);
24403           }
24404           break;
24405
24406         case DW_MACRO_end_file:
24407           if (! current_file)
24408             complaint (_("macro debug info has an unmatched "
24409                          "`close_file' directive"));
24410           else
24411             {
24412               current_file = current_file->included_by;
24413               if (! current_file)
24414                 {
24415                   enum dwarf_macro_record_type next_type;
24416
24417                   /* GCC circa March 2002 doesn't produce the zero
24418                      type byte marking the end of the compilation
24419                      unit.  Complain if it's not there, but exit no
24420                      matter what.  */
24421
24422                   /* Do we at least have room for a macinfo type byte?  */
24423                   if (mac_ptr >= mac_end)
24424                     {
24425                       dwarf2_section_buffer_overflow_complaint (section);
24426                       return;
24427                     }
24428
24429                   /* We don't increment mac_ptr here, so this is just
24430                      a look-ahead.  */
24431                   next_type
24432                     = (enum dwarf_macro_record_type) read_1_byte (abfd,
24433                                                                   mac_ptr);
24434                   if (next_type != 0)
24435                     complaint (_("no terminating 0-type entry for "
24436                                  "macros in `.debug_macinfo' section"));
24437
24438                   return;
24439                 }
24440             }
24441           break;
24442
24443         case DW_MACRO_import:
24444         case DW_MACRO_import_sup:
24445           {
24446             LONGEST offset;
24447             void **slot;
24448             bfd *include_bfd = abfd;
24449             struct dwarf2_section_info *include_section = section;
24450             const gdb_byte *include_mac_end = mac_end;
24451             int is_dwz = section_is_dwz;
24452             const gdb_byte *new_mac_ptr;
24453
24454             offset = read_offset_1 (abfd, mac_ptr, offset_size);
24455             mac_ptr += offset_size;
24456
24457             if (macinfo_type == DW_MACRO_import_sup)
24458               {
24459                 struct dwz_file *dwz = dwarf2_get_dwz_file (dwarf2_per_objfile);
24460
24461                 dwarf2_read_section (objfile, &dwz->macro);
24462
24463                 include_section = &dwz->macro;
24464                 include_bfd = get_section_bfd_owner (include_section);
24465                 include_mac_end = dwz->macro.buffer + dwz->macro.size;
24466                 is_dwz = 1;
24467               }
24468
24469             new_mac_ptr = include_section->buffer + offset;
24470             slot = htab_find_slot (include_hash, new_mac_ptr, INSERT);
24471
24472             if (*slot != NULL)
24473               {
24474                 /* This has actually happened; see
24475                    http://sourceware.org/bugzilla/show_bug.cgi?id=13568.  */
24476                 complaint (_("recursive DW_MACRO_import in "
24477                              ".debug_macro section"));
24478               }
24479             else
24480               {
24481                 *slot = (void *) new_mac_ptr;
24482
24483                 dwarf_decode_macro_bytes (cu, include_bfd, new_mac_ptr,
24484                                           include_mac_end, current_file, lh,
24485                                           section, section_is_gnu, is_dwz,
24486                                           offset_size, include_hash);
24487
24488                 htab_remove_elt (include_hash, (void *) new_mac_ptr);
24489               }
24490           }
24491           break;
24492
24493         case DW_MACINFO_vendor_ext:
24494           if (!section_is_gnu)
24495             {
24496               unsigned int bytes_read;
24497
24498               /* This reads the constant, but since we don't recognize
24499                  any vendor extensions, we ignore it.  */
24500               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24501               mac_ptr += bytes_read;
24502               read_direct_string (abfd, mac_ptr, &bytes_read);
24503               mac_ptr += bytes_read;
24504
24505               /* We don't recognize any vendor extensions.  */
24506               break;
24507             }
24508           /* FALLTHROUGH */
24509
24510         default:
24511           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24512                                          mac_ptr, mac_end, abfd, offset_size,
24513                                          section);
24514           if (mac_ptr == NULL)
24515             return;
24516           break;
24517         }
24518       DIAGNOSTIC_POP
24519     } while (macinfo_type != 0);
24520 }
24521
24522 static void
24523 dwarf_decode_macros (struct dwarf2_cu *cu, unsigned int offset,
24524                      int section_is_gnu)
24525 {
24526   struct dwarf2_per_objfile *dwarf2_per_objfile
24527     = cu->per_cu->dwarf2_per_objfile;
24528   struct objfile *objfile = dwarf2_per_objfile->objfile;
24529   struct line_header *lh = cu->line_header;
24530   bfd *abfd;
24531   const gdb_byte *mac_ptr, *mac_end;
24532   struct macro_source_file *current_file = 0;
24533   enum dwarf_macro_record_type macinfo_type;
24534   unsigned int offset_size = cu->header.offset_size;
24535   const gdb_byte *opcode_definitions[256];
24536   void **slot;
24537   struct dwarf2_section_info *section;
24538   const char *section_name;
24539
24540   if (cu->dwo_unit != NULL)
24541     {
24542       if (section_is_gnu)
24543         {
24544           section = &cu->dwo_unit->dwo_file->sections.macro;
24545           section_name = ".debug_macro.dwo";
24546         }
24547       else
24548         {
24549           section = &cu->dwo_unit->dwo_file->sections.macinfo;
24550           section_name = ".debug_macinfo.dwo";
24551         }
24552     }
24553   else
24554     {
24555       if (section_is_gnu)
24556         {
24557           section = &dwarf2_per_objfile->macro;
24558           section_name = ".debug_macro";
24559         }
24560       else
24561         {
24562           section = &dwarf2_per_objfile->macinfo;
24563           section_name = ".debug_macinfo";
24564         }
24565     }
24566
24567   dwarf2_read_section (objfile, section);
24568   if (section->buffer == NULL)
24569     {
24570       complaint (_("missing %s section"), section_name);
24571       return;
24572     }
24573   abfd = get_section_bfd_owner (section);
24574
24575   /* First pass: Find the name of the base filename.
24576      This filename is needed in order to process all macros whose definition
24577      (or undefinition) comes from the command line.  These macros are defined
24578      before the first DW_MACINFO_start_file entry, and yet still need to be
24579      associated to the base file.
24580
24581      To determine the base file name, we scan the macro definitions until we
24582      reach the first DW_MACINFO_start_file entry.  We then initialize
24583      CURRENT_FILE accordingly so that any macro definition found before the
24584      first DW_MACINFO_start_file can still be associated to the base file.  */
24585
24586   mac_ptr = section->buffer + offset;
24587   mac_end = section->buffer + section->size;
24588
24589   mac_ptr = dwarf_parse_macro_header (opcode_definitions, abfd, mac_ptr,
24590                                       &offset_size, section_is_gnu);
24591   if (mac_ptr == NULL)
24592     {
24593       /* We already issued a complaint.  */
24594       return;
24595     }
24596
24597   do
24598     {
24599       /* Do we at least have room for a macinfo type byte?  */
24600       if (mac_ptr >= mac_end)
24601         {
24602           /* Complaint is printed during the second pass as GDB will probably
24603              stop the first pass earlier upon finding
24604              DW_MACINFO_start_file.  */
24605           break;
24606         }
24607
24608       macinfo_type = (enum dwarf_macro_record_type) read_1_byte (abfd, mac_ptr);
24609       mac_ptr++;
24610
24611       /* Note that we rely on the fact that the corresponding GNU and
24612          DWARF constants are the same.  */
24613       DIAGNOSTIC_PUSH
24614       DIAGNOSTIC_IGNORE_SWITCH_DIFFERENT_ENUM_TYPES
24615       switch (macinfo_type)
24616         {
24617           /* A zero macinfo type indicates the end of the macro
24618              information.  */
24619         case 0:
24620           break;
24621
24622         case DW_MACRO_define:
24623         case DW_MACRO_undef:
24624           /* Only skip the data by MAC_PTR.  */
24625           {
24626             unsigned int bytes_read;
24627
24628             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24629             mac_ptr += bytes_read;
24630             read_direct_string (abfd, mac_ptr, &bytes_read);
24631             mac_ptr += bytes_read;
24632           }
24633           break;
24634
24635         case DW_MACRO_start_file:
24636           {
24637             unsigned int bytes_read;
24638             int line, file;
24639
24640             line = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24641             mac_ptr += bytes_read;
24642             file = read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24643             mac_ptr += bytes_read;
24644
24645             current_file = macro_start_file (cu, file, line, current_file, lh);
24646           }
24647           break;
24648
24649         case DW_MACRO_end_file:
24650           /* No data to skip by MAC_PTR.  */
24651           break;
24652
24653         case DW_MACRO_define_strp:
24654         case DW_MACRO_undef_strp:
24655         case DW_MACRO_define_sup:
24656         case DW_MACRO_undef_sup:
24657           {
24658             unsigned int bytes_read;
24659
24660             read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24661             mac_ptr += bytes_read;
24662             mac_ptr += offset_size;
24663           }
24664           break;
24665
24666         case DW_MACRO_import:
24667         case DW_MACRO_import_sup:
24668           /* Note that, according to the spec, a transparent include
24669              chain cannot call DW_MACRO_start_file.  So, we can just
24670              skip this opcode.  */
24671           mac_ptr += offset_size;
24672           break;
24673
24674         case DW_MACINFO_vendor_ext:
24675           /* Only skip the data by MAC_PTR.  */
24676           if (!section_is_gnu)
24677             {
24678               unsigned int bytes_read;
24679
24680               read_unsigned_leb128 (abfd, mac_ptr, &bytes_read);
24681               mac_ptr += bytes_read;
24682               read_direct_string (abfd, mac_ptr, &bytes_read);
24683               mac_ptr += bytes_read;
24684             }
24685           /* FALLTHROUGH */
24686
24687         default:
24688           mac_ptr = skip_unknown_opcode (macinfo_type, opcode_definitions,
24689                                          mac_ptr, mac_end, abfd, offset_size,
24690                                          section);
24691           if (mac_ptr == NULL)
24692             return;
24693           break;
24694         }
24695       DIAGNOSTIC_POP
24696     } while (macinfo_type != 0 && current_file == NULL);
24697
24698   /* Second pass: Process all entries.
24699
24700      Use the AT_COMMAND_LINE flag to determine whether we are still processing
24701      command-line macro definitions/undefinitions.  This flag is unset when we
24702      reach the first DW_MACINFO_start_file entry.  */
24703
24704   htab_up include_hash (htab_create_alloc (1, htab_hash_pointer,
24705                                            htab_eq_pointer,
24706                                            NULL, xcalloc, xfree));
24707   mac_ptr = section->buffer + offset;
24708   slot = htab_find_slot (include_hash.get (), mac_ptr, INSERT);
24709   *slot = (void *) mac_ptr;
24710   dwarf_decode_macro_bytes (cu, abfd, mac_ptr, mac_end,
24711                             current_file, lh, section,
24712                             section_is_gnu, 0, offset_size,
24713                             include_hash.get ());
24714 }
24715
24716 /* Check if the attribute's form is a DW_FORM_block*
24717    if so return true else false.  */
24718
24719 static int
24720 attr_form_is_block (const struct attribute *attr)
24721 {
24722   return (attr == NULL ? 0 :
24723       attr->form == DW_FORM_block1
24724       || attr->form == DW_FORM_block2
24725       || attr->form == DW_FORM_block4
24726       || attr->form == DW_FORM_block
24727       || attr->form == DW_FORM_exprloc);
24728 }
24729
24730 /* Return non-zero if ATTR's value is a section offset --- classes
24731    lineptr, loclistptr, macptr or rangelistptr --- or zero, otherwise.
24732    You may use DW_UNSND (attr) to retrieve such offsets.
24733
24734    Section 7.5.4, "Attribute Encodings", explains that no attribute
24735    may have a value that belongs to more than one of these classes; it
24736    would be ambiguous if we did, because we use the same forms for all
24737    of them.  */
24738
24739 static int
24740 attr_form_is_section_offset (const struct attribute *attr)
24741 {
24742   return (attr->form == DW_FORM_data4
24743           || attr->form == DW_FORM_data8
24744           || attr->form == DW_FORM_sec_offset);
24745 }
24746
24747 /* Return non-zero if ATTR's value falls in the 'constant' class, or
24748    zero otherwise.  When this function returns true, you can apply
24749    dwarf2_get_attr_constant_value to it.
24750
24751    However, note that for some attributes you must check
24752    attr_form_is_section_offset before using this test.  DW_FORM_data4
24753    and DW_FORM_data8 are members of both the constant class, and of
24754    the classes that contain offsets into other debug sections
24755    (lineptr, loclistptr, macptr or rangelistptr).  The DWARF spec says
24756    that, if an attribute's can be either a constant or one of the
24757    section offset classes, DW_FORM_data4 and DW_FORM_data8 should be
24758    taken as section offsets, not constants.
24759
24760    DW_FORM_data16 is not considered as dwarf2_get_attr_constant_value
24761    cannot handle that.  */
24762
24763 static int
24764 attr_form_is_constant (const struct attribute *attr)
24765 {
24766   switch (attr->form)
24767     {
24768     case DW_FORM_sdata:
24769     case DW_FORM_udata:
24770     case DW_FORM_data1:
24771     case DW_FORM_data2:
24772     case DW_FORM_data4:
24773     case DW_FORM_data8:
24774     case DW_FORM_implicit_const:
24775       return 1;
24776     default:
24777       return 0;
24778     }
24779 }
24780
24781
24782 /* DW_ADDR is always stored already as sect_offset; despite for the forms
24783    besides DW_FORM_ref_addr it is stored as cu_offset in the DWARF file.  */
24784
24785 static int
24786 attr_form_is_ref (const struct attribute *attr)
24787 {
24788   switch (attr->form)
24789     {
24790     case DW_FORM_ref_addr:
24791     case DW_FORM_ref1:
24792     case DW_FORM_ref2:
24793     case DW_FORM_ref4:
24794     case DW_FORM_ref8:
24795     case DW_FORM_ref_udata:
24796     case DW_FORM_GNU_ref_alt:
24797       return 1;
24798     default:
24799       return 0;
24800     }
24801 }
24802
24803 /* Return the .debug_loc section to use for CU.
24804    For DWO files use .debug_loc.dwo.  */
24805
24806 static struct dwarf2_section_info *
24807 cu_debug_loc_section (struct dwarf2_cu *cu)
24808 {
24809   struct dwarf2_per_objfile *dwarf2_per_objfile
24810     = cu->per_cu->dwarf2_per_objfile;
24811
24812   if (cu->dwo_unit)
24813     {
24814       struct dwo_sections *sections = &cu->dwo_unit->dwo_file->sections;
24815       
24816       return cu->header.version >= 5 ? &sections->loclists : &sections->loc;
24817     }
24818   return (cu->header.version >= 5 ? &dwarf2_per_objfile->loclists
24819                                   : &dwarf2_per_objfile->loc);
24820 }
24821
24822 /* A helper function that fills in a dwarf2_loclist_baton.  */
24823
24824 static void
24825 fill_in_loclist_baton (struct dwarf2_cu *cu,
24826                        struct dwarf2_loclist_baton *baton,
24827                        const struct attribute *attr)
24828 {
24829   struct dwarf2_per_objfile *dwarf2_per_objfile
24830     = cu->per_cu->dwarf2_per_objfile;
24831   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24832
24833   dwarf2_read_section (dwarf2_per_objfile->objfile, section);
24834
24835   baton->per_cu = cu->per_cu;
24836   gdb_assert (baton->per_cu);
24837   /* We don't know how long the location list is, but make sure we
24838      don't run off the edge of the section.  */
24839   baton->size = section->size - DW_UNSND (attr);
24840   baton->data = section->buffer + DW_UNSND (attr);
24841   baton->base_address = cu->base_address;
24842   baton->from_dwo = cu->dwo_unit != NULL;
24843 }
24844
24845 static void
24846 dwarf2_symbol_mark_computed (const struct attribute *attr, struct symbol *sym,
24847                              struct dwarf2_cu *cu, int is_block)
24848 {
24849   struct dwarf2_per_objfile *dwarf2_per_objfile
24850     = cu->per_cu->dwarf2_per_objfile;
24851   struct objfile *objfile = dwarf2_per_objfile->objfile;
24852   struct dwarf2_section_info *section = cu_debug_loc_section (cu);
24853
24854   if (attr_form_is_section_offset (attr)
24855       /* .debug_loc{,.dwo} may not exist at all, or the offset may be outside
24856          the section.  If so, fall through to the complaint in the
24857          other branch.  */
24858       && DW_UNSND (attr) < dwarf2_section_size (objfile, section))
24859     {
24860       struct dwarf2_loclist_baton *baton;
24861
24862       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_loclist_baton);
24863
24864       fill_in_loclist_baton (cu, baton, attr);
24865
24866       if (cu->base_known == 0)
24867         complaint (_("Location list used without "
24868                      "specifying the CU base address."));
24869
24870       SYMBOL_ACLASS_INDEX (sym) = (is_block
24871                                    ? dwarf2_loclist_block_index
24872                                    : dwarf2_loclist_index);
24873       SYMBOL_LOCATION_BATON (sym) = baton;
24874     }
24875   else
24876     {
24877       struct dwarf2_locexpr_baton *baton;
24878
24879       baton = XOBNEW (&objfile->objfile_obstack, struct dwarf2_locexpr_baton);
24880       baton->per_cu = cu->per_cu;
24881       gdb_assert (baton->per_cu);
24882
24883       if (attr_form_is_block (attr))
24884         {
24885           /* Note that we're just copying the block's data pointer
24886              here, not the actual data.  We're still pointing into the
24887              info_buffer for SYM's objfile; right now we never release
24888              that buffer, but when we do clean up properly this may
24889              need to change.  */
24890           baton->size = DW_BLOCK (attr)->size;
24891           baton->data = DW_BLOCK (attr)->data;
24892         }
24893       else
24894         {
24895           dwarf2_invalid_attrib_class_complaint ("location description",
24896                                                  SYMBOL_NATURAL_NAME (sym));
24897           baton->size = 0;
24898         }
24899
24900       SYMBOL_ACLASS_INDEX (sym) = (is_block
24901                                    ? dwarf2_locexpr_block_index
24902                                    : dwarf2_locexpr_index);
24903       SYMBOL_LOCATION_BATON (sym) = baton;
24904     }
24905 }
24906
24907 /* Return the OBJFILE associated with the compilation unit CU.  If CU
24908    came from a separate debuginfo file, then the master objfile is
24909    returned.  */
24910
24911 struct objfile *
24912 dwarf2_per_cu_objfile (struct dwarf2_per_cu_data *per_cu)
24913 {
24914   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24915
24916   /* Return the master objfile, so that we can report and look up the
24917      correct file containing this variable.  */
24918   if (objfile->separate_debug_objfile_backlink)
24919     objfile = objfile->separate_debug_objfile_backlink;
24920
24921   return objfile;
24922 }
24923
24924 /* Return comp_unit_head for PER_CU, either already available in PER_CU->CU
24925    (CU_HEADERP is unused in such case) or prepare a temporary copy at
24926    CU_HEADERP first.  */
24927
24928 static const struct comp_unit_head *
24929 per_cu_header_read_in (struct comp_unit_head *cu_headerp,
24930                        struct dwarf2_per_cu_data *per_cu)
24931 {
24932   const gdb_byte *info_ptr;
24933
24934   if (per_cu->cu)
24935     return &per_cu->cu->header;
24936
24937   info_ptr = per_cu->section->buffer + to_underlying (per_cu->sect_off);
24938
24939   memset (cu_headerp, 0, sizeof (*cu_headerp));
24940   read_comp_unit_head (cu_headerp, info_ptr, per_cu->section,
24941                        rcuh_kind::COMPILE);
24942
24943   return cu_headerp;
24944 }
24945
24946 /* Return the address size given in the compilation unit header for CU.  */
24947
24948 int
24949 dwarf2_per_cu_addr_size (struct dwarf2_per_cu_data *per_cu)
24950 {
24951   struct comp_unit_head cu_header_local;
24952   const struct comp_unit_head *cu_headerp;
24953
24954   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24955
24956   return cu_headerp->addr_size;
24957 }
24958
24959 /* Return the offset size given in the compilation unit header for CU.  */
24960
24961 int
24962 dwarf2_per_cu_offset_size (struct dwarf2_per_cu_data *per_cu)
24963 {
24964   struct comp_unit_head cu_header_local;
24965   const struct comp_unit_head *cu_headerp;
24966
24967   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24968
24969   return cu_headerp->offset_size;
24970 }
24971
24972 /* See its dwarf2loc.h declaration.  */
24973
24974 int
24975 dwarf2_per_cu_ref_addr_size (struct dwarf2_per_cu_data *per_cu)
24976 {
24977   struct comp_unit_head cu_header_local;
24978   const struct comp_unit_head *cu_headerp;
24979
24980   cu_headerp = per_cu_header_read_in (&cu_header_local, per_cu);
24981
24982   if (cu_headerp->version == 2)
24983     return cu_headerp->addr_size;
24984   else
24985     return cu_headerp->offset_size;
24986 }
24987
24988 /* Return the text offset of the CU.  The returned offset comes from
24989    this CU's objfile.  If this objfile came from a separate debuginfo
24990    file, then the offset may be different from the corresponding
24991    offset in the parent objfile.  */
24992
24993 CORE_ADDR
24994 dwarf2_per_cu_text_offset (struct dwarf2_per_cu_data *per_cu)
24995 {
24996   struct objfile *objfile = per_cu->dwarf2_per_objfile->objfile;
24997
24998   return ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
24999 }
25000
25001 /* Return DWARF version number of PER_CU.  */
25002
25003 short
25004 dwarf2_version (struct dwarf2_per_cu_data *per_cu)
25005 {
25006   return per_cu->dwarf_version;
25007 }
25008
25009 /* Locate the .debug_info compilation unit from CU's objfile which contains
25010    the DIE at OFFSET.  Raises an error on failure.  */
25011
25012 static struct dwarf2_per_cu_data *
25013 dwarf2_find_containing_comp_unit (sect_offset sect_off,
25014                                   unsigned int offset_in_dwz,
25015                                   struct dwarf2_per_objfile *dwarf2_per_objfile)
25016 {
25017   struct dwarf2_per_cu_data *this_cu;
25018   int low, high;
25019   const sect_offset *cu_off;
25020
25021   low = 0;
25022   high = dwarf2_per_objfile->all_comp_units.size () - 1;
25023   while (high > low)
25024     {
25025       struct dwarf2_per_cu_data *mid_cu;
25026       int mid = low + (high - low) / 2;
25027
25028       mid_cu = dwarf2_per_objfile->all_comp_units[mid];
25029       cu_off = &mid_cu->sect_off;
25030       if (mid_cu->is_dwz > offset_in_dwz
25031           || (mid_cu->is_dwz == offset_in_dwz && *cu_off >= sect_off))
25032         high = mid;
25033       else
25034         low = mid + 1;
25035     }
25036   gdb_assert (low == high);
25037   this_cu = dwarf2_per_objfile->all_comp_units[low];
25038   cu_off = &this_cu->sect_off;
25039   if (this_cu->is_dwz != offset_in_dwz || *cu_off > sect_off)
25040     {
25041       if (low == 0 || this_cu->is_dwz != offset_in_dwz)
25042         error (_("Dwarf Error: could not find partial DIE containing "
25043                "offset %s [in module %s]"),
25044                sect_offset_str (sect_off),
25045                bfd_get_filename (dwarf2_per_objfile->objfile->obfd));
25046
25047       gdb_assert (dwarf2_per_objfile->all_comp_units[low-1]->sect_off
25048                   <= sect_off);
25049       return dwarf2_per_objfile->all_comp_units[low-1];
25050     }
25051   else
25052     {
25053       this_cu = dwarf2_per_objfile->all_comp_units[low];
25054       if (low == dwarf2_per_objfile->all_comp_units.size () - 1
25055           && sect_off >= this_cu->sect_off + this_cu->length)
25056         error (_("invalid dwarf2 offset %s"), sect_offset_str (sect_off));
25057       gdb_assert (sect_off < this_cu->sect_off + this_cu->length);
25058       return this_cu;
25059     }
25060 }
25061
25062 /* Initialize dwarf2_cu CU, owned by PER_CU.  */
25063
25064 dwarf2_cu::dwarf2_cu (struct dwarf2_per_cu_data *per_cu_)
25065   : per_cu (per_cu_),
25066     mark (0),
25067     has_loclist (0),
25068     checked_producer (0),
25069     producer_is_gxx_lt_4_6 (0),
25070     producer_is_gcc_lt_4_3 (0),
25071     producer_is_icc_lt_14 (0),
25072     processing_has_namespace_info (0)
25073 {
25074   per_cu->cu = this;
25075 }
25076
25077 /* Destroy a dwarf2_cu.  */
25078
25079 dwarf2_cu::~dwarf2_cu ()
25080 {
25081   per_cu->cu = NULL;
25082 }
25083
25084 /* Initialize basic fields of dwarf_cu CU according to DIE COMP_UNIT_DIE.  */
25085
25086 static void
25087 prepare_one_comp_unit (struct dwarf2_cu *cu, struct die_info *comp_unit_die,
25088                        enum language pretend_language)
25089 {
25090   struct attribute *attr;
25091
25092   /* Set the language we're debugging.  */
25093   attr = dwarf2_attr (comp_unit_die, DW_AT_language, cu);
25094   if (attr)
25095     set_cu_language (DW_UNSND (attr), cu);
25096   else
25097     {
25098       cu->language = pretend_language;
25099       cu->language_defn = language_def (cu->language);
25100     }
25101
25102   cu->producer = dwarf2_string_attr (comp_unit_die, DW_AT_producer, cu);
25103 }
25104
25105 /* Increase the age counter on each cached compilation unit, and free
25106    any that are too old.  */
25107
25108 static void
25109 age_cached_comp_units (struct dwarf2_per_objfile *dwarf2_per_objfile)
25110 {
25111   struct dwarf2_per_cu_data *per_cu, **last_chain;
25112
25113   dwarf2_clear_marks (dwarf2_per_objfile->read_in_chain);
25114   per_cu = dwarf2_per_objfile->read_in_chain;
25115   while (per_cu != NULL)
25116     {
25117       per_cu->cu->last_used ++;
25118       if (per_cu->cu->last_used <= dwarf_max_cache_age)
25119         dwarf2_mark (per_cu->cu);
25120       per_cu = per_cu->cu->read_in_chain;
25121     }
25122
25123   per_cu = dwarf2_per_objfile->read_in_chain;
25124   last_chain = &dwarf2_per_objfile->read_in_chain;
25125   while (per_cu != NULL)
25126     {
25127       struct dwarf2_per_cu_data *next_cu;
25128
25129       next_cu = per_cu->cu->read_in_chain;
25130
25131       if (!per_cu->cu->mark)
25132         {
25133           delete per_cu->cu;
25134           *last_chain = next_cu;
25135         }
25136       else
25137         last_chain = &per_cu->cu->read_in_chain;
25138
25139       per_cu = next_cu;
25140     }
25141 }
25142
25143 /* Remove a single compilation unit from the cache.  */
25144
25145 static void
25146 free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu)
25147 {
25148   struct dwarf2_per_cu_data *per_cu, **last_chain;
25149   struct dwarf2_per_objfile *dwarf2_per_objfile
25150     = target_per_cu->dwarf2_per_objfile;
25151
25152   per_cu = dwarf2_per_objfile->read_in_chain;
25153   last_chain = &dwarf2_per_objfile->read_in_chain;
25154   while (per_cu != NULL)
25155     {
25156       struct dwarf2_per_cu_data *next_cu;
25157
25158       next_cu = per_cu->cu->read_in_chain;
25159
25160       if (per_cu == target_per_cu)
25161         {
25162           delete per_cu->cu;
25163           per_cu->cu = NULL;
25164           *last_chain = next_cu;
25165           break;
25166         }
25167       else
25168         last_chain = &per_cu->cu->read_in_chain;
25169
25170       per_cu = next_cu;
25171     }
25172 }
25173
25174 /* Cleanup function for the dwarf2_per_objfile data.  */
25175
25176 static void
25177 dwarf2_free_objfile (struct objfile *objfile, void *datum)
25178 {
25179   struct dwarf2_per_objfile *dwarf2_per_objfile
25180     = static_cast<struct dwarf2_per_objfile *> (datum);
25181
25182   delete dwarf2_per_objfile;
25183 }
25184
25185 /* A set of CU "per_cu" pointer, DIE offset, and GDB type pointer.
25186    We store these in a hash table separate from the DIEs, and preserve them
25187    when the DIEs are flushed out of cache.
25188
25189    The CU "per_cu" pointer is needed because offset alone is not enough to
25190    uniquely identify the type.  A file may have multiple .debug_types sections,
25191    or the type may come from a DWO file.  Furthermore, while it's more logical
25192    to use per_cu->section+offset, with Fission the section with the data is in
25193    the DWO file but we don't know that section at the point we need it.
25194    We have to use something in dwarf2_per_cu_data (or the pointer to it)
25195    because we can enter the lookup routine, get_die_type_at_offset, from
25196    outside this file, and thus won't necessarily have PER_CU->cu.
25197    Fortunately, PER_CU is stable for the life of the objfile.  */
25198
25199 struct dwarf2_per_cu_offset_and_type
25200 {
25201   const struct dwarf2_per_cu_data *per_cu;
25202   sect_offset sect_off;
25203   struct type *type;
25204 };
25205
25206 /* Hash function for a dwarf2_per_cu_offset_and_type.  */
25207
25208 static hashval_t
25209 per_cu_offset_and_type_hash (const void *item)
25210 {
25211   const struct dwarf2_per_cu_offset_and_type *ofs
25212     = (const struct dwarf2_per_cu_offset_and_type *) item;
25213
25214   return (uintptr_t) ofs->per_cu + to_underlying (ofs->sect_off);
25215 }
25216
25217 /* Equality function for a dwarf2_per_cu_offset_and_type.  */
25218
25219 static int
25220 per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
25221 {
25222   const struct dwarf2_per_cu_offset_and_type *ofs_lhs
25223     = (const struct dwarf2_per_cu_offset_and_type *) item_lhs;
25224   const struct dwarf2_per_cu_offset_and_type *ofs_rhs
25225     = (const struct dwarf2_per_cu_offset_and_type *) item_rhs;
25226
25227   return (ofs_lhs->per_cu == ofs_rhs->per_cu
25228           && ofs_lhs->sect_off == ofs_rhs->sect_off);
25229 }
25230
25231 /* Set the type associated with DIE to TYPE.  Save it in CU's hash
25232    table if necessary.  For convenience, return TYPE.
25233
25234    The DIEs reading must have careful ordering to:
25235     * Not cause infite loops trying to read in DIEs as a prerequisite for
25236       reading current DIE.
25237     * Not trying to dereference contents of still incompletely read in types
25238       while reading in other DIEs.
25239     * Enable referencing still incompletely read in types just by a pointer to
25240       the type without accessing its fields.
25241
25242    Therefore caller should follow these rules:
25243      * Try to fetch any prerequisite types we may need to build this DIE type
25244        before building the type and calling set_die_type.
25245      * After building type call set_die_type for current DIE as soon as
25246        possible before fetching more types to complete the current type.
25247      * Make the type as complete as possible before fetching more types.  */
25248
25249 static struct type *
25250 set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
25251 {
25252   struct dwarf2_per_objfile *dwarf2_per_objfile
25253     = cu->per_cu->dwarf2_per_objfile;
25254   struct dwarf2_per_cu_offset_and_type **slot, ofs;
25255   struct objfile *objfile = dwarf2_per_objfile->objfile;
25256   struct attribute *attr;
25257   struct dynamic_prop prop;
25258
25259   /* For Ada types, make sure that the gnat-specific data is always
25260      initialized (if not already set).  There are a few types where
25261      we should not be doing so, because the type-specific area is
25262      already used to hold some other piece of info (eg: TYPE_CODE_FLT
25263      where the type-specific area is used to store the floatformat).
25264      But this is not a problem, because the gnat-specific information
25265      is actually not needed for these types.  */
25266   if (need_gnat_info (cu)
25267       && TYPE_CODE (type) != TYPE_CODE_FUNC
25268       && TYPE_CODE (type) != TYPE_CODE_FLT
25269       && TYPE_CODE (type) != TYPE_CODE_METHODPTR
25270       && TYPE_CODE (type) != TYPE_CODE_MEMBERPTR
25271       && TYPE_CODE (type) != TYPE_CODE_METHOD
25272       && !HAVE_GNAT_AUX_INFO (type))
25273     INIT_GNAT_SPECIFIC (type);
25274
25275   /* Read DW_AT_allocated and set in type.  */
25276   attr = dwarf2_attr (die, DW_AT_allocated, cu);
25277   if (attr_form_is_block (attr))
25278     {
25279       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25280         add_dyn_prop (DYN_PROP_ALLOCATED, prop, type);
25281     }
25282   else if (attr != NULL)
25283     {
25284       complaint (_("DW_AT_allocated has the wrong form (%s) at DIE %s"),
25285                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25286                  sect_offset_str (die->sect_off));
25287     }
25288
25289   /* Read DW_AT_associated and set in type.  */
25290   attr = dwarf2_attr (die, DW_AT_associated, cu);
25291   if (attr_form_is_block (attr))
25292     {
25293       if (attr_to_dynamic_prop (attr, die, cu, &prop))
25294         add_dyn_prop (DYN_PROP_ASSOCIATED, prop, type);
25295     }
25296   else if (attr != NULL)
25297     {
25298       complaint (_("DW_AT_associated has the wrong form (%s) at DIE %s"),
25299                  (attr != NULL ? dwarf_form_name (attr->form) : "n/a"),
25300                  sect_offset_str (die->sect_off));
25301     }
25302
25303   /* Read DW_AT_data_location and set in type.  */
25304   attr = dwarf2_attr (die, DW_AT_data_location, cu);
25305   if (attr_to_dynamic_prop (attr, die, cu, &prop))
25306     add_dyn_prop (DYN_PROP_DATA_LOCATION, prop, type);
25307
25308   if (dwarf2_per_objfile->die_type_hash == NULL)
25309     {
25310       dwarf2_per_objfile->die_type_hash =
25311         htab_create_alloc_ex (127,
25312                               per_cu_offset_and_type_hash,
25313                               per_cu_offset_and_type_eq,
25314                               NULL,
25315                               &objfile->objfile_obstack,
25316                               hashtab_obstack_allocate,
25317                               dummy_obstack_deallocate);
25318     }
25319
25320   ofs.per_cu = cu->per_cu;
25321   ofs.sect_off = die->sect_off;
25322   ofs.type = type;
25323   slot = (struct dwarf2_per_cu_offset_and_type **)
25324     htab_find_slot (dwarf2_per_objfile->die_type_hash, &ofs, INSERT);
25325   if (*slot)
25326     complaint (_("A problem internal to GDB: DIE %s has type already set"),
25327                sect_offset_str (die->sect_off));
25328   *slot = XOBNEW (&objfile->objfile_obstack,
25329                   struct dwarf2_per_cu_offset_and_type);
25330   **slot = ofs;
25331   return type;
25332 }
25333
25334 /* Look up the type for the die at SECT_OFF in PER_CU in die_type_hash,
25335    or return NULL if the die does not have a saved type.  */
25336
25337 static struct type *
25338 get_die_type_at_offset (sect_offset sect_off,
25339                         struct dwarf2_per_cu_data *per_cu)
25340 {
25341   struct dwarf2_per_cu_offset_and_type *slot, ofs;
25342   struct dwarf2_per_objfile *dwarf2_per_objfile = per_cu->dwarf2_per_objfile;
25343
25344   if (dwarf2_per_objfile->die_type_hash == NULL)
25345     return NULL;
25346
25347   ofs.per_cu = per_cu;
25348   ofs.sect_off = sect_off;
25349   slot = ((struct dwarf2_per_cu_offset_and_type *)
25350           htab_find (dwarf2_per_objfile->die_type_hash, &ofs));
25351   if (slot)
25352     return slot->type;
25353   else
25354     return NULL;
25355 }
25356
25357 /* Look up the type for DIE in CU in die_type_hash,
25358    or return NULL if DIE does not have a saved type.  */
25359
25360 static struct type *
25361 get_die_type (struct die_info *die, struct dwarf2_cu *cu)
25362 {
25363   return get_die_type_at_offset (die->sect_off, cu->per_cu);
25364 }
25365
25366 /* Add a dependence relationship from CU to REF_PER_CU.  */
25367
25368 static void
25369 dwarf2_add_dependence (struct dwarf2_cu *cu,
25370                        struct dwarf2_per_cu_data *ref_per_cu)
25371 {
25372   void **slot;
25373
25374   if (cu->dependencies == NULL)
25375     cu->dependencies
25376       = htab_create_alloc_ex (5, htab_hash_pointer, htab_eq_pointer,
25377                               NULL, &cu->comp_unit_obstack,
25378                               hashtab_obstack_allocate,
25379                               dummy_obstack_deallocate);
25380
25381   slot = htab_find_slot (cu->dependencies, ref_per_cu, INSERT);
25382   if (*slot == NULL)
25383     *slot = ref_per_cu;
25384 }
25385
25386 /* Subroutine of dwarf2_mark to pass to htab_traverse.
25387    Set the mark field in every compilation unit in the
25388    cache that we must keep because we are keeping CU.  */
25389
25390 static int
25391 dwarf2_mark_helper (void **slot, void *data)
25392 {
25393   struct dwarf2_per_cu_data *per_cu;
25394
25395   per_cu = (struct dwarf2_per_cu_data *) *slot;
25396
25397   /* cu->dependencies references may not yet have been ever read if QUIT aborts
25398      reading of the chain.  As such dependencies remain valid it is not much
25399      useful to track and undo them during QUIT cleanups.  */
25400   if (per_cu->cu == NULL)
25401     return 1;
25402
25403   if (per_cu->cu->mark)
25404     return 1;
25405   per_cu->cu->mark = 1;
25406
25407   if (per_cu->cu->dependencies != NULL)
25408     htab_traverse (per_cu->cu->dependencies, dwarf2_mark_helper, NULL);
25409
25410   return 1;
25411 }
25412
25413 /* Set the mark field in CU and in every other compilation unit in the
25414    cache that we must keep because we are keeping CU.  */
25415
25416 static void
25417 dwarf2_mark (struct dwarf2_cu *cu)
25418 {
25419   if (cu->mark)
25420     return;
25421   cu->mark = 1;
25422   if (cu->dependencies != NULL)
25423     htab_traverse (cu->dependencies, dwarf2_mark_helper, NULL);
25424 }
25425
25426 static void
25427 dwarf2_clear_marks (struct dwarf2_per_cu_data *per_cu)
25428 {
25429   while (per_cu)
25430     {
25431       per_cu->cu->mark = 0;
25432       per_cu = per_cu->cu->read_in_chain;
25433     }
25434 }
25435
25436 /* Trivial hash function for partial_die_info: the hash value of a DIE
25437    is its offset in .debug_info for this objfile.  */
25438
25439 static hashval_t
25440 partial_die_hash (const void *item)
25441 {
25442   const struct partial_die_info *part_die
25443     = (const struct partial_die_info *) item;
25444
25445   return to_underlying (part_die->sect_off);
25446 }
25447
25448 /* Trivial comparison function for partial_die_info structures: two DIEs
25449    are equal if they have the same offset.  */
25450
25451 static int
25452 partial_die_eq (const void *item_lhs, const void *item_rhs)
25453 {
25454   const struct partial_die_info *part_die_lhs
25455     = (const struct partial_die_info *) item_lhs;
25456   const struct partial_die_info *part_die_rhs
25457     = (const struct partial_die_info *) item_rhs;
25458
25459   return part_die_lhs->sect_off == part_die_rhs->sect_off;
25460 }
25461
25462 struct cmd_list_element *set_dwarf_cmdlist;
25463 struct cmd_list_element *show_dwarf_cmdlist;
25464
25465 static void
25466 set_dwarf_cmd (const char *args, int from_tty)
25467 {
25468   help_list (set_dwarf_cmdlist, "maintenance set dwarf ", all_commands,
25469              gdb_stdout);
25470 }
25471
25472 static void
25473 show_dwarf_cmd (const char *args, int from_tty)
25474 {
25475   cmd_show_list (show_dwarf_cmdlist, from_tty, "");
25476 }
25477
25478 int dwarf_always_disassemble;
25479
25480 static void
25481 show_dwarf_always_disassemble (struct ui_file *file, int from_tty,
25482                                struct cmd_list_element *c, const char *value)
25483 {
25484   fprintf_filtered (file,
25485                     _("Whether to always disassemble "
25486                       "DWARF expressions is %s.\n"),
25487                     value);
25488 }
25489
25490 static void
25491 show_check_physname (struct ui_file *file, int from_tty,
25492                      struct cmd_list_element *c, const char *value)
25493 {
25494   fprintf_filtered (file,
25495                     _("Whether to check \"physname\" is %s.\n"),
25496                     value);
25497 }
25498
25499 void
25500 _initialize_dwarf2_read (void)
25501 {
25502   dwarf2_objfile_data_key
25503     = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile);
25504
25505   add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\
25506 Set DWARF specific variables.\n\
25507 Configure DWARF variables such as the cache size"),
25508                   &set_dwarf_cmdlist, "maintenance set dwarf ",
25509                   0/*allow-unknown*/, &maintenance_set_cmdlist);
25510
25511   add_prefix_cmd ("dwarf", class_maintenance, show_dwarf_cmd, _("\
25512 Show DWARF specific variables\n\
25513 Show DWARF variables such as the cache size"),
25514                   &show_dwarf_cmdlist, "maintenance show dwarf ",
25515                   0/*allow-unknown*/, &maintenance_show_cmdlist);
25516
25517   add_setshow_zinteger_cmd ("max-cache-age", class_obscure,
25518                             &dwarf_max_cache_age, _("\
25519 Set the upper bound on the age of cached DWARF compilation units."), _("\
25520 Show the upper bound on the age of cached DWARF compilation units."), _("\
25521 A higher limit means that cached compilation units will be stored\n\
25522 in memory longer, and more total memory will be used.  Zero disables\n\
25523 caching, which can slow down startup."),
25524                             NULL,
25525                             show_dwarf_max_cache_age,
25526                             &set_dwarf_cmdlist,
25527                             &show_dwarf_cmdlist);
25528
25529   add_setshow_boolean_cmd ("always-disassemble", class_obscure,
25530                            &dwarf_always_disassemble, _("\
25531 Set whether `info address' always disassembles DWARF expressions."), _("\
25532 Show whether `info address' always disassembles DWARF expressions."), _("\
25533 When enabled, DWARF expressions are always printed in an assembly-like\n\
25534 syntax.  When disabled, expressions will be printed in a more\n\
25535 conversational style, when possible."),
25536                            NULL,
25537                            show_dwarf_always_disassemble,
25538                            &set_dwarf_cmdlist,
25539                            &show_dwarf_cmdlist);
25540
25541   add_setshow_zuinteger_cmd ("dwarf-read", no_class, &dwarf_read_debug, _("\
25542 Set debugging of the DWARF reader."), _("\
25543 Show debugging of the DWARF reader."), _("\
25544 When enabled (non-zero), debugging messages are printed during DWARF\n\
25545 reading and symtab expansion.  A value of 1 (one) provides basic\n\
25546 information.  A value greater than 1 provides more verbose information."),
25547                             NULL,
25548                             NULL,
25549                             &setdebuglist, &showdebuglist);
25550
25551   add_setshow_zuinteger_cmd ("dwarf-die", no_class, &dwarf_die_debug, _("\
25552 Set debugging of the DWARF DIE reader."), _("\
25553 Show debugging of the DWARF DIE reader."), _("\
25554 When enabled (non-zero), DIEs are dumped after they are read in.\n\
25555 The value is the maximum depth to print."),
25556                              NULL,
25557                              NULL,
25558                              &setdebuglist, &showdebuglist);
25559
25560   add_setshow_zuinteger_cmd ("dwarf-line", no_class, &dwarf_line_debug, _("\
25561 Set debugging of the dwarf line reader."), _("\
25562 Show debugging of the dwarf line reader."), _("\
25563 When enabled (non-zero), line number entries are dumped as they are read in.\n\
25564 A value of 1 (one) provides basic information.\n\
25565 A value greater than 1 provides more verbose information."),
25566                              NULL,
25567                              NULL,
25568                              &setdebuglist, &showdebuglist);
25569
25570   add_setshow_boolean_cmd ("check-physname", no_class, &check_physname, _("\
25571 Set cross-checking of \"physname\" code against demangler."), _("\
25572 Show cross-checking of \"physname\" code against demangler."), _("\
25573 When enabled, GDB's internal \"physname\" code is checked against\n\
25574 the demangler."),
25575                            NULL, show_check_physname,
25576                            &setdebuglist, &showdebuglist);
25577
25578   add_setshow_boolean_cmd ("use-deprecated-index-sections",
25579                            no_class, &use_deprecated_index_sections, _("\
25580 Set whether to use deprecated gdb_index sections."), _("\
25581 Show whether to use deprecated gdb_index sections."), _("\
25582 When enabled, deprecated .gdb_index sections are used anyway.\n\
25583 Normally they are ignored either because of a missing feature or\n\
25584 performance issue.\n\
25585 Warning: This option must be enabled before gdb reads the file."),
25586                            NULL,
25587                            NULL,
25588                            &setlist, &showlist);
25589
25590   dwarf2_locexpr_index = register_symbol_computed_impl (LOC_COMPUTED,
25591                                                         &dwarf2_locexpr_funcs);
25592   dwarf2_loclist_index = register_symbol_computed_impl (LOC_COMPUTED,
25593                                                         &dwarf2_loclist_funcs);
25594
25595   dwarf2_locexpr_block_index = register_symbol_block_impl (LOC_BLOCK,
25596                                         &dwarf2_block_frame_base_locexpr_funcs);
25597   dwarf2_loclist_block_index = register_symbol_block_impl (LOC_BLOCK,
25598                                         &dwarf2_block_frame_base_loclist_funcs);
25599
25600 #if GDB_SELF_TEST
25601   selftests::register_test ("dw2_expand_symtabs_matching",
25602                             selftests::dw2_expand_symtabs_matching::run_test);
25603 #endif
25604 }